日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一文了解什么是DoIP协议(超详细)

發布時間:2023/12/9 编程问答 133 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一文了解什么是DoIP协议(超详细) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UDS診斷作為汽車ECU里的一個服務功能,位于應用層,它的實現需要有網絡的支撐,我們把基于CAN總線實現的UDS診斷稱為DoCAN,基于Ethernet實現的UDS診斷稱為DoIP

DoIP

DoIP

Diagnostic communication over Internet Protocol,我們把通過以太網協議,承載UDS數據,實現診斷通信的這種方式稱為DoIP

DoIP的好處有哪些呢?

相比DoCAN中CAN網絡的封閉性,DoIP由于Ethernet的互聯互通,可以實現車與車、車與人的遠距離診斷通信

DoIP在傳輸層以下的規范遵循ISO 13400,而應用層還是遵循ISO 14229不變,這樣可以保證UDS診斷在不同車載網絡上的可移植性

ISO 13400-2規定了外部測試設備與車輛ECU之間的診斷通信要求,包括:

  • 網絡層協議IP
  • 傳輸層協議TCP/UDP
  • 對網關的要求(網關如何集成到現有網絡總)
  • 對測試設備的要求(如何發現車輛并建立通信)

支持DoIP的車輛網絡架構圖如下

從這張圖上可以看出:汽車內部必須有一個DoIP的總網關,它作為和外部的診斷設備DoIP通信的唯一接口


網絡層要求

MAC層

沒什么可說的,和標準的以太網物理鏈路層一樣,都是基于IEEE 802.3

網絡層

和標準以太網網絡層一樣,但是需要注意的一點是,DoIP在以太網IP層首先IPv6協議,同時兼容IPv4

傳輸層

TCP

除了遵循TCP協議的標準規范外,DoIP在TCP協議上還應遵守:

  • 支持DoIP的ECU的診斷服務創建的socket必須監聽在端口號13400上,外部測試設備通過連接此端口建立連接
  • 每個支持DoIP的ECU必須支持n+1個并發的TCP socket連接,這是為了防止有多個外部測試設備同時和ECU進行診斷通信
  • 外部測試設備創建的socket應選擇本地端口,本地端口即系統隨機的端口

TCP連接的過程

UDP

UDP協議在DoIP中的作用和使用的端口號為:

車輛發現的兩種方式:

  • DoIP設備啟動后,通過UDP向13400端口廣播發送vehicle announcement message,源端口號為13400或隨機,里面包含此DoIP設備的基本信息,外部測試設備需要監聽13400來接收這些信息
  • 外部測試設備通過UDP廣播發送request消息,目標端口號是13400,DoIP設備監聽在13400端口,接收此request并響應

DoIP Protocol

DoIP報文的結構

DoIP Header

  • 其中Inverse Protocol Version是對Protocol Version的依比特取反
  • 而Payload Type則是表示這個DoIP報文的用途

Payload Type


其中最常用的幾個:

  • 0x0001和0x0004用于汽車診斷連接建立之前的車輛發現過程
  • 0x0005和0x0006用于tcp socket連接成功后的診斷連接請求與響應
  • 0x8001、0x8002、0x8003分別表示診斷消息、診斷消息正響應、診斷消息負響應
  • 0x0007和0x0008用于檢查建立的診斷連接是否仍然在使用中,如果不再使用,則關閉socket

從中可以看出DoIP診斷通信前需要做的事:

  • 車輛發現,有兩種方式
  • DoIP設備啟動后,首先通過UDP廣播的形式把一條DoIP報文(vehicle announcement message,Payload Type為0x0004)發給網絡上的所有的其他節點,其中就包括診斷儀,目的端口是13400,其中這條消息攜帶了DoIP設備的DoIP版本、VIN、logical address等信息,這條信息會發送三次,而之前監聽在13400端口的診斷儀接收到這條信息,就知道了DoIP設備的基本信息
  • 如果診斷儀沒有收到,還有一種辦法,就是診斷儀這邊主動請求,通過UDP廣播的形式,主動發一條DoIP request消息(Payload Type為0x0001),目的端口號是13400,而之前啟動后就一直監聽在13400的DoIP設備,接收到這條消息后,就會回復一條攜帶自己信息的response給診斷儀
  • 建立TCP連接

診斷儀通過創建tcp socket,然后調用connect方法向DoIP設備發起TCP連接請求(目的ip是DoIP設備ip,目的端口號是13400),而DoIP設備在啟動前已經通過創建tcp socket監聽在13400端口,接收到tcp連接請求后就會完成三次握手

  • 建立診斷連接

在TCP連接建立后,診斷儀還需要發送一條Routing activation request的DoIP報文給DoIP設備,DoIP設備收到后會回復一條Routing activation response的DoIP報文,此時診斷連接建立,雙方可以診斷通信


網關

汽車網絡中由于同時存在多種網絡,而造成不同網絡上的診斷功能無法互相通信,這時候就需要網關的作用

比如說:
對于DoCAN和DoIP,網關起到的作用就是接收、解封裝、封裝、發送
DoCAN報文需要發給DoIP設備,網關會先把DoCAN的CAN網絡頭部剝離,留下UDS數據,然后再用這個UDS數據封裝一條完整的DoIP報文,發出去
DoIP報文需要發給DoCAN設備,網關會先把DoIP的所有頭部剝離,留下UDS數據,然后用這個UDS數據封裝一條完整的DoCAN報文,發出去


總結

以上是生活随笔為你收集整理的一文了解什么是DoIP协议(超详细)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。