【網絡】Ping 的TTL理解


一.含義

“TTL”是生存時間(Time To Live)的意思

關於時間與跳的討論,

https://www.zhihu.com/question/61007907

一開始理解為time to leap,wiki上是hop limit

順便復習了個單詞,hop是類似青蛙跳,兔子跳連續的,正符合。

leap是大步跳,並沒有連續的意思。

這里把time理解成次數也可以。

首先我們了解一下“TTL”的意思,“TTL”是 Time To Live 的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網段數量。這樣說可能比較抽象。下面我們看一下Ping命令的數據,如圖:

Ping百度服務器

Ping百度服務器

上圖,我ping了百度的服務器(windows下默認ping 4次)。

字節代表數據包的大小,時間顧名思義就是返回時間,“TTL”的意思就是數據包的生存時間,當然你得到的這個就是剩余的生存時間。TTL用來計算數據包在路由器的消耗時間,因為現在絕大多數路由器的消耗時間都小於1s,而時間小於1s就當1s計算,所以數據包沒經過一個路由器節點TTL都減一。

那么TTL的值一開始是什么呢?不同的操作系統默認下TTL是不同的。默認情況下,Linux系統的TTL值為64或255,Windows NT/2000/XP系統的TTL值為128,Windows 98系統的TTL值為32,UNIX主機的TTL值為255。

上圖看到Ping百度服務器返回的數據包的TTL值為56(一般都是找2^n且離返回值最近的那個值),那么途中則經過了64-56=9個路由器。

再比如,我Ping自己的ip,結果如下圖:

Ping本地計算器

Ping本地計算器

可以看到我得到的時候TTL為128,那么途中則經過了128-128=0個路由器,也就是我自己給自己發送數據包不需要經過任何路由器,所以TTL值為128,即是說我的數據包生存時間為128。

二.路由器是什么?

通過路由表到達目的地,路由表每一條路由對應兩個信息

(目的網絡地址,下一跳地址)

詳見《計算機網絡第七版》4.2.6 

從 Tracert 命令了解

上面提到發送數據包要經過多少個路由器,那么路由器是什么意思?這就不得不說到 Tracert 命令了。

Tracert的寫法如下:

tracert [目標]

意思是得到你的主機到目標主機經過路由器的ip。

如圖:

 tracert百度服務器

tracert百度服務器

在這里我們可以看到達到目標我們經過了9個路由器(不算終點),跟上面Ping百度服務器返回的“TTL”值(56)是相關的,64-56=9。

注意一下有的值為“請求超時” ,原因是有的路由器是禁止Ping的(所以不會返回信息)。

三.TTL從哪來的

http://searchnetworking.techtarget.com/definition/time-to-live

An IP TTL is set initially by the system sending the packet. It can be set to any value between 1 and 255; different operating systems set different defaults. 

ttl是發送的時候便攜帶的,有空用wireshark抓包看看。

也就是說,如果你設置ttl為5,然后hop了5下還沒到目標地址,那就扔掉。具體返回什么信息沒試

如果設置ttl設置為100,返回跳了9下,到了目的地址,是linux服務器,獲得ttl為64,64-9=55,返回ttl 55

 

轉自:https://www.cnblogs.com/ptqueen/articles/8457873.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM