ICMP - ECHO / ECHO 回复 (PING) 消息

如前一页所述,Echo就是我们网络工程师所说的“ ping ”。正如大多数人猜测的那样, Echo 回复是“ ping 回复”。ICMP Echo 主要用于故障排除。当有 2 台主机出现通信问题时,一些简单的 ICMP Echo 请求将显示 2 台主机的 TCP/IP 堆栈配置是否正确,以及数据包为了到达另一端而采用的路由是否有任何问题.

“ping”命令是众所周知的,但它的结果经常被误解,因此我选择在 ping 回复旁边解释所有其他参数,但我们稍后会看看。

让我们看看 ICMP-Echo 或 Echo Reply 数据包长什么样:

ICMP - ECHO / ECHO 回复 (PING) 消息_第1张图片

 

ICMP - ECHO / ECHO 回复 (PING) 消息_第2张图片

如果上述数据包是 ICMP Echo (ping),则 Type 字段的值为 8。如果是 ICMP Echo Reply (ping 回复),则其值为 1。

下图是我从工作站执行简单 ping 时拍摄的屏幕截图:

ICMP - ECHO / ECHO 回复 (PING) 消息_第3张图片

 

好的,现在看上面的屏幕截图,你可以看到我“ping”了 www.firewall.cx。我的工作站做的第一件事就是将该 URL 解析为 IP 地址。这是使用DNS完成的。一旦 DNS 服务器返回 www.firewall.cx 的 IP 地址,工作站就会生成一个类型字段设置为 8 的 ICMP 数据包。

这是证明:

 

ICMP - ECHO / ECHO 回复 (PING) 消息_第4张图片

 

上图是我的数据包嗅探器在进行此实验时的屏幕截图。显示的数据包是从我的工作站发送到 firewall.cx 网络服务器的 4 个数据包之一

请注意ICMP 标头部分正下方的ICMP type=8 Echo字段。这清楚地表明该数据包是从工作站发送的,但没有收到。如果收到,它将是一个“ Echo Reply ”并且值为0

如果有人注意到的话,下一个奇怪的事情是数据字段。查看上面命令提示符的屏幕截图,注意那里的值以及数据包嗅探器在左侧显示的值。一个说 32 字节,另一个说 40 字节!

原因是数据包嗅探器考虑了 ICMP 头文件(ICMP 类型、代码、校验和和标识符),我现在将向您证明。

查看我们分析 ICMP 标头的页面顶部,您会注意到各个字段的长度(以位为单位)如下:8、8、16、16、16。这些加起来总共 64位。现在 8 位 = 1 字节,因此 64 位 = 8 字节。获取工作站命令提示符显示的 32 字节数据并添加 8 字节 .... 总共有 40 字节。

要查看数据包嗅探器的全屏图像,请单击此处。

这就是这两个 ICMP 消息!

 

你可能感兴趣的:(java,网络,开发语言)