基本簡介
TTL:(Time To Live ) 生存時(shí)間
指定數(shù)據(jù)包被路由器丟棄之前允許通過的網(wǎng)段數(shù)量。
TTL 是由發(fā)送主機(jī)設(shè)置的,以防止數(shù)據(jù)包不斷在IP互聯(lián)網(wǎng)絡(luò)上永不終止地循環(huán)。轉(zhuǎn)發(fā) IP數(shù)據(jù)包時(shí),要求路由器至少將 TTL 減小 1。
使用PING時(shí)涉及到的ICMP報(bào)文類型
一個(gè)為ICMP請求回顯(ICMP Echo Request)
一個(gè)為ICMP回顯應(yīng)答(ICMP Echo Reply)
TTL 字段值可以幫助我們識(shí)別操作系統(tǒng)類型。
UNIX 及類 UNIX操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 255
Compaq Tru64 5.0 ICMP 回顯應(yīng)答的 TTL 字段值為 64
WINXP-32bit 回顯應(yīng)答的 TTL 字段值為 64
微軟 Windows NT/2K/2003操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 128
微軟 Windows 95 操作系統(tǒng) ICMP 回顯應(yīng)答的 TTL 字段值為 32
當(dāng)然,返回的TTL值是相同的
但有些情況下有所特殊
LINUX Kernel 2.2.x & 2.4.x ICMP 回顯應(yīng)答的 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 回顯應(yīng)答的 TTL 字段值為 255
Windows 95/98/98SE
Windows ME
ICMP 回顯應(yīng)答的 TTL 字段值為 32
Windows NT4 WRKS
Windows NT4 Server
Windows 2000
Windows XP
ICMP 回顯應(yīng)答的 TTL 字段值為 128
這樣,我們就可以通過這種方法來辨別操作系統(tǒng)
TTL值的注冊表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有個(gè)DefaultTTL的DWORD值,其數(shù)據(jù)就是默認(rèn)的TTL值了,我們可以修改,但不能大于十進(jìn)制的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
從結(jié)果中可以看出曙光博客服務(wù)器的IP地址是:66.235.202.42,所用的時(shí)間是256ms等,那TTL等于51是什么意思呢?
TTL是生存時(shí)間的意思,就是說這個(gè)ping的數(shù)據(jù)包能在網(wǎng)絡(luò)上存在多少時(shí)間。當(dāng)對網(wǎng)絡(luò)上的主機(jī)進(jìn)行ping操作的時(shí)候,本地機(jī)器會(huì)發(fā)出一個(gè)數(shù)據(jù)包,數(shù)據(jù)包經(jīng)過一定數(shù)量的路由器傳送到目的主機(jī),但是由于很多的原因,一些數(shù)據(jù)包不能正常傳送到目的主機(jī),那如果不給這些數(shù)據(jù)包一個(gè)生存時(shí)間的話,這些數(shù)據(jù)包會(huì)一直在網(wǎng)絡(luò)上傳送,導(dǎo)致網(wǎng)絡(luò)開銷的增大。當(dāng)數(shù)據(jù)包傳送到一個(gè)路由器之后,TTL就自動(dòng)減1,如果減到0了還是沒有傳送到目的主機(jī),那么就自動(dòng)丟失。就像上面ping曙光博客的時(shí)候第三次那樣,出現(xiàn)Request
timed out的情況,增加TTL來減少網(wǎng)絡(luò)資源的消耗。默認(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。(這個(gè)是從網(wǎng)絡(luò)上找到的),曙光博客的目的主機(jī)是采用FreeBSD系統(tǒng)的(可能已經(jīng)更換),在這里可能TTL值是64,而不是UNIX主機(jī)的255,所以在從這里到目的主機(jī)經(jīng)過了64-51=13個(gè)路由。當(dāng)不知道目的主機(jī)的操作系統(tǒng)的時(shí)候我們可以根據(jù)TTL來猜測,但是不一定100%準(zhǔn)確,如果目的主機(jī)是windows,但是經(jīng)過了比如75個(gè)路由器,那么TTL的返回值是128-75=53,那么你可能認(rèn)為這個(gè)目的主機(jī)是Linux系統(tǒng),但是一般不會(huì)經(jīng)過那么多的路由器,所以通過TTL來判斷目的主機(jī)的操作系統(tǒng)還是有一定的依據(jù)的。
|