ping是icmp报文的一种应用。用来测试网络中各设备的连通性。在这几天的实验课上,我又用到了这个非常常用的命令,但是这次我发现了一些以前没有太注意的地方,那就是我在Ping不同的地址时所返回的TTL值是不同的。如下:
C:\Documents and Settings\Administrator>ping 192.168.12.254
Pinging 192.168.12.254 with 32 bytes of data:
Reply from 192.168.12.254: bytes=32 time=245ms TTL=64
Reply from 192.168.12.254: bytes=32 time=214ms TTL=64
Reply from 192.168.12.254: bytes=32 time=251ms TTL=64
Reply from 192.168.12.254: bytes=32 time=236ms TTL=64
Ping statistics for 192.168.12.254:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 214ms, Maximum = 251ms, Average = 236ms
.C:\Documents and Settings\Administrator>ping 202.99.160.68
Pinging 202.99.160.68 with 32 bytes of data:
Reply from 202.99.160.68: bytes=32 time=242ms TTL=250
Reply from 202.99.160.68: bytes=32 time=250ms TTL=250
Reply from 202.99.160.68: bytes=32 time=247ms TTL=250
Reply from 202.99.160.68: bytes=32 time=237ms TTL=250
Ping statistics for 202.99.160.68:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 237ms, Maximum = 250ms, Average = 244ms
C:\Documents and Settings\Administrator>ping www.baidu.com
Pinging www.a.shifen.com [202.108.22.5] with 32 bytes of data:
Reply from 202.108.22.5: bytes=32 time=277ms TTL=52
Reply from 202.108.22.5: bytes=32 time=294ms TTL=52
Reply from 202.108.22.5: bytes=32 time=268ms TTL=52
Reply from 202.108.22.5: bytes=32 time=260ms TTL=52
Ping statistics for 202.108.22.5:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 260ms, Maximum = 294ms, Average = 274ms
上面所ping的地址中第一个地址(192.168.12.254)是我的电脑所在局域网的网关地址;第二个地址(202.99.160.68)是我的电脑的dns服务器的地址。最后一个大家都很熟悉了,就是百度网站的地址喽
在这里我要说明的是不同的Rpely消息中的不同的TTL值的由来。TTL 是数据包为了防止数据包在网络中无限制的循环,而设定的网络数据包在网络传输中最大的转发次数。因为每转发一次在路由器,就会转向下一跳,所以,又通常称为最大跳数。具体的含义是这样的。我们本地机器会发出一个数据包,数据包经过一定数量的路由器传送到目的主机,但是由于很多的原因,一些数据包不能正常传送到目的主机,那如果不给这些数据包一个生存时间的话,这些数据包会一直在网络上传送,导致网络开销的增大。当数据包传送到一个路由器之后,TTL就自动减1,如果减到0了还是没有传送到目的主机,那么就自动丢失。例如:你定义了数据包的TTL为64.那么在你的数据包被转发了64次,也就是经过了63个中间路由器后,还没有到达目的网络,那么,你的电脑就会显示Requet time out (请求超时)了。例如:你定义了数据包的TTL为64.那么在你的数据包被转发了64次,也就是经过了63个中间路由器后,还没有到达目的网络,那么,你的电脑就会显示Requet time out (请求超时)了。这就是TTL的意思了
在此补充一点,由于不同的操作系统所定义的TTL是不同的,一般有如下规则:默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的TTL值为128,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。