?? rfc1393.txt
字號:
組織:中國互動出版網(wǎng)(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:錢海波(bood boodweb@wx88.net)
譯文發(fā)布時間:2002-04-26
版權(quán):本中文翻譯文檔版權(quán)歸中國互動出版網(wǎng)所有。可以用于非商業(yè)用途自由轉(zhuǎn)載,但必須保留本文檔的翻譯及版權(quán)信息。
譯注:本文中的某些詞句可能翻譯的不準(zhǔn)確,我已將沒有把握的英文原文附于其后(如果有的話)。如果您發(fā)現(xiàn)本文的翻譯有任何問題,歡迎來信指正。
Network Working Group G. Malkin
Request for Comments: 1393 Xylogics, Inc.
January 1993
使用IP選項實現(xiàn)Traceroute程序
(Traceroute Using an IP Option)
本備忘錄狀態(tài)
本備忘錄為Internet團體定義了一個試驗性質(zhì)的協(xié)議。本文所述內(nèi)容尚需要通過討論和建議來改進。要了解本協(xié)議的標(biāo)準(zhǔn)化進程,請參考查閱最新的“IAB官方協(xié)議”文檔。本備忘錄的散發(fā)不受限制。
概述:
Traceroute是一個很有用的網(wǎng)絡(luò)調(diào)試工具。當(dāng)前實現(xiàn)此工具所采用的方法有一個優(yōu)點,即實現(xiàn)所要求的功能天生就被路由器所支持。然而當(dāng)前的實現(xiàn)也有兩個問題:過多的數(shù)據(jù)包和過長的運行時間。
本文詳細(xì)說明了一種新的IP選項和ICMP消息類型,通過它們,我們可以用更少的數(shù)據(jù)包在更短的時間實現(xiàn)原來Traceroute的功能。
目錄
1. 現(xiàn)今的Traceroute . . . . . . . . . . . . . . . . . . . . . 2
2. 將來的Traceroute . . . . . . . . . . . . . . . . . . . . . 2
2.1 基本算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 IP Traceroute選項格式 . . . . . . . . . . . . . . . . . . 2
2.3 ICMP Traceroute消息格式 . . . . . . . . . . . . . . 3
3. 協(xié)議 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1 跳躍(Hop)計數(shù) . . . . . . . . . . . . . . . . . . . . . 5
3.2 目的主機操作 . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 路由器操作 . . . . . . . . . . . . . . . . . . . . . . . . 5
4. 參考文獻 . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. 安全性考慮 . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. 作者地址 . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1. 現(xiàn)今的Traceroute
現(xiàn)在的traceroute的實現(xiàn)是這樣的:主機先發(fā)出一個TTL(Time To Live,生存時間)為1的數(shù)據(jù)包。接著數(shù)據(jù)包經(jīng)過第一跳之后到達一個路由器,此時路由器將發(fā)回一個ICMP錯誤消息[1],以說明這個數(shù)據(jù)包不能繼續(xù)向前傳送,因為其TTL已經(jīng)過期了。然后traceroute程序又發(fā)出一個TTL為2的數(shù)據(jù)包,這個數(shù)據(jù)包經(jīng)過兩次跳躍后其TTL過期。這個過程不斷重復(fù),直到數(shù)據(jù)包到達目的主機。此過程的目的就是要記錄下所有發(fā)出ICMP超時消息的消息源,據(jù)此就可以確定出數(shù)據(jù)包到達目的主機的路徑了。
這個算法的優(yōu)點是所有的路由器都能夠發(fā)出TTL超時消息,因而不需要特殊的代碼以支持此算法。而其缺點在于:發(fā)出的數(shù)據(jù)包的數(shù)目(2n個,其中n是數(shù)據(jù)包跳躍次數(shù))(譯注:可能包含了路由器發(fā)送的超時消息),花費在用連續(xù)的數(shù)據(jù)包記錄較近路由的時間,以及路徑在這個檢測過程中可能會發(fā)生改變這個事實。同時,這個算法并不能跟蹤檢測數(shù)據(jù)包返回時的路徑,而這個路徑很可能與外出路徑不同。
2. 將來的Traceroute
這個被提議的traceroute實現(xiàn)將使用一種不同的算法來達到相同的目的,即得到到達目的主機的路徑。由于新的traceroute實現(xiàn)采用了一種專用的ICMP消息,所以用戶還可以得到一些以前(使用老的traceroute)得不到的額外信息。
2.1 基本算法
這里,我們將定義一種新的IP選項——Traceroute選項。若此選項存在在一個ICMP應(yīng)答(或任何其他)數(shù)據(jù)包中,在下文中稱之為“外出數(shù)據(jù)包”(Outbound Packet),則會使路由器給這個外出數(shù)據(jù)包的源端發(fā)出一個新定義的ICMP Traceroute消息。這樣,通過n+1個數(shù)據(jù)包(而不是2n個),這個外出數(shù)據(jù)包所經(jīng)過的路徑就可以被其發(fā)送端記錄下來。路徑的改變并不影響這個算法的有效性,同時,該算法還允許對外出數(shù)據(jù)的應(yīng)答,下文稱之為“返回數(shù)據(jù)包”(Return Packet),進行跟蹤,只要外出數(shù)據(jù)包的目的主機在發(fā)送應(yīng)答數(shù)據(jù)時保留原來的IP Traceroute選項就可以了。
這個方法的不足之處在于必須把traceroute功能加到路由器中去。而好處是這種機制能夠很容易的加入到新版本的IP協(xié)議中去。
2.2 IP Traceroute選項格式
(譯注:為方便對比,我將英文和中文的格式都列了出來,下同)
F(復(fù)制到分片標(biāo)志,copy to fragments):
0(不復(fù)制到分片)
C(類別,class):
2(調(diào)試 & 測量)
數(shù)字(Number):
18(F+C+Number = 82)
ID標(biāo)識號(ID Number):
這是由外出數(shù)據(jù)包發(fā)送者指定的任意一個數(shù)值,其目的在于可以讓程序識別與自身發(fā)出數(shù)據(jù)包對應(yīng)的ICMP Traceroute消息。這個數(shù)值與IP頭部的標(biāo)識號沒有關(guān)系。
源IP地址(Originator IP Address):
發(fā)送外出數(shù)據(jù)包的主機地址。這是必須的,因為路由器要根據(jù)這個地址發(fā)送返回數(shù)據(jù)包。含有源站選路(Source Route)選項的外出數(shù)據(jù)包同樣需要這個字段。
外出跳躍計數(shù)(Outbound Hop Count,簡稱OHC):
外出數(shù)據(jù)包已經(jīng)通過的路由器數(shù)目。外出數(shù)據(jù)包的目的主機不增加這個字段的值。
返回跳躍計數(shù)(Return Hop Count,簡稱RHC):
返回數(shù)據(jù)包已經(jīng)通過的路由器數(shù)目。返回數(shù)據(jù)包的目的主機不增加這個字段的值。
2.3 ICMP Traceroute消息格式
類型(Type):
30
代碼(Code):
0 - 外出數(shù)據(jù)包轉(zhuǎn)發(fā)成功
1 - 前面已沒有路由器,數(shù)據(jù)包被拋棄
校驗和(Checksum):
對首部中每個16位字進行二進制反碼求和的結(jié)果。在計算校驗和之前,應(yīng)當(dāng)先把此字段填零,然后填入計算結(jié)果。
ID標(biāo)識號(ID Number):
與引起此消息的數(shù)據(jù)包中的IP Traceroute選項部分的相應(yīng)字段相同。這同樣不與IP首部的ID標(biāo)識號有任何關(guān)系。
外出跳躍計數(shù)(Outbound Hop Count):
與引起此消息的數(shù)據(jù)包中的IP Traceroute選項部分的相應(yīng)字段相同。
返回跳躍計數(shù)(Return Hop Count):
與引起此消息的數(shù)據(jù)包中的IP Traceroute選項部分的相應(yīng)字段相同。
輸出連接速度(Output Link Speed):
發(fā)送“外出/返回數(shù)據(jù)包”所在連接的速度,以“字節(jié)(8位)/秒”計。選擇“字節(jié)/秒”而不是“位/秒”是考慮到如下事實:網(wǎng)絡(luò)速度不久即將突破4.3GB/s,同時有些機器處理大于32位字段的效率很低。如果這個值不能確定,那么該字段應(yīng)該置為零。
輸出連接MTU(Output Link MTU):
發(fā)送“外出/返回數(shù)據(jù)包”所在連接的MTU,以“字節(jié)”計。MTU所針對的只是數(shù)據(jù)包中的數(shù)據(jù)部分,包括IP首部,但不包括鏈路層所加的首部及尾部封裝。如果這個值不能確定,那么該字段應(yīng)該置為零。
3. 協(xié)議
帶有IP Traceroute選項的外出數(shù)據(jù)包通常不應(yīng)該使用特殊的服務(wù)類型(Type Of Service,簡稱TOS)或優(yōu)先級(Precedence),除非想要跟蹤具有特殊服務(wù)類型或優(yōu)先級的數(shù)據(jù)包路徑。
外出數(shù)據(jù)包的TTL值應(yīng)該設(shè)置成“數(shù)字分配”[2]一文中所指定的默認(rèn)值。
3.1 跳躍(Hop)計數(shù)
跳躍計數(shù)提供了有關(guān)外出/返回數(shù)據(jù)包到目的主機所經(jīng)路徑長度的信息。這些計數(shù)也提供了判斷ICMP Traceroute消息丟失與否的一種方法。舉個例子來說,如果一個OHC為6的消息緊跟在一個OHC為4的消息后面,那么我們可以得出結(jié)論,那個OHC為5的消息丟失了。這也說明了僅計算Traceroute消息的數(shù)目不能有效判斷路徑長度的原因。
外出數(shù)據(jù)包的源端應(yīng)當(dāng)把數(shù)據(jù)包中的OHC設(shè)成0,而把RHC設(shè)成0xFFFF。0xFFFF這個特殊數(shù)值用來表示這是一個外出數(shù)據(jù)包而不是返回數(shù)據(jù)包,返回數(shù)據(jù)包的RHC為0。
另外要注意的很重要的一點是,這個跳躍計數(shù)與與IP的TTL沒有任何關(guān)聯(lián)。跳躍計數(shù)的步增應(yīng)該僅在一個ICMP Traceroute消息發(fā)出時進行。
3.2 目的主機操作
若一主機接收到一個帶有IP Traceroute選項的外出數(shù)據(jù)包,那么在被要求應(yīng)答的時候(如ICMP Echo服務(wù)的請求/應(yīng)答),返回數(shù)據(jù)包也應(yīng)當(dāng)帶有此選項。在返回數(shù)據(jù)包中必須填入如下內(nèi)容:ID標(biāo)識號、OHC和源IP地址。而RHC字段應(yīng)當(dāng)被設(shè)為0。
外出數(shù)據(jù)包的目的主機不應(yīng)該再增加跳躍計數(shù)或者發(fā)送任何的ICMP Traceroute消息。
3.3 路由器操作
當(dāng)路由器轉(zhuǎn)發(fā)一個含有IP Traceroute選項的數(shù)據(jù)包時,它應(yīng)當(dāng)給源IP地址字段所指出的主機發(fā)送一份ICMP Traceroute消息。如果接收到的數(shù)據(jù)包中的RHC字段為0xFFFF,那么這個數(shù)據(jù)包就是外出數(shù)據(jù)包,因此路由器應(yīng)當(dāng)將OHC字段的值加一;否則路由器應(yīng)將RHC字段加一。而發(fā)回的Traceroute消息應(yīng)該反映出增加后的跳躍計數(shù)。輸出連接速度應(yīng)當(dāng)設(shè)置成發(fā)送“外出/返回數(shù)據(jù)包”所在連接的速度,以“字節(jié)(8位)/秒”計(如一個以太網(wǎng)速度為1,250,000),該字段也可以設(shè)成零以表示速度不能確定。輸出連接MTU應(yīng)當(dāng)設(shè)置成發(fā)送“外出/返回數(shù)據(jù)包”所在連接的MTU,該字段同樣可以為零以表示MTU不能確定。
當(dāng)Traceroute選項存在時,外出/返回數(shù)據(jù)包的轉(zhuǎn)發(fā)過程應(yīng)該像它不存在一樣。也就是說,到達目的主機的路徑與是否存在Traceroute選項無關(guān)。
ICMP Traceroute消息應(yīng)該與外出/返回數(shù)據(jù)包具有相同的TOS和優(yōu)先級。TTL值應(yīng)該設(shè)置成“數(shù)字分配”[2]一文中所指定的默認(rèn)值。
ICMP Traceroute消息不應(yīng)該再具有IP Traceroute選項。
如果外出數(shù)據(jù)包不能被轉(zhuǎn)發(fā),那么返回的ICMP Traceroute消息的代碼字段應(yīng)當(dāng)設(shè)為1。但是如果返回數(shù)據(jù)包由于沒有可用的路由器而不能被轉(zhuǎn)發(fā),那么就不需要發(fā)回一個Traceroute消息,因為這個消息就算發(fā)了也將不能被轉(zhuǎn)發(fā)。
4. 參考文獻
[1] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792,
USC/Information Sciences Institute, September 1981.
[2] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1340,
USC/Information Sciences Institute, July 1992.
5. 安全性考慮
安全性方面的相關(guān)內(nèi)容不在本文中討論。
6. 作者的地址
Gary Scott Malkin
Xylogics, Inc.
53 Third Avenue
Burlington, MA 01803
Phone: (617) 272-8140
EMail: gmalkin@Xylogics.COM
RFC 1393 -- Traceroute Using an IP Option 使用IP選項實現(xiàn)Traceroute程序
1
RFC文檔中文翻譯計劃
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -