PING的時候,TTL=50表示什麼意思 匿名使用者 1級 2014-11-10 回答

TTLTimetoLive,意思就是生存週期

首先要說明ping命令是使用的網路層協議ICMP,所以TTL指的是一個網路層的網路資料包(package)的生存週期,這句話不懂的先回去複習OSI7層協議去。

第一個問題,為什麼要有生存週期這個概念。

很顯然,一個package從一臺機器到另一臺機器中間需要經過很長的路徑,顯然這個路徑不是單一的,是很複雜的,並且很可能存在環路。如果一個數據包在傳輸過程中進入了環路,如果不終止它的話,它會一直迴圈下去,如果很多個數據包都這樣迴圈的話,那對於網路來說這就是災難了。所以需要在包中設定這樣一個值,包在每經過一個節點,將這個值減1,反覆這樣操作,最終可能造成2個結果:包在這個值還為正數的時候到達了目的地,或者是在經過一定數量的節點後,這個值減為了0。前者代表完成了一次正常的傳輸,後者代表包可能選擇了一條非常長的路徑甚至是進入了環路,這顯然不是我們期望的,所以在這個值為0的時候,網路裝置將不會再傳遞這個包而是直接將他拋棄,併發送一個通知給包的源地址,說這個包已死。

其實TTL值這個東西本身並代表不了什麼,對於使用者來說,關心的問題應該是包是否到達了目的地而不是經過了幾個節點後到達。但是TTL值還是可以得到有意思的資訊的。

每個作業系統對TTL值得定義都不同,這個值甚至可以透過修改某些系統的網路引數來修改,例如Win2000預設為128,透過登錄檔也可以修改。而Linux大多定義為64。不過一般來說,很少有人會去修改自己機器的這個值的,這就給了我們機會可以透過ping的回顯TTL來大體判斷一臺機器是什麼作業系統。