`
nanjingjiangbiao_T
  • 浏览: 2605543 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

ping和traceroute原理分析

 
阅读更多

ping命令工作原理

ping命令主要是用于检测网络的连通性。

Ping命令发送一个ICMP请求报文给目的IP,然后目的IP回复一个ICMP报文。

原理:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。

因为ping命令是使用ICMP协议,所以没有端口号,但是有两个域:类型和代码。

traceroute工作原理

traceroute是利用ICMP及IP头部的TTL。首先,traceroute送出一个TTL是1的IP数据包(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器收到IP数据包时,将TTL减1。此时,TTL变为0,所以将该路由器会将此IP数据包丢掉,并返回一个ICMP数据包(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),当traceroute收到这个消息后,接着继续发生TTL为2的IP数据包给第二个路由器。以此类推,直到IP数据包达到最后一台路由器时,会返回一个ICMP echo reply的数据包。

traceroute命令与ping命令的区别

PING主要是用来测试网络的连接性,一般能测试出来,特殊情况除外,比如对方的防火墙或路由是拒绝PING但能访问,也是通,只是他拒绝了PING的协议

Traceroute是路由跟踪,比如:Traceroute IP地址或域名。测试出来的结果就是你的主机,到达对方经过了多少台路由

traceroute命令是可以显示信号到达目标经过的各个路由器,从而判断问题所在节点,而Ping命令是检测网络是否畅通的常用命令,两者经常配合使用。一个是反馈各动态或静态路由节点信息,一个是网络通道是否畅通,有无丢包,反应时间

关于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
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包, 具体实验就不做了,时间紧张。

分享到:
评论

相关推荐

    实验四-ICMP数据报和IP数据报分片分析实验报告.docx

    分析 ping 命令的工作原理; 3. 分析 tracert 命令的工作原理; 4. 使用 wireshark 抓包软件分析IP 协议报文以及报文分片。 【实验步骤】 1. 分析 ICMP 协议 步骤1:在 PC1 运行 Wireshark,开始截获报文,为了只...

    [免费]WinSock网络编程经络经典源代码.rar

    代码中实现的主要协议有:Echo、Ping、Traceroute、Daytime、Bootp、MSG、SNTP、Finger、HTTP、FTP等。了解它 们的设计原理、工作流程、通信机制能让你对WinSock网络程序设计有更深入的解读。学习、研究Internet中...

    大学生计算机网络课程设计实验报告.zip

    本次计算机网络课程设计的实验目的是通过实践掌握计算机网络的基本原理和技术,深入了解TCP/IP协议栈的工作原理,提高网络编程和网络应用能力。 二、实验环境 1. 硬件环境:PC机、路由器、交换机等; 2. 软件环境:...

    大学生计算机网络课程设计实验报告.docx

    本次计算机网络课程设计的实验目的是通过实践掌握计算机网络的基本原理和技术,深入了解TCP/IP协议栈的工作原理,提高网络编程和网络应用能力。 二、实验环境 1. 硬件环境:PC机、路由器、交换机等; 2. 软件环境:...

    VC++《WinSock网络编程经络》随书

     代码中实现的主要协议有:Echo、Ping、Traceroute、Daytime、Bootp、MSG、SNTP、Finger、HTTP、FTP等。了解它们的设计原理、工作流程、通信机制能让你对WinSock网络程序设计有更深入的解读。学习、研究Internet中...

    网络安全ppt(1).pptx

    搜集网络信息的常用工具 Finger Whois Nslookup Dig Ping Traceroute Pathping 网络安全ppt(1)全文共65页,当前为第4页。 VisualRoute Smartwhois SamSpade NeoTracePro 网络安全ppt(1)全文共65页,当前为第5页。 ...

    网络安全ppt(2).pptx

    搜集网络信息的常用工具 Finger Whois Nslookup Dig Ping Traceroute Pathping 网络安全ppt(2)全文共65页,当前为第4页。 VisualRoute Smartwhois SamSpade NeoTracePro 网络安全ppt(2)全文共65页,当前为第5页。 ...

    防火墙相关

    6.3.2 ping,traceroute和dig 101 6.4 添加日志到标准后台守护程序 101 第7章 陷阱,诱饵和蜜罐 103 7.1 日志记录什么 103 7.1.1 地址空间刺探 106 7.1.2 ICMP监视 106 7.1.3 反间谍行动 107 7.1.4 基于日志的监视...

    Nmap实验报告.doc

    Traceroute路由跟踪扫描 使用-traceroute可以得到本机到目标主机之间的拓扑结构和路由信息。从Nmap结果 可以看出,本地主机到10.3.9.254一共要经过4跳才能到达。拓扑图如下 再对校内的图书馆,教务处,...

    Visual C++网络通信编程实用案例精选_7

    289 6.4.3 Ping程序的实现 291 6.4.4 TraceRoute程序的实现 300 6.5 Telnet协议 308 6.5.1 Telnet协议 308 6.5.2 NVT ASCII字符集 309 6.5.3 协商选项 309 6.5.4 BBS实例实现 ...

    Visual C++网络通信编程实用案例精选_3

    289 6.4.3 Ping程序的实现 291 6.4.4 TraceRoute程序的实现 300 6.5 Telnet协议 308 6.5.1 Telnet协议 308 6.5.2 NVT ASCII字符集 309 6.5.3 协商选项 309 6.5.4 BBS实例实现 ...

    Visual C++网络通信编程实用案例精选_9(全)

    289 6.4.3 Ping程序的实现 291 6.4.4 TraceRoute程序的实现 300 6.5 Telnet协议 308 6.5.1 Telnet协议 308 6.5.2 NVT ASCII字符集 309 6.5.3 协商选项 309 6.5.4 BBS实例实现 ...

    Visual C++网络通信编程实用案例精选_6

    289 6.4.3 Ping程序的实现 291 6.4.4 TraceRoute程序的实现 300 6.5 Telnet协议 308 6.5.1 Telnet协议 308 6.5.2 NVT ASCII字符集 309 6.5.3 协商选项 309 6.5.4 BBS实例实现 ...

    网络安全技术与实施-项目3--交换机安全管理与配置.pptx

    在该模式下,只执行有限的一组命令,这些命令通常用于查看显示系统信息、改变终端设置和执行一些最基本的测试命令,如ping、traceroute等。该模式的命令提示符为:Switch>。 网络安全技术与实施-项目3--交换机安全...

    防火墙与因特网安全

    tcpdump及其支持产品 99 6.3.1 利用tcpdump 99 6.3.2 ping,traceroute和dig 101 6.4 添加日志到标准后台守护程序 101 第7章 陷阱,诱饵和蜜罐 103 7.1 日志记录什么 103 7.1.1 地址空间刺探 106...

    windows网络编程技术

    原始套接字34013.1 原始套接字的创建34013.2 Internet控制消息协议34113.2.1 Ping示例34213.2.2 Traceroute示例35113.3 Internet组管理协议35213.4 IP_HDRINCL的使用35413.5 小结362第14章 Winsock 2服务提供者接口...

    Windows网络编程(PDF).rar

    34013.2 Internet控制消息协议 34113.2.1 Ping示例 34213.2.2 Traceroute示例 35113.3 Internet组管理协议 35213.4 IP_HDRINCL的使用 35413.5 小结 362第14章 Winsock 2服务提供者接口 36314.1 SPI基础 36314.1.1 ...

Global site tag (gtag.js) - Google Analytics