确定 IPv4 数据包是否分片

Determine if IPv4 packet is fragmented

判断IP包是否分片的正确方法是什么?
目前我只查看 IPv4 header 中的 MF(更多片段)位。够了吗?

这还不够,因为最后一个数据包片段不会设置 MF 标志。您还必须查看 Fragment offset 字段,但这本身是不够的,因为第一个数据包片段将该字段设置为 0。

如果 Fragment Offset 字段 > 0 那么它是一个数据包片段,或者如果 Fragment Offset 字段 = 0 并且设置了 MF 标志那么它是一个片段数据包。