p i n g程序为我们提供了查看I P记录路由( R R)选项的机会。大多数不同版本的p i n g程
序都提供-R选项,以提供记录路由的功能。它使得p i n g程序在发送出去的I P数据报中设置I P
R R选项(该I P数据报包含I C M P回显请求报文)。这样,每个处理该数据报的路由器都把它的
I P地址放入选项字段中。当数据报到达目的端时, I P地址清单应该复制到I C M P回显应答中,
这样返回途中所经过的路由器地址也被加入清单中。当p i n g程序收到回显应答时,它就打印
出这份I P地址清单,

对于windows,是 -r ,

C:\Users\liuww>ping -r 10.30.1.61
选项 -r 的值有错误,有效范围从 1 到 9

有效值是1-9,是由于IP首部只有有限的空间来存放IP地址,因为IP的首部长度字段是4bits,最大值为15,意味着,IP首部最大为15个32bits长度,即60字节,

去除IP首部固定的20个字节,还剩下40字节,RR(记录路由选项)要用去3个字节,还剩37个字节,由于一个IP地址需要4个字节,所以一共可以存放9个IP地址,所以有效范围是1-9

220538309.jpg

code是一个字节,对于RR选项,它的值为7,即截图里面的07

len 是RR选项的总字节长度,对于 ping -r 9 的情况下 这里就是39字节,9*4+3=39,即截图中的0x27


ptr(pointer)称作指针字段,它是一个基于1的指针,指向存放下一个IP地址的位置。他的最小值为4,指向存放第一个IP地址的位置。随着每个IP地址的存入清单,
ptr的值分别为8,12,16,最大到36,当记录下全部9个IP地址后,ptr的值为40,表示清单已经满了

C:\Users\liuww>ping -r 9 10.129.39.78

正在 Ping 10.129.39.78 具有 32 字节的数据:
来自 10.129.39.78 的回复: 字节=32 时间=770ms TTL=245
路由: 10.46.194.86 -> ----------这些存放的是路由器的出口地址
10.46.193.6 ->
10.41.34.14 ->
172.30.100.86 ->
172.30.8.17 ->
172.30.2.249 ->
10.129.1.1 ->
10.129.36.1 ->
10.129.39.78 ----------目的主机地址

请求:

220717588.jpg


最终主机响应:

220816481.jpg

注:这个RR选项是记录来回的经过的路由器C出口IP地址,上面由于进过路由器太多,只记录了去的路径,下面是记录来回路径:


C:\Users\liuww>ping -r 9 10.41.34.14

正在 Ping 10.41.34.14 具有 32 字节的数据:
来自 10.41.34.14 的回复: 字节=32 时间=5ms TTL=253
路由: 10.46.194.86 ->
10.46.193.6 ->
10.41.34.14 ->
10.46.193.5 ->
10.46.194.85 ->
10.46.206.129


主机 → 路由器R1(出口IP 10.46.194.86)→ 路由器R2(出口IP 10.46.193.6)→ 路由器R3(IP 10.41.34.14)

路由器R3(IP 10.41.34.14)→ 路由器R2(出口IP 10.46.193.5)→ 路由器R1(出口IP 10.46.194.85)→ 主机网关地址 10.46.206.129