作者 | 向閑
小編 | 不吃豬頭肉
引言
在車載以太網(wǎng)測試中,因為IP協(xié)議本身提供的是不可靠傳輸,所以如果網(wǎng)絡(luò)出現(xiàn)丟包、網(wǎng)絡(luò)錯誤等問題就需要及時向管理者報告錯誤和狀態(tài)信息,此時就需要借助ICMP協(xié)議來實現(xiàn)這一功能。
什么是ICMPv4協(xié)議
ICMP協(xié)議全稱是Internet Control Message Protocol,即互聯(lián)網(wǎng)控制報文協(xié)議。其中,ICMPv4和ICMPv6分別指用于IPv4和IPv6的ICMP版本。目前在車載以太網(wǎng)里常用到的IP協(xié)議是IPv4,所以本文著重介紹ICMPv4,ICMPv6不涉及。
ICMPv4協(xié)議是TCP/IP協(xié)議簇的一個子協(xié)議,封裝在IPv4報文中,主要用于在IPv4主機、路由器之間傳遞控制消息,用于報告網(wǎng)絡(luò)通不通、主機是否可達、路由是否可用等網(wǎng)絡(luò)本身的消息。這些控制消息雖然并不傳輸用戶數(shù)據(jù),但是對于收集各種網(wǎng)絡(luò)信息、診斷和排除各種網(wǎng)絡(luò)故障以及用戶數(shù)據(jù)的傳遞起著重要的作用。ICMPv4報文格式
ICMPv4報文封裝在IPv4數(shù)據(jù)報里,所以一個ICMPv4報文會包括IPv4頭部、ICMPv4頭部和ICMPv4 Payload。當IPv4頭部的Protocol值為1時,表示為一個ICMPv4報文。
ICMPv4報頭格式如下圖:

ICMP報頭格式
類型(Type):ICMPv4報文的類型,如目標不可達報文(Type=3)。代碼(Code):ICMPv4報文類型(Type)下細化的子類型,如對于目標不可達報文(Type=3),code=1表示主機不可達,code=2表示協(xié)議不可達。校驗和(Checksum):ICMPv4報文的校驗和,校驗方法與IP數(shù)據(jù)報首部校驗和算法相同。報文分類
ICMPv4分為兩類報文,1類是查詢報文(通過對對端主機發(fā)送請求和接收對端主機發(fā)送響應(yīng)的方式去傳輸消息,可以用來報告網(wǎng)絡(luò)連通性等消息),1類是差錯報文(報告IP數(shù)據(jù)報在傳輸過程中出現(xiàn)的錯誤)。
常見的ICMPv4報文類型
響應(yīng)請求
平時使用較多的Ping命令就是通過對端主機發(fā)送回顯請求(Type=8)和接收對端主機發(fā)送的回顯回答(Type=0)去判斷主機之間是否通信連通。
實際測試數(shù)據(jù)如下:

目標不可達
當路由器無法根據(jù)路由表轉(zhuǎn)發(fā)IP數(shù)據(jù)報到指定的目標地址時,會向發(fā)送端主機返回一個目標不可達的差錯報文,并報告不可達的原因。常見的目標不可達差錯報文類型有網(wǎng)絡(luò)不可達(Code=0)、主機不可達(Code=1)、協(xié)議不可達(Code=2)、端口不可達(Code=3)等。
實際測試數(shù)據(jù)如下:

時間戳
時間戳請求報文(Type=13)和時間戳應(yīng)答報文(Type=14)用于測試兩臺主機之間數(shù)據(jù)報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接收方收到請求后填充接收時間戳后以Type=14的報文格式返回,發(fā)送方計算這個時間差。
實際測試數(shù)據(jù)如下:

參數(shù)錯誤報文
一旦路由器或主機發(fā)現(xiàn)錯誤的數(shù)據(jù)報首部和錯誤的數(shù)據(jù)報選項參數(shù)時,便丟棄該數(shù)據(jù)報,并向源主機發(fā)送參數(shù)問題(Parameter Problem)報文(Type=12)。代碼Code=0表示數(shù)據(jù)報首部中的某個字段的值有錯或不明確,這時ICMP報文首部的指針指向數(shù)據(jù)報中有問題的字節(jié)。
實際測試數(shù)據(jù)如下:

下表是完整的ICMP報文分類:

應(yīng)用
ICMPv4最常見的用法是對網(wǎng)絡(luò)進行測試和故障診斷,常用的程序是Ping 和tracert。
1)Ping
使用ping命令確定本地主機是否能與另一臺主機成功交換數(shù)據(jù)包,再根據(jù)返回的信息,就可以推斷TCP/IP參數(shù)是否設(shè)置正確,以及運行是否正常、網(wǎng)絡(luò)是否通暢等。
2)tracert
tracert 命令主要用來顯示數(shù)據(jù)包到達目的主機所經(jīng)過的路徑。通過執(zhí)行一個tracert到對方主機的命令,返回數(shù)據(jù)包到達目的主機所經(jīng)歷的路徑詳細信息,并顯示每個路徑所消耗的時間。

總結(jié)
ICMP協(xié)議是TCP/IP協(xié)議簇中不可或缺的一部分。通過理解和應(yīng)用ICMP協(xié)議,可以更好地幫助管理員去收集各種網(wǎng)絡(luò)信息、診斷和排除各種網(wǎng)絡(luò)故障。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
55文章
11249瀏覽量
106369 -
ICMP
+關(guān)注
關(guān)注
0文章
52瀏覽量
15290 -
車載以太網(wǎng)
+關(guān)注
關(guān)注
18文章
243瀏覽量
23525 -
報文
+關(guān)注
關(guān)注
0文章
39瀏覽量
4187
發(fā)布評論請先 登錄
ICMPv6協(xié)議基礎(chǔ)簡介

百問MQTT協(xié)議分析 - MQTT簡述及協(xié)議報文格式組成
第24章 RL-TCPnet之網(wǎng)絡(luò)控制報文協(xié)議ICMP
另一個角度看物聯(lián)網(wǎng)協(xié)議
互聯(lián)網(wǎng)IPv6隧道過渡是什么?
請問移植好LWIP協(xié)議棧能通過網(wǎng)線接入路由器和連接互聯(lián)網(wǎng)嗎?
高級互聯(lián)網(wǎng)協(xié)議(IP)攝像機與模擬攝像機的應(yīng)用有何差異?
TCP/IP網(wǎng)絡(luò)協(xié)議簡介
TCP與UDP協(xié)議區(qū)別
移動互聯(lián)網(wǎng)中SCTP協(xié)議的性能優(yōu)化

互聯(lián)網(wǎng)核心協(xié)議之一:TCP的基礎(chǔ)知識

評論