我正在玩dpkt的Python,试图解码PPPoE – 程序工作得很好,直到我注意到封装IP数据包的偏移量始终为0,即使数据包明显碎片。
可以看出,服务器正在发送1492字节的数据包(因为PPPoE封装,我想),最后一个数据包是1365.但偏移总是0 – 不应该增加吗?
当然,我怀疑我的程序,但我用Wireshark检查了同样的转移,得到了同样的结果。
我解释这是错误的方式吗?
不,这些不是碎片。 您将看到来自服务器的1492字节数据包和40字节数据包(TCP ACK?)返回到服务器。 因为它们不是片段,所以偏移量总是为0。
Wireshark会告诉你数据包是不是碎片。 如果您从Wireshark显示更详细的信息,我们可以给你更多关于每个数据包究竟是什么的信息。
我build议安装tracepath(而不是traceroute)并使用它来检查所有跳中的MTU。 如果您不想要分段数据包,请将服务器上的MTU设置为跳跃path上最低MTU以下的MTU。