我正在兩台伺服器之間進行測試traceroute
(僅單跳),我想知道為什麼後續運行顯示不同的結果?
(1)
# traceroute to 172.22.10.12 (172.22.10.12), 30 hops max, 60 byte packets
1 172.22.10.12 0.167 ms 0.634 ms 0.152 ms
(2)
# traceroute to 172.22.10.12 (172.22.10.12), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * 172.22.10.12 0.120 ms 0.094 ms
編輯:2013 年 12 月 18 日星期三 18:09:23 GMT
為什麼這個問題有反對票?我想知道為什麼traceroute每次顯示不同的結果(跳數)。
編輯:2013 年 12 月 18 日星期三 19:05:44 GMT
兩台伺服器都連接到單一交換機,因此沒有任何「路由」且路徑應該相同:
# ping -R -c 5 172.22.10.12
PING 172.22.10.12 (172.22.10.12) 56(124) bytes of data.
64 bytes from 172.22.10.12: icmp_seq=1 ttl=64 time=0.161 ms
RR: 172.22.10.10
172.22.10.12
172.22.10.12
172.22.10.10
64 bytes from 172.22.10.12: icmp_seq=2 ttl=64 time=0.470 ms (same route)
64 bytes from 172.22.10.12: icmp_seq=3 ttl=64 time=0.113 ms (same route)
64 bytes from 172.22.10.12: icmp_seq=4 ttl=64 time=0.162 ms (same route)
64 bytes from 172.22.10.12: icmp_seq=5 ttl=64 time=0.160 ms (same route)
--- 172.22.10.12 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4001ms
rtt min/avg/max/mdev = 0.113/0.213/0.470/0.130 ms
答案1
第二個traceroute有5組* * *
,並不表示不同的路徑。你已經告訴我們你知道沒有其他路徑,這些東西都在同一個 L2 域中,甚至在同一個交換器上。 Tracert 將絕不顯示中間躍點,實際上在本例中並沒有這樣做。
無論出於何種原因,您的目標主機在第二次追蹤的前幾次嘗試中都沒有回覆 ICMP。 這就是你所看到的一切。也許是太忙而無法回覆 ICMP?這就是簡單的 ping 測試不能很好地確定服務啟動或關閉的原因之一。
(我不知道為什麼你使用 L3 工具來顯示一些與 L3 無關的行為。)
答案2
IP 流量不一定遵循相同的路徑。因此,在發送 ICMP 封包的追蹤路由的情況下,它們並不總是遵循相同的路徑(ICMP 在 IP 之上運行)
有一個整體維基百科上關於traceroute的條目
希望這可以幫助。