網絡診斷以太網沒有有效的ip配置(關于車載以太網/遠程診斷的一些理解)
最近在網上扒了一些關于以太網、遠程診斷相關的內容,整理了關于車載以太網/遠程診斷的一些理解,文章完全從小白角度出發,用通俗易懂的語言,希望可以幫助到正在學習相關領域的童鞋們,當然寫的不對的地方,希望大家指出來一起交流進步。
本文主要從以下幾方面開展:
一、以太網的基本認識
1、以太網基礎認識
2、IP的概念
3、MAC的概念
二、車輛如何接入互聯網
三、接入以太網的車輛如何實現數據傳輸
1、以太網數據結構
2、以太網數據傳輸機制
四、如何實現遠程診斷
1、DoIP數據結構
2、利用DoIP實現診斷
五、遠程診斷的應用和前景
1、遠程診斷使用場景
2、前景
第一部分:以太網的基礎認識
1、以太網基礎認識
以太網是目前使用最廣泛的局域網技術,是一種網絡連接技術,通過這種連接技術,我們的手機、電腦得以接入互聯網。而車載以太網就是將以太網傳輸技術應用到車輛的數據傳輸系統,將車輛當成手機、電腦這樣的設備,接入互聯網,方便用戶通過手機等終端,實現更智能的遠程車輛控制。
2、IP的概念
在了解車載以太網前,我們先搞清楚以太網中的幾個概念,首先是IP地址(Internet Protocol Address)。互聯網將全球各個角落都連接起來,就需要引入IP地址的概念,IP地址是對應到地理坐標位置的一個概念,比如廣州某個單位分配了一個IP地址AA:BB:CC:DD,西安某個學校分配了另一個IP地址EE:FF:GG:HH。這樣廣州某單位的電腦要給西安某學校的電腦發送信息時,就需要輸入EE:FF:GG:HH,將目標信息傳送到西安某學校。到此該信息只傳送到了學校,但還沒有傳送到學校某同學的電腦中。
3、MAC的概念
MAC地址就是固化在通訊設備中的地址,類似于設備的身份證號,每個設備的MAC地址都是唯一的。接著上面IP地址中的例子,信息傳送到西安某學校這個地理坐標位置后,還需要再結合目標電腦的MAC地址,才能將數據傳輸到目標電腦。即廣州的電腦發送請求時,除了要知曉對方的IP地址外,還需要知曉對方電腦的MAC地址;
這里再寫點大家在網上問得比較多的一個問題:既然設備的MAC地址是獨一無二的,那為什么不用MAC地址直接通訊,而還需要借助IP地址?因為設備是移動的,假設沒有IP地址,設備A想訪問設備B,設備A發送含有設備B MAC地址的信息到服務器,服務器就需要全網廣播這條消息,設備B收到消息后識別到有自己的MAC地址就接收該報文,其他節點則丟棄該報文。這樣就要求所有設備都連接在一個服務器上,并且同一時刻由于所有設備都在交互信息,服務器的負荷大,數據實時性也不一定得到保證,同時也會帶來仲裁等影響。而有IP地址后,服務器直接將數據指向目標IP地址,而不用全網廣播,這樣可以大大提升數據傳輸效率。(以上為個人理解)
二、車輛如何接入互聯網
車輛接入互聯網的方式同移動手機接入互聯網。每輛車不可能分配一個固定的IP地址,一方面因為車輛在移動,另一方面固定IP地址也有限。因此就需要依托NAT地址轉換。什么意思呢,移動運營商會有一些固定IP,并且劃定哪些客戶都共用這個固定IP,在共用這個IP時,需要做一些轉換,因為每個設備不可能直接使用這個固定IP,而是將這個IP地址做一些轉換,這樣每個設備都會得到一個新的IP,并且通過這個新的IP可以實現固定IP訪問的功能,這個就是NAT轉換。
移動設備通過NAT轉換可以實現IP獲取,移動設備擁有自身的MAC地址,由此便能實現接入互聯網。
三、接入以太網的車輛如何實現數據傳輸
上文講了以太網傳輸的一些基本概念,實現以太網傳輸需要哪些關鍵要素。下面我們從以太網數據結構來具體分析。
1、以太網數據結構
首先我們了解下經常聽到的七層傳輸系統:
應用層的數據經層層打包,最終通過物理層轉換成電信號發送出去。TCP/IP 網絡協議棧分為應用層(Application)、傳輸層(Transport)、網絡層(Network)和鏈路層(Link)四層。在數據傳輸時,從應用層的數據起,每往下傳一層,均需要在數據首部添加下一層的首部信息,稱之為封裝,示意圖如下:
這里以太網首部包含的是發送和接收節點的MAC地址信息。IP首部包含的是發送和接收節點的IP地址信息。TCP/UDP首部包含的是設備中使用網絡通訊的應用程序的端口號。這樣一幀以太網數據就構造完成了,數據被發送到目標IP時,接收器會層層拆解數據,根據數據的MAC、TCP/UDP端口號實現數據精準傳輸。
2、以太網數據傳輸機制
簡單介紹以太網握手、揮手機制和常用的TCP/UDP傳輸機制。
①、握手機制
握手機制就是我們常說的三次握手機制,是指客戶端和服務端之間實現三次握手,具體過程如下:
第一次握手:客戶端向服務端發送一個隨機數seq=J,同時將SYN標志位置為1;
第二次握手:服務器端接收到SYN標志位等于1,就判斷有客戶端在請求通訊。服務器端會生成一個新的隨機數seq=K,并生成ack=J+1,ACK=1,將上述三個標志位返回給客戶端;
第三次握手:客戶端接收到ACK=1,且ack=J+1,則判斷服務器端已經和自己握上手,因此客戶端需再次回復ACK=1,且ack=K+1給服務器端。
經過上述三次握手后客戶端和服務器端完成握手可以開始正式的數據傳輸。
②、揮手機制
揮手機制是指斷開連接,簡稱四次揮手,其過程如下圖所示:
第一次揮手:客戶端向服務器端發出終止請求FIN=M;
第二次揮手:服務器端收到客戶端請求后,返回ack=M+1;客戶端接收到ack=M1+1后,進入等待模式;
第三次握手:服務器端再次發送FIN=N給客戶端;
第四次握手:客戶端等待期間接收到FIN=N后,回復ACK1,且ack=N+1,服務器端接收到數據后終止通訊。
③、TCP/UDP傳輸機制
上面通過三次握手可以完成兩個節點之間的通訊連接,通過四次揮手可以終止該連接。那連接起來后,數據傳輸有幾種模式呢,常用的有TCP和UDP兩種。
TCP輸出傳輸模式可以理解為是一種很嚴格的數據傳輸方式,傳輸數據前需要經過雙方節點的相互確認,是一種基于有連接的通訊方式。采用TCP方式傳輸數據更穩妥,且不會占用太多的網絡資源。
相比于TCP而UDP則是面向無連接的一種傳輸方式,可以理解為UDP傳輸方式,只管將數據從發送端發出去,至于接收端時候有接收到,或者接收質量如何,發送端完全不用管。一般在要求數據傳輸實時性較高,或者數據量較小的場景下,可以考慮用UDP傳輸。
四、如何實現遠程診斷
上面三部分介紹了以太網的基本架構和實現通訊的方式,那有了通訊方式后,如何利用以太網進行診斷呢?現在車輛上,我們基本都是采用UDS/OBD協議進行診斷,且都是基于CAN總線技術。其實基于以太網的診斷也是采用UDS協議,只不過是將UDS協議適配到以太網傳輸中,就是我們常說的DoIP(Diagnostic Over Internet Protocol),而現在基于CAN的診斷稱為DoCAN(Diagnostic Over Controler Area Network)。
1、DoIP數據結構
前面我們講到以太網的數據結構由以太網首部+IP首部+TCP首部+用戶數據構成,這里的DOIP數據就是用戶數據部分,其數據構造如下圖:
其中的深灰色部分就是DOIP數據。那DoIP數據內部結果是怎樣的呢,這里就需要引出ISO13400,這個協議就是定義了UDS如何適配到以太網數據,類似ISO14229。DoIP數據結構如下:
DoIP數據包含協議版本、協議版本取反、數據類型、數據長度、數據區域五個部分。其中數據區域還分成源地址、目標地址、UDS數據三部分。下面我們挨個來看這幾個數據部分的內容和要求。
①、協議版本
協議版本區域的長度為1個字節,定義如下:
0x00: 預留
0x01: 13400-2:2010
0x02: 13400-2:2012
0x03…0xFE: 預留
0xFF: 用于VIN讀取
②、協議版本取反
如協議版本為0x01,則取反后為0xFE。該部分的作用是校驗協議版本,同時保證協議的正確性。
③、數據類型
該部分有兩個字節長度,定義了該幀DoIP數據的類型,即這個數據/指令是干什么的,是讀取VIN碼,還是讀取診斷信息,具體的定義如下:
【0x0001至0x0004】用于汽車標識上報或請求,只能通過UDP報文來發送這種命令,主要用于在汽車和診斷儀進入網絡之后、診斷連接建立之前的車輛發現過程。
【0x0005 和0x0006】標識的Routing activation request 和 response用于在socket建立之后,進行診斷通信的請求。
【0x0007和0x0008】用于Alive check,用于檢查當前建立的診斷連接socket是否仍然在使用中,如果不再使用,則關閉socket釋放資源。
【0x8001,0x8002,0x8003】,分別代表的含義分別是診斷消息、診斷消息正響應和診斷消息負響應。
在上表中還定義了哪些數據類型是必須強制要求滿足,哪些是OEM可選。同時還規定了哪些數據類型需要嚴格的TCP協議發送,哪些是UDP廣播式發送。如我們關心的診斷信息部分,都是要求TCP協議形式發送。
④數據長度
該部分有四個字節長度,用于描述User Data的長度。
⑤數據區域
該區域劃分成三塊,原地址、目標地址、診斷信息;
2、利用DoIP實現診斷
下面通過一段實際的DoIP診斷報文,來分析如何實現遠程診斷:
本數據以讀取目標控制器DIDF810為例,協議版本為0x01,即13400-2:2010版本,版本取反為0xFE,數據類型為0x8001,即診斷報文,數據區域長度為7Byte,其中源地址和目標地址占用4字節,UDS報文占用3字節。
五、遠程診斷的應用和前景
1、遠程診斷使用場景
①給車輛用戶提供便利
傳統車輛發生故障后,一般會通過儀表顯示故障燈或者故障文字提示,但對于很多用戶而言,傳統的提示不夠明確,或者定位不夠清晰,往往需要將車輛開至售后服務點,通過線下的診斷設備獲取故障信息。這樣的方式效率低,且用戶體驗不佳。
利用以太網遠程診斷,即可在車輛發生故障時,通過遠程診斷的方式,獲取車輛的故障信息,后臺實時的將詳細的故障信息和維修建議提示給用戶,讓用戶第一時間知曉車輛狀況。
②給主機廠提供數據支撐
售后車輛的故障信息統計,是一個有效的獲取車輛市場品質的有效手段,通過遠程診斷可以更快速的獲取車輛在運行過程中發生的故障,并可以統計出哪些類型故障更易發,哪些故障在什么工況下更易發(結合大數據),這樣可以針對性的改進設計和優化方案。
③便于主機廠增進服務
在客戶車輛發生故障后,遠程診斷后臺可以快速的定位故障和車輛,同時根據故障的輕重程度,分級推送相關的服務給客戶。如后臺監測到較嚴重故障(車輛儀表也會有提示)時,可以推送類似“車輛XX部件發生故障,需要您靠邊停車,我們正在聯系售后人員現場救援”等。當發生的故障不影響本次駕駛,但可能在后續的使用中造成功能影響的故障時,可以推送“車輛XX部件發生故障,但不影響本次駕駛,建議有時間到售后服務點維修檢測,或者預約上門檢修”,等等。根據故障的輕緩程度,提示不同的人性化指導建議,這樣可以給與客戶更多的關懷和體驗,同時也便于主機廠軟件定義汽車服務的開展。
2、前景
診斷是汽車必不可少的內容,遠程診斷則是診斷的發展趨勢,結合大數據分析,遠程診斷能提供更實時、更準確的故障定位,為更人性化的駕駛和售后體驗創造觸發條件。同時在一步步獲得客戶認可的關懷感知中,間接提升客戶對車輛產品的認可度,從而助推售后盈利和軟件定義汽車盈利。
(文中部分圖片轉自網絡)