Ping程序 ping
发送回显请求的ping程序为客户,被ping的主机为服务器。
ICMP回显请求和回显应答报文:
对于其他类型的ICMP查询报文,服务器必须响应标识符和序列号字段。另外,客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。 序列号从0开始,每发送一次新的回显请求就加1。ping程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。
IP首部中的记录路由选项的一般格式:
- code是一个字节,指明IP选项的类型。RR选项中,值为“7”。
- len是RR选项总字节长度,在这种情况下为39(尽管可以为RR选项设置比最大长度小的长度,但是ping程序总是提供39字节的选项字段,最多可以记录9个IP地址。由于IP首部中留给选项的空间有限,它一般情况都设置成最大长度)。
- ptr称作指针字段。它是一个基于1的指针,指向存放下一个IP地址的位置。它的最小值为4,指向存放第一个IP地址的位置。随着每个IP地址存入清单, ptr的值分别为8,1 2,1 6,最大到3 6。当记录下9个IP地址后,ptr的值为40,表示清单已满。
IP首部中时间戳选项的一般格式:
- 时间戳选项的代码为0x44。其他两个字段len和ptr与记录路由选项相同:选项的总长度(一般为36或40)和指向下一个可用空间的指针(5,9,1 3等)。
- OF(4 bit)表示溢出字段, FL(4 bit)表示标志字段。
时间戳选项的操作根据标志字段来进行:
- 0 : 只记录时间戳
- 1 : 每台路由器都记录它的IP地址和时间戳。在选项列表中只有存放4对地址和时间戳的空间
- 3 : 发送端对选项列表进行初始化,存放了4个IP地址和4个取值为0的时间戳值。只有当列表中的下一个IP地址与当前路由器地址相匹配时,才记录它的时间戳
时间戳的取值一般为自UTC午夜开始计的毫秒数,与ICMP时间戳请求和应答相类似。如果路由器不使用这种格式,它就可以插入任何它使用的时间表示格式,但是必须打开时间戳中的高位以表明为非标准值。