linux kernel packet receive flow(内核封包处理流程)
2015-01-31 16:15
513 查看
Bridge的code在
linux/net/bridge
Bridge function
netif_receive_skb
br_handle_frame_hook
br_handle_frame()(net/bridge/br_input.c)
Ip/icmp/bridge的
Receive/transmit
Rx/tx 相关档案
以下是网路封包从driver一直到socket的流程
netif_rx() (在net/core/dev.c)
net_rx_action() (在net/core/dev.c)
process_backlog() (在net/core/dev.c)
netif_receive_skb() (在net/core/dev.c) =呼叫handle_bridge()
deliver_skb() (在net/core/dev.c)
ip_rcv() (在net/ipv4/ip_input.c)
netfilter prerouting hook
ip_rcv_finish() (在net/ipv4/ip_input.c)
call routing code
ip_route_input (在net/ipv4/route.c)
ip_local_deliver() (在net/ipv4/ip_input.c)
netfilter localin hook
ip_local_deliver [net/ipv4/ip_input.c]
ip_defrag [net/ipv4/ip_fragment.c]
ip_local_deliver_finish() (在net/ipv4/ip_input.c)
call ipv4 protocal
如果封包是udp
udp_rcv() (在net/ipv4/udp.c)
lookup socket, if any
udp_queue_rcv_skb()
sock_queue_rcv_skb() (在include/net/sock.h)
enqueue into socket receiver queue
sock_def_readable() (在net/core/sock.c)
wake_sup_interruptible() on socket waitqueue
return from recv() via socketcall
如果封包是tcp
tcp_v4_rcv (net/ipv4/tcp_ipv4.c)
__tcp_v4_lookup
tcp_v4_do_rcv
tcp_rcv_established (net/ipv4/tcp_input.c)
__skb_queue_tail (include/linux/skbuff.)
sock_def_readable (net/core/sock.c)
wake_up_interruptible (include/linux/sched.h)
tcp_v4_hnd_req (net/ipv4/tcp_ipv4.c)
tcp_v4_search_req
tcp_check_req
tcp_v4_syn_recv_sock
__tcp_v4_lookup_established
tcp_rcv_state_process (net/ipv4/tcp_input.c)
tcp_v4_conn_request (net/ipv4/tcp_ipv4.c)
tcp_v4_send_synack
tcp_v4_synq_add
tcp_rcv_synsent_state_process (net/ipv4/tcp_input.c)
tcp_set_state (include/net/tcp.h)
tcp_send_ack (net/ipv4/tcp_output.c]
其他相关
linux/net/ ipv4/ip_output.c
icmp: linux/net/ ipv4/icmp.c
linux/net/bridge/br_device.c
linux/net/bridge
Bridge function
netif_receive_skb
br_handle_frame_hook
br_handle_frame()(net/bridge/br_input.c)
Ip/icmp/bridge的
Receive/transmit
Rx/tx 相关档案
以下是网路封包从driver一直到socket的流程
netif_rx() (在net/core/dev.c)
net_rx_action() (在net/core/dev.c)
process_backlog() (在net/core/dev.c)
netif_receive_skb() (在net/core/dev.c) =呼叫handle_bridge()
deliver_skb() (在net/core/dev.c)
ip_rcv() (在net/ipv4/ip_input.c)
netfilter prerouting hook
ip_rcv_finish() (在net/ipv4/ip_input.c)
call routing code
ip_route_input (在net/ipv4/route.c)
ip_local_deliver() (在net/ipv4/ip_input.c)
netfilter localin hook
ip_local_deliver [net/ipv4/ip_input.c]
ip_defrag [net/ipv4/ip_fragment.c]
ip_local_deliver_finish() (在net/ipv4/ip_input.c)
call ipv4 protocal
如果封包是udp
udp_rcv() (在net/ipv4/udp.c)
lookup socket, if any
udp_queue_rcv_skb()
sock_queue_rcv_skb() (在include/net/sock.h)
enqueue into socket receiver queue
sock_def_readable() (在net/core/sock.c)
wake_sup_interruptible() on socket waitqueue
return from recv() via socketcall
如果封包是tcp
tcp_v4_rcv (net/ipv4/tcp_ipv4.c)
__tcp_v4_lookup
tcp_v4_do_rcv
tcp_rcv_established (net/ipv4/tcp_input.c)
__skb_queue_tail (include/linux/skbuff.)
sock_def_readable (net/core/sock.c)
wake_up_interruptible (include/linux/sched.h)
tcp_v4_hnd_req (net/ipv4/tcp_ipv4.c)
tcp_v4_search_req
tcp_check_req
tcp_v4_syn_recv_sock
__tcp_v4_lookup_established
tcp_rcv_state_process (net/ipv4/tcp_input.c)
tcp_v4_conn_request (net/ipv4/tcp_ipv4.c)
tcp_v4_send_synack
tcp_v4_synq_add
tcp_rcv_synsent_state_process (net/ipv4/tcp_input.c)
tcp_set_state (include/net/tcp.h)
tcp_send_ack (net/ipv4/tcp_output.c]
其他相关
linux/net/ ipv4/ip_output.c
icmp: linux/net/ ipv4/icmp.c
linux/net/bridge/br_device.c
相关文章推荐
- 用户空间发送flow,packet操作告知内核处理过程
- Linux内核IP层的报文处理流程(一)
- Linux内核数据包处理流程-数据包接收(1)
- 内核的触发和处理流程——The kernel of the trigger and processing process
- Linux内核数据包处理流程-数据包接收
- Linux2.4内核和2.6内核对Initrd处理流程
- Linux内核数据包处理流程-数据包接收
- Linux内核数据包处理流程-数据包接收
- Linux_Kernel_2.6.36引导内核流程分析
- linux read之后内核做了什么(流程基于linux-kernel-3.12.17)
- linux信号处理流程前篇---内核态与用户态的切换
- suricata 3.1 源码分析33 (FlowWorker处理流程2 - FlowHandlePacket)
- Linux内核中断处理流程
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性
- linux内核初始化及启动之start_kernel
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性
- 转贴:Mark Russinovich的Inside Vista Kernel系列文章,讲到了Vista内核的调度,IO,内存管理,缓存,事务处理,安全等众多新特性