traceroute是乙個用來探索tcp/ip協議的工具,他通過icmp協議可以讓我們看到ip資料報從一台主機傳送到另一台主機所經過的所有路由。
使用方法:
traceroute [引數] [主機名]
windows下命令為 tracert
traceroute程式使用icmp報文和ip首部中的ttl欄位。ttl欄位是由傳送端設定的乙個8位元字段。
每個處理資料報的路由器都需要把ttl的值減1或減去資料報在路由器中停留的描述。由於大多數的路由器**資料報的時延都小於1秒鐘,因此ttl最終成為乙個跳站的計數器,所以經過的每個路由器都將其值減1。
ttl欄位的目的是防止資料報在選路是無休止地在網路中流動。 如:當路由器癱瘓或者兩個路由器的連線丟失時,選路協議有時會去檢測丟失的路由並一直進行下去。在這段時間內,資料報可能在迴圈迴路被終止。ttl欄位就是在這些迴圈傳遞的資料報上加上乙個生存期限。
當路由器收到乙份ip資料報,如果ttl欄位是0或1,則路由器不**該資料報(接收到這種資料報的目的主機可以將它交給應用程式,這是因為不需要**該資料報。但是在通常情況下,系統不該接收ttl欄位為0的資料報)。相反,路由器將該資料報丟棄,並給源主機發乙份icmp「超時」資訊。traceroute的關鍵在於包含這份icmp資訊的ip報文的信源位址是該路由器的ip位址。
traceroute傳送乙份udp資料報給目的主機,但它選擇乙個不可達的值作為udp埠(>3000),使目的主機的任何乙個應用程式都不肯使用該埠。因此,當該資料報到達時,目的主機的udp將產生乙份「埠不可達」的icmp錯誤報文。traceroute區分接收到的icmp報文時超時還是埠不可達,已判斷什麼時候結束。
traceroute需要注意的是:
1、並不能保證現在的路由也是將來要採用的路由,甚至兩份連續的ip資料報都可能採用不同的路由。 對於乙個給定的ttl,如果其路由發生變化,traceroute程式將列印出新的ip位址。
2、不能保證icmp報文的路由與traceroute傳送的udp資料報採用統一路由。
3、返回的icmp報文中的信源ip位址是udp資料報到達的路由器介面的ip位址。
4、在廣域網情況下,由於traceroute程式接收到icmp報文時,它所獲得的唯一資訊就是ip位址,因此在給定ip位址的情況下,它做乙個「反向網域名稱檢視」工作來獲取網域名稱。
ip源站選路選項:
一般ip路由是動態的,即每個路由器都要判斷資料報下一跳該**到哪個路由器。應用程式對此不進行控制,通常也比你夠不關心路由。
源站選路的思想是由傳送者指定路由。可以採用兩種形式:
1)、嚴格的源站選路。傳送端指明ip資料報所必須採用的確切路由。如果乙個路由器發現原路由所指定的餓下乙個路由器不再其直接連線的網路上,那麼它就返回乙個」源站路由失敗「的icmp差錯報文。
2)、寬鬆的源站選路。傳送端指明乙個資料報經過的ip位址清單,但資料報在清單上指明的任意兩個位址之間kiyomi通過其他路由。
TCP IP網路協議基礎TCP IP網路協議基礎
1.tcp ip網路協議基礎 tcp ip transmission control protocol internet protocol 是傳輸控制協議和網路協議,就是電子裝置如何連入網際網路,並且之間怎麼通訊。tcp ip 不是乙個協議,而是乙個協議族的統稱,裡面包括了 ip 協議 icmp 協...
TCP IP網路協議
tpc ip協議是傳輸層協議,主要解決資料如何在網路中傳輸,而http是應用層協議,主要解決如何包裝資料。關於tcp ip和http協議的關係,網路有一段比較容易理解的介紹 我們在傳輸資料時,可以只使用 傳輸層 tcp ip協議,但是那樣的話,如果沒有應用層,便無法識別資料內容,如果想要使傳輸的資料...
TCP IP網路協議
摘自 前段時間做了乙個開發,涉及到網路程式設計,開發過程比較順利,但任務完成後始終覺得有一些疑惑。主要是因為對網路協議不太熟悉,對一些概念也沒弄清楚。後來 我花了一些時間去了解這些網路協議,現在對tcp ip網路協議有了初步的認識,在這裡總結出來,可以梳理一下我對網路協議的理解,加深印象.話說兩台電...