渣碩筆記——偶讀《TCP/IP詳解:卷1 協議》 關於IP路由選項和時間戳選項

渣碩筆記——偶讀《TCP/IP詳解:卷1 協議》 關於IP路由選項和時間戳選項

 

最近在看hidden router的一篇論文,講到用IP時間戳選項來解決這個問題。。發現自己對這方面瞭解太少,於是打開了這本著作,開始挑選相應章節學習一下。

 

一、自然要先從IP報文格式先了解起。


背景知識:如圖所示,報文格式。首部長度這一個字段僅有4個bit,因此整個IP頭部的長度最大隻能達到15*32bit=60B,其中固定頭部長度爲20B。選項數據最多佔據40字節,是可變長的部分。

這些任選項可以用於以下定義:

1.   安全和處理限制。。。太高端了,暫時不管

2.   記錄路徑(RR,記錄經過的路由器IP地址)

3.   時間戳(記錄經過的路由IP和時間)

4.   寬鬆源站選路(Strict Source Route,爲數據報文指定一系列必須經過的IP地址)

5.   嚴格路由選路(Loose Source Route,類似strict,只能經過要求經過的IP地址)

二、記錄路由選項

對於記錄路由來說,選項數據的格式如下:


其中3B的RR選項,4*9B=36B的IP地址清單列表空間,最後剩餘1B全爲0,被解釋爲EOL。

各字段意義:

1.   code表示IP選項數據的類型,對於記錄路由來說,CODE=7.

2.   Ptr指針字段,ptr指向了存放下一個IP地址的位置。最小值爲4,表示第一個IP存放開始的位置,每次存入一個IP後,ptr+=4;直至ptr=40,表示IP清單已滿。

3.   Len,一般寫36或40。

這樣,我們現在就可以感受一下記錄選項了。

Ping–R xxx


可以看到從本機到百度服務器的路由路徑,可惜路徑太長,記錄不完全。

要注意,RR中的IP記錄的是數據包到達路由器後被轉發出去的口,第一個IP記錄的就是自己主機的出口IP,當數據包到達目的地時,DEST回覆的ICMP ECHO REPLY包會把之前的路由清單抄進去,然後發送出去,當reply包到達SRC主機時,也會把自己進入主機的IP端口地址加入到清單裏面去。

不過我爲了找一個比較近的目標進行ping,選擇了附近網段的目標x.x.108.200,結果出現了點詭異。x.x.108.200數據同時記錄了2次。。。


繼續測試,對自己本機進行測試,發現本機IP竟然出現4次:


暫時不曉得爲啥。。。改天再說吧。

其中書上其實也提到了一個異常的輸出情況,如下: SRC-->X1(IP1)-->X2(IP2)-->DEST-->Gateway(IP3)-->X2(IP2’)-->X1(IP1’)-->SRC

可以看到,中間多了個gateway,作者分析是由於dest在回覆ICMP ECHO REPLY時,SRC的地址不在本機的路由表裏,這種情況下會把數據包發給網關,網關幫忙把包再發送給下一跳。

 

三、時間戳選項

與記錄路由選項很相似。格式如下圖


Code=0x44。Len和ptr同RR。

OF和FL各佔4bit。

FL表示標誌字段,即指定了時間戳選項對應的操作:0只記時間戳,1記錄IP和時間戳,3發送包之前對選項列表進行了初始化,總共存放了4對IP和值爲0的時間戳,僅噹噹前路由器與列表中的下一個IP匹配時,才修改時間戳的值。

OF表示溢出,當列表已滿但打開了記錄時間戳選項時,路由器會將OF的值增加,最大值爲15。

時間戳的取值:一般是自UTC午夜開始記的毫秒數,如果路由器不使用這個格式,就需要打開時間戳中的高位以表明這個是非標準值。數據部分最多放9個時間戳。

總的來說,最多隻能記錄24hop

 

下面是ping –T的選項。

-T [ping only]:          發送IP時間戳選項。

-T tsonly                只有時間戳

-T tsandaddr             時間戳和地址

-T tsprespec host1 [host2 [host3 [host 4]]] 預指定跳數的時間戳


下面來直接地感受一下吧~  ping –T tsandaddr  www.baidu.com結果如下:


可以看到,在ping發出的多個ICMP包,收到的7個ICMPecho reply包中,顯然每個只記錄了4對地址和時間戳~。

並顯示未記錄的跳數爲15。

然而令人不解的是每一跳所採用的時間戳的值是如何變化的。


第一跳記錄的都是本機的時間戳,absolute的(不是很懂)。

幾分鐘後對其進行再次探測,結果如下圖

對比發現,

本機的時間戳值有明顯的增加;

第二跳時間戳基本無變化。。。

第三跳、第四跳時間戳同上

這說明?他們不是標準的時間戳設置方法?

而且根據規定,“需要打開時間戳中的高位以表明這個是非標準值”,但根據本次探測的結果感覺貌似沒有做到。。。。104276高位爲0? 一會爲 -1 一會爲0的 何解?求指點



發佈了42 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章