ArcLibrary

ping / traceroute(网络排查入门)

网通不通、卡在哪一跳 —— 两条命令解决 80% 的初步定位。

pingtracerouteICMP
核心 · Key Idea

一句话ping 看「能不能通」和「延迟多少」;traceroute / mtr 看「数据包在哪一跳出问题」。两个命令是网络排查的第一步。

是什么#

  • ping:发送 ICMP Echo Request,等 Echo Reply,测往返延迟(RTT)丢包率
  • traceroute:故意发一系列 TTL 从小到大的包,让每一跳路由器都回报「我把它丢了」 —— 反向得到完整路径。

打个比方#

打个比方 · Analogy

ping = 朝对面喊「喂!能听到吗?」对方答「能!」并且你能感觉到回音的快慢。 traceroute = 你扔很多个**「最多跳 1 次」「最多跳 2 次」**的纸飞机,让沿途每一站告诉你「我是谁,我接到了」。

关键概念#

ICMPInternet Control Message Protocol
网络层的「控制 / 错误」协议,ping 和 traceroute 都基于它。
RTTRound-Trip Time
往返时间,ping 直接展示。
TTLTime To Live
包每过一跳 -1,到 0 就丢。traceroute 利用它探路径。
丢包率Packet Loss
ping 100 个包,丢了几个的百分比。
MTRMy Traceroute
traceroute + ping 持续探测的结合体,看每一跳的稳定性。

怎么工作#

每一跳报告耗时,组合起来就能看出慢在 / 丢在哪一段

实操要点#

  • ping -c 10 host:发 10 个包就停(Linux/macOS)。Windows -n 10
  • ping -s 1472 -M do host:发 1472 字节不分片,测 MTU
  • traceroute 在国内常常断:很多运营商屏蔽 ICMP TTL 回报,traceroute -T(TCP)或 tcptraceroute / mtr -T 走 TCP 80/443 通常能穿过。
  • mtr 是金标mtr host 持续刷新,看每跳的丢包 / 抖动 / 平均 RTT。长时间观察才能看出哪一跳真的不稳
  • ping 通 ≠ 服务能用:ping 是网络层 ICMP,服务可能挂了;ping 不通也未必网络坏(ICMP 被拦截,TCP 还能通)。

易混点#

ping 不通
可能:网络层不通 / **目标禁 ping**(防火墙)。
服务连不上
可能:网络通但服务没监听 / **端口被防火墙拦**。
用 `nc -vz host port` 或 `telnet host port` 实测。

延伸阅读#