TTL簡述所屬現代詞,是指生存周期。T即是一個網路層的網路數據包(package)的生存周期。
基本介紹
- 中文名:生存周期
- 外文名:Time to Live
- 所指類別:網路層的網路數據包的生存周期
- 類別:IT用語
內容簡介
首先要說明ping命令是使用的網路層協定ICMP,所以TTL指的是一個網路層的網路數據包(package)的生存周期,這句話不懂的先回去複習OSI7層協定去。
概念解析
基本解析
其實TTL值這個東西本身並代表不了什麼,對於使用者來說,關心的問題應該是包是否到達了目的地而不是經過了幾個節點後到達。但是TTL值還是可以得到有意思的信息的。
每個作業系統對TTL值得定義都不同,這個值甚至可以通過修改某些系統的網路參數來修改,例如Win2000默認為128,通過註冊表也可以修改。而Linux大多定義為64。不過一般來說,很少有人會去修改自己機器的這個值的,這就給了我們機會可以通過ping的回顯TTL來大體判斷一台機器是什麼作業系統。
以2台機器為例
看如下命令
D:\Documents and Settings\hx>ping 61.152.93.131
Pinging 61.152.93.131 with 32 bytes of data:
Reply from 61.152.93.131: bytes=32 time=21ms TTL=118
Reply from 61.152.93.131: bytes=32 time=19ms TTL=118
Reply from 61.152.93.131: bytes=32 time=18ms TTL=118
Reply from 61.152.93.131: bytes=32 time=22ms TTL=118
Ping statistics for 61.152.93.131:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss
Approximate round trip times in milli-seconds:
Minimum = 18ms, Maximum = 22ms, Average = 20ms
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.104.40: bytes=32 time=28ms TTL=54
Reply from 61.152.104.40: bytes=32 time=18ms TTL=54
Reply from 61.152.104.40: bytes=32 time=18ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss
Approximate round trip times in milli-seconds:
Minimum = 13ms, Maximum = 28ms, Average = 19ms
1,不是說包可能走很多路徑嗎,為什麼我看到的4個包TTL都是一樣的,沒有出現不同?
這是由於包經過的路徑是經過了一些最優選擇算法來定下來的,在網路拓撲穩定一段時間後,包的路由路徑也會相對穩定在一個最短路徑上。具體怎么算出來的要去研究路由算法了,不在討論之列。
2,對於上面例子第二台機器,為什麼不認為它是經過了74個節點的Windows機器?因為128-74=54。
對於這個問題,我們要引入另外一個很好的ICMP協定工具。不過首先要聲明的是,一個包經過74個節點這個有些恐怖,這樣的路徑還是不用為好。
要介紹的這個工具是tracert(*nix下為traceroute),讓我們來看對上面的第二台機器用這個命令的結果
D:\Documents and Settings\hx>tracert 61.152.104.40
Tracing route to 61.152.104.40 over a maximum of 30 hops
1 13 ms 16 ms 9 ms 10.120.32.1
2 9 ms 9 ms 11 ms 219.233.244.105
3 12 ms 10 ms 10 ms 219.233.238.173
4 15 ms 15 ms 17 ms 219.233.238.13
5 14 ms 19 ms 19 ms 202.96.222.73
6 14 ms 17 ms 13 ms 202.96.222.121
7 14 ms 15 ms 14 ms 61.152.81.86
8 15 ms 14 ms 13 ms 61.152.87.162
9 16 ms 16 ms 28 ms 61.152.99.26
10 12 ms 13 ms 18 ms 61.152.99.94
11 14 ms 18 ms 16 ms 61.152.104.40
Trace complete.
既然已經說到這裡了,不妨順便說說關於這兩個ICMP命令的高級一點的東西。
首先是ping命令,其實ping有這樣一個參數,可以無視作業系統默認TTL值而使用自己定義的值來傳送ICMP Request包。
D:\Documents and Settings\hx>ping 61.152.104.40 -i 11
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.104.40: bytes=32 time=10ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Reply from 61.152.104.40: bytes=32 time=10ms TTL=54
Reply from 61.152.104.40: bytes=32 time=13ms TTL=54
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 13ms, Average = 11ms
這個命令我們定義了發包的TTL為11,而前面我們知道,我到這台伺服器是要經過11個節點的,所以這個輸出和以前沒什麼不同。現在再用這個試試看:
D:\Documents and Settings\hx>ping 61.152.104.40 -i 10
Pinging 61.152.104.40 with 32 bytes of data:
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Reply from 61.152.99.94: TTL expired in transit.
Ping statistics for 61.152.104.40:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
D:\Documents and Settings\hx>
順便補一句ping命令還有個-n的參數指定要發包的數量,指定了這個數字就會按照你的要求來發包了而不是默認的4個包。如果使用-t參數的話,命令會一直發包直到你強行中止它。
TTL的另一解釋
Windows 95/98中TTL的預設值為32。有人建議當到達一個節點比較困難時,把此值設為128。ping和tracerouter都使用TTL值以嘗試到達給定的主機或跟蹤到那個主機的路由。traceroute把包的TTL值設得較小,使它在到達目的的路上被各個路由器連續的丟棄。發出包到受到返回的ICMP報文之間的時間用來計算從一個路由器到另一個路由器的時間。
使用多路復用的IP協定,TTL值表示一個包被轉發的範圍。有以下轉換:0, 限制在同一主機 1, 限制在同一子網 32, 限制在同一節點 64, 限制在同一區域(region)128,限制在同一大陸(continent)255,
由於不同的作業系統的默認TTL值不同,因此有文章說可以通過返回的TTL值判斷目標系統的類型,這是正確的,但不是TTL的功能,只是對TTL理解的一個套用。TTL的值可以修改。有些特殊的、系統(如NIDS)會定義特殊的TTL值,以拒絕非法訪問數據進入。我們在執行PING命令時可以用-i參數指定TTL值,大家可以將TTL設定為0,則該包將被立即丟棄。有時我們執行了一個PING 命令,在繁華時卻繁華了另一個地址,並帶有一個英語的提示(大致意思是TTL無效),則表示該包在到達目標之前(也就是到返回IP位置時),包所帶的TTL已經為0了或小於下一網段許可通過的TTL值了,該包已經被路由丟棄了。
鑑別作業系統
PING命令來檢查要到達的目標 IP 地址並記錄結果。
ping 命令顯示目標是否回響以及接收答覆所需的時間。
如果在傳遞到目標過程中有錯誤,ping 命令將顯示錯誤訊息。
ICMP ECHO(Type 8) 和ECHO Reply (Type 0)
我們使用一個ICMP ECHO數據包來探測主機地址 HOST B 是否存活
(當然在主機沒有被配置為過濾ICMP形式)
通過簡單的傳送一個ICMP ECHO(Type 8)數據包到目標主機
如果ICMP ECHO Reply(ICMP type 0)數據包 HOST A 可以接受到,說明主機是存活狀態。
如果沒有就可以初步判斷主機沒有線上或者使用了某些過濾設備過濾了ICMP的REPLY。
+---------------------------------------------------------------+
| |
| +-------+ +-------+ |
| | | ICMP Echo Request | | |
| | HOST | --------------------------> | HOST | |
| | | | | |
| | A | | B | |
| | | ping 192.168.0.1
Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Reply from 192.168.0.1: bytes=32 time<10ms TTL=128
Ping statistics for 192.168.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
TTL:生存時間
指定數據報被路由器丟棄之前允許通過的網段數量。
TTL 是由傳送主機設定的,以防止數據包不斷在 IP 網際網路上永不終止地循環。
轉發 IP 數據包時,要求路由器至少將 TTL 減小 1。
使用PING時涉及到的 ICMP 報文類型
一個為ICMP請求回顯(ICMP Echo Request)
一個為ICMP回顯應答(ICMP Echo Reply)
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
ICMP 回顯應答的 TTL 欄位值為 128
這樣,我們就可以通過這種方法來辨別
作業系統 TTL
LINUX 64
WIN2K/NT 128
WINDOWS 系列 32
UNIX 系列 255
LINUX Kernel 2.2.x, Kernel 2.4t1-6; FreeBSD 4.1,4.0,3.4; OpenBSD 2.7,2.6; NetBSD
1.4.2; Sun Solaris 2.5.1,2.6,2.7,2.8; HP-UX 10.20, 11.0; AIX 4.1, 3.2; Compaq
Tru64 5.0; Irix 6.5.3,6.5.8; BSDI BSD/OS 4.0,3.1; ULTRIX 4.2-4.5; OpenVMS 7.1-2;
Windows 95/98/98SE/ME; Windows NT 4 Workstation SP3, SP4, SP6a; Windows NT 4
Server SP4; Windows 2000 Professional, Server, Advanced Server.
附錄
ECHO (Request (Type 8), Reply (Type 0))--回顯應答,
Time Stamp (Request (Type 13), Reply (Type 14))--時間戳請求和應答,
Information (Request (Type 15), Reply (Type16))--信息請求和應答,
Address mask (Request (Type 17), Reply (Type 18))--地址掩碼請求和應答等