1

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

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

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

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

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

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

谢谢,冉

4

1 回答 1

1

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

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

这是第 3 层。您可以检查文件reassembly.cinet_fragment.c. 您可以从那里进一步寻找功能fq_find和追踪。

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

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

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

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

于 2019-04-14T11:01:54.637 回答