|
作者: 闪空[flashsky] [ 邮箱: flashsky1@sina.com 主页: ] | 发表日期: 2002-11-06 浏览次数: 4108 |
看见有人问为什么ping -r与tracert获取的路由信息不一样。而有回答是tracert采用了最短路径优先路由协议(OSPF)所导致,看来技术到理解也不是那么简单的事情,写点浅显的技术解释文章给大家,算给大家上点基本常识课,遇见问题如何去找答案。\r 首先记住:OSPF只是路由之间的选路协议,对于主机而言,是完全没办法干涉和获取的,他只能忠实的被动有路由去转发,他们在包到达目标路径上执行的策略都是一致的,虽然可能由于某些路由改变了路径导致其路径不一致,但是如果tracert的包是由OSPF选路确定的路径,那么ping的包也一样。\r 闲话少说,我们还是分析具体问题吧:口说无凭,还是做个实验抓取ping -r和tracert命令执行产生的包来分析吧:\r 这是ping www.sina.com.cn -r 9产生的结果:\r 218.17.93.143 ->61.144.201.66 ->61.144.236.211 ->61.140.1.18 -> 202.105.1.246 ->202.105.1.177 ->61.140.8.5 ->61.145.112.248 -> 61.145.113.124\r 那么看一下发出的请求包:\r 在发出的ICMP包中的IP头中使用了0x07 0x27的源地址路由选项,说明ICMP的路由是根据返回包的记录的源地址选项来实现路由记录的,从返回的包中的路由记录中可以看出和显示的路由信息完全一致。但是我们知道,通过源路由选项我们得出的结果是从www.sina.com.cn返回我们主机的包,其记录的路由实际上是www.sina.com.cn到我们的路由,而不是我们的主机到www.sina.com.cn的路由,呵呵,这就有差别了。\r 而tracert则是通过递增ttl来实现的路由检测,那么他是一个标准的由我们的主机到www.sina.com.cn的路由,结果是:\r 192.168.0.1->218.17.93.254->61.144.201.65->61.144.236.209->61.140.1.17->202.105.1.245->202.105.1.178->61.140.8.6->61.145.113.253->61.145.113.90\r 对比以下有什么不同呢?因为使用TTL方式会记录本地代理服务器的地址,而这台机器是关掉了源路由选项处理的功能的,所以要却掉这个地址对比如下:\r 218.17.93.143 ->61.144.201.66 ->61.144.236.211 ->61.140.1.18 -> 202.105.1.246 ->202.105.1.177 ->61.140.8.5 ->61.145.112.248 -> 61.145.113.124\r 218.17.93.254->61.144.201.65->61.144.236.209->61.140.1.17->202.105.1.245->202.105.1.178->61.140.8.6->61.145.113.253->61.145.113.90\r 因为一个是回路,一个是去路,因此可能选择的路由路径是不一致的,即使是一致的,也会产生不同的结果。为什么呢?因为路由都是多接口的,从一个接口收到包以后,转发到另一个接口上,由于ping方式获取的是包返回的路由,所以记录的都是这个路由的返回时候收到包的接口,而ttl递增方式则是记录的发送包的时候收到的路由接口地址。假设来去都使用了一样的路由路径,路由1到路由2,则演示如下:\r TTL递增方式的路由是:\r 主机1A《-》路由1接受接口〈-〉路由1发送接口〈-〉路由2接受接口〈-〉路由2发送接口〈-〉目标\r 记录的是:路由1接受接口,路由2接受接口\r ping -r方式则是记录了\r 路由1发送接口,路由2发送接口(以我们发送ICMP的时候的眼光看待)\r 所以ping -r和tracert得出的结果是不一样的,并且无论如何你都无法使得他们得出一样的结果,无论路由器之间采用了什么算法。\r 另外如果某些路由关闭了源路由选项支持的功能,也会使得ping -r方式获得的路由信息不全。\r \r \r [此贴被 闪空(flashsky) 在 7月24日16时11分 编辑过]\r \r ------------------------\r 帖子发表时间:7/24 16:46\r \r 四不象[tabris17]回复道: ^o^\r 四不象[tabris17]回复道: 高手 蓝林[laneagle]回复道: 这位高手以一大篇文章来批判我的最短路优先原则,当然有一定的道理。但是,问题是,如果路由改变的话,真的不会对PING -R和TRACERT的路由显示产生变化吗,我怀疑这点,况且PING -R最多只能记录9个路由信息,而且有的主机根本会忽略PING -R 的RECOND_ROUTE选项,不能作为基准。\r 闪空[flashsky]回复道: 别人问的问题是有先决条件,即多次情况下ping -r和tracert的不同而自己的相同,这已经否决了你的关于路由之间由于OSPF导致的路径不一致的问题,我对你的不满不是你的第一次的回答而是第二次的回答你的回答是:\r 邪·安[xiean]回复道: 你们争什么啊。。。去找 M$ 要 ping 和 tracert 的源码来研究得了。。 \r 闪空[flashsky]回复道: 呵呵\r magic[buaaytt]回复道: 我很努力地去看了,还是看不太懂!悲剧! \r NetDemon[netdemon]回复道: 最近看来看去就这个帖子算是好帖子\r 远航[wlbyyh]回复道: ping还有什么其它的用法吗? \r |
|
20CN缃戠粶瀹夊叏灏忕粍鐗堟潈鎵鏈
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
璁哄潧绋嬪簭缂栧啓锛NetDemon
绮CP澶05087286鍙