TCP-IP详解卷1:协议 学习笔记(6) Ping

参考:TCP-IP详解卷1:协议

Ping程序的目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。

一般来说,如果不能Ping到某台主机,那么久不能Telnet或者FTP到那台主机。反过来,如果不能Telnet到某台主机,可以使用Ping程序来确定问题在哪里。Ping程序还能测出这台主机的往返时间,以表明该主机离我们多远。

称发送回显请求的ping程序为客户,而称被ping的主机为服务器。大多数的TCP/IP实现都在内核中直接支持Ping服务器,这种服务器不是一个用户进程。

ICMP回显请求和回显应答报文:

对于其他类型的ICMP查询报文,服务器必须响应标识符合序列号字段。另外,客户发送的选项数据必须回显,假设客户对这些信息都会感兴趣。

Unix系统在实现ping程序时是把ICMP报文中的标识符字段设置成发送进程的ID号,这样即使在同一台主机上同时运行了多个ping程序实例,ping程序也可以识别出返回的信息。

序列号从0开始,每发送一次新的回显请求就加1.ping程序打印出返回的每个分组的序列号,允许我们查看是否有分组丢失、失序或重复。

当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间。

ping程序通过在ICMP报文数据中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值。

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

这个过程听起来简单,但存在一些缺陷。源端主机生成RR选项,中间路由器对RR选项的处理,以及把ICMP回显请求中的RR清单复制到ICMP回显应答中,所有这些都是选项功能。幸运的是,大多数系统都支持这些选项功能,只是有一些系统不把ICMP请求中的IP清单复制到ICMP应答中。

但是,最大的问题是IP首部中只有有限的空间来存放IP地址。IP首部中的首部长度字段只有4bit,因此整个IP首部最长只能包括15个32bit长的字(即60个字节)。由于IP首部固定长度为20字节,RR选项用去3个字节,这样只剩下37个字节来存放IP低脂清淡,也就是说只能存放9个IP地址。

IP数据报中的RR选项的一般格式:

code是一个字节,指明IP选项的类型,对于RR选项来说,它的值是7.len是RR选项总字节长度,在这种情况下为39。

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

IP时间戳选项与记录路由选项类似。

时间戳选项的代码为0x44.

其他两个字段len与ptr与记录路由选项相同。选项的总长度一般为36或40和指向下一个可用空间的指针(5,9,13等)。

接下来两个字段是4bit的值:OF表示溢出字段,FL表示标志字段。时间戳选项的操作根据标志字段来进行:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值