天天看點

TTL說明

TTL

TTL:(Time To Live ) 生存時間

指定資料包被路由器丢棄之前允許通過的網段數量。

 TTL 是由發送主機設定的,以防止資料包不斷在 IP 網際網路絡上永不終止地循環。轉發 IP 資料包時,要求路由器至少将 TTL 減小 1。

 使用PING時涉及到的 ICMP 封包類型

 一個為ICMR請求回顯(ICMP Echo Request)

 一個為ICMP回應答覆(ICMP Echo Reply)

 TTL 字段值可以幫助我們識别作業系統類型。

 UNIX 及類 UNIX 作業系統 ICMP 回應答覆的 TTL 字段值為 255

 Compaq Tru64 5.0 ICMP 回應答覆的 TTL 字段值為 64

 微軟 Windows NT/2K作業系統 ICMP 回應答覆的 TTL 字段值為 128

 微軟 Windows 95 作業系統 ICMP 回應答覆的 TTL 字段值為 32

 當然,傳回的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 NT4 WRKS

 Windows NT4 Server

 Windows 2000

 Windows XP

 ICMP 回應答覆的 TTL 字段值為 128

 這樣,我們就可以通過這種方法來辨識作業系統

 TTL值的系統資料庫位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有個DefaultTTL的DWORD值,其資料就是預設的TTL值了,我們可以修改,但不能大于十進制的255

Ping中的TTL

舉例來說:

以下是ping曙光部落格的傳回值:

C:\Documents and Settings\user>ping

Pinging [66.235.202.42] with 32 bytes of data:

Reply from 66.235.202.42: bytes=32 time=254ms TTL=51

Reply from 66.235.202.42: bytes=32 time=256ms TTL=51

Request timed out.

Reply from 66.235.202.42: bytes=32 time=260ms TTL=51

Ping statistics for 66.235.202.42:

Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

Approximate round trip times in milli-seconds:

Minimum = 254ms, Maximum = 260ms, Average = 256ms

從結果中可以看出曙光部落格伺服器的IP位址是:66.235.202.42,所用的時間是256ms等,那TTL等與51是什麼意思呢?

TTL是生存時間的意思,就是說這個ping的資料包能在網絡上存在多少時間。當對網絡上的主機進行ping操作的時候,本地機器會發出一個資料包,資料包經過一定數量的路由器傳送到目的主機,但是由于很多的原因,一些資料包不能正常傳送到目的主機,那如果不給這些資料包一個生存時間的話,這些資料包會一直在網絡上傳送,導緻網絡開銷的增大。當資料包傳送到一個路由器之後,TTL就自動減1,如果減到0了還是沒有傳送到目的主機,那麼就自動丢失。就像上面ping曙光部落格的時候第三次那樣,出現Request timed out的情況,增加TTL來減少網絡資源的消耗。預設情況下,Linux系統的TTL值為64或255,Windows NT/2000/XP系統的TTL值為128,Windows 98系統的TTL值為32,UNIX主機的TTL值為255。(這個是從網絡上找到的),曙光部落格的目的主機是采用FreeBSD系統的(可能已經更換),在這裡可能TTL值是64,而不是UNIX主機的255,是以在從這裡到目的主機經過了64-51=13個路由。當不知道目的主機的作業系統的時候我們可以根據TTL來猜測,但是不一定100%準确,如果目的主機是windows,但是經過了比如75個路由器,那麼TTL的傳回值是128-75=53,那麼你可能認為這個目的主機是Linux系統,但是一般不會經過那麼多的路由器,是以通過TTL來判斷目的主機的作業系統還是有一定的依據的。

繼續閱讀