资源描述:
《linux-tcp ip协议栈源码阅读笔记》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、linux-TcpIP协议栈源码阅读笔记一.linux内核网络栈代码的准备知识1.linux内核ipv4网络部分分层结构:BSDsocket层:这一部分处理BSDsocket相关操作,每个socket在内核中以structsocket结构体现。这一部分的文件主要有:/net/socket.c/net/protocols.cetcINETsocket层:BSDsocket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,还需要保留些额外的参数,于是就有了structs
2、ock结构。文件主要有:/net/ipv4/protocol.c/net/ipv4/af_inet.c/net/core/sock.cetcTCP/UDP层:处理传输层的操作,传输层用structinet_protocol和structproto两个结构表示。文件主要有:/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
3、/ipv4/tcp_output.c /net/ipv4/tcp_timer.cetc IP层:处理网络层的操作,网络层用structpacket_type结构表示。文件主要有:/net/ipv4/ip_forward.cip_fragment.cip_input.cip_output.cetc.数据链路层和驱动程序:每个网络设备以structnet_device表示,通用的处理在dev.c中,驱动程序都在/driver/net目录下。2.两台主机建立udp通信所走过的函数列表 ^
4、 sy
5、s_read fs/read_write.c
6、 sock_read net/socket.c
7、 sock_recvmsg net/socket.c
8、 inet_recvmsg net/ipv4/af_inet.c
9、 udp_recvmsg net/ipv4/udp.c
10、 skb_recv_datagram net/co
11、re/datagram.c
12、 -------------------------------------------
13、 sock_queue_rcv_skb include/net/sock.h
14、 udp_queue_rcv_skb net/ipv4/udp.c
15、 udp_rcv net/ipv4/udp.c
16、 ip_local_deliver_finishnet/ipv4/ip_input.c
17、
18、 ip_local_deliver net/ipv4/ip_input.c
19、 ip_recv net/ipv4/ip_input.c
20、 net_rx_action net/dev.c
21、 -------------------------------------------
22、 netif_rx net/dev.c
23、 el3_rx
24、 driver/net/3c309.c
25、 el3_interrupt driver/net/3c309.c==========================
26、 sys_write fs/read_write.c
27、 sock_writev net/socket.c
28、 sock_sendmsg net/socket.c
29、
30、 inet_sendmsg net/ipv4/af_inet.c
31、 udp_sendmsg net/ipv4/udp.c
32、 ip_build_xmit net/ipv4/ip_output.c
33、 output_maybe_reroute net/ipv4/ip_