1. 程式人生 > >內網***系列教程二(ping和tracertroute命令的使用)

內網***系列教程二(ping和tracertroute命令的使用)

一、ICMP協議
ICMP是在RFC792定義的網際網路協議,通常用於返回錯誤資訊和分析路由。為了有效的提好轉發IP資料報和提高交付的機會。
ICMP是IP層協議,ICMP的報文包含在IP資料包中,作為其中的資料部分。當其加上了IP資料包的首部(20位元組)便組成了IP資料報傳送出去。他通常不由網路程式直接使用,除了ping和tracetroute這兩個特別的例子。
ICMP資料包報文:
ICMP報文分成了兩類,分別是ICMP差錯報告報文和ICMP詢問報文。前4個位元組是統一的格式。共三個欄位:型別、程式碼和檢驗和。接著是4個位元組的內容與ICMP報文的型別有關。最後是ICMP的資料欄位,其長度取決於ICMP的型別。
內網***系列教程二(ping和tracertroute命令的使用)

參考:1.https://zh.wikipedia.org/wiki/%E4%BA%92%E8%81%94%E7%BD%91%E6%8E%A7%E5%88%B6%E6%B6%88%E6%81%AF%E5%8D%8F%E8%AE%AE
2.計算機網路(第七版)-144頁

二、PING
1、前言
ping命令通常用來測試網路可用性的檢查,ping命令可以對一個網路地址傳送測試資料包,看該網路是否有響應,並統計響應時間,以此測試網路。
2、原理
向指定的網路地址傳送一定長度的資料包(ICMP)。按照約定,如果存在,會返回一個相同大小的資料包。如果在特定的時間沒有返回一個數據包,則會被認為是“超時”,會被認為指定的網路地址不存在(並不是絕對,有些伺服器通過防火檣禁止了ping或者在核心引數中禁止了ping)。
ping 傳送資料包時使用的是ICMP協議。
3、引數
-c :傳送包的數量
-t:設定存活數的ttl值。
-s:設定資料報的大小
-R:記錄路由資訊
-n:只顯示數值
-I :指定裝置
-i :設定時間間隔。
-b : 允許ping閘道器(先通過route命令檢視裝置)
三、TRACERTROUTE
1、用途
通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。
2、原理
Traceroute程式使用ICMP報文和和IP首部中的TTL欄位(生存週期)。
每個處理資料報的路由器都要把TTL的值減去1或者減去資料報在路由器中停留的秒數。由於大多數的路由器轉發資料報的延時都小於1秒鐘,因此TTL最終成為一個跳站的計數器,所經過的每個路由器都將其值減1.
TTL欄位的目的是防止資料報在選路時無休止的在網路中流動。例如,當路由器癱瘓或者兩個路由器之間的連線丟失時,選路協議有時回去檢查丟失的路由器並一直進行下去。TTL欄位就是在這些尋暖傳遞的資料報上加上一個生存上限。
當路由器收到一份IP資料報,如果TTL欄位是0或者1,則路由器不轉發該資料報(接收到這種資料報的目的主機可以將它交給應用程式,這是因為不需要轉發該資料報。但是,在通常情況下系統不應該接收TTL欄位為0的資料報)。通常情況下是,路由器將該資料報丟棄,並給信源主機發送一份ICMP超時資訊。Tracerouter程式的關鍵在於,這份ICMP超時資訊包含了該路由器的地址。
那麼,Tracerouter就通過傳送一份TTL欄位為1的IP資料報給目的主機。處理這份資料報的第一個路由器將TTL值減去1,丟棄該資料報,並回發一份超時ICMP報文。這樣就得到了該路徑中的第一個路由器的IP地址。然後Tracerouter傳送一份TTL為2的資料報,這樣就得到了第二個路由器的IP地址。那麼,繼續這個過程,直到達到目的主機。即使目的主機接收到一份TTL值為1的資料報也不會丟棄該資料報併產生一份ICMP報文,因為已經到達最終目的地。這個時候,Tracerouter程式傳送一份UDP資料報給目的主機,但選擇一個不可能的值作為目的埠號(大於30000),使得目的主機的任何一個程式都不可能使用該埠。因為,當該資料報到達時,將使目的主機的UDP模組產生一份“埠不可達”錯誤的ICMP報文,這樣Tracerouter程式要做的就是區分搜到的ICMP報文是是超時還是埠不可達,以判斷什麼時候結束。

來源:https://blog.csdn.net/lyhDream/article/details/41594605
3、引數
-f :設定第一個TTL值的大小。
-p : 設定UDP的通訊埠。
-x :開啟或者關閉資料包的正確性檢驗。
本人實菜,理解能力上有限。日後理解學會了再補充。
4、注意事項
有時我們traceroute一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回資訊,所以我們得不到什麼相關的資料包返回資料。
有時我們在某一閘道器處延時比較長,有可能是某臺網關比較阻塞,也可能是物理裝置本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會 有延時長的現象;您可以加-n引數來避免DNS解析,以IP格式輸出資料。