本文共 985 字,大约阅读时间需要 3 分钟。
就是我们平时使用的额那个ping命令
是为了测试以另一台主机是否可达 发送ICMP回显请求(类型8代码0)报文给另一台主机,等待返回ICMP回显应答(类型0代码0)报文 一般可以用该程序测试是否能联通指定目标主机。但是如果对方的防火墙或者路由器能够拦截此ICMP的话则不能作为是否联通的判断依据ping程序提供了查看IP记录路由(RR)选项的机会
每个处理过该数据的路由器都会将它的IP地址放入地址清单中。当达到目的端的时候IP地址清单被复制到回显应答中。 这样ping程序收到回显应答时,他就打印出这份IP地址清单 但是他是放在IP首部那么,有个问题。IP首部的长度字段只有4bit
所以最长的长度是1111也就是15 那也就是说 最长只能存储15个IP(4字节),也就是60字节 但是!但是! IP首部要占用20字节,RR选项字段要占用3字节。扣除一下就剩下37字节了37/4就剩下9个还多1个字节,这个字节目前未知是干嘛的,先放着,等到第二卷讲实现的时候应该就会说到。code ip选项类型 RR选项的值为7
len RR选项的总长度。值为39(字节) ptr 指针字段 基于1的指针 指向存放下一个ip地址位置 最小值为4.随着IP的增加以4字节为单位移动。当9个IP 全部加入进去ptr的值为40.表示清单已满路由器存放的是出口IP地址规定
与RR选项类似
code: 时间戳的0x44 len与ptr与RR选项的数据报的一致 OF: 4bit 溢出字段 作用:如果路由器发现IP数据报的长度无法容纳时间错的数据,则会增加溢出字段的值,以此来增加数据报的长度 FL: 4bit 标志位 时间戳取值为UTC午夜开始计算的毫秒数。不过这不是强制性的。路由器可以使用任意格式。但是要打开时间戳中的高位以标明非标准值这里有一个问题 只记录时间戳不记录IP是没意义的
如果标志位选择1 也就是IP和时间戳都记录 那只能记录4对 如果选择3 指定IP写入时间戳。 还有一个问题 谁能保证路由器上面的时间是正确的呢?所以这个IP时间戳报文有毛用啊?
转载地址:http://gzepi.baihongyu.com/