|
|
|
|
|
我們?cè)谑褂?a target="_blank" href="http://gazebo2go.com/Ping.aspx">Ping命令的時(shí)候,通常關(guān)注的是“時(shí)間”這個(gè)值,忽略“TTL”這個(gè)值。但是細(xì)心的人會(huì)發(fā)現(xiàn),TTL的值不是每次Ping都一樣,也不是Ping每個(gè)域名都一樣,這是什么原因呢?“TTL”又是什么意思呢?可能不少人認(rèn)為,“TTL”的值越小越好,就像“時(shí)間”這個(gè)值一樣。我以前也是這么認(rèn)為,只籠統(tǒng)知道“TTL”是“生存時(shí)間”(Time To Live)的意思,認(rèn)為這個(gè)值越小越好。事實(shí)上是怎樣的呢?本文將為你解開疑惑。
首先我們了解一下“TTL”的意思,“TTL”是 Time To Live 的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網(wǎng)段數(shù)量。這樣說可能比較抽象。下面我們看一下Ping命令的數(shù)據(jù),如圖:
Ping百度服務(wù)器
上圖,我ping了百度的服務(wù)器(windows下默認(rèn)ping 4次)。
字節(jié)代表數(shù)據(jù)包的大小,時(shí)間顧名思義就是返回時(shí)間,“TTL”的意思就是數(shù)據(jù)包的生存時(shí)間,當(dāng)然你得到的這個(gè)就是剩余的生存時(shí)間。TTL用來計(jì)算數(shù)據(jù)包在路由器的消耗時(shí)間,因?yàn)楝F(xiàn)在絕大多數(shù)路由器的消耗時(shí)間都小于1s,而時(shí)間小于1s就當(dāng)1s計(jì)算,所以數(shù)據(jù)包沒經(jīng)過一個(gè)路由器節(jié)點(diǎn)TTL都減一。
那么TTL的值一開始是什么呢?不同的操作系統(tǒng)默認(rèn)下TTL是不同的。默認(rèn)情況下,Linux系統(tǒng)的TTL值為64或255,Windows NT/2000/XP系統(tǒng)的TTL值為128,Windows 98系統(tǒng)的TTL值為32,UNIX主機(jī)的TTL值為255。
上圖看到Ping百度服務(wù)器返回的數(shù)據(jù)包的TTL值為56(一般都是找2^n且離返回值最近的那個(gè)值),那么途中則經(jīng)過了64-56=9個(gè)路由器。
再比如,我Ping自己的ip,結(jié)果如下圖:
Ping本地計(jì)算器
可以看到我得到的時(shí)候TTL為128,那么途中則經(jīng)過了128-128=0個(gè)路由器,也就是我自己給自己發(fā)送數(shù)據(jù)包不需要經(jīng)過任何路由器,所以TTL值為128,即是說我的數(shù)據(jù)包生存時(shí)間為128。
通過上述例子的分析,說“TTL”的值越小越好顯然是不對(duì)的,相反,應(yīng)該說是“TTL”的值越大越好才對(duì),因?yàn)?ldquo;TTL”的值越大,說明發(fā)送數(shù)據(jù)包經(jīng)過路由器越少,而經(jīng)過路由器越少,說明越快到達(dá)目的地,速度當(dāng)然也就越快。
上面提到發(fā)送數(shù)據(jù)包要經(jīng)過多少個(gè)路由器,那么路由器是什么意思?這就不得不說到 Tracert 命令了。
Tracert的寫法如下:
tracert [目標(biāo)]
意思是得到你的主機(jī)到目標(biāo)主機(jī)經(jīng)過路由器的ip。
如圖:
tracert百度服務(wù)器
在這里我們可以看到達(dá)到目標(biāo)我們經(jīng)過了9個(gè)路由器(不算終點(diǎn)),跟上面Ping百度服務(wù)器返回的“TTL”值(56)是相關(guān)的,64-56=9。
注意一下有的值為“請(qǐng)求超時(shí)” ,原因是有的路由器是禁止Ping的(所以不會(huì)返回信息)。