用tracert命令追蹤路由,出現了相同的IP地址,怎麼解釋?

第二和第三行出現了相同的IP地址,難道是有兩個地址一樣的路由器么?然後用wireshark抓包

在相同的IP地址之間又出現了一個111.206.223.205和本地主機直接通信,難道是因為這個才導致出現了前面兩個相同的IP地址么?


第一種可能:NAT

當TTL= 3 時,ICMP到達第三跳,這時TTL通過三次減1操作,TTL變為0,需要報錯,但這個第三跳路由器使用私有IP,恰好還有預設路由(指向第二跳)、或有明細路由(也指向第二跳),於是回包到達第二跳,第二跳需要把第三跳的私有IP替換成自己的,於是就發生了題主看到的一幕。

這種可能性比較小,一般預設路由會指向上游(第四跳),而不會指向下游(第二跳);擁有源主機公網明細路由的可能性也比較小(比預設路由的可能性大)。

第二種可能:MPLS + NAT

第三跳為MPLS/P路由器,雖然沒有源主機的路由,但知道第二跳、或第四跳PE路由器會有源主機的路由,於是使用原有的ICMP Echo 包的Label來發ICMP TTL Expired消息,到達第四跳PE,第四跳再調轉方向發回到第二跳PE,第二跳做NAT操作,於是就發生了題主看到的一幕。

這種可能性更大。

第三種可能:第二跳TTL-2 操作

無論是TTL = 1,TTL=2,最後減2的結果都是0(TTL 為1時,減2也是0,不會為-1),好像包經過了兩跳路由器。

這種可能性比較小,這個算BUG了。


除了各位的回答以外有可能是遇到了隧道。隧道端點拆隧道前後分別減了1個ttl


你仔細看中間出現的111.206.223.205,這只是ICMP ping包的請求而已,沒有回應,tracert就是每一次將ping包的TTL值+1,使得每一跳的路由器給你發一個ICMP差錯通告報文告訴你目的地不可達來探測每個節點的ip地址。這就是為什麼你抓包的時候會在兩個icmp包之間發現一個目的為111.206.223.205的icmp報文

至於兩個同樣的ip地址應該是在那個網段內的BR做了NAT轉換,所以每次回你的差錯通告報文都是同一個ip地址,也就是說你這個ping包有可能在那個網段內跨越了兩台路由器


可能是存在NAT轉換。

發送數據包給111.206.223.205,111.206.223.205給回復,再發送數據包給下個路由,本應該由下個路由給回復,但是下個路由之間和111.206.223.205存在NAT轉換,把下個路由轉換成111.206.223.205給你回復,所以出現兩跳ip相同的情況。

具體參考http://www.xj123.info/1744.html


我在想另外一種可能性,即中間某一節點將TTL-1之後本應該向源節發送TTL Exceeded ,但是該節點並沒有發送這一消息,而是將數據包繼續轉發致下一跳,從而導致下一跳收到的TTL為0,下一次收到的TTL為1 , 如此將TTL-1之後都觸發條件向源回送TTL Exceeded消息,即出現兩個跳點為同樣IP的情況。


有環路,所以一樣


如果反覆相同則是路由環路


推薦閱讀:

想考網路工程師,希望能給出一些建議?
學完了網路工程師怎麼找不到工作呢?
交換機收到幀後的處理方式?
我該怎麼選擇?網路工程師、Linux運維工程師、虛擬化工程師
想入行做網路工程師,求好心人解惑?

TAG:Cisco思科 | 計算機網路 | 網路工程 | 網路協議 | 網路工程師 |