Internet Control Message Protocol 与网络问题排查

ping 和 traceroute 命令常常用于进行网络排查错误. 其主要采用的是互联网控制消息协议 Internet Control Message Protocol (ICMP).

ping 命令

  • -c n: 设置 ping 执行的次数.
  • -s n: 设置 ping 发送的 ICMP 数据包的大小, 默认是 56 bytes.
  • -t n: 设置 ping 执行的 TTL (Time To Live) 数值, 默认是 255, 每经过一个节点减少 1.
  • -W n: 设置 ping 等待相应对方主机的秒数.

traceroute 命令

traceroute 命令也经常用于网络问题排查, 和 ping 不同的地方在于其可以追踪两个主机之间左右节点的信息.

  • -n: 不解析主机名称, 直接用 ip, 速度相对快.
  • -U: 默认使用 UDP 的方式进行检测, 默认 port 33434.
  • -I: 使用 ICMP 的方式进行检测.
  • -T: 使用 TCP 来检测, 默认 port 80. 如果有防火墙设置, 其他的检测方式可能不可用, 需要用 TCP 检测.
  • -w n: 等待时间, 默认是 5 秒.
  • -p n: 规定检测所用的端口号.
  • -i dev: 规定使用设备.

互联网控制消息协议

类型 代码 状态 描述 查询 差错
0 - Echo Reply 0 echo响应 (被程序ping使用)
1 and 2 未分配 保留
3 - 目的不可達 0 目标网络不可达
1 目标主机不可达
2 目标协议不可达
3 目标端口不可达
4 要求分段并设置DF flag标志
5 源路由失败
6 未知的目标网络
7 未知的目标主机
8 源主机隔离(作废不用)
9 禁止访问的网络
10 禁止访问的主机
11 对特定的TOS 网络不可达
12 对特定的TOS 主机不可达
13 由于过滤 网络流量被禁止
14 主机越权
15 优先权终止生效
4 - 源端关闭 0 弃用 源端关闭(拥塞控制)
5 - 重定向 0 重定向网络
1 重定向主机
2 基于TOS 的网络重定向
3 基于TOS 的主机重定向
6 弃用 备用主机地址
7 未分配 保留
8 - 请求回显 0 Echo请求
9 - 路由器通告 0 路由通告
10 - 路由器请求 0 路由器的发现/选择/请求
11 - ICMP 超时 0 TTL 超时
1 分片重组超时
12 - 参数问题:错误IP头部 0 IP 报首部参数错误
1 丢失必要选项
2 不支持的长度
13 - 时间戳请求 0 时间戳请求
14 - 时间戳应答 0 时间戳应答
15 - 信息请求 0 弃用 信息请求
16 - 信息应答 0 弃用 信息应答
17 - 地址掩码请求 0 弃用 地址掩码请求
18 - 地址掩码应答 0 弃用 地址掩码应答
19 保留 因安全原因保留
20 至 29 保留 Reserved for robustness experiment
30 - Traceroute 0 弃用 信息请求
31 弃用 数据报转换出错
32 弃用 手机网络重定向
33 弃用 Where-Are-You(originally meant for IPv6)
34 弃用 Here-I-Am(originally meant for IPv6)
35 弃用 Mobile Registration Request
36 弃用 Mobile Registration Reply
37 弃用 Domain Name Request
38 弃用 Domain Name Reply
39 弃用 SKIP Algorithm Discovery Protocol, Simple Key-Management for Internet Protocol
40 Photuris, Security failures
41 实验性的 ICMP for experimental mobility protocols such as Seamoby [RFC4065]
42 到 255 保留 保留
235 实验性的 RFC3692( RFC 4727)
254 实验性的 RFC3692( RFC 4727)
255 保留 保留
By @Wolfson Liu in
Tags : #linux, #network,