PING 是一款用于测试网络连接的工具,它通过发送 ICMP(Internet Control Message Protocol)回显请求报文来检查目标主机是否可达。
ICMP 协议
ICMP 协议是 IP 层的一种控制协议,用于在 IP 主机之间传输控制信息。PING 使用 ICMP 协议的回显请求和回显应答报文来实现其功能。
数据包交互
PING 工作流程如下:
-
PING 程序会构造一个 ICMP 回显请求报文,其中包含源 IP 地址、目标 IP 地址、数据包大小等信息。
-
PING 程序将 ICMP 回显请求报文发送到 IP 层。
-
IP 层会将 ICMP 回显请求报文封装在一个 IP 数据包中,并将其发送到目标主机。
-
目标主机的 IP 层会检查 IP 数据包的目标 IP 地址,如果匹配则将 ICMP 回显请求报文传递给 ICMP 层。
-
目标主机的 ICMP 层会构造一个 ICMP 回显应答报文,其中包含源 IP 地址、目标 IP 地址、以及与 ICMP 回显请求报文相同的数据字段。
-
目标主机的 ICMP 层将 ICMP 回显应答报文发送到 IP 层。
-
目标主机的 IP 层会将 ICMP 回显应答报文封装在一个 IP 数据包中,并将其发送回源主机。
-
源主机的 IP 层会检查 IP 数据包的目标 IP 地址,如果匹配则将 ICMP 回显应答报文传递给 ICMP 层。
-
源主机的 ICMP 层会计算往返时间并显示出来。
数据包结构
ICMP 回显请求报文和回显应答报文的结构如下:
-
Type: 报文类型,1 表示回显请求,0 表示回显应答。
-
Code: 报文代码,通常为 0。
-
Checksum: 用于校验报文完整性的校验和。
-
Identifier: 用于标识 ICMP 回显请求报文,以便匹配相应的回显应答报文。
-
Sequence Number: 序列号,用于标识 ICMP 回显请求报文的发送顺序。
-
Data: 可选字段,通常用于携带一些附加信息。
原文始发于微信公众号(技术修道场):你知道PING的技术原理吗?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论