Ping指令回傳的TTL值是有什麼意義和作用
ping命令用於測試與另一個網路設備的連接,並測量資料包往返的時間。在命令列中輸入以下命令可以執行ping操作:
ping [目标地址]
- 1.
例如,要192.168.11.112,可以輸入:
ping 192.168.11.112
- 1.
圖片
此時回傳的資料有個ttl=64,下面我們來了解下ttl值的意義及作用。
TTL作用及原理
TTL(Time to Live)是指封包在網路中允許傳輸的最大跳數。它的作用是防止資料包在網路中無限循環,同時也可以用來測量資料包從來源到目的地的傳輸時間。
TTL的原理是每當一個封包經過一個路由器時,TTL的值會減1。當TTL的值減到0時,路由器會丟棄該封包並傳送一個「TTL逾時」(Time Exceeded)的ICMP訊息給封包的來源位址。這樣可以確保資料包不會無限循環在網路中,同時也可以幫助診斷網路故障。
透過TTL的值,可以測量封包從來源到目的地經過的路由器數量,從而判斷網路的延遲和穩定性。每經過一個路由器,TTL值就會減少1。因此,透過Ping指令傳回的TTL值,我們可以大致判斷出目標主機與我們之間的路由器數量或跳數。例如,如果Ping指令回傳的TTL值為64,那麼可以推斷資料包在傳輸過程中經過了初始TTL值(通常為系統缺省值,如64、128、255等)-64個路由器或其他工作在網路的設備。
TTL值推測目標目標主機作業系統
不同的作業系統對於傳出的IP封包的TTL初始值有不同的設定。通常Windows作業系統的初始TTL值為128,而Linux和Unix系統的初始TTL值為64。
根據此特點,我們可以透過觀察接收到的ICMP回顯應答(ping)封包的TTL值來推測目標主機的作業系統類型。當我們發送一個ICMP回顯請求到目標主機時,目標主機會回傳一個ICMP回顯應答,而這個應答中的TTL值就可以幫助我們推測目標主機的作業系統類型。
TTL值為64的話,我們可以推測目標主機是運行類別Unix系統(如Linux),而TTL值為128的話,則可以推測目標主機是運行Windows系統。當然,這只是一個推測,因為TTL值也可能被網路設備修改,或者目標主機可能已經修改了預設的TTL值。透過觀察ICMP回顯應答資料包的TTL值,我們可以推測目標主機的作業系統類型,但需要注意這只是一種推測方法,可能並不十分準確。
作業系統 | 預設TTL值 |
Windows | 128 |
Linux/Unix | 64 |
macOS | 64 |
iOS | 64 |
Android | 64 |
Windows要修改系統預設的TTL值,可以透過修改登錄來實現:
- 開啟登錄編輯程式:按下 Win + R 組合鍵開啟運行窗口,輸入 regedit 並按下回車鍵。
- 前往註冊表路徑:依序展開以下路徑
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
- 1.
- 建立或修改DWORD 值:在Parameters 下右鍵,選擇新建-> DWORD (32 位元) 值,命名為 DefaultTTL,然後雙擊它,設定數值資料為你想要的TTL 值(以十進位表示)。
- 重新啟動電腦:修改完註冊表後,需要重新啟動電腦才能使修改生效。