跳到正文
赞助 AccsZone — 社媒账号, 下单自动秒发

术语表

ICMP

ICMP 是互联网的控制协议。Ping 和 traceroute 使用它的 echo 和超时消息测试可达性和路由。

什么是 ICMP

互联网控制消息协议在主机和路由器之间传递状态和错误消息。它不传输应用数据;它告诉数据包的发送者发生了什么。找不到路由的路由器回复“目标不可达”。因 TTL 耗尽而丢弃数据包的路由器回复“超时”。收到 echo 请求的主机回复 echo 应答。IPv6 有自己的版本 ICMPv6,它还处理邻居发现和路由器通告,不能在不破坏协议的情况下被屏蔽。

在哪里遇到它

  • Ping 发送 ICMP echo 请求并测量 echo 应答返回的时间。这个往返就是延迟,应答之间的波动是抖动。
  • Traceroute 逐跳收集每台路由器回送的超时消息。
  • 路径 MTU 发现依赖“需要分片”消息。屏蔽所有 ICMP 的网络会让大数据包悄无声息地消失,表现为网站能加载头部却卡在正文。
  • 端口不可达应答是基于 UDP 的工具得知没有程序监听的方式。

为什么重要

ICMP 是简单网络测试得以工作的原因,也是其中一些失效的原因。许多主机和防火墙丢弃 echo 请求,所以不回应 ping 的主机可能仍在线并提供网站。许多路由器限制其 ICMP 回复的速率,所以 traceroute 中慢或缺失的一跳可能是路由器策略的假象而非真实延迟。正确解读这些工具意味着知道哪些应答因策略缺失、哪些因故障缺失。

对代理用户,ICMP 是一个安静的信息来源。echo 应答携带应答方的初始 TTL,暗示其操作系统;到一个所谓本地地址的往返时间竟有 150 毫秒,说明中继在另一个地区。

如何检查

Ping 工具从我们的测量节点向任意主机发送 echo 请求,报告最小、平均和最大往返时间、丢包率和抖动。Traceroute 工具显示由超时应答构建的逐跳路径。两者都从我们的节点而非您的浏览器运行,因为浏览器无法发送 ICMP。

常见误解

屏蔽 ICMP 不会让主机隐身或更安全;它只是对 ping 隐藏主机。其上的服务仍然可达,而错误消息的缺失让真正的问题更难诊断。

相关工具