天天看點

(8)Traceroute程式

一、簡介

    Traceroute程式可以讓我們看到IP資料報從一台主機傳到另一台住進所經過的路由及IP源路由選項。

二、Traceroute程式的操作

    為什麼不使用IP記錄路由選項,而是重新開發一個新的應用程式,原因有以下三點:

    (1)原來不是所有的路由器都支援記錄路由選項;

    (2)記錄路由一般是單向的選項。發送端設定了該選項,那麼接收端不得不從收到的IP首部中提取出所有的資訊,然後全部傳回給發送端;

    (3)IP首部中留給選項的空間有限。

    Traceroute程式使用ICMP封包和IP首部中的TTL字段。TTL初始值一般為64,每個處理資料報的路由器都需要把TTL值減1。TTL值相當于一個跳站計數器。

    TTL字段的目的是防止資料報在選路時不休止的在網絡中流動。即它給資料報上加上了一個生存上限。路由器丢棄TTL字段為0或1的資料報,并給信源機發一份ICMP逾時資訊,Traceroute程式的關鍵在于包含這份ICMP資訊的IP封包的信源位址是該路由器的IP位址。

    Traceroute程式操作過程是這樣的:它發送一份TTL字段為1的UDP資料報給目的主機,處理這份資料報的第一個路由器将TTL值減1,丢棄該資料報,并發回一份逾時ICMP封包。這樣就得到了該路徑中的第一個路由器的位址。然後,“Traceroute”程式發送一份TTL值為2的資料報,這樣我們就可以得到第二個路由器的位址。繼續這個過程,直至該資料報到達目的主機。Traceroute程式發送一份UDP資料報給目的主機,但它選擇一個不可能的值作為UDP端口号(大于30000),使目的主機的任何一個應用程式都不可能使用該端口。因為,當該資料報到達時,将使目的主機的UDP子產品産生一份“端口不可達”錯誤的ICMP封包。這樣,Traceroute程式就可以分析接收到的ICMP封包是端口不可達的還是逾時封包來判斷是否到達目的主機。

三、IP源站選路選項

    源站選路的思想是由發送者指定路由。它可以采用以下兩種形式:

    (1)嚴格的源路由選擇。發送端指明IP資料報所必須采用的确切路由。如果一個路由器發現源路由所指定的下一個路由器不在其直接連接配接的網絡上,那麼它就傳回一個“源站路由失敗”的ICMP差錯封包。

    (2)寬松的源站選路。發送端指明了一個資料報經過的IP位址清單,但是資料報在清單上指明的任意兩個位址之間可以通過其他路由器。