jcoppens Asked: 2016-12-23 12:59:06 +0800 CST2016-12-23 12:59:06 +0800 CST 2016-12-23 12:59:06 +0800 CST 数据包碎片混乱 772 我在 Python 中使用 dpkt,试图解码 PPPoE——程序运行良好,直到我注意到封装 IP 数据包中的偏移量始终为 0,即使数据包明显碎片化。 可以看出,服务器正在发送 1492 字节的数据包(我想是因为 PPPoE 封装),最后一个数据包是 1365。但是偏移量始终为 0 - 它不应该增加吗? 当然我怀疑我的程序,但我用 Wireshark 检查了相同的传输并得到了相同的结果。 我是否以错误的方式解释了这一点? python pcap ipv4 fragmentation 2 个回答 Voted Best Answer Sander Steffann 2016-12-23T13:58:55+08:002016-12-23T13:58:55+08:00 不,那些不是碎片。您看到来自服务器的 1492 字节数据包和返回服务器的 40 字节数据包(TCP ACK?)。因为它们不是片段,所以偏移量确实总是 0。 Wireshark 会告诉你数据包是否是碎片。如果您显示来自 Wireshark 的更多详细信息,我们可以为您提供有关每个数据包中确切内容的更多信息。 Jimi Thompson 2016-12-23T13:20:51+08:002016-12-23T13:20:51+08:00 我建议安装 tracepath(不是 traceroute)并使用它来检查所有跃点上的 MTU。如果您不想要分段数据包,请将服务器上的 MTU 设置为低于跃点路径上的最低 MTU。
不,那些不是碎片。您看到来自服务器的 1492 字节数据包和返回服务器的 40 字节数据包(TCP ACK?)。因为它们不是片段,所以偏移量确实总是 0。
Wireshark 会告诉你数据包是否是碎片。如果您显示来自 Wireshark 的更多详细信息,我们可以为您提供有关每个数据包中确切内容的更多信息。
我建议安装 tracepath(不是 traceroute)并使用它来检查所有跃点上的 MTU。如果您不想要分段数据包,请将服务器上的 MTU 设置为低于跃点路径上的最低 MTU。