linux-Tcp IP协议栈源码阅读笔记

来源:未知 责任编辑:责任编辑 发表时间:2015-10-08 14:16 点击:

 

一.linux内核网络栈代码的准备知识

 

1. linux内核ipv4网络部分分层结构:

 

 

BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件

 

主要有:/net/socket.c /net/protocols.c etc

 

INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,

 

还需要保留些额外的参数,于是就有了struct sock结构。文件主要

 

有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc

 

TCP/UDP层:处理传输层的操作,传输层用struct inet_protocol和struct proto两个结构表示。文件主要

 

有:/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c /net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c /net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c

 

etc 

    

IP层:处理网络层的操作,网络层用struct packet_type结构表示。文件主要有:/net/ipv4/ip_forward.c

ip_fragment.c ip_input.c ip_output.c etc.

 

数据链路层和驱动程序:每个网络设备以struct net_device表示,通用的处理在dev.c中,驱动程序都在/driver/net目

 

录下。

 

 

2. 两台主机建立udp通信所走过的函数列表

 

^

|       sys_read                fs/read_write.c

|       sock_read               net/socket.c

|       sock_recvmsg            net/socket.c

|       inet_recvmsg            net/ipv4/af_inet.c

|       udp_recvmsg             net/ipv4/udp.c

|       skb_recv_datagram       net/core/datagram.c

|       -------------------------------------------

|       sock_queue_rcv_skb      include/net/sock.h

|       udp_queue_rcv_skb       net/ipv4/udp.c

|       udp_rcv                 net/ipv4/udp.c

|       ip_local_deliver_finish net/ipv4/ip_input.c

|       ip_local_deliver        net/ipv4/ip_input.c

|       ip_recv                 net/ipv4/ip_input.c

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • nginx主主集群
  •  LVM逻辑卷管理器
  • 学习笔记:ACL详解
  • suse linux双网卡双网关配置
  • puppet文件服务配置
  •  Nginx主主负载均衡架构

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1