我有一个Linux系统,它位于2个路由器之间(类似嗅探器)。 这两个路由器都支持巨型帧,而我的系统限于MTU 1500。
我的理解是,发送路由器会将巨型帧分割成基于MTU 1500的IP数据报,而Linux将根据RFC 815重新组合它们。
有关此过程的几个问题:
在Linux中,哪个层负责重组过程?哪个文件?
此过程(分段和重组)是否适用于所有第3层协议(例如,IPv4 \ IPv6)?
假设我的嗅探器构造了一个大数据包并将其发送出去,Linux堆栈会自动发生碎片吗?
谢谢, 冉
答案 0 :(得分:1)
我可以回答您的一些问题:
在Linux中,哪个层负责重组过程?哪个文件?
这是第3层。您可以检查文件reassembly.c
和inet_fragment.c
。您可以查找函数fq_find
,然后从那里进一步跟踪。
此过程(分段和重组)是否适用于所有第3层协议(例如IPv4 \ IPv6)?
v4和v6的代码相似,所有第3层协议的情况都应该如此。
假设我的嗅探器构造了一个大数据包并将其发送出去,碎片是否由Linux堆栈自动发生?
我已经阅读了分段卸载的概念,其中分段发生在NIC上,因此可能不需要n / w堆栈进行分段。