DoIP(一)——基础概念
1. DoIP概述
DoIP(Diagnostic communication over Internet Protocol)是基于車載以太網的診斷,在OSI 七層模型中屬于傳輸層,其傳輸的診斷數據也是基于UDS,即DoIP是在以太網網絡上傳輸UDS診斷數據的傳輸協議。DoIP帶寬高,適合傳輸大量數據的場景,如車上的OTA軟件升級。
ISO 13400-1中給出的協議體系如下:
?
2. DoIP報文格式
DoIP報文也是基于TCP或UDP,但在其報文的Payload起始段添加了DoIP報頭(首部),用來區分不同的DoIP報文類型,實現不同的功能。DoIP報文的結構如下圖所示:
?
3. DoIP端口
我們知道不管是TCP還是UDP,都包含源端口號和目的端口號,在DoIP報文中用到了以下三種端口:
(1)UDP_DISCOVERY:端口類型-UDP,端口號-13400
該端口有以下兩個應用場景:
被用于診斷設備發送給DoIP節點的車輛信息請求報文和DoIP節點控制報文,此時該端口在報文中被設置為目的端口。
被用于DoIP節點在沒有收到請求的時候發送的UDP報文,如車輛聲明報文。此時該端口同樣被設置為目的端口,源端口可以為該端口,也可以由發送方動態定義。
(2)UDP_TEST_EQUIPMENT_REQUEST:端口類型-UDP,端口號-動態定義(49152-65535)
該端口由外部診斷設備在49152-65535范圍內動態定義,用于診斷設備向DoIP節點發送的UDP報文,在報文中作為源端口,報文的目的端口應設置為UDP_DISCOVERY。
當DoIP節點向診斷設備發送響應的時候,報文中的目的端口應設置為UDP_TEST_EQUIPMENT_REQUEST,源端口可以為UDP_DISCOVERY,也可以有DoIP節點動態定義。
(3)TCP_DATA:端口類型-TCP,端口號-13400
該端口用于外部診斷設備和DoIP節點之間的TCP通信,如路由報文和診斷報文。當診斷設備向DoIP節點發送報文時,使用TCP_DATA作為目的端口號;當DoIP節點向診斷設備發送報文時,使用TCP_DATA作為源端口號。
4. DoIP報頭
我們把上圖中DoIP的部分單獨拿出來:
我們可以看到DoIP報文由首部和數據兩部分組成,我們先來看一下首部四個參數的定義:
?
(1)協議版本(Protocol Version)
長度一字節,代表遵照ISO 13400 的那個版本,定義如下:
0x00:Reserved
0x01: DoIP ISO 13400-2:2010
0x02: DoIP ISO 13400-2:2012
0x03…0xFE: ISO 13400 reserved
0xFF: default value for vehicle identification request messages
(2)協議版本取反(Inverse Protocol Version)
是上面協議版本字節取反后的數值,即 = 協議版本 XOR 0xFF。
例如:協議版本 = 0x02,該字節 = 0x02 ^ 0xFF = 0xFD
(3)數據類型(Payload Type)
數據類型即DoIP報文的類型,不同類型功能不同,數據部分的解析方式也不一樣,我們在下一篇文章中詳細介紹每一種報文類型。
(4)數據長度(Payload Length)
我們先來看最后一個參數——數據長度,就是指DoIP報文中DoIP層數據的長度,不包括DoIP報頭,只是數據長度,4字節,可以為0,最大為0xFFFFFFFF(4GB)。
總結
以上是生活随笔為你收集整理的DoIP(一)——基础概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: chrome控制台如何把vw显示成px_
- 下一篇: vue 横向菜单滚动定位_使用vue组件