Traceroute原理學習

2021-06-18 06:37:27 字數 1767 閱讀 6300

traceroute

可以讓我們看到

ip資料報從一台主機傳到另一台主機所經過的路由。

曾經介紹過

ip記錄路由的選項

rr,為什麼不使用這個選項而另外開發乙個新的應用程式

traceroute呢?

原因有三:

其一,並不是所有的路由器都支援記錄路由這個選項;

其二,記錄路由一般是單向的選項,傳送端設定了該選項,接收端不得不從收到的

ip首部中提取出所有的資訊,然後全部返回給傳送端。大多數的

ping

伺服器把接收到的

rr清單返回(存於

icmp

中),這樣使得記錄的

ip位址翻了一番。

其三,ip首部的空間有限,不能存放當前大多數的路徑。只能存放9個

ip位址。

traceroute

使用icmp

報文和ip

首部中的

ttl欄位。

ttl欄位是由傳送端初始設定的乙個

8bit

的字段,推薦值為

64,。每個處理資料報的路由都需要把

ttl的值減

1或者減去在路由器中停留的秒數,由於大多數路由器的**資料報的時延都小於

1秒,因此

ttl最終成為乙個跳站的計數器,所經過的每個路由器都將其值減1。

當路由器收到乙個

ip資料報時,如果其

ttl欄位是0或者

1,則路由器不**該資料報,而是將該資料報丟棄,並給信源機傳送乙份

icmp

超時資訊,

traceroute

程式的關鍵在於包含這份

icmp

資訊的ip

報文的信源位址是該路由器的

ip位址。

traceroute

程式的操作過程:它傳送乙份

ttl欄位為1的

ip資料報給目的主機。處理這份資料報的第乙個路由器將

t tl值減1

,丟棄該資料報,並發回乙份超時

icmp

報文。這樣就得到了該路徑中的第乙個路由器的位址。然後

traceroute

程式傳送乙份

ttl值為

2的資料報,這樣我們就可以得到第二個路由器的位址。繼續這個過程直至該資料報到達目的主機。但是目的主機哪怕接收到

ttl值為1的

i p資料報,也不會丟棄該資料報並產生乙份超時

icmp

報文,這是因為資料報已經到達其最終目的地。那麼我們該如何判斷是否已經到達目的主機了呢?

traceroute

程式傳送乙份

u dp

資料報給目的主機,但它選擇乙個不可能的值作為

udp埠號(大於

30 000

),使目的主機的任何乙個應用程式都不可能使用該埠。因為,當該資料報到達時,將使目的主機的

u dp

模組產生乙份

「埠不可達

」錯誤的

i cmp

報文。這樣,

traceroute

程式所要做的就是區分接收到的

icmp

報文是超時還是埠不可達,以判斷什麼時候結束。

檢視本機路由:

Spring原理學習

簡介 spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式。組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個模組的功能如下 核心容器 核心容器提供 sp...

Mysql 原理學習

7 27 2 併發控制和鎖的概念 併發會 有可能產生 資料髒讀 多個操作修改 同乙個資料時,產生髒資料。解決併發問題的解決方案 鎖的機制 1 共享鎖 2 排它鎖 讀鎖和寫鎖 select 時 加讀鎖,其他的select 操作可以讀取,但是不能修改 update 時 加寫鎖,其他的 操作不了。鎖的粒度...

RPC原理學習

1.什麼是rpc rpc remote procedure call protocol 遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp或udp,為通訊程式之間攜帶資訊資料。在osi網路通訊模型中,rpc跨越了傳輸...