DoIP协议设计思路浅析
智能化對車載網(wǎng)絡(luò)的通信效率要求大幅提升,CAN/LIN等傳統(tǒng)車載通信協(xié)議已經(jīng)遠(yuǎn)不能滿足需求,取而代之的是車載以太網(wǎng)通信協(xié)議。車載以太網(wǎng)正逐漸取代車載網(wǎng)絡(luò)中的傳統(tǒng)通信協(xié)議,這種通信基礎(chǔ)設(shè)施的更新?lián)Q代,也催生了立足于車載通信網(wǎng)絡(luò)之上的診斷協(xié)議的變化。UDS是通用診斷協(xié)議的標(biāo)準(zhǔn)描述,在CAN網(wǎng)絡(luò)時代,UDS基于CAN協(xié)議實現(xiàn),被稱為UdsOnCan,而基于以太網(wǎng)實現(xiàn)的UDS,則被成為DoIP協(xié)議,即Diagnose On Ip。
DoIP協(xié)議為車輛診斷協(xié)議提供了基于ip的標(biāo)準(zhǔn)實現(xiàn)方式,按照網(wǎng)絡(luò)分層的觀念,我們可以認(rèn)為DoIP協(xié)議是工作在TCP/IP之上的又一個應(yīng)用層協(xié)議,如果我們解析一個DoIP數(shù)據(jù)報文,會發(fā)現(xiàn)DoIP協(xié)議正是處于TCP/IP之上,如下圖所示:
展開DoIP協(xié)議,協(xié)議內(nèi)容包含了DoIP版本號、版本號的逆、消息類型、UDS消息的長度、源地址及目的地址,如下圖所示:
DoIP的內(nèi)容與TCP極為相似,都包含源地址與目的地址,以及負(fù)載的長度(和負(fù)載內(nèi)容UDS數(shù)據(jù)),因此我們可以認(rèn)為DoIP之于UDS的作用,類似于TCP之于HTTP的作用,明確這一點有助于我們理解DoIP通信協(xié)議的設(shè)計特點。
TCP為了建立傳輸通道,需要指定源端口地址及目的端口地址,并通過消息校驗碼、消息長度及消息序列號等一系列手段保證傳輸通道的可靠性,如下圖所示:
同理,DoIP協(xié)議為實現(xiàn)將消息從一個邏輯單元傳輸?shù)搅硪粋€邏輯單元的目標(biāo),也包含了源邏輯地址(Source Address)、目標(biāo)邏輯地址(Target Address)以及一個簡單的頭部。在協(xié)議字段的設(shè)計上,DoIP遠(yuǎn)沒有TCP復(fù)雜,因此DoIP所實現(xiàn)的傳輸控制功能,也遠(yuǎn)遠(yuǎn)沒有TCP協(xié)議復(fù)雜,這是可以理解的,因為我們可以將DoIP看成一個嵌套的傳輸層控制協(xié)議,它嵌套在TCP之上,既然TCP已經(jīng)實現(xiàn)了IP網(wǎng)絡(luò)層復(fù)雜的傳輸控制,那么留給DoIP的工作,就為數(shù)不多了,主要包含如三幾個方面:
如果上面的檢查全部通過,DoIP將把UDS請求消息從源邏輯地址傳輸至目標(biāo)邏輯地址。目標(biāo)ECU收到DoIP請求消息之后,會首先發(fā)送一幀ACK報文,然后才會發(fā)送實際的診斷報文,如下圖所示:
對于DoIP單獨回復(fù)一次ACK的設(shè)計,初學(xué)者肯定會比較好奇,為什么要這么設(shè)計呢?結(jié)合前面的分析,如果我們理解了DoIP屬于UDS的傳輸控制層,那么我們就能參透其中的原因。因為UDS涉及到了邏輯尋址,類似與TCP協(xié)議中的尋址,因此通信中需要完成一些傳輸層的工作,如檢查邏輯地址的合法性、payload的長度等等,沒有問題則返回一幀ACK,如下圖所示:
接著返回一幀帶UDS報文的消息,如下圖:
否則返回NCK,附帶否定響應(yīng)的具體原因。
DoIP這種參考TCP的設(shè)計,是一種嚴(yán)格的分層設(shè)計思路,將通信控制和業(yè)務(wù)數(shù)據(jù)分開傳輸,DoIP專門負(fù)責(zé)通信傳輸,而UDS相對于DoIP則屬于應(yīng)用層協(xié)議,專門負(fù)責(zé)診斷業(yè)務(wù)的實現(xiàn)。
總結(jié)
以上是生活随笔為你收集整理的DoIP协议设计思路浅析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下的SSHD被连接端口修改
- 下一篇: Simulink嵌入式自动代码DSP F