PING命令與ICMP協議

2022-02-17 08:30:18 字數 2232 閱讀 3150

不管是開發中,還是電腦日常使用,常常遇到網路不通的問題。這時你就會習慣性的使用乙個命令ping,檢視問題出在**,那它是如何工作的哪?

icmp就是網際網路控制報文協議,網路包在複雜的網路環境傳輸時,常常遇到各種各樣的問題。當遇到問題的時候,總不能讓這個網路包死的不明不白,要傳出訊息來,報個情況,是怎麼死的,為什麼死的,這樣才可以調整傳輸的策略。所以icmp的功能主要有兩種,確認ip包是否成功到底目標位址,通知在傳送過程中ip被丟棄的原因。

icmp報文是封裝在ip包裡的,乙個icmp報文包括ip報頭,icmp報頭和icmp報文,若ip報頭中的協議欄位為1時,說明是乙個icmp報文。

型別:佔乙個位元組,標識icmp報文的型別,不同型別有不同的**,它有分為兩大類,一類為差錯報文,一類為查詢報文。

**:與型別字段一起標識icmp報文的詳細型別。

校驗和:檢驗報文在傳輸過程中是否出現差錯,和ip報頭中的校驗和是一樣的。

ping就是查詢報文,一種主動的請求,並且獲得主動應答的icmp協議。ping發起請求命令,會傳送乙個icmp echo request給對端,請求得到回覆,就叫icmp echo reply,它對比原生的icmp,多了兩個字段,乙個是識別符號,乙個是序號。並且ping命令會統計響應時間和ttl(生存週期)來計算往還時間,說明路程的長短。

假定我們在乙個子網內,主機a的ip為192.168.6.1,主機b的ip為192.168.6.2,。在主機a執行ping 192.168.6.2

ping命令執行的時候,源主機會構建乙個icmp請求的資料報。裡頭有兩個重要的字段,就是我們前面說的識別符號和序號,對於請求資料報而言該字段的型別為8(回送請求),另乙個就是順序號,區分連續ping的時候發出的多個資料報,每發出乙個請求資料報,順序號會自動加1,並且會在報文的資料部分插入傳送時間。

icmp協議將這個資料報連同192.168.6.2交給ip層,ip層將會以192.168.6.2作為目標位址,本機ip位址作為源位址,還有一些控制資訊構建為乙個ip資料報

加入mac頭,先判斷一下是不是在乙個子網內,如果是就在arp對映表中查詢ip位址192.168.6.2對應的mac位址,則可以直接使用。如果沒有,就要傳送arp協議查詢mac位址,獲取mac位址後。構建乙個資料幀在附加上一些控制資訊,依據乙太網的介質訪問規則,將資料報傳送出去。

192.168.6.2收到這個資料幀後,檢查下mac目標位址,和本機的mac位址對比,符合就接收,不符丟棄。檢查該資料幀,將ip資料報從幀中提取出來,交給本機ip層,ip層檢查完後,有用資訊提取後交給icmp協議。

192.168.6.2收到後,會構建乙個icmp應答包,應答的型別欄位為0,順序號為接收到的請求包的序號,發給主機192.168.6.1

在規定時限內,源主機也就是192.168.6.1沒有接到icmp的應答包,就說明目標主機不可達,如果接收到icm應答包,則說明目標主機可達。然後檢查當前時刻減去該資料最初從源主機發出的時刻,也就是icmp資料報的時間延遲。

注意:有很多中間裝置都是禁止ping的,並不是說網路不通。這個時候我們就要使用其他協議來檢查網路是否通暢,如telnet等

這是icmp協議的另乙個報文種類,差錯報文中常用的型別主要有5種。終點不可達,埠不可達,源點抑制,超時,引數問題,改變路由

假定主機a給主機b傳送乙個郵件,網路傳輸中要經過很多臺路由器,若r1接到郵件後,發生了故障,不知道下一步該發給哪個路由裝置或那台主機裝置,這封郵件也就沒法到達主機b,這時路由r1就會把資料報丟棄並向主機a發回乙個終點不可達的資料報文。這時資料報文,型別標號為3,表示是不可達的錯誤型別。

目標系統收到乙個ip資料報某個服務請求時,本地沒有此服務,會向源頭返回icmp埠不可達資訊。

如果超過網路包生存週期還是沒到,就是超時,主機a給主機b傳送乙個資料報文時,該資料報文在網路會有乙個ttl生存時間字段,沒經過一台路由,ttl欄位就會減1,路由器收到資料報文後ttl欄位值減1後為0的話,該路由器就會把資料報丟棄並向主機a傳送乙個icmp超時報文,型別是為11

當路由器後目標追收到資料報的首部中有的字段值不正確時,就會丟棄資料報,向源點傳送引數問題的報文,型別為12

路由器改變路由報文傳送給主機,讓主機知道下次應將資料報文傳送給另外的路由器。型別為5

traceroute的應用就是差錯報文型別使用,它的目的就列印出可執行的程式主機,一直到目標主機之前要經歷多少路由器,也就是路由追蹤。traceroute使用icmp的規則,故意製造一些能產生錯誤的場景,就是故意設定特殊的ttl,追蹤去往目的地時沿途經過的路由器。

ICMP協議與ping命令

在網路中ping是乙個十分強大的tcp ip工具。它的作用主要為 1 用來檢測網路的連通情況和分析網路速度 2 根據網域名稱得到伺服器ip 3 根據ping返回的ttl值來判斷對方所使用的作業系統及資料報經過路由器數量。我們通常會用它來直接ping ip位址,來測試網路的連通情況。ping 的原理是...

ICMP協議和ping命令

當網路不通的情況下,通常會想到ping命令,ping一下,但是ping命令內部如何執行的,可能並不清楚,其實ping是基於icmp協議進行工作的。一 icmp協議的格式 icmp是在rfc 792中定義的網際網路協議族之一。通常用於返回的錯誤資訊或是分析路由。icmp錯誤訊息總是包括了源資料並返回給...

ping 原理與ICMP協議

ping 原理與icmp協議 ping的原理 ping程式是用來探測主機到主機之間是否可通訊,如果不能ping到某台主機,表明不能和這台主機建立連線。ping使用的是icmp協議,它傳送icmp回送請求訊息給目的主機。icmp協議規定 目的主機必須返回icmp回送應答訊息給源主機。如果源主機在一定時...