ping和traceroute原理分析 ping 原理 分析

ping和traceroute原理分析---异同----为什么不能ping通却能traceroute

2007年02月02日 星期五 10:05



网友:julius-2007年02月01日星期四23:31|删除

关于ping和trace命令,有2个发现

首先是ping和trace的不同,虽然都是ICMP协议,但是可以有ping过trace不过或者相反的情况

再一个是pc的ping&trace和UNIX/router的不同,曾发生过某些节点前者不能过但后者却能够过的情况,当时也和同事讨论过,也没讨论出个子丑寅卯来

不知道这有啥解释么?

关于你的第一个问题,是很正常的,因为ping和traceroute的原理不同,

对于ping,发送的是一个echorequest包,类型为80,当被ping者接到相关icmp包的时候,根据实际情况,逻辑是,就发回reply00,逻辑否,则根据具体情况发出一些其他的信息,总结起来的说,是看目的是否能及时的把icmpreply包送回到源,一当路径上的某个节点把reply包给deny掉了,就肯定ping不通了,比如会是timeout,

下面是对ping的一些debug输出,debugippade100,access-list100permiticmpanyany,

1、这个是ping通的

Sending5,100-byteICMPEchosto192.168.100.1,timeoutis2seconds:

!!!!!

Successrateis100percent(5/5),round-tripmin/avg/max=36/51/68ms

R4(config)#

*Mar100:03:20.579:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.1(Serial1/0),routedviaFIB

*Mar100:03:20.583:IP:s=172.16.14.2(local),d=192.168.100.1(Serial1/0),len100,sending

*Mar100:03:20.587:ICMPtype=8,code=0

*Mar100:03:20.639:IP:tableid=0,s=192.168.100.1(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:03:20.643:IP:s=192.168.100.1(Serial1/0),d=172.16.14.2(Serial1/0),len100,rcvd3

*Mar100:03:20.647:ICMPtype=0,code=0

2、有路由,ping不通的,我在R1上做了如下设置

access-list100denyicmpanyany

access-list100permitipanyany

ints1/0

ipaccess-group100in

然后在R4上dodebugippade100

R4(config)#doping192.168.100.2

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto192.168.100.2,timeoutis2seconds:

U.U.U

Successrateis0percent(0/5)

R4(config)#dodebugippade100

IPpacketdebuggingison(detailed)foraccesslist100

R4(config)#

R4(config)#

R4(config)#doping192.168.100.2

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto192.168.100.2,timeoutis2seconds:

U

*Mar100:21:11.031:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:21:11.035:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len100,sending

*Mar100:21:11.039:ICMPtype=8,code=0

*Mar100:21:11.075:IP:tableid=0,s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:21:11.079:IP:s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:21:11.083:ICMPtype=3,code=13-----tcp/ip上看出,313代码暗示着由于过滤,通讯被禁止

下面是有路由,因为reply包被deny而timeout的,

我把R1上的acl设置改成

access-list100denyicmpanyany

access-list100permitipanyany

ints1/0

ping和traceroute原理分析 ping 原理 分析
ipaccess-group100out

R4(config)#doping192.168.100.2

Typeescapesequencetoabort.

Sending5,100-byteICMPEchosto192.168.100.2,timeoutis2seconds:

*Mar100:25:15.735:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:25:15.735:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len100,sending

*Mar100:25:15.735:ICMPtype=8,code=0.

总结起来,ping能否成功有三个必要条件,1、互相有到达对端的路由,2、echo包没被禁止,3、别timeout掉(这个实验不好做,本来想通过设置timeout时间为10ms来做,哈哈,最小是1s.)

对于traceroute,本质可以理解为hopbyhop的ping,但这个ping和上面讲的ping不一样,这个ping和我们的ping命令不同,traceroute包发出去后,途经的每个站点都会发回一个类型代码为110的icmp包回去,到了终点,才回发送一个代码为33的icmp包回到源,下面是一个traceroute的debug输出

R4(config)#dotracer192.168.100.2

Typeescapesequencetoabort.

Tracingtherouteto

*Mar100:47:11.567:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:47:11.571:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len28,sending

*Mar100:47:11.571:UDPsrc=49234,dst=33434

*Mar100:47:11.599:IP:tableid=0,s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:47:11.603:IP:s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:47:11.607:ICMPtype=11,code=0

*Mar100:47:20.643:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:47:20.643:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len28,sending

*Mar100:47:20.647:UDPsrc=49235,dst=33435

*Mar100:47:20.707:IP:tableid=0,s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:47:20.711:IP:s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:47:20.715:ICMPtype=11,code=0

*Mar100:47:20.719:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:47:20.723:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len28,sending

*Mar100:47:20.723:UDPsrc=49236,dst=33436

*Mar100:47:20.767:IP:tableid=0,s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:47:20.771:IP:s=172.16.14.1(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:47:20.775:ICMPtype=11,code=0

*Mar100:47:20.783:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:47:20.787:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len28,sending

*Mar100:47:20.791:UDPsrc=49237,dst=33437

*Mar100:47:20.867:IP:tableid=0,s=172.16.123.2(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:47:20.871:IP:s=172.16.123.2(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:47:20.875:ICMPtype=3,code=3

*Mar100:47:26.903:IP:s=192.168.100.4(Loopback0),d=255.255.255.255,len71,unroutable

*Mar100:47:26.903:UDPsrc=57768,dst=53172.16.123.2

*Mar100:47:29.907:IP:tableid=0,s=172.16.14.2(local),d=192.168.100.2(Serial1/0),routedviaFIB

*Mar100:47:29.907:IP:s=172.16.14.2(local),d=192.168.100.2(Serial1/0),len28,sending

*Mar100:47:29.911:UDPsrc=49238,dst=33438

*Mar100:47:29.987:IP:tableid=0,s=172.16.123.2(Serial1/0),d=172.16.14.2(Serial1/0),routedviaRIB

*Mar100:47:29.991:IP:s=172.16.123.2(Serial1/0),d=172.16.14.2(Serial1/0),len56,rcvd3

*Mar100:47:29.995:ICMPtype=3,code=3

从输出中可以验证一些东西,比如traceroute进程每跳发出三个探测包,上面也是

中途站点R1的debug输出

R1(config)#dodebugippade100

IPpacketdebuggingison(detailed)foraccesslist100

R1(config)#

*Mar100:47:20.311:IP:tableid=0,s=172.16.14.1(local),d=172.16.14.2(Serial1/0),routedviaFIB

*Mar100:47:20.315:IP:s=172.16.14.1(local),d=172.16.14.2(Serial1/0),len56,sending

*Mar100:47:20.319:ICMPtype=11,code=0

*Mar100:47:29.387:IP:tableid=0,s=172.16.14.1(local),d=172.16.14.2(Serial1/0),routedviaFIB

*Mar100:47:29.391:IP:s=172.16.14.1(local),d=172.16.14.2(Serial1/0),len56,sending

*Mar100:47:29.395:ICMPtype=11,code=0

*Mar100:47:29.467:IP:tableid=0,s=172.16.14.1(local),d=172.16.14.2(Serial1/0),routedviaFIB

*Mar100:47:29.471:IP:s=172.16.14.1(local),d=172.16.14.2(Serial1/0),len56,sending

*Mar100:47:29.475:ICMPtype=11,code=0

目的站点R2的输出

R2(config)#dounall

Allpossibledebugginghasbeenturnedoff

R2(config)#dodebugippade100

IPpacketdebuggingison(detailed)foraccesslist100

R2(config)#

*Mar100:53:49.315:IP:s=172.16.14.2(Serial1/2.1),d=192.168.100.2,len28,rcvd0

*Mar100:53:49.319:UDPsrc=49251,dst=33437

*Mar100:53:49.319:IP:tableid=0,s=172.16.123.2(local),d=172.16.14.2(Serial1/2.1),routedviaFIB

*Mar100:53:49.323:IP:s=172.16.123.2(local),d=172.16.14.2(Serial1/2.1),len56,sending

*Mar100:53:49.327:ICMPtype=3,code=3

R2(config)#

*Mar100:53:58.447:IP:s=172.16.14.2(Serial1/2.1),d=192.168.100.2,len28,rcvd0

*Mar100:53:58.451:UDPsrc=49252,dst=33438

*Mar100:53:58.455:IP:tableid=0,s=172.16.123.2(local),d=172.16.14.2(Serial1/2.1),routedviaFIB

*Mar100:53:58.455:IP:s=172.16.123.2(local),d=172.16.14.2(Serial1/2.1),len56,sending

*Mar100:53:58.459:ICMPtype=3,code=3

*Mar100:53:58.587:IP:s=172.16.14.2(Serial1/2.1),d=192.168.100.2,len28,rcvd0

*Mar100:53:58.591:UDPsrc=49253,dst=33439

由此可以看出,一样的道理,在中间站点上只要禁止代码110的icmp包输出,那么traceroute的输出中,关于那个站点就是*号了,或者在路上把代码为33的禁止掉,一样会traceroute不通,而此时,ping通是一点问题都没有的,因为ping没有用到这些类型的icmp包,具体实验就不做了,时间紧张。





from site : http://hi.baidu.com/gotoccie/blog/item/bd7f7df04efee9afa50f520d.html

TraceRoute(tracert)实现原理

TraceRoute程序的实现主要涉及IP头部生存时间(time to live, TTL)字段的使用。

设置TTL字段的目的是为了防止数据报由于选路错误或其他软硬件原因从而导致在网络中无休止的流动,TTL字段指定了数据报的生存时间。TTL的初始值由源主机设置,当一份数据报经过路由器时,处理该数据报的路由器都需要把TTL值减去数据报在路由器中停留的秒数。但事实上大多数路由器只是简单地将TTL值减1,因此TTL字段最终被实现为一个跳站计数器。当TTL字段的值被减为0时,路由器就不会转发该数据报,而是将其丢弃,并产生一份ICMP超时差错报文发往源主机以通知错误的发生。TraceRoute程序的关键就在于返回的这份ICMP超时差错报文的源地址就是途经路由器的IP地址。由此,通过依次递增TTL字段的值,就可以得到一份数据报在其传输路径上所经过的路由信息。

TraceRoute程序在具体实现时,是令其向目的主机发送一个ICMP回显请求(Echo request)消息,并重复递增IP头部TTL字段的值。刚开始的时候TTL等于1,这样当该数据报抵达途中的第一个路由器时,TTL的值就被减为0,导致发生超时错误,因此该路由器生成一份ICMP超时差错报文返回给源主机。随后,主机将数据报的TTL值递增1,以便IP报文能传递到下一个路由器,下一个路由器将会生成ICMP超时超时差错报文返回给源主机。不断重复这个过程,直到数据报到达最终的目的主机,此时目的主机将返回ICMP回显应答(Echo replay)消息。这样,源主机只需对返回的每一份ICMP报文进行解析处理,就可以掌握数据报从源主机到达目的主机途中所经过的路由信息。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/microtong/archive/2008/11/04/3220450.aspx

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/105431.html

更多阅读

问卷信度和效度分析 问卷调查信度效度分析

信度和效度分析是问卷分析的第一步,也是检验该问卷是否合格的标准之一,所以,我们在做问卷调查的时候第一步就要进行信度和效度的分析,才能确保我们的问卷有意义。信度(Reliability)即可靠性,是指使用相同指标或测量工具重复测量相同事物时

发电机的结构和工作原理 汽轮发电机的工作原理

充电系统(二)发电机的结构和发电原理1 交流发电机的组成:一般由转子总成、定子总成、整流器总成、端盖、皮带轮、风扇等组成。1-后端盖 2、3、4-碳刷及碳刷架 5-整流板 6-二极管7-转子 8-定子总成 9-前端盖 10-风扇 11-皮带轮(1)转子总成:

r语言:因子分析和聚类分析实例

r语言:因子分析和聚类分析实例-降维+样本聚类18 一月, 2013, oldlee11, R语言与数据挖掘, R语言同数据统计/分析, 因子分析, 聚类分析, , 0函数库?001002003004005006007008

个人宏观和微观环境分析 宏观环境微观环境

人生的MBA(二)个人宏观和微观环境分析爱华英语官方网站:http://www.aihua-english.com/孙子曰:“知己知彼,百战不殆。”现代企业管理学借鉴的主要就是这个思想,再加上不断变化理论,便形成了很完整的现代管理系统。比如一个大学生,如果为了

声明:《ping和traceroute原理分析 ping 原理 分析》为网友完美洒脱分享!如侵犯到您的合法权益请联系我们删除