Linux上的IP碎片

时间:2018-08-23 05:45:29

标签: networking ip embedded-linux ip-fragmentation

我有一个Linux系统,它位于2个路由器之间(类似嗅探器)。 这两个路由器都支持巨型帧,而我的系统限于MTU 1500。

我的理解是,发送路由器会将巨型帧分割成基于MTU 1500的IP数据报,而Linux将根据RFC 815重新组合它们。

有关此过程的几个问题:

  1. 在Linux中,哪个层负责重组过程?哪个文件?

  2. 此过程(分段和重组)是否适用于所有第3层协议(例如,IPv4 \ IPv6)?

  3. 假设我的嗅探器构造了一个大数据包并将其发送出去,Linux堆栈会自动发生碎片吗?

谢谢, 冉

1 个答案:

答案 0 :(得分:1)

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

  

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

这是第3层。您可以检查文件reassembly.cinet_fragment.c。您可以查找函数fq_find,然后从那里进一步跟踪。

  

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

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

  

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

我已经阅读了分段卸载的概念,其中分段发生在NIC上,因此可能不需要n / w堆栈进行分段。