Linux L3协议栈 - IPv4 part

Linux L3协议栈 - IPv4 part

发送 Tx

数据报文,是通过dst_output函数,将数据交给邻域子系统的,而dst_output,可以通过三种不同的方式调用:
1) ip_push_pending_frams - 被两种包裹函数调用,即ip_append_data 和 ip_append_page。用于UDP,ICMP,raw IP协议的传输。
2) ip_queue_xmit - tcp和sctp做了很多工作来准备分段,从而L3的工作就变少了,简而言之,IP层的工作就是把header加入已经编辑好的数据片中,而其他协议则把所有的分段工作都留给了L3,即IP层。
3) 直接调用dst_output - 当raw IP使用IP_HDRINCL选项时,就得完全负责把IP header准备好,所以会跳过上述函数,直接调用dst_output (参考raw 套接字)。IGMP也会直接调用dst_output。
上述的三种函数完成其工作后,就会把报文传递给dst_output。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值