內網***系列教程二(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格式輸出數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章