IP碎片碎片化的典型征兆

网络工程 ip IPv4 碎片化
2022-02-02 22:15:51

例如,给定一个 Wireshark 跟踪,我如何确定我发送的 IP 片段本身是被分段的?

例如,如果我正在发送 1500 字节的 IP 片段,而服务器正在响应 1460 字节的片段,这是否是一个相当好的指标,表明某处的某个链接正在进一步分割我的数据包?

1个回答

您从主机发送的数据包很可能在发送之前不会被分段,因此 1500 字节的数据包非常正常。如果路径中某条链路上的 MTU 变小,路由器会对数据包进行分片,只要数据包上没有设置 DF(Do Not Fragment)标志,而需要对设置了 DF 标志的数据包进行分片的路由器将丢弃数据包(可能将 ICMP 消息发送回源)。当然,如果在数据包到达目的地时设置了DF标志,则数据包没有被分片。从接收端来看,要判断数据包是否已被分段,请查看标识字段、MF(更多片段)标志和片段偏移字段。

如果除了最后一个分片之外的所有分片大小相同,那么即使有多个分片,数据包也可能只分片一次。分片将尝试使所有分片尽可能大(有效负载的大小必须能被 8 整除),但最后一个分片将是剩下的任何部分。对片段进行分片的方式相同,因此如果数据包被多次分片,您可能会将较小的(最后一个分片的最后一个分片)片段混合到分片串中。有可能,但不太可能,多次分段的数据包具有所有片段,但最后一个大小相同。

在任何情况下,数据包被分片多少次并不重要,因为重组过程是相同的,无论有多少分片或数据包被分片多少次。


许多路由器和防火墙现在配置为丢弃数据包碎片,因为碎片攻击会占用目标主机中的资源。我们还可以使用 PMTUD 来发现路径中最小的 MTU,并在发送数据包之前调整数据包大小,使其不会沿着路径碎片化。分段数据包对路由器来说是资源密集型的,因此 IPv6 不允许路由器分段数据包,您必须将 PMTUD 与 IPv6 一起使用来设置数据包的大小,以使数据包适合到达目的地的路径中的最小 MTU。

这个问题的答案解释并证明了碎片化,然后是进一步的碎片化。