《TCP/IP詳解卷一:協議》學習筆記八

一、Traceroute程序的操作

1、Traceroute程序可以讓我們看到IP數據報從一臺主機傳到另一臺主機所經過的路由。其還可以讓我們使用IP源路由選項。

 

2、爲什麼不使用IP記錄路由選項(RR)而另外開發一個新的應用程序?

 1)、原先並不是所有的路由器都支持記錄路由選項,因此該選項在某些路徑上不能使用。

 2)、記錄路由一般是單項的選項。

 3)、IP首部中留給選項的空間有限,不能存放當前大多數的路徑。

 

3、Traceroute程序使用ICMP報文和IP首部中的TTL字段(生存週期)。

 

4、TTL字段

 1)、此是由發送端初始設置一個8 bit字段。推薦的設置值是由分配數字RFC決定,當前值爲64。

 2)、每個處理數據報的路由器都需要把TTL的值減1或減去數據報在路由器中停留的秒數。由於大多數的路由器轉發數據報的延時都小於一秒鐘。因此TTL最終成爲一個挑戰的計數器,所經過的每個路由器都將其值減1.

 3)、TTL字段的目的是防止數據報在選路時無休止地在網絡中流動。

 4)、當路由器收到一份IP數據報,如果其TTL字段是1或0,則路由器不轉發該數據報。反之,路由器將該數據報丟棄,並給信源機發送一份ICMP“超時”信息。

 

5、Traceroute程序操作過程

 1)、它發送一份 T T L字段爲1的I P數據報給目的主機。處理這份數據報的第一個路由器將 T T L值減 1,丟棄該數據報,併發回一份超時 ICMP報文。這樣就得到了該路徑中的第一個路由器的地址。

 2)、然後  Tr a c e r o u t e 程序發送一份 T T L值爲2 的數據報,這樣我們就可以得到第二個路由器的地址。

 3)、繼續這個過程直至該數據報 到達目的主機。但是目的主機哪怕接收到 T T L值爲1的I P數據報,也不會丟棄該數據報併產生 一份超時I C M P報文,這是因爲數據報已經到達其最終目的地。

 

 

二、局域網輸出

1、我們將使用從 s v r 4到s l i p,經路由器b s d i的簡單互聯網(見內封面)。 b s d i和s l i p之間是9600 b/s的S L I P鏈路。

圖8.1

1)、輸出的第1個無標號行給出了目的主機名和其 I P地址,指出t r a c e r o u t e程序最大的T T L字段值爲3 0。 4 0字節的數據報包含 2 0字節I P首部、 8字節的U D P首部和1 2字節的用戶數據(1 2字節的用戶數據包含每發一個數據報就加 1的序列號,送出T T L的副本以及發送數據報的時間)。

2)、輸出的後面兩行以T T L開始,接下來是主機或路由器名以及其I P地址。對於每個T T L值,發送3份數據報。每接收到一份I C M P報文,就計算並打印出往返時間。如果在 5秒種內仍未收到3份數據報的任意一份的響應,則打印一個星號,併發送下一份數據報。

 

2、往返時間是由發送主機的 t r a c e r o u t e程序計算的。它是指從 t r a c e r o u t e程序到該路由器的總往返時間。如果我們對每段路徑的時間感興趣,可以用 T T L字段爲N + 1所打印出來的時間減去T T L字段爲N的時間。

 

3、有兩種不同的I C M P“超時”報文(見 6 . 2節的圖6 - 3),它們的I C M P報文中c o d e字段不同。圖2給出了這種I C M P差錯報文的格式。

圖2

我們所討論的I C M P報文是在T T L值等於0時產生的,其c o d e字段爲0。
1)、主機在組裝分片時可能發生超時,這時,它將發送一份“組裝報文超時”的 I C M P報文。這種差錯報文將c o d e字段置1。

 

4、關於t r a c e r o u t e程序,還有一些必須指出的事項。

1)、首先,並不能保證現在的路由也是將來所要採用的路由,甚至兩份連續的 I P數據報都可能採用不同的路由。如果在運行程序時,路由發生改變,就會觀察到這種變化,這是因爲對於一個給定的 T T L,如果其路由發生變化,t r a c e r o u t e程序將打印出新的I P地址。

2)、第二,不能保證 I C M P報文的路由與 t r a c e r o u t e程序發送的U D P數據報採用同一路由。

3)、第三,返回的 I C M P報文中的信源 I P地址是U D P數據報到達的路由器接口的 I P地址。

4)、最後,在廣域網情況下,如果 t r a c e r o u t e程序的輸出是可讀的域名形式,而不是 I P地址形式。

 

 

三、廣域網輸出

1、圖3是從s u n主機到NIC (Network Information Center)的情況。

圖3

1)、T T L字段爲6和7的路由器位於JPL (JetPropulsion Laboratory)上。 T T L字段爲11所輸出的s u r a . n e t網絡位於Southeastern UniversitiesResearch Association Network上。 T T L字段爲1 2的域名G S I是Government Systems, Inc., NIC的運營者。

2)、T T L字段爲6的第2個RT T(5 9 0)幾乎是其他兩個 RT T值(2 3 4和2 6 2)的兩倍 。它表明 I P路由的動態變化。在發送主機和這個路由器之間發生了使該數據報速度變慢的事件。同樣,我們不能區分是發出的數據報還是返回的 I C M P差錯報文被攔截。

3)、T T L字段爲3的第1個RT T探測值(2 0 4)比T T L字段爲2的第1個探測值(2 3 3)值還小。由於每個打印出來的RT T值是從發送主機到路由器的總時間,因此這種情況是可能發生的。
 

 

四、IP源站選路選項

1、通常I P路由是動態的,即每個路由器都要判斷數據報下面該轉發到哪個路由器。應用程序對此不進行控制,而且通常也並不關心路由。它採用類似 Tr a c e r o u t e程序的工具來發現實際的路由。源站選路(source routing)的思想是由發送者指定路由。它可以採用以下兩種形式
1)、嚴格的源路由選擇。發送端指明 I P數據報所必須採用的確切路由。如果一個路由器發現源路由所指定的下一個路由器不在其直接連接的網絡上,那麼它就返回一個“源站路由失敗”的I C M P差錯報文。

2)、寬鬆的源站選路。發送端指明瞭一個數據報經過的 I P地址清單,但是數據報在清單上指明的任意兩個地址之間可以通過其他路由器。

 

2、Tr a c e r o u t e程序提供了一個查看源站選路的方法,我們可以在選項中指明源站路由,然後檢查其運行情況。圖3給出了源站路由選項的格式。
圖4

1)、對於源站選路,我們必須在發送 I P數據報前填充I P地址清單;而對於記錄路由選項,我們需要爲 I P地址清單分配並清空一些空間,並讓路由器填充該清單中的各項。同時,對於源站選路,只要爲所需要的I P地址數分配空間並進行初始化,通常其數量小於 9。而對於記錄路由選項來說,必須儘可能地分配空間,以達到 9個地址。

2)、對於寬鬆的源站選路來說, c o d e字段的值是0 x 8 3;而對於嚴格的源站選路,其值爲 0 x 8 9。l e n和p t r字段與7 . 3節中所描述的一樣。

 

3、源站路由選項的實際稱呼爲“源站及記錄路由”(對於寬鬆的源站選路和嚴格的源站選路,分別用L S R R和S S R R表示),這是因爲在數據報沿路由發送過程中,對 I P地址清單進行了更新。下面是其運行過程

1)、發送主機從應用程序接收源站路由清單,將第 1個表項去掉(它是數據報的最終目的地址),將剩餘的項移到1個項中(如圖4所示),並將原來的目的地址作爲清單的最後一項。指針仍然指向清單的第 1項(即,指針的值爲 4)。

2)、每個處理數據報的路由器檢查其是否爲數據報的最終地址。如果不是,則正常轉發數據報(在這種情況下,必須指明寬鬆源站選路,否則就不能接收到該數據報)。

3)、如果該路由器是最終目的,且指針不大於路徑的長度,那麼( 1)由p t r所指定的清單中的下一個地址就是數據報的最終目的地址;( 2)由外出接口(outgoing interface)相對應的I P地址取代剛纔使用的源地址;( 3)指針加4。

 

5、當一個應用程序接收到由信源指定路由的數據時,在發送應答時,應該讀出接收到的路由值,並提供反向路由。Host Requirements RFC指明, T C P客戶必須能指明源站選路,同時, T C P服務器必須能夠接收源站選路,並且對於該 T C P連接的所有報文段都能採用反向路由。如果T C P服務器下面接收到一個不同的源站選路,那麼新的源站路由將取代舊的源站路由。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章