Tracert和Ping的命令区别

Ping:主要就是检测目标主机是不是可连通。

 

实质:发送一个ICMP回显请求报文给目的主机,并等待回显的ICMP应答。然后打印出回显的报文。

 

注意:Ping不通一个地址,并不一定表示这个IP不存在或者没有连接在网络上,因为对方主机可能做了限制,比如安装了防火墙,因此Ping不通并不表示不能使用FTP或者TELNET连接。  

结果:包括字节数、反应时间、以及生存时间。

      Ping程序通过在ICMP报文数据中存放发送请求的时间来计算返回时间。当应答返回时,根据现在时间减去报文中存放的发送时间就得到反应时间了。生存时间(TTL),本来就存放在IP数据报的头部,直接就能够获取。  
  

Tracert:一个探测路由的程序,可以让我们看见IP数据报到达目的地经过的路由。  
实质:利用ICMP数据报和IP数据报头部中的TTL值。TTL(Time To Live)是一个IP数据报的生存时间,当每个IP数据报经过路由器的时候都回把TTL值减去1或者减去在路由器中停留的时间,但是大多数数据报在路由器中停留的时间都小于1秒种,因此实际上就是在TTL值减去了1。这样,TTL值就相当于一个路由器的计数器。  
当路由器接收到一个TTL为0或者1的IP数据报的时候,路由器就不再转发这个数据了,而直接丢弃,并且发送一个ICMP“超时”信息给源主机。Tracert程序的关键就是这个回显的ICMP报文的IP报头的信源地址就是这个路由器的IP地址。同时,如果到达了目的主机,我们并不能知道,于是,Tracert还同时发送一个UDP信息给目的主机,并且选择一个很大的值作为UDP的端口,使主机的任何一个应用程序都不使用这个端口。所以,当达到目的主机的时候,UDP模块就产生一个“端口不可到达”的错误,这样就能判断是否是到达目的地了。  
有说法是利用ping得到的TTL值来判断主机类型,这种办法可以大概地用来判断,有人问为什么一般得到的都不是标准的TTL值。这个就是因为ICMP数据包走的路由器线路的原因,所以,用ping 和 tracert 一起来用更容易判断主机类型(不过并不一定两次走的路线都一样,所以,还是个大概值,不过更接近点,而且主机的默认TTL值是可以改变的)。  
C:\〉ping 211.99.199.204  
Pinging 211.99.199.204 with 32 bytes of data:  
Reply from 211.99.199.204: bytes=32 time=20ms TTL=248  
Reply from 211.99.199.204: bytes=32 time〈10ms TTL=248  
Reply from 211.99.199.204: bytes=32 time=10ms TTL=248  
Reply from 211.99.199.204: bytes=32 time=10ms TTL=248  
Ping statistics for 211.99.199.204:  
Packets: Sent 4, Received 4, Lost (0% loss),  
Approximate round trip times in milli-seconds:  
Minimum 0ms, Maximum 20ms, Average 10ms  
C:\〉tracert 211.99.199.204  
Tracing route to 211.99.199.204 over maximum of 30 hops  
10 ms 10 ms 20 ms 211.99.57.121  
10 ms 10 ms 10 ms 202.96.13.1  
〈10 ms 10 ms 20 ms 202.96.13.62  
20 ms 10 ms 10 ms 210.77.139.186  
〈10 ms 10 ms 20 ms 210.77.139.170  
〈10 ms 〈10 ms 10 ms 211.99.193.154  
〈10 ms 10 ms 〈10 ms 211.99.199.204  
Trace complete.  
C:\〉  
Ping得到的TTL=248,经过了7个路由器,减少了7,所以主机的TTL值是255。这样来判断吧。  
下面是一些主机的默认TTL值。  
LINUX Kernel 2.2.x 2.4.x ICMP 回显应答的 TTL 字段值为 64  
FreeBSD 4.1, 4.0, 3.4;  
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;  
OpenBSD 2.6, 2.7,  
NetBSD  
HP UX 10.20  
ICMP 回显应答的 TTL 字段值为 255  
Windows 95/98/98SE  
Windows ME  
ICMP 回显应答的 TTL 字段值为 32  
Windows NT  
Windows 2000  
ICMP 回显应答的 TTL 字段值为 128

03/3/12 23:03 oniontang

 

ping和tracert命令详解

ing只有在安装了TCP/IP协议以后才可以使用: 
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] [-k computer-list] [-w timeout] destination-list 
Options: 
-t Ping the specified host until stopped.To see statistics and continue type Control-Break;To stop type Control-C. 
不停的ping地方主机,直到你按下Control-C。 
此功能没有什么特别的技巧,不过可以配合其他参数使用,将在下面提到。 
-a Resolve addresses to hostnames. 
解析计算机NetBios名。 
示例:C:\>ping -a 192.168.1.21 
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data: 
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254 
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254 
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254 
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254 
Ping statistics for 192.168.1.21: 
Packets: Sent 4, Received 4, Lost (0% loss),Approximate round trip times in milli-seconds: 
Minimum 0ms, Maximum 0ms, Average 0ms 
从上面就可以知道IP为192.168.1.21的计算机NetBios名为iceblood.yofor.com。 
-n count Number of echo requests to send. 
发送count指定的Echo数据包数。 
在默认情况下,一般都只发送四个数据包,通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助,比如我想测试发送50个数据包的返回的平均时间为多少,最快时间为多少,最慢时间为多少就可以通过以下获知: 
C:\>ping -n 50 202.103.96.68 
Pinging 202.103.96.68 with 32 bytes of data: 
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 
Request timed out. 
……………… 
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 
Ping statistics for 202.103.96.68: 
Packets: Sent 50, Received 48, Lost (4% loss),Approximate round trip times in milli-seconds: 
Minimum 40ms, Maximum 51ms, Average 46ms 
从以上我就可以知道在给202.103.96.68发送50个数据包的过程当中,返回了48个,其中有两个由于未知原因丢失,这48个数据包当中返回速度最快为40ms,最慢为51ms,平均速度为46ms。
-l size Send buffer size. 
定义echo数据包大小。 
在默认的情况下windows的ping发送的数据包大小为32byt,我们也可以自己定义它的大小,但有一个大小的限制,就是最大只能发送65500byt,也许有人会问为什么要限制到65500byt,因为Windows系列的系统都有一个安全漏洞(也许还包括其他系统)就是当向对方一次发送的数据包大于或等于65532时,对方就很有可能挡机,所以微软公司为了解决这一安全漏洞于是限制了ping的数据包大小。虽然微软公司已经做了此限制,但这个参数配合其他参数以后危害依然非常强大,比如我们就可以通过配合-t参数来实现一个带有攻击性的命令:(以下介绍带有危险性,仅用于试验,请勿轻易施于别人机器上,否则后果自负) 
C:\>ping -l 65500 -t 192.168.1.21 
Pinging 192.168.1.21 with 65500 bytes of data: 
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254 
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254 
……………… 
这样它就会不停的向192.168.1.21计算机发送大小为65500byt的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,我曾经就做过这样的试验,当我同时使用10台以上计算机ping一台Win2000Pro系统的计算机时,不到5分钟对方的网络就已经完全瘫痪,网络严重堵塞,HTTP和FTP服务完全停止,由此可见威力非同小可。 

-f Set Don<|>t Fragment flag in packet. 
在数据包中发送“不要分段”标志。 
在一般你所发送的数据包都会通过路由分段再发送给对方,加上此参数以后路由就不会再分段处理。 

-i TTL Time To Live. 
指定TTL值在对方的系统里停留的时间。 
此参数同样是帮助你检查网络运转情况的。 

-v TOS Type Of Service. 
将“服务类型”字段设置为 tos 指定的值。
count Record route for count hops. 
在“记录路由”字段中记录传出和返回数据包的路由。 
在一般情况下你发送的数据包是通过一个个路由才到达对方的,但到底是经过了哪些路由呢?通过此参数就可以设定你想探测经过的路由的个数,不过限制在了9个,也就是说你只能跟踪到9个路由,如果想探测更多,可以通过其他命令实现,我将在以后的文章中给大家讲解。以下为示例: 
C:\>ping -n -r 202.96.105.101 (发送一个数据包,最多记录9个路由) 
Pinging 202.96.105.101 with 32 bytes of data: 
Reply from 202.96.105.101: bytes=32 time=10ms TTL=249 
Route: 202.107.208.187 -> 
202.107.210.214 -> 
61.153.112.70 -> 
61.153.112.89 -> 
202.96.105.149 -> 
202.96.105.97 -> 
202.96.105.101 -> 
202.96.105.150 -> 
61.153.112.90 
Ping statistics for 202.96.105.101: 
Packets: Sent 1, Received 1, Lost (0% loss), 
Approximate round trip times in milli-seconds: 
Minimum 10ms, Maximum 10ms, Average 10ms 
从上面我就可以知道从我的计算机到202.96.105.101一共通过了202.107.208.187 ,202.107.210.214 61.153.112.70 61.153.112.89 202.96.105.149 202.96.105.97这几个路由。
count Timestamp for count hops. 
指定 count 指定的跃点数的时间戳。 
此参数和-r差不多,只是这个参数不记录数据包返回所经过的路由,最多也只记录4个。 
-j host-list Loose source route along host-list. 
利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。 
-k host-list Strict source route along host-list. 
利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 
-w timeout Timeout in milliseconds to wait for each reply. 
指定超时间隔,单位为毫秒。 
此参数没有什么其他技巧。 
ping命令的其他技巧:在一般情况下还可以通过ping对方让对方返回给你的TTL值大小,粗略的判断目标主机的系统类型是Windows系列还是UNIX/Linux系列,一般情况下Windows系列的系统返回的TTL值在100-130之间,而UNIX/Linux系列的系统返回的TTL值在240-255之间,当然TTL的值在对方的主机里是可以修改的,Windows系列的系统可以通过修改注册表以下键值实现: 
[HKEY_LOCAL_MACHINE\sys tem\CurrentControlSet\Services\Tcpip\Parameters] 
"DefaultTTL"=dword:000000ff 
255---FF 
  128---80 
  64----40 
  32----20
在路由器上-c可以指定发送的包数.
例如:ping -c 10000 x.x.x.x
就会ping 10000个数据包.并统计丢包率. 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值