Ping命令返回的TTL值是有什么含義和作用
ping命令用于測試與另一個網(wǎng)絡(luò)設(shè)備的連接,并測量數(shù)據(jù)包往返的時間。在命令行中輸入以下命令可以執(zhí)行ping操作:
ping [目標(biāo)地址]
例如,要192.168.11.112,可以輸入:
ping 192.168.11.112
圖片
此時返回的數(shù)據(jù)有個ttl=64,下面我們來了解下ttl值的含義及作用。
TTL作用及原理
TTL(Time to Live)是指數(shù)據(jù)包在網(wǎng)絡(luò)中允許傳輸?shù)淖畲筇鴶?shù)。它的作用是防止數(shù)據(jù)包在網(wǎng)絡(luò)中無限循環(huán),同時也可以用來測量數(shù)據(jù)包從源到目的地的傳輸時間。
TTL的原理是每當(dāng)一個數(shù)據(jù)包經(jīng)過一個路由器時,TTL的值會減1。當(dāng)TTL的值減到0時,路由器會丟棄該數(shù)據(jù)包并發(fā)送一個“TTL超時”(Time Exceeded)的ICMP消息給數(shù)據(jù)包的源地址。這樣可以確保數(shù)據(jù)包不會無限循環(huán)在網(wǎng)絡(luò)中,同時也可以幫助診斷網(wǎng)絡(luò)故障。
通過TTL的值,可以測量數(shù)據(jù)包從源到目的地經(jīng)過的路由器數(shù)量,從而判斷網(wǎng)絡(luò)的延遲和穩(wěn)定性。每經(jīng)過一個路由器,TTL值就會減少1。因此,通過Ping命令返回的TTL值,我們可以大致判斷出目標(biāo)主機(jī)與我們之間的路由器數(shù)量或跳數(shù)。例如,如果Ping命令返回的TTL值為64,那么可以推斷出數(shù)據(jù)包在傳輸過程中經(jīng)過了初始TTL值(通常為系統(tǒng)缺省值,如64、128、255等)-64個路由器或其他工作在網(wǎng)絡(luò)的設(shè)備。
TTL值推測目標(biāo)目標(biāo)主機(jī)操作系統(tǒng)
不同的操作系統(tǒng)對于傳出的IP數(shù)據(jù)包的TTL初始值有不同的設(shè)置。通常Windows操作系統(tǒng)的初始TTL值為128,而Linux和Unix系統(tǒng)的初始TTL值為64。
根據(jù)這一特點,我們可以通過觀察接收到的ICMP回顯應(yīng)答(ping)數(shù)據(jù)包的TTL值來推測目標(biāo)主機(jī)的操作系統(tǒng)類型。當(dāng)我們發(fā)送一個ICMP回顯請求到目標(biāo)主機(jī)時,目標(biāo)主機(jī)會返回一個ICMP回顯應(yīng)答,而這個應(yīng)答中的TTL值就可以幫助我們推測目標(biāo)主機(jī)的操作系統(tǒng)類型。
TTL值為64的話,我們可以推測目標(biāo)主機(jī)是運行類Unix系統(tǒng)(如Linux),而TTL值為128的話,則可以推測目標(biāo)主機(jī)是運行Windows系統(tǒng)。當(dāng)然,這只是一個推測,因為TTL值也可能被網(wǎng)絡(luò)設(shè)備修改,或者目標(biāo)主機(jī)可能已經(jīng)修改了默認(rèn)的TTL值。通過觀察ICMP回顯應(yīng)答數(shù)據(jù)包的TTL值,我們可以推測目標(biāo)主機(jī)的操作系統(tǒng)類型,但需要注意這只是一種推測方法,可能并不十分準(zhǔn)確。
操作系統(tǒng) | 默認(rèn)TTL值 |
Windows | 128 |
Linux/Unix | 64 |
macOS | 64 |
iOS | 64 |
Android | 64 |
Windows要修改系統(tǒng)默認(rèn)的TTL值,可以通過修改注冊表來實現(xiàn):
- 打開注冊表編輯器:按下 Win + R 組合鍵打開運行窗口,輸入 regedit 并按下回車鍵。
- 轉(zhuǎn)到注冊表路徑:依次展開以下路徑
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 創(chuàng)建或修改 DWORD 值:在 Parameters 下右鍵,選擇新建 -> DWORD (32 位) 值,命名為 DefaultTTL,然后雙擊它,設(shè)置數(shù)值數(shù)據(jù)為你想要的 TTL 值(以十進(jìn)制表示)。
- 重啟計算機(jī):修改完注冊表后,需要重啟計算機(jī)才能使修改生效。