首页
/
每日頭條
/
職場
/
ping和icmp的關系
ping和icmp的關系
更新时间:2026-01-08 11:10:04

日常工作中,我們經常需要判斷網絡是否連通,相信大家都會使用ping這個命令,其實ping命令是基于 ICMP 協議來實現的,那麼什麼是 ICMP 協議呢?ICMP是 Internet Control Message Protocol 的縮寫,即互聯網控制消息協議。它用于TCP/IP網絡中發送控制消息,提供可能發生在通信環境中的各種問題反饋,通過這些信息,使網絡管理者可以對所發生的問題作出診斷,然後采取适當的措施解決問題。本文就來介紹一下ICMP協議的工作原理。

ping和icmp的關系(深入了解Ping命令後的工作原理)1

ICMP報文格式

從ICMP的報文格式來說,ICMP是IP的上層協議,但是ICMP是分擔了IP的一部分功能。所以,ICMP也被認為是與IP同層的協議,工作在網絡層,是IP協議的助手。如下圖所示,ICMP封裝在IP報進行傳輸,ICMP報文本身被封裝在IP數據報的數據區中,而這個IP數據報又被封裝在幀數據中。在IP數據報報頭中的協議(Protocol)字段設置成1,表示該數據是ICMP報文。關于IP報文格式介紹詳見《計算機網絡傳輸中IP數據報文格式詳解并結合Wireshark深入分析》。

ping和icmp的關系(深入了解Ping命令後的工作原理)2

ICMP報文格式如下圖所示,ICMP報文的前4個字節是統一的格式,共有三個字段:即類型、代碼和檢驗和。接着的4個字節的内容與ICMP的類型有關,然後是數據部分,長度也取決于類型。

ping和icmp的關系(深入了解Ping命令後的工作原理)3

  • 類型:占8位。類型字段可以有15個不同的值,以描述特定類型的ICMP報文。
  • 代碼:占8位。ICMP報文的代碼字段是為了進一步區分某種類型中的幾種不同的情況
  • 檢驗和:占16位。用來檢驗整個ICMP報文。其計算方法和IP頭部檢驗和的計算方法一樣的。
ICMP報文類型

ICMP報文主要分為兩大類:查詢報文和差錯報文。所有ICMP 用來交流錯誤通知和信息詢問的報文,都是由類型和代碼的組合來表示的。ICMP報文由類型來表達它的大概意義,一共定義了15種類型,需要傳遞細小的信息時由代碼再來進行分類。

ping和icmp的關系(深入了解Ping命令後的工作原理)4

ICMP實現之ping命令

通過上面的叙述,我們了解了 ICMP 協議的内容,那麼下面我們來看一下ICMP 的具體實現與應用吧。正如前面所說ICMP報文類型其實有好多種,用以反饋網絡通信中的各種情形,而我們最最常用的情形是可以通過ping命令可以用來在網絡層次上調查與指定機器是否連通。為了實現這個功能,ping命令使用了兩個ICMP 報文:ICMP回送請求(類型是8,代碼是0)和ICMP回送應答(類型是0,代碼是0)。

ping和icmp的關系(深入了解Ping命令後的工作原理)5

首先,源主機向目标主機執行ping命令,源主機會構建一個ICMP回送請求消息數據包,在這個回送請求數據包中,相比與原生的ICMP除了類型和代碼字段,還被追加了标識符和序号字段。标識符和序号字段分别是16位的字段,比如将進程号PID填寫在标識符裡,用以區分是哪個應用程序發ICMP包。對于序号,每送出一個數據包數值就增加1。另外該ICMP報文的選項數據部分還會存放發送請求的時間值,來計算往返時間。

我們在IP地址為192.168.0.102主機上執行ping 192.168.0.1的命令,并通過 WireShark 抓包可以看出,源主機會構建一個ICMP回送請求消息數據包如下圖所示。可以看到該ICMP報文的類型(Type)為8,對應代碼(Code)為0,表示Echo(ping) request——ping回送請求,後面還有檢驗和(Checksum)等字段,檢驗ICMP報文結構。

ping和icmp的關系(深入了解Ping命令後的工作原理)6

當源主機送出的回送請求到達目标主機後,目标主機回答這一請求,發送一個ICMP回送應答數據包。這個ICMP 回送應答報文在IP層來看,與被送來的回送請求報文基本上一樣。不同的隻是,源和目标IP 地址字段被交換了,類型字段裡填入了表示回送應答的0。

通過 WireShark 抓包如下圖所示,可以看到該ICMP報文的類型(Type)為0,對應代碼(Code)為0,表示Echo(ping) Reply——ping回顯應答。

ping和icmp的關系(深入了解Ping命令後的工作原理)7

如果目的主機可以接收到回送應答數據包,那我們就認為目标主機是正常工作着的。進一步,記住發送回送請求數據包的時間,與接收到回送應答數據包的時間差,就能計算出數據包一去一回所需要的時間。但是,收到的回送應答報文裡寫的隻是類型和代碼的話,發送方主機将無法判斷它是否是自己發出去請求的回答。因此,前面說到的标識符和序号字段就有它的意義了。将這兩個值與回送應答報文中的相同字段值一比較,送行方主機就能夠簡單地檢測回送應答是否正确了。執行ping 命令而調查的結果沒什麼問題的話,就将目标主機的IP 地址,數據大小,往複花費的時間打印到屏幕上。

ping和icmp的關系(深入了解Ping命令後的工作原理)8

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
涼山州脫貧攻堅個人事迹(涼山州表揚一批脫貧攻堅綜合幫扶工作先進集體和個人)
涼山州脫貧攻堅個人事迹(涼山州表揚一批脫貧攻堅綜合幫扶工作先進集體和個人)
     7月22日,涼山州脫貧攻堅綜合幫扶工作表揚大會暨決勝脫貧攻堅誓師大會在西昌召開,會議通報表揚10名“十佳綜合幫扶工作隊員”、 200名“優秀綜合幫扶工作隊員”、10個“十佳鄉鎮工作隊”、10個“十佳駐村工作隊”、10個“十佳專業技術服務隊”。   去年,省委着眼加強脫貧攻堅一線領導力量、專業力量、工作力量,舉全省之力向涼山選派綜合幫扶工作隊。一年來...
2026-01-08
江西豐城發電廠坍塌案例分析數據(江西豐城施工平台坍塌特别重大事故分包單位)
江西豐城發電廠坍塌案例分析數據(江西豐城施工平台坍塌特别重大事故分包單位)
  昨天,住建部發布了江西豐城發電廠三期擴建工程冷卻塔施工平台坍塌特别重大事故分包單位及項目經理處罰公告。      公告原文如下:   建督罰字〔2018〕15号   河北億能煙塔工程有限公司:   2016年11月24日7時33分,江西豐城發電廠三期擴建工程發生一起冷卻塔施工平台坍塌特别重大事故,造成73人死亡、2人受傷,直接經濟損失10197.2萬元。...
2026-01-08
王者榮耀如何打官司(打王者榮耀吃飯能打折)
王者榮耀如何打官司(打王者榮耀吃飯能打折)
  如今最火爆的手遊;   非王者榮耀莫屬!   上到99,下到剛會走;   分分鐘随時走起;      不論在哪兒;   隻要在玩對戰手遊;   一定有“農藥”的聲音;   這榮耀盛世真是“沒sei了”!      如果遊戲隻是娛樂;   那就錯了;   這不,我們編輯跟老闆提離職了;   不想碼字,想回家“開黑”!   想知道什麼原因嗎?      因為...
2026-01-08
兼職做淘寶模特需要交費嗎(我網店模特大學期間做兼職)
兼職做淘寶模特需要交費嗎(我網店模特大學期間做兼職)
  近年來,其實有很多年輕人都希望自己能夠在畢業之後獲得非常好的發展,能夠賺取穩定收入,但是有很多的網店模特或者是電商模特,他們的收入還是蠻高的,可是一些大學生在從事這份工作之後卻選擇了退出或者轉行,那麼為什麼大多數的年輕漂亮的大學生并不願意再去從事這份工作呢?      經過了解,看到有位女大學生分享了自己的工作經曆,女大學生小李在學校期間其實就是兼職做網...
2026-01-08
渦輪增壓是怎麼實現增壓的(什麼是渦輪增壓)
渦輪增壓是怎麼實現增壓的(什麼是渦輪增壓)
  咱先說說發明渦輪增壓器的人是誰,比較公認的說法是一名瑞士工程師——比希,在1905年申報了專利,當時還主要應用于飛機和坦克的發動機上,直到20世紀70年代出現了一個轉折點,裝配渦輪增壓發動機的保時捷911問世,它于1977年,渦輪增壓技術才傳播的更加廣泛。   接下來我們說說,增壓的目的是什麼?渦輪增壓的主要作用就是提高發動機的進氣量,從而提高發動機的功...
2026-01-08
Copyright 2023-2026 - www.tftnews.com All Rights Reserved