作者 | 向閑
小編 | 不吃豬頭肉
引言
在車載以太網測試中,因為IP協議本身提供的是不可靠傳輸,所以如果網絡出現丟包、網絡錯誤等問題就需要及時向管理者報告錯誤和狀態信息,此時就需要借助ICMP協議來實現這一功能。
什么是ICMPv4協議
ICMP協議全稱是Internet Control Message Protocol,即互聯網控制報文協議。其中,ICMPv4和ICMPv6分別指用于IPv4和IPv6的ICMP版本。目前在車載以太網里常用到的IP協議是IPv4,所以本文著重介紹ICMPv4,ICMPv6不涉及。
ICMPv4協議是TCP/IP協議簇的一個子協議,封裝在IPv4報文中,主要用于在IPv4主機、路由器之間傳遞控制消息,用于報告網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸用戶數據,但是對于收集各種網絡信息、診斷和排除各種網絡故障以及用戶數據的傳遞起著重要的作用。ICMPv4報文格式
ICMPv4報文封裝在IPv4數據報里,所以一個ICMPv4報文會包括IPv4頭部、ICMPv4頭部和ICMPv4 Payload。當IPv4頭部的Protocol值為1時,表示為一個ICMPv4報文。
ICMPv4報頭格式如下圖:
![6faac5d2-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSeAFfgmAAANWHzdJ3g470.png)
ICMP報頭格式
類型(Type):ICMPv4報文的類型,如目標不可達報文(Type=3)。代碼(Code):ICMPv4報文類型(Type)下細化的子類型,如對于目標不可達報文(Type=3),code=1表示主機不可達,code=2表示協議不可達。校驗和(Checksum):ICMPv4報文的校驗和,校驗方法與IP數據報首部校驗和算法相同。報文分類
ICMPv4分為兩類報文,1類是查詢報文(通過對對端主機發送請求和接收對端主機發送響應的方式去傳輸消息,可以用來報告網絡連通性等消息),1類是差錯報文(報告IP數據報在傳輸過程中出現的錯誤)。
常見的ICMPv4報文類型
響應請求
平時使用較多的Ping命令就是通過對端主機發送回顯請求(Type=8)和接收對端主機發送的回顯回答(Type=0)去判斷主機之間是否通信連通。
實際測試數據如下:
![6fc522e2-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSeAA5l5AAM5fhBTyYU795.png)
目標不可達
當路由器無法根據路由表轉發IP數據報到指定的目標地址時,會向發送端主機返回一個目標不可達的差錯報文,并報告不可達的原因。常見的目標不可達差錯報文類型有網絡不可達(Code=0)、主機不可達(Code=1)、協議不可達(Code=2)、端口不可達(Code=3)等。
實際測試數據如下:
![6fdffffe-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSeAA8qcAAKx4dyZDME753.png)
時間戳
時間戳請求報文(Type=13)和時間戳應答報文(Type=14)用于測試兩臺主機之間數據報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接收方收到請求后填充接收時間戳后以Type=14的報文格式返回,發送方計算這個時間差。
實際測試數據如下:
![6ffba1dc-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSeAKbIKAANEZ1dCNVk008.png)
參數錯誤報文
一旦路由器或主機發現錯誤的數據報首部和錯誤的數據報選項參數時,便丟棄該數據報,并向源主機發送參數問題(Parameter Problem)報文(Type=12)。代碼Code=0表示數據報首部中的某個字段的值有錯或不明確,這時ICMP報文首部的指針指向數據報中有問題的字節。
實際測試數據如下:
![7014e160-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSiAMG9jAAMvO8_IU0c938.png)
下表是完整的ICMP報文分類:
![70444004-4a1c-11ef-817b-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSiAa5wJAAFP1zzrapw625.jpg)
應用
ICMPv4最常見的用法是對網絡進行測試和故障診斷,常用的程序是Ping 和tracert。
1)Ping
使用ping命令確定本地主機是否能與另一臺主機成功交換數據包,再根據返回的信息,就可以推斷TCP/IP參數是否設置正確,以及運行是否正常、網絡是否通暢等。
2)tracert
tracert 命令主要用來顯示數據包到達目的主機所經過的路徑。通過執行一個tracert到對方主機的命令,返回數據包到達目的主機所經歷的路徑詳細信息,并顯示每個路徑所消耗的時間。
![706e42d2-4a1c-11ef-817b-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FE/57/wKgZomahtSiAPz-ZAAAI9crXBOw182.png)
總結
ICMP協議是TCP/IP協議簇中不可或缺的一部分。通過理解和應用ICMP協議,可以更好地幫助管理員去收集各種網絡信息、診斷和排除各種網絡故障。
-
互聯網
+關注
關注
54文章
11189瀏覽量
103955 -
ICMP
+關注
關注
0文章
52瀏覽量
14962 -
車載以太網
+關注
關注
18文章
226瀏覽量
23088 -
報文
+關注
關注
0文章
38瀏覽量
4069
發布評論請先 登錄
相關推薦
ICMPv6協議基礎簡介
![<b class='flag-5'>ICMPv</b>6<b class='flag-5'>協議</b>基礎簡介](https://file.elecfans.com/web2/M00/52/D4/pYYBAGLNkrKAeFJaAAAjXRuImx0496.png)
評論