linux协议栈相关的书记,Linux协议栈pf_packet相关分析

二:linux内核接收网络数据包处理流程

1,收包

^

|--------------bsd socket层---------

| sys_read fs/read_write.c

| sock_read net/socket.c

| sock_recvmsg net/socket.c

|--------------inet socket层(也可以是PF_pocket层)-----------

inet_create

| 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

三:linux内核网络数据包发送流程

如果socket(PF_INET,SOCK_DGRAM,IPPROTO_IP)

|--------------socket

| 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

推断使用socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

|--------------socket

| sys_write fs/read_write.c

| sock_writev net/socket.c

| sock_sendmsg net/socket.c (sock->ops = &packet_ops_spkt;)

|----------------传输层(协议栈)-----------

|packet_sendmsg_spkt net/packet/af_packet.c

|--------------链路层(网卡驱动)---------------

| dev_queue_xmit net/dev.c

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

| el3_start_xmit driver/net/3c309.c

V

404e5fee2eb0cc877e5acc8087f93e77.gif0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值