Linux上的IP碎片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux上的IP碎片相关的知识,希望对你有一定的参考价值。

我有一个位于2个路由器之间的Linux系统(嗅探器)。两个路由器都支持Jumbo帧,而我的系统仅限于MTU 1500。

我的理解是发送路由器将Jumbo帧分段为基于MTU 1500的IP数据报,linux将根据RFC 815重新组装它们。

关于这个过程的几个问题:

  1. 在Linux中,哪个Layer负责重组过程?哪个文件?
  2. 此过程(分段和重组)是否适用于所有第3层协议(IPv4 IPv6 for ex)?
  3. 假设我的嗅探器构造了一个大数据包并将其发送出去,那么碎片是否会由linux堆栈自动发生?

谢谢,冉

答案

我可以回答你的一些问题:

在Linux中,哪个Layer负责重组过程?哪个文件?

它是第3层。您可以检查文件reassembly.cinet_fragment.c。你可以找到函数fq_find并从那里进一步追踪。

此过程(分段和重组)是否适用于所有第3层协议(IPv4 IPv6 for ex)?

v4和v6的代码类似,所有第3层协议都应如此。

假设我的嗅探器构造了一个大数据包并将其发送出去,那么碎片是否会由linux堆栈自动发生?

我已经读过关于碎片卸载的概念,其中碎片发生在NIC,因此可能没有必要将n / w堆栈进行碎片化。

以上是关于Linux上的IP碎片的主要内容,如果未能解决你的问题,请参考以下文章

Mysql Innodb 表碎片整理

在ping期间,数据包捕获显示,对于不同的硬件集,Ip碎片的发生方式不同,这是预期的

以编程方式添加的片段上的后退键导致空容器

碎片一个接一个

带有recyclerviews的碎片需要很长时间才能加载

在ViewPager中看不到碎片