前言
前面学习
ICMP协议知识点,接着学习一个应用非常广泛的Ping命令,其以ICMP协议为基础。
Ping
ping目的是测试另一台主机是否可达,其发送一份ICMP回醒请求(类型为0,代码为0)报文给主机,然后等待返回ICMP回显应答。
Ping程序
ICMP回醒请求和回显应答报文如下图所示

被ping主机必须响应标识符和序列号字段,序列号从0开始,每发送一次新的回显请求就加1。
当在命令行中键入ping www.qq.com时,结果如下。

当返回ICMP回显应答时,需要显示序列号、TTL(经过了202 = 255-53个路由)以及往返时间。
IP时间戳选项
IP时间戳选项格式如下

code为0x44。len为0x27。ptr指针字段,指向存放下一个IP地址的位置,最小值为4,最大值为40表示满。OF表示溢出字段,4 bit。FL表示标志字段,4 bit。时间戳根据标志字段确定,可取0、1、3。
总结
Ping直接依赖于ICMP报文,其利用ICMP回显请求报文和回显应答报文,而不用经过传输层(TCP/UDP),一般在内核中实现。