![Traceroute 中不同目的地的跳數相同](https://rvso.com/image/1540095/Traceroute%20%E4%B8%AD%E4%B8%8D%E5%90%8C%E7%9B%AE%E7%9A%84%E5%9C%B0%E7%9A%84%E8%B7%B3%E6%95%B8%E7%9B%B8%E5%90%8C.png)
當我使用traceroute
(實際上tracert
是 Windows 的命令)不同的目標位址時,我總是得到相同的跳數。
例如: 對於superuser.com
,我得到:
Tracing route to superuser.com [151.101.1.69]
over a maximum of 30 hops:
1 6 ms 1 ms 1 ms 192.168.0.1
2 2 ms 3 ms 3 ms 10.201.0.1
3 4 ms 2 ms 2 ms angeldropsltd.com [103.242.217.37]
4 8 ms 4 ms 4 ms 151.101.1.69
Trace complete.
對於microsoft.com
,我得到:
Tracing route to microsoft.com [23.100.122.175]
over a maximum of 30 hops:
1 3 ms 3 ms 1 ms 192.168.0.1
2 5 ms 2 ms 2 ms 10.201.0.1
3 4 ms 2 ms 2 ms angeldropsltd.com [103.242.217.37]
4 7 ms 4 ms 4 ms 23.100.122.175
Trace complete.
到目前為止我嘗試過的所有其他網站都是類似的。
我想知道發生這種情況的可能原因。我對如何traceroute
運作有一些簡短的了解。不同的目的地應該有不同的跳數。我的 ISP (天使滴) 可能沒有所有目標伺服器直接地連接的。我想,我的 ISP 正在這裡做點什麼。那麼出現這種情況的原因有哪些呢?
答案1
我將盡力向您解釋這一點。但是,我不知道你的 ISP 為什麼要這樣做。
首先,了解 Traceroute 的工作原理非常重要。 Traceroute 透過設定其發出的 IP 封包中的 TTL(生存時間)值來運作。封包沿途經過的每一跳都會將 TTL 減 1。
因此,當您發出該tracert
命令時,Windows 會發出一系列具有遞增 TTL 值的 ICMP 封包。第一個資料包以 TTL 1 發出,下一個資料包以 TTL 2 發出,依此類推。透過這種方式,可以發現通往目的地的路徑上的每個路由器 - 如果它回覆 ICMP 無法存取。如果它只是丟棄資料包,您會收到來自tracert的***回應,但沒有任何資訊。
因此,這裡發生的情況似乎是您的 ISP (AngelDrops) 不遵守 TTL 設定。相反,當資料包到達他們時,他們似乎正在從資料包中剝離或過濾該資訊。因此,一旦資料包到達 AngelDrops,它們就會將其轉發到具有更高「預設」TTL 的目的地。這會導致資料包一路遍歷到目的地,並且您看到的最終回應來自目的地。
IP 封包中的 TTL 的真正目的是防止網路循環,即封包繼續在網路內永遠繞圈反彈。
我希望這是有道理的。那麼,為什麼您的 ISP 會這樣做呢?我不太確定,但他們可能認為篡改 TTL 可能對其網路造成安全風險,因此他們會對其進行過濾。對於網路的正常運作來說,遵守 TTL 數據並不是真正必要的。
因為我什麼都不知道天使滴,可能是這個 ISP 有一些非標準的東西,也許是無線的,或是 VPN 服務,或是類似的東西。有許多可能的技術問題導致事情變得奇怪。
根據我在您的追蹤路由中看到的內容,您似乎正在使用某種共享的網路服務。您沒有獲得真正的公共 IP,因此您可能位於某種 NAT 網路後面,在該網路中您與多個使用者共用相同的公共 IP。這就能解釋一切了。