不会为不是第一个片段的碎片数据报生成ICMP错误消息。 - FOROUZAN的数据通信和网络
为什么?
定义ICMP的原始RFC,RFC 792, INTERNET CONTROL MESSAGE PROTOCOL,制定了这个规则:
ICMP消息通常报告处理过程中的错误 数据报。避免消息的无限回归 等,不发送有关ICMP消息的ICMP消息。也是ICMP 消息仅发送有关处理片段零的错误 fragemented datagrams。 (片段零的片段offeset等于零)。
只有第一个片段具有IP头信息。发送ICMP错误时,原始数据报的前8个字节。对于第一个片段,这8个字节(实际Ip头)将是发送者的有用信息,而不是其他片段的情况。
只有第一个片段有TCP头。
当发送方收到ICMP时,ICMP数据部分有两种类型的标头。 (IP,TCP)
发件人可以检查TCP标头以恢复错误。
但是,如果不是第一个片段,则没有数据可以检查出错了什么
因此,ICMP仅为第一个片段生成。因为发件人不能做任何事情。