找出ip資料報在網路中經過的路由

2021-07-23 23:02:29 字數 1108 閱讀 4138

利用icmp協議,icmp協議一般用於傳遞udp、tcp報文的差錯資訊,但是也有個選項可以被配置成為可以記錄沿路的路由ip的功能(在icmp報文的首部有型別和**兩個字段,被分別配置為8和0的時候)。使用ping -r的形式可以檢視ip記錄路由。這時候每乙個接到該資料報的路由器都會在ip資料報的選項欄位中加入自己的ip位址。但是選項欄位的空間是有限的,最多只能記錄下9個ip位址,因此這種檢視路由的方式是有限制的。

另外一種方式是利用traceroute程式。在ip資料報有乙個字段叫做ttl,當乙個路由器接到乙個ttl為0或者1的資料報時,假設資料報的目的ip並不是該路由,那麼此時該資料報不會再被往下傳輸了,只會返回乙個icmp報文(具體型別是傳送超時)給源主機。根據這個特點,可以發出乙個ttl設定為1的資料報,那麼源主機就會收到乙個從第乙個路由發來的icmp報文,記錄下傳送端的ip,然後源主機發出乙個ttl為2的報文,那麼源主機就會收到第二個路由發來的icmp報文,再次記錄下傳送端的ip,像這樣一直類推的話就可以一直到最後一站。但是最後一站有些特別,因為這時候發出的ip資料報的目的地已經到了,即使此時的ttl為0了也不會發出乙個超時的icmp的。這時候就該利用icmp的另一項功能了。當目的埠在不可達的時候(可能是由於目的主機並沒有開放該埠),目的主機會返回乙個埠不可達的icmp報文。利用這個功能,發出乙個埠設定為乙個不常用的數字的udp資料報,當發現返回的icmp是埠不可達的型別時,說明已經到達目的主機了。traceroute程式就是這樣的原理。

對於traceroute程式來說,獲得的每乙個沿路的路由ip都是通過將不同的報文傳送出去,每乙個報文會得到乙個沿路的路由ip,這樣就導致了乙個問題,有可能第乙個報文是走的這條路,第二個報文卻走了另外一條路(路由表可能更新了或者某些路由故障導致),這樣的話得到的沿路的ip就是錯誤的。之前都是在假設發出的所以報文都會走上次走過的路,然而不走上次走過的路也是可能的。

通過ip記錄路由和通過使用traceroute得到的結果可能是不同的。乙個路由器往往有兩個以上的介面(也可以說ip位址),資料報會先進入接收介面,再從傳送介面被傳送出去。如果使用ip記錄路由的方式,那麼記錄的ip都是傳送介面位址,而使用traceroute的話,記錄的ip是接收介面的ip。也導致了從a主機到b主機和從b主機到a主機的traceroute結果可能不同。

(根據《tcp/ip詳解》卷一)

資料報在網路中的流轉

文分為兩部分 基礎概念介紹 和資料報在網路中流轉的過程 1.啥是集線器 從0開始,當一台機器a想與機器b發訊息,連一根實體線即可完成 假設這根線很牛逼,連上就能通資訊 兩台機器互動沒有問題,如果一台機器a想與b,c,d,e,f五颱機器通訊,他就需要扯五根線,如果六臺機器想互相通訊那就得扯十五條,十分...

網路層 IP資料報

網路層的協議資料單元pdu是ip資料報,ipv4是ip協議的乙個版本,還有最新的ipv6版本,後面進行介紹。版本 指版本號4 首部長度 佔4位,一行首部4位元組 32位 至少5行共20位元組,最多15行共60位元組 區分服務 未使用該欄位 總長度 佔16位,首部和資料長度之和,最大2 16 1位元組...

IP資料報在網路中為什麼要分片和重組

一 什麼是ip分片?ip協議在傳輸資料報時會將資料報文分成若干片進行傳輸,並在目標系統中進行重組。這以過程就成為分片。二 為什麼要進行ip分片 如果ip資料報加上資料幀頭部後大於mtu,資料報文就會分成若干片進行傳輸。那麼什麼是mtu呢?每一種物理網路都會規定鏈路層資料幀的最大長度,稱為鏈路層mtu...