計算機網(wǎng)絡(luò):ICMP協(xié)議(Internet控制消息協(xié)議)
今天和大家聊聊ICMP協(xié)議相關(guān)的知識,感興趣的可以一起了解一下!
一、簡介
圖片
ICMP(Internet Control Message Protocol,互聯(lián)網(wǎng)控制消息協(xié)議)是TCP/IP協(xié)議族中的一個重要子協(xié)議,該協(xié)議位于網(wǎng)絡(luò)層。主要用于在IP主機和路由器之間傳遞控制消息,報告網(wǎng)絡(luò)通信中的各種問題。雖然這些控制消息雖然不傳輸實際的用戶數(shù)據(jù),但對于數(shù)據(jù)的準(zhǔn)確、可靠傳遞起著重要作用。ICMP協(xié)議的主要目的是提高IP數(shù)據(jù)報的成功傳輸率,確保數(shù)據(jù)通信的穩(wěn)定性和可靠性。
二、為什么要有ICMP協(xié)議?
因為IP協(xié)議本身并不提供可靠的傳輸機制,也不具備差錯報告和控制功能。所以當(dāng)數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過程中出現(xiàn)問題時,IP協(xié)議無法及時通知發(fā)送方。為了解決這個問題,ICMP協(xié)議應(yīng)運而生。ICMP協(xié)議的主要作用包括:
圖片
差錯報告:當(dāng)數(shù)據(jù)包在網(wǎng)絡(luò)傳輸過程中遇到問題時,ICMP協(xié)議可以向發(fā)送方報告錯誤信息,幫助發(fā)送方采取相應(yīng)的措施。
網(wǎng)絡(luò)診斷:提供了多種查詢報文,用于診斷網(wǎng)絡(luò)連接和路徑信息,最常用的工具有ping和traceroute。
流量控制:可以通過源抑制報文通知發(fā)送方降低數(shù)據(jù)發(fā)送速率,以緩解網(wǎng)絡(luò)擁塞。
路由重定向:可以通知主機或路由器更優(yōu)的路由路徑,提高網(wǎng)絡(luò)傳輸效率。
三、ICMP協(xié)議報文格式
ICMP報文封裝在IP數(shù)據(jù)報中,IP報頭在ICMP報文的最前面。ICMP報文的基本格式如下:
圖片
● Type:1字節(jié),表示ICMP報文的類型。
● Code:1字節(jié),表示ICMP報文的代碼,對類型進(jìn)行進(jìn)一步說明。
● Checksum:2字節(jié),用于校驗整個ICMP報文的完整性。
● Data:可變長度,包含具體的控制信息或數(shù)據(jù)。
四、ICMP報文的類型
ICMP報文主要分為兩大類:差錯報文和查詢報文。
圖片
4.1 差錯報文
差錯報文用于報告網(wǎng)絡(luò)通信中的錯誤情況,常見的差錯報文類型包括:
● 目的地不可達(dá)(Type 3):當(dāng)數(shù)據(jù)包無法到達(dá)目標(biāo)設(shè)備時,發(fā)送端會收到目的地不可達(dá)報文。具體代碼如下:
● 0:網(wǎng)絡(luò)不可達(dá)
● 1:主機不可達(dá)
● 2:協(xié)議不可達(dá)
● 3:端口不可達(dá)
● 4:需要分片但設(shè)置了不分片標(biāo)志
● 5:源路由失敗
● 6:目的網(wǎng)絡(luò)未知
● 7:目的主機未知
● 9:目的網(wǎng)絡(luò)被禁止
● 10:目的主機被禁止
● 11:由于TOS網(wǎng)絡(luò)不可達(dá)
● 12:由于TOS主機不可達(dá)
● 13:由于過濾通信被禁止
● 14:主機越權(quán)
● 15:優(yōu)先級截止生效
● 超時(Type 11):當(dāng)數(shù)據(jù)包的TTL值為0時,路由器會丟棄該數(shù)據(jù)包并發(fā)送超時報文。具體代碼如下:
● 0:生存時間超時
● 1:數(shù)據(jù)報重組超時
● 參數(shù)問題(Type 12):當(dāng)數(shù)據(jù)包的IP頭字段值不正確時,接收方會發(fā)送參數(shù)問題報文。具體代碼如下:
● 0:IP頭字段值錯誤
● 1:必需的選項缺失
● 2:不支持的長度
● 源抑制(Type 4):當(dāng)路由器或主機因網(wǎng)絡(luò)擁塞而丟棄數(shù)據(jù)包時,會發(fā)送源抑制報文,請求發(fā)送方降低發(fā)送速率。
● 重定向(Type 5):當(dāng)路由器發(fā)現(xiàn)更優(yōu)的路由路徑時,會發(fā)送重定向報文,通知發(fā)送方使用新的路由。具體代碼如下:
● 0:網(wǎng)絡(luò)重定向
● 1:主機重定向
● 2:TOS和網(wǎng)絡(luò)重定向
● 3:TOS和主機重定向
4.2 查詢報文
查詢報文用于在不同網(wǎng)絡(luò)設(shè)備之間傳遞控制信息,常用的查詢報文類型包括:
● 回顯請求和應(yīng)答(Type 8和Type 0):用于測試網(wǎng)絡(luò)連通性,常見的工具是ping。發(fā)送方發(fā)送回顯請求報文(Type 8),接收方收到后回復(fù)回顯應(yīng)答報文(Type 0)。
● 時間戳請求和應(yīng)答(Type 13和Type 14):用于測量網(wǎng)絡(luò)延遲,發(fā)送方發(fā)送時間戳請求報文(Type 13),接收方收到后回復(fù)時間戳應(yīng)答報文(Type 14)。
● 地址掩碼請求和應(yīng)答(Type 17和Type 18):用于獲取子網(wǎng)掩碼信息,主機啟動時可以使用這些報文來確定自身的子網(wǎng)掩碼。
● 路由器請求和通告(Type 9和Type 10):用于發(fā)現(xiàn)和選擇路由器,主機可以發(fā)送路由器請求報文(Type 9),路由器收到后回復(fù)路由器通告報文(Type 10)。
五、ICMP報文的實際案例
5.1 Ping命令
Ping命令是基于ICMP協(xié)議的常用網(wǎng)絡(luò)診斷工具,用于測試網(wǎng)絡(luò)連通性。以下是Ping命令的工作流程:
1. 發(fā)送回顯請求報文:發(fā)送方主機構(gòu)造一個ICMP回顯請求報文(Type 8),并將其封裝在IP數(shù)據(jù)報中發(fā)送給目標(biāo)主機。
2. 接收回顯應(yīng)答報文:目標(biāo)主機收到回顯請求報文后,構(gòu)造一個ICMP回顯應(yīng)答報文(Type 0),并將其封裝在IP數(shù)據(jù)報中發(fā)送回發(fā)送方主機。
3. 顯示結(jié)果:發(fā)送方主機收到回顯應(yīng)答報文后,顯示目標(biāo)主機的IP地址、數(shù)據(jù)大小和往返時間。
示例:
ping 192.168.2.17
輸出:
圖片
5.2 Traceroute命令
Traceroute命令用于顯示數(shù)據(jù)包從源主機到目標(biāo)主機的路徑信息,常用于診斷網(wǎng)絡(luò)連接問題。以下是Traceroute命令的工作流程:
1. 發(fā)送ICMP報文:發(fā)送方主機發(fā)送一個帶有TTL值為1的ICMP報文(通常是回顯請求報文),當(dāng)該報文到達(dá)第一個路由器時,TTL值減為0,路由器丟棄該報文并發(fā)送一個超時報文(Type 11)回給發(fā)送方。
2. 記錄路徑信息:發(fā)送方記錄第一個路由器的IP地址,然后發(fā)送一個帶有TTL值為2的ICMP報文,重復(fù)上述過程,直到數(shù)據(jù)包到達(dá)目標(biāo)主機或達(dá)到最大TTL值。
3. 顯示結(jié)果:發(fā)送方主機顯示從源主機到目標(biāo)主機的每一步路徑信息,包括每個路由器的IP地址和響應(yīng)時間。
示例:
traceroute 8.8.8.8
輸出:
圖片
總結(jié)
以上內(nèi)容就是Internet控制消息協(xié)議相關(guān)的知識介紹,希望對大家理解ICMP協(xié)議提供一些幫助!