为什么 ICMP Echo Request 和 Echo Reply 数据包包含数据部分?

为什么 ICMP Echo Request 和 Echo Reply 数据包包含数据部分?

ICMP 回显请求和回显回复数据包包含数据部分。例如,这是一个回显请求数据包(在 Windows 中使用 ping 命令发送):

在此处输入图片描述

可以看到,数据包中有一个由32个字节组成的数据部分,而且这个数据似乎没有任何意义(它只是字母表的一部分)。

数据部分是强制性的还是可选的?

答案1

数据部分是强制性的回复数据包,如果请求数据包中有数据部分。应答系统必须发送一个包含完全相同数据部分的答复。RFC792未指定请求数据包中的数据部分是否是强制性的。Data此架构中的 未像(optional)许多其他 RFC 中一样标记为。

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Type      |     Code      |          Checksum             |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           Identifier          |        Sequence Number        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |     Data ...
 +-+-+-+-+-

但是,发送零字节数据的 ping 是完全可能的。在 Windows 上尝试:

ping <destination> -l 0

这证明 ICMP-Echo-Request 中的数据部分是可选的

相关内容