Linux内核协议栈IP报文的上送转发及下发

本文深入探讨Linux内核协议栈中IP报文的接收、转发及发送过程。从网卡接收开始,经过ip_rcv、ip_rcv_finish、路由查找、dst_entry初始化,详细阐述了ip_forward、ip_local_deliver等功能,以及涉及的ip_output、arp Constructor等关键步骤,揭示了报文在内核中的传输路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要分析在网络功能简单配置,且报文正常的情况下,报文的处理过程。

网卡接收到IP报文,经过一些执行路径后,最终进入ip_rcv做处理。 

ip_rcv在网络功能简单配置,且报文正常的情况下,就是简单的通过ip_rcv_finish完成后续的全部处理工作。

ip_rcv_finish通过查找路由,为此报文找到一个dst_entry,然后即由skb_dst(skb)->input(skb);完成后续全部工作。

dst_entry来自查找到的路由表目。既然后续的处理,都由此dst_entry完成。那么dst_entry会将报文带到什么处理流程上去呢?

只有找到dst_entry初始化的代码,才能看出线索了。

先来看看普通的路由转发对应的dst_entry是怎么初始化的,代码在net/ipv4/route.c中的__mkroute_input中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值