TCP-IP协议详解 第七 八章 ping程序 Traceroute程序

1.ping命令的作用

“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程序还能测
出到这台主机的往返时间,以表明该主机离我们有“多远”。

2.ping程序

ping程序为客户,被ping的主机为服务器。

3.LAN、WAN、SPLIP、拨号SLIP链路输出

分析在 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选项,可以看到它是如何频繁使用默认路由的。

4.Traceroute程序

Tr a c e r o u t e程序是一个能更深入探索T C P / I P协议的方便可用的工具。
尽管不能保证从源端发往目的端的两份连续的 I P数据报具有相同的路由,但是大多数情况下
是这样的。Tr a c e r o u t e程序可以让我们看到I P数据报从一台主机传到另一台主机所经过的路由。
Tr a c e r o u t e程序还可以让我们使用I P源路由选项。

5.Traceroute程序

 I P记录路由选项(R R)。为什么不使用这个选项而另外开发一个
新的应用程序?有三个方面的原因。首先,原先并不是所有的路由器都支持记录路由选项,
因此该选项在某些路径上不能使用( Tr a c e r o u t e程序不需要中间路由器具备任何特殊的或可选
的功能)。
其次,记录路由一般是单向的选项。发送端设置了该选项,那么接收端不得不从收到的 I P
首部中提取出所有的信息,然后全部返回给发送端。在 7 . 3节中,我们看到大多数P i n g服务器的
实现(内核中的I C M P回显应答功能)把接收到的R R清单返回,但是这样使得记录下来的 I P地
址翻了一番(一来一回)。这样做会受到一些限制,这一点我们在下一段讨论( Tr a c e r o u t e程序
只需要目的端运行一个U D P模块 — 其他不需要任何特殊的服务器应用程序)。
最后一个原因也是最主要的原因是, I P首部中留给选项的空间有限,不能存放当前大多
数的路径。在I P首部选项字段中最多只能存放 9个I P地址。在原先的A R PA N E T中这是足够的,
但是对现在来说是远远不够的。
Tr a c e r o u t e程序使用I C M P报文和I P首部中的T T L字段(生存周期)。T T L字段是由发送端
初始设置一个8 bit字段。推荐的初始值由分配数字 R F C指定,当前值为6 4。较老版本的系统
经常初始化为1 5或3 2。我们从第7章中的一些p i n g程序例子中可以看出,发送 I C M P回显应答
时经常把T T L设为最大值2 5 5。
每个处理数据报的路由器都需要把 T T L的值减1或减去数据报在路由器中停留的秒数。由
于大多数的路由器转发数据报的时延都小于 1秒钟,因此T T L最终成为一个跳站的计数器,所
经过的每个路由器都将其值减1。

TTL字段的目的是防止数据报在选路时无休止地在网络中流动。

当路由器收到一份I P数据报,如果其T T L字段是0或1,则路由器不转发该数据报(接收到
这种数据报的目的主机可以将它交给应用程序,这是因为不需要转发该数据报。但是在通常
情况下,系统不应该接收 T T L字段为0的数据报)。相反,路由器将该数据报丢弃,并给信源
机发一份I C M P“超时”信息。Tr a c e r o u t e程序的关键在于包含这份 I C M P信息的I P报文的信源
地址是该路由器的I P地址

6.应用

Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。前面说到,尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。

Traceroute的原理是非常非常的有意思,它收到目的主机的IP后,首先给目的主机发送一个TTL=1(还记得TTL是什么吗?)的UDP(后面就 知道UDP是什么了)数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较 小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号>30000(真变态)的UDP报,所以到达目的主机的时候,目的 主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,主机到了,所以,说Traceroute是一个骗子一点也不为过:)

RTT是客户到服务器往返所花时间(round-trip time,简称RTT),TCP含有动态估算RTT的算法。TCP还持续估算一个给定连接的RTT,这是因为RTT受网络传输拥塞程序的变化而变化

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值