ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

TCP/IP详解,卷1:协议--第7章 Ping程序

2020-01-20 20:04:50  阅读:197  来源: 互联网

标签:选项 程序 回显 IP Ping TCP 地址 主机 路由器


引言

“p i n g”这个名字源于声纳定位操作。 P i n g程序由Mike Muuss编写,目的是为了测试另一
台主机是否可达。该程序发送一份 I C M P回显请求报文给主机,并等待返回 I C M P回显应答
(图6 - 3列出了所有的I C M P报文类型)。
一般来说,如果不能 P i n g到某台主机,那么就不能 Te l n e t或者F T P到那台主机。反过来,
如果不能Te l n e t到某台主机,那么通常可以用 P i n g程序来确定问题出在哪里。 P i n g程序还能测
出到这台主机的往返时间,以表明该主机离我们有“多远”。
在本章中,我们将使用 P i n g程序作为诊断工具来深入剖析 I C M P。P i n g还给我们提供了检
测I P记录路由和时间戳选项的机会

几年前我们还可以作出这样没有限定的断言,如果不能 P i n g到某台主机,那么就
不能Te l n e t或F T P到那台主机。随着I n t e r n e t安全意识的增强,出现了提供访问控制清单
的路由器和防火墙,那么像这样没有限定的断言就不再成立了。一台主机的可达性可
能不只取决于I P层是否可达,还取决于使用何种协议以及端口号。P i n g程序的运行结果
可能显示某台主机不可达,但我们可以用Te l n e t远程登录到该台主机的2 5号端口(邮件
服务器)

Ping程序
我们称发送回显请求的 p i n g程序为客户,而称被p i n g的主机为服务器。大多数的 T C P / I P
实现都在内核中直接支持 P i n g服务器 — 这种服务器不是一个用户进程(在第 6章中描述的两
种I C M P查询服务,地址掩码和时间戳请求,也都是直接在内核中进行处理的)。
I C M P回显请求和回显应答报文如图7 - 1所示。

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

U n i x系统在实现p i n g程序时是把I C M P报文中的标识符字段置成发送进程的 I D号。这样
即使在同一台主机上同时运行了多个 p i n g程序实例,p i n g程序也可以识别出返回的信息。
序列号从0开始,每发送一次新的回显请求就加 1。p i n g程序打印出返回的每个分组的序
列号,允许我们查看是否有分组丢失、失序或重复。 I P是一种最好的数据报传递服务,因此
这三个条件都有可能发生。
旧版本的p i n g程序曾经以这种模式运行,即每秒发送一个回显请求,并打印出返回的每
个回显应答。但是,新版本的实现需要加上- s选项才能以这种模式运行。默认情况下,新版
本的p i n g程序只发送一个回显请求。如果收到回显应答,则输出“ host is alive”;否则,在
2 0秒内没有收到应答就输出“no answer(没有回答)”。

IP记录路由选项

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

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

但是,最大的问题是 I P首部中只有有限的空间来存放 I P地址。我们从图3 - 1可以看到,I P
首部中的首部长度字段只有 4 bit,因此整个I P首部最长只能包括1 5个32 bit长的字(即6 0个字
节)。由于I P首部固定长度为 2 0字节,R R选项用去3个字节(下面我们再讨论),这样只剩下
3 7个字节( 6 0- 2 0- 3)来存放 I P地址清单,也就是说只能存放 9个I P地址。对于早期的
A R PA N E T来说,9个I P地址似乎是很多了,但是现在看来是非常有限的(在第 8章中,我们将
用Tr a c e r o u t e工具来确定数据报的路由)。除了这些缺点,记录路由选项工作得很好,为详细
查看如何处理I P选项提供了一个机会。

I P数据报中的R R选项的一般格式如图7 - 3所示。

c o d e是一个字节,指明I P选项的类型。对于R R选项来说,它的值为7。l e n是R R选项总字
节长度,在这种情况下为 3 9(尽管可以为R R选项设置比最大长度小的长度,但是 p i n g程序
总是提供3 9字节的选项字段,最多可以记录 9个I P地址。由于I P首部中留给选项的空间有限,
它一般情况都设置成最大长度)。
p t r称作指针字段。它是一个基于 1的指针,指向存放下一个 I P地址的位置。它的最小值为
4,指向存放第一个 I P地址的位置。随着每个 I P地址存入清单,p t r的值分别为8,1 2,1 6,最
大到3 6。当记录下9个I P地址后,p t r的值为4 0,表示清单已满。

当路由器(根据定义应该是多穴的)在清单中记录 I P地址时,它应该记录哪个地址呢?
是入口地址还是出口地址?为此, RFC 791 [Postel 1981a]指定路由器记录出口 I P地址。我们
在后面将看到,当原始主机(运行 p i n g程序的主机)收到带有 R R选项的I C M P回显应答时,
它也要把它的入口I P地址放入清单中

IP时间戳选项

I P时间戳选项与记录路由选项类似。 I P时间戳选项的格式如图7 - 7所示(请与图7 - 3进行比
较)。

时间戳选项的代码为 0 x 4 4。其他两个字段 l e n和p t r与记录路由选项相同:选项的总长度
(一般为3 6或4 0)和指向下一个可用空间的指针( 5,9,1 3等)。
接下来的两个字段是4 bit的值:O F表示溢出字段,F L表示标志字段。时间戳选项的操作
根据标志字段来进行,如图7 - 8所示

如果路由器由于没有空间而不能增加时间戳选项,那么它将增加溢出字段的值
时间戳的取值一般为自U T C午夜开始计的毫秒数,与 I C M P时间戳请求和应答相类似。如
果路由器不使用这种格式,它就可以插入任何它使用的时间表示格式,但是必须打开时间戳
中的高位以表明为非标准值

与我们遇到的记录路由选项所受到的限制相比,时间戳选项遇到情况要更坏一些。如果
我们要同时记录 I P地址和时间戳(标志位为 1),那么就可以同时存入其中的四对值。只记录
时间戳是没有用处的,因为我们没有标明时间戳与路由器之间的对应关系(除非有一个永远
不变的拓扑结构)。标志值取3会更好一些,因为我们可以插入时间戳的路由器。一个更为基
本的问题是,很可能无法控制任何给定路由器上时间戳的正确性。这使得试图用 I P选项来计
算路由器之间的跳站数是徒劳的。我们将看到(第 8章)t r a c e r o u t e程序可以提供一种更好
的方法来计算路由器之间的跳站数。

小结

p i n g程序是对两个T C P / I P系统连通性进行测试的基本工具。它只利用 I C M P回显请求和
回显应答报文,而不用经过传输层( T C P / U D P)。P i n g服务器一般在内核中实现I C M P的功能。
我们分析了在 L A N、WA N以及S L I P链路(拨号和线路)上运行 p i n g程序的输出结果,
并对串行线路上的S L I P链路吞吐量进行了计算。我们还讨论并使用了 p i n g程序的I P记录路由
选项。利用该I P选项,可以看到它是如何频繁使用默认路由的。在第 9章我们将再次回到这个
讨论主题。另外,还讨论了IP 时间戳选项,但它在实际使用时有所限制。

标签:选项,程序,回显,IP,Ping,TCP,地址,主机,路由器
来源: https://www.cnblogs.com/ygjzs/p/12219219.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有