1. 程式人生 > >【TCP/IP】Tracerouter

【TCP/IP】Tracerouter

Traceroute程式可以讓我們看到IP資料報從一臺主機傳到另一臺主機所經過的路由。

Traceroute相對於IP路徑記錄選項的比較:

       首先並不是所有的路由器都支援記錄路由選項,ASA就不支援。其次IP路徑記錄選項記錄的雙向的,浪費選項地址空間,最後IP首部中留給選項的空間有限

Cisco的Traceroute工作原理:

       在cisco中,傳送去往目的地UDP:33434(cisco預設),TTL值為1的報文,到達第一個路由器時,路由器發現TTL值為1,路由器就會給源傳送一個ICMP差錯資訊TTL不可達。當源收到ICMP時,讀取ICMP中的源地址打印出來,然後繼續傳送去往目的地UDP:33435,TTL值為2的報文,到達第二個路由器時,路由器發現TTL值為1,路由器又會給源傳送一個ICMP差錯資訊TTL不可達。當源收到ICMP時,讀取ICMP中的源地址打印出來,如此重複,獲取經過的所有路由,當抵達目的時,目的地路由器發現是找自己的,不會看TTL值是否為1,繼續檢視4層資訊,發現埠自己沒有開啟,會給源傳送一個ICMP差錯資訊埠不可達資訊。當源讀取這個埠不可達資訊,就知道到達目的地了,繼續打印出來。

微軟的Tracert的工作原理:

       傳送去往目的地的ICMP請求報文TTL值為1的報文,到達第一個路由器時,路由器發現TTL值為1,路由器就會給源傳送一個ICMP差錯資訊TTL不可達。當源收到ICMP時,讀取ICMP中的源地址打印出來,然後繼續傳送去往目的地的ICMP請求報文TTL值為2的報文,到達第二個路由器時,路由器發現TTL值為1,路由器又會給源傳送一個ICMP差錯資訊TTL不可達。當源收到ICMP時,讀取ICMP中的源地址打印出來,若此重複,獲取經過的所有路由,當抵達目的時,目的地路由器發現是找自己的,不會看TTL值是否為1,直接回應一個ICMP應答報文,當源讀取這個ICMP應答報文時,就知道到達目的地了,繼續打印出來。

IP源站選路選項:

嚴格源站路由選擇:傳送端指明IP資料報所必須採用的確切路由,如果一個路由器發現源路由所指定的下一個路由器不再其直接連線的網路上,那麼它就會返回一個“源站路由失敗”的ICMP差錯報文

嚴格源站路由的變態之處,哪怕路由器上沒有到達目的地的路由也可以通,因為嚴格源站路由提供了下一跳地址。

       寬鬆的源站路由:傳送端指明瞭一個數據報經過的IP地址清單,但是資料報子啊清單上指明的任意兩個地址之間可以通過其他路由器

路由器預設支援源站路由,防火牆都是不支援的,因為安全問題,但是我們可以把源站路由給關掉,no ip source-route。關閉後就無法使用源站路由了,會返回一個ICMP,type為3,code為5的源站路由失敗的資訊

Code:寬鬆的源站路由值為0x83,嚴格的源站路由值為0x89

Len和ptr欄位與記錄路由選項一樣。

       當一個源站路由發出時,指標會指向選項位的第一個IP地址,相當於告訴客戶端第一條去哪,然後R1收到的會是指標指向下一跳的IP地址,在R1傳送出去的時候,會將自己出介面的IP地址填寫到選項位的第一個IP地址(回去的時候才知道反向的源站路由),如此重複。