Chapter 7 Ping程序

Ping = Packet Internet Groper = 因特网包探索器
Ping是对两个TCP/IP系统进行连通性测试的基本工具。
Ping程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答
Ping不用经过TCP/UDP传输层。
Ping服务器一般在内核中实现ICMP的功能。

7.2节 Ping程序

ICMP回显请求报文 = 8位类型(=8)+ 8位代码(=0)+ 16位检验和 + 16位标识符 + 16位序号 + 选项数据
ICMP回显应答报文 = 8位类型(=0)+ 8位代码(=0)+ 16位检验和 + 16位标识符 + 16位序号 + 选项数据

其中:
对Unix系统而言,标识符 = 发送进程的ID号;
序号字段随回显请求发送次数递增,用于检查是否有分组丢失、失序或重复。

TCP/IP协议详解卷一:Chapter7 笔记Ping程序默认发送的ICMP报文有56个字节(bytes),加上20个字节的IP首部、8个字节的ICMP首部,IP数据报的总长度为84字节。如果是通过SLIP链接传输,还需要加上首尾END字符和若干转义字符。

WAN = Wide Area Network = 广域网
调制解调器 Modem = 调制器 Modulator + 解调器 Demodulator
调制解调器能把计算机的数字信号翻译成可沿普通电话线传送的模拟信号,而这些模拟信号又可被线路另一端的另一个调制解调器接收,并译成计算机可懂的语言。

7.3节 IP记录路由选项

大多数不同版本的Ping程序都提供 -R 选项,以提供记录路由的功能。Ping程序在发送出去的IP数据报中设置RR选项,使得每个处理该数据报的路由器都把自己的IP地址放入选项字段中。IMCP回显应答中,返回路径上的路由器IP地址也被加入到该IP地址清单中。

由于IP首部最长为60字节,包括20字节IP首部和3字节RR选项,因此最多只有37字节可用于存放IP地址清单。

TCP/IP协议详解卷一:Chapter7 笔记
IP首部中的RR选项格式:
1字节code + 1字节len + 1字节ptr + 4字节IP地址#1 + … + 4字节IP地址#9

对于RR选项而言,code = 7, len = 39。指针ptr指向存放下一个IP地址的位置(ptr = 4, 8, 12, …, 40)。

IP清单中记录的是路由器的出口IP地址、以及原始主机(运行Ping程序的主机)收到ICMP回显应答时的入口IP地址

一个例子(在主机svr4上运行ping程序到主机slip)
TCP/IP协议详解卷一:Chapter7 笔记
TCP/IP协议详解卷一:Chapter7 笔记RR选项中依次记录的IP地址清单为140.252.13.66、140.252.13.65、140.252.13.35、140.252.13.34

7.4节 IP时间戳选项

IP时间戳选项与记录路由选项基本类似。具体格式如下:
TCP/IP协议详解卷一:Chapter7 笔记1字节code + 1字节len + 1字节ptr + 4位OF字段 + 4位FL字段 + 4字节时间戳#1 + … + 4字节时间戳#9

时间戳选项的代码code = 0x44。len和ptr字段与记录路由选项类似。长度len一般为36或40。ptr依次为5, 9, 13等。

OF代表溢出字段。如果路由器没有空间来增加时间戳选项,溢出字段的值就会增加。
FL是标志字段(可取值 0, 1, 3)。其不同取值对应的操作如下:
TCP/IP协议详解卷一:Chapter7 笔记

相关文章: