Linux内核源码分析——Linux 是如何接收报文的

linux 接收报文

Linux 接收报文的过程从硬件层面的网卡驱动开始,经过软中断处理和协议栈的多层处理,最终将数据包传递给应用程序。每个环节都有相应的函数和数据结构负责处理和管理数据包的流动,保证了网络通信的有效性和性能。

函数角度

过程说明
网卡接收数据包硬件接收数据包交由驱动程序处理
网卡驱动接收数据包处理netif_rx ——>__skb_queue_tail/netif_rx_schedulenetif_rx 处理两件事情:将skb添加到队列;进行接收调度
软中断处理__netif_rx_schedule——>__raise_softirq_irqoff(NET_RX_SOFTIRQ);——>net_rx_action->dev->poll() ——>process_backlog()——>netif_receive_skb()->deliver_skb()deliver_skb 根据skb 中相应属性 进行处理
sk_buff 结构体处理sk_buff
协议栈处理vlan_packet_type——vlan处理函数vlan_skb_recv

流程图

在这里插入图片描述

数据角度

中断机制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值