如何准备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/c...全部
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
|
net_rx_action
net/dev。c
|
-------------------------------------------
|
netif_rx
net/dev。
c
|
el3_rx
driver/net/3c309。c
|
el3_interrupt
driver/net/3c309。c
==========================
|
sys_write
fs/read_write。
c
|
sock_writev
net/socket。c
|
sock_sendmsg
net/socket。c
|
inet_sendmsg
net/ipv4/af_inet。c
|
udp_sendmsg
net/ipv4/udp。
c
|
ip_build_xmit
net/ipv4/ip_output。c
|
output_maybe_reroute
net/ipv4/ip_output。c
|
ip_output
net/ipv4/ip_output。
c
|
ip_finish_output
net/ipv4/ip_output。c
|
dev_queue_xmit
net/dev。c
|
--------------------------------------------
|
el3_start_xmit
driver/net/3c309。
c
V。收起