【笔记】tcp/ip illustrated <7 ping>

一、参考


TCP/IP详解 卷1:协议(英文版)

TCP/IP详解 卷1:协议

二、名词解释


RR,record route, 记录路由

三、内容


1. 概要

ping原本定义为声纳定位物体,ping程序是Mike Muuss编写,用于测试某个主机是否可以到达
ping程序发送一个ICMP回显请求报文到指定主机,并等待返回ICMP回显应答
一般,如果不能Ping到某台主机,就不能Telnet, FTP到那台主机,如果不能Telnet到某台主机,那么通常可以用Ping程序来确定问题出在哪里
Ping程序还能测出到本机的往返时间,表明主机和目标主机的网络距离

随着安全意识的增强,出现了提供访问控制清单的路由器和防火墙,一台主机的可达性可能不只是取决于IP层是否可达,还取决于使用何种协议以及端口号,所以,Ping程序的运行结果可能显示某个主机不可达,但是可以Telnet远程登录到该台主机的25端口

2. ping程序

称发送ping程序为客户,被ping的主机为服务器,大多数TCP/IP实现都在内核中直接支持Ping服务器(不是一个用户进程,ICMP查询服务,例如:地址掩码或者时间戳请求,也是在内核中实现)

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

序列号从0开始,每发送一次新的回显请求,递增1,ping程序打印出返回的每个分组的序列号,运行查看是否有分组丢失、失序、重复(因为IP层是尽力而为的数据报传递服务,所以这些情况都可能发生)

2.1 局域网输出

当返回ICMP回显应答时候,要打印出序列号和TTL,计算往返时间
通过在ICMP报文数据中存放发送请求的时间值计算往返时间(当应答返回时候,用当前时间减去存放在ICMP报文中的时间值,即是往返时间)

如上,第一行包含目的主机的IP地址和主机名称,说明主机名称被解析为IP地址(利用DNS协议)
通常,第一个往返时间值比其他的大,由于目的端的硬件地址不在ARP高速缓存中的原因

2.2 广域网输出


在一个广域网上,结果可能会有很大不同,上面的例子是某个工作日的下午的运行结果,
序列号为1,2,3,4等回显请求或者回显应答在某个地方丢失,往返时间发送了很大的变化
通过广域网还有可能看到重复的分组(即相同的序列号的分组被打印两次或者多次),失序的分组(序列号为N+1的分组在序列号N的分组之前被打印)

2.3 线路SLIP链接

SLIP链路,因为它们经常运行于低速的异步方式(9600b/s或者更低)
默认情况下,ICMP报文有56个字节,再加上20个字节的IP首部和8个字节的ICMP首部,IP数据报的总长度为84字节
根据链路层,SLIP会在IP数据报的开始结尾加上END字符,此外,SLIP帧还有可能再增加一些字节,取决于数据报中的每个字节的值,

假设,把主机bsdi和slip之间的SLIP链路传输速率设置为1200 b/s
由于一个字节有8位数据,1位起始位,1位结束位,传输速率是1秒120个字节,即一个字节 1000 / 120 = 8.33 ms
估计需要1433(86 8.33 2)ms

由上,往返时间大约是1.5秒,但是程序发送ICMP回显请求是1秒1次,
说明在第一个回显应答返回之前,就已经发送了两次请求(分别在0秒和1秒),所以,总结行中丢失一个分组,实际上并未丢失,很可能应答仍然在返回的途中

2.4 拨号SLIP链路

对于拨号的SLIP链路来说,情况有些变化,因为在链路的两端增加了调制解调器,用于sun和netb系统之间的调制解调器,带来了时延,随着数据的压缩,分组长度可能会减少,但是由于使用了错误控制协议,分组长度有可能会增加

接收端的调制解调器只能在验证了循环检验字符(检验和)后才能释放收到的数据
最后,还需要处理每一端的计算机异步串行接口,许多操作系统只能在固定的时间间隔内,或者收到若干字符后,才去读这些接口

3. IP记录路由选项

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

最大的问题,IP首部中只有有限的空间存放IP地址,首部中的首部长度字段只有4位,因此整个IP首部最长只能包含15个32位长的字(60个字节)
由于IP首部固定长度是20字节,RR选项使用3个字节,只有37个字节来存放IP地址清单,即只能存放9个IP地址

你可能感兴趣的:(ping)