首頁 >運維 >linux運維 >網際通訊控制協定ICMP:網路時間的偵察兵

網際通訊控制協定ICMP:網路時間的偵察兵

齐天大圣
齐天大圣原創
2020-12-13 19:11:431852瀏覽

當我們想要測試兩台主機之間連通性時,常常會使用ping指令來驗證。但你知道該指令和icmp協定之間有什麼關聯嗎?

ICMP即是網際封包控制協議,是用來報告錯誤情況以及相關錯誤訊息的。 icmp資料報文是封裝在ip資料報的中,作為其資料部分。但是,和ip協定一樣,icmp也屬於網路層的協定。下圖是icmp封包格式圖:

網際通訊控制協定ICMP:網路時間的偵察兵

ICMP封包種類

ICMP封包總的分為兩大類,分別為差錯報告報文以及詢問報文。

錯誤報告訊息主要有以下幾種:

終點不可達(類型值為3):當主機或路由器無法交付資料時,就傳送該封包給來源點。

逾時(類型值為11):當IP資料封包中TTL值為0時,或在指定時間內沒有成功交付,那麼就向來源點發送超時報文。

參數問題(類型值為12):當收到的資料封包首部中有不正確的欄位時,就丟棄你該封包,並向來源點傳送參數問題封包。

重定向(類型值為5):當路由器收到訊息時,知道該目的位址應該從別的路由器轉送會更有效率,那麼當它轉發完這次分組後,也對來源點發送重定向報文。那麼下次同樣的目的地址的資料報,就會從另一個路由器走了。

接著,我們再來看詢問報文,主要就一類:回應請求報文(類型值為8)和回答報文(類型值為0),收到回應請求報文的主機必須返回回答報文。

ICMP的一個應用:ping指令

#在了解ICMP的一些知識後,我們來看看一個應用ICMP的實例— —ping指令。不只linux系統上有該指令,windows系統也有該指令

ping baidu.com

正在 Ping baidu.com [220.181.38.148] 具有 32 字节的数据:
来自 220.181.38.148 的回复: 字节=32 时间=32ms TTL=52
来自 220.181.38.148 的回复: 字节=32 时间=29ms TTL=52
来自 220.181.38.148 的回复: 字节=32 时间=27ms TTL=52
来自 220.181.38.148 的回复: 字节=32 时间=35ms TTL=52
220.181.38.148 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 27ms,最长 = 35ms,平均 = 30ms

我們來看看ping指令的工作流程:首先,我主機產生四個ICMP封包,這四個ICMP封包都是回應請求報文,並將這四個ICMP封包傳送給百度伺服器。如果百度伺服器能夠接受這四個ICMP封包,那麼它也會傳送四個ICMP回答封包給我主機。所以,我主機就可以根據回傳的ICMP資料報數量以及回傳的時間,來計算丟包率以及往返時間了。

推薦:《linux影片教學

###

以上是網際通訊控制協定ICMP:網路時間的偵察兵的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn