Ping程序
1、引言
ping名字源于声呐定位操作。该程序由Mike Muuss编写,目的是测试另一台主机是否可达。其发送一份ICMP报文回显请求报文给主机,并等待返回ICMP回显应答。
2、Ping程序
被ping的主机为服务器。大多数TCP/IP实现都在内核中直接支持了Ping服务器。
Unix系统把标识符设置为发送进程的ID号。当同一台主机同时运行多个ping程序时,也能识别出返回的信息。
2.1 LAN输出
3、IP记录路由选项
有些版本Ping程序提供-R选项,以提供记录路由功能。这样,每个处理该数据报的路由器都把它的IP地址放到选项字段中,返回时,目的主机把IP清单放到回显应答中。
在win7和Ubuntu12.04好像都不支持此选项,就不多说了。
1 40 2018-05-05 16:34:06.892625 10.8.245.59 203.208.40.63 ICMP 98 Echo (ping) request id=0x5eb4, seq=4/1024, ttl=63 (no response found!) 2 3 4 0000 78 da 6e 87 3f 45 00 23 24 e3 aa cc 08 00 45 00 x.n.?E.#$.....E. 5 0010 00 54 75 0b 00 00 3f 01 00 00 0a 08 f5 3b cb d0 .Tu...?......;.. 6 0020 28 3f 08 00 7a 6a 5e b4 00 04 79 6c ed 5a c2 12 (?..zj^...yl.Z.. 7 0030 0b 00 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 ................ 8 0040 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 .......... !"#$% 9 0050 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 &'()*+,-./012345 10 0060 36 37 67 11 12 #链路层 13 78 da 6e 87 3f 45 #以太网广播地址 14 00 23 24 e3 aa cc #以太网源地址 15 08 00 #IP数据报 16 17 #IP层 18 45 00 #IPv4,头长度5个字,20字节;TOS为0,一般服务 19 00 54 #总长度 84 20 75 0b #标识符 0x750b 21 00 00 #3位标志和13位片偏移 22 3f #TTL 23 01 #ICMP 24 00 00 #首部校验和 25 0a 08 f5 3b #源IP 26 cb d0 28 3f #目的IP 27 28 #ICMP报文 29 08 #类型 回显请求 30 00 #代码 31 7a 6a #校验和 32 5e b4 #标识符,一般是ping进程ID 33 00 04 #当前报文序号 34 35 79 6c ed 5a c2 12 0b 00 #附加数据 36 08 09 0a 0b 0c 0d 0e 0f 37 10 11 12 13 14 15 16 17 38 18 19 1a 1b 1c 1d 1e 1f 39 20 21 22 23 24 25 26 27 40 28 29 2a 2b 2c 2d 2e 2f 41 30 31 32 33 34 35 36 37 42 43 { yl.Z.. 44 ................ 45 .......... !"#$% 46 &'()*+,-./012345 47 67 48 }
4、IP时间戳选项
IP时间戳选项与记录路由选项类似。在报文中增加了4字节的时间戳。
总结:
- ping是对两个TCP/IP系统连通性测试基本工具。
- ping利用ICMP回显请求和回显应答报文,而不经过传输层(TCP/UDP),参看上面的报文以及上篇文章的图6-9。
- 实际测试发现附加选项并未生效,这跟不同系统中ping程序的具体实现有关。