TCP/IP协议 卷一 PING

Ping

就是我们平时使用的额那个ping命令
是为了测试以另一台主机是否可达
发送ICMP回显请求(类型8代码0)报文给另一台主机,等待返回ICMP回显应答(类型0代码0)报文
一般可以用该程序测试是否能联通指定目标主机。但是如果对方的防火墙或者路由器能够拦截此ICMP的话则不能作为是否联通的判断依据

ICMP回显请求应答报文格式

在这里插入图片描述
unix系统将标识符设置成发送进程的ID号。这样各进程的ping程序都能识别到自己的应答
序列号从0开始没发送一次请求+1

IP记录路由选项

ping程序提供了查看IP记录路由(RR)选项的机会
每个处理过该数据的路由器都会将它的IP地址放入地址清单中。当达到目的端的时候IP地址清单被复制到回显应答中。 这样ping程序收到回显应答时,他就打印出这份IP地址清单
但是他是放在IP首部

那么,有个问题。IP首部的长度字段只有4bitIP数据报传送门
所以最长的长度是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地址RFC791规定

IP时间戳选项

与RR选项类似
在这里插入图片描述
code: 时间戳的0x44
len与ptr与RR选项的数据报的一致
OF: 4bit 溢出字段 作用:如果路由器发现IP数据报的长度无法容纳时间错的数据,则会增加溢出字段的值,以此来增加数据报的长度
FL: 4bit 标志位
在这里插入图片描述
时间戳取值为UTC午夜开始计算的毫秒数。不过这不是强制性的。路由器可以使用任意格式。但是要打开时间戳中的高位以标明非标准值

这里有一个问题 只记录时间戳不记录IP是没意义的
如果标志位选择1 也就是IP和时间戳都记录 那只能记录4对
如果选择3 指定IP写入时间戳。
还有一个问题 谁能保证路由器上面的时间是正确的呢?

所以这个IP时间戳报文有毛用啊?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章