ping 是基于 ICMP 协议工作的,所以要明白 ping 的工作,首先我们先来熟悉 ICMP 协议。
IP协议的助手 —— ICMP 协议
ICMP 是什么?
ICMP 全称是 Internet Control Message Protocol,也就是互联网控制报文协议。
里面有个关键词 —— 控制,如何控制的呢?
网络包在复杂的网络传输环境里,常常会遇到各种问题。当遇到问题的时候,总不能死的不明不白,没头没脑的作 ⻛不是计算机网络的⻛格。所以需要传出消息,报告遇到了什么问题,这样才可以调整传输策略,以此来控制整个 局面。
ICMP 功能都有啥?
ICMP 主要的功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被废弃的原因和改善网络设置等。
在 IP 通信中如果某个 IP 包因为某种原因未能达到目标地址,那么这个具体的原因将由 ICMP 负责通知。
ICMP 包头的类型字段,大致可以分为两大类:
- 一类是用于诊断的查询消息,也就是「查询报文类型」
- 另一类是通知出错原因的错误消息,也就是「差错报文类型」
查询报文类型
回送消息——类型 0 和 8
回送消息用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息, ping 命令 就是利用这个消息实现的。
可以向对端主机发送回送请求的消息( ICMP Echo Request Message ,类型 8 ),也可以接收对端主机发回来 的回送应答消息( ICMP Echo Reply Message ,类型 0 )。
相比原生的 ICMP,这里多了两个字段:
- 标识符:用以区分是哪个应用程序发 ICMP 包,比如用进程 PID 作为标识符;
- 序号:序列号从 0 开始,每发送一次新的回送请求就会加 1 , 可以用来确认网络包是否有丢失。
在选项数据中, ping 还会存放发送请求的时间值,来计算往返时间,说明路程的⻓短。
差错报文类型
接下来,说明几个常用的 ICMP 差错报文的例子:
- 目标不可达消息 —— 类型 为 3
- 原点抑制消息 —— 类型 4
- 定向消息 —— 类型 5
超时消息 —— 类型 11
<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br />
