上篇文章筆者簡要介紹了車載網絡技術發展的曆史。這篇文章筆者将對網絡的一些基礎知識和技術概念進行介紹,作為後續詳細說明車載以太網技術的鋪墊。
目前存在多種網絡和用來實現這些網絡的技術方案。之所以存在這麼多網絡技術有一個看似非常合理的原因,即不同的需求需要不同的解決方案。但如此多的網絡技術帶來的問題是需要學習和理解大量不同類型的網絡協議和相關技術。理解網絡的一些基本特性能夠使這個學習和理解過程相對容易一些。
最早期的網絡技術是比較直觀和簡單的。與現代網絡技術相比,它們隻能以很低的速率運行,具有極少的功能,并且使用最簡單的信号和消息系統來支持基本的通信。因為這種網絡技術非常簡單,描述它們的運行方式也很容易,不需要複雜的機制去解釋不同的功能如何工作。時至今日,網絡技術已經大不相同,它們更加複雜,并且通常由大量不同的硬件和軟件協同工作來實現核心的功能。網絡硬件和網絡程序可能由不同的公司設計和研發,但又要求能夠在一起無縫集成和高效工作。現代網絡技術對于任何人來講已經過于複雜,很難完全掌握,因此需要在不同的特定技術領域的專家和更細化的分工合作。正是由于以上原因,諸如以太網這樣的現代網絡技術,以及運行在以太網之上的許多協議,協議集合(例如TCP/IP)都被拆分為不同的标準進行定義,而不是用單一的标準涵蓋所有的内容。網絡所需要的各種不同功能被拆分為更小的技術領域,每個功能塊的運行和實施都有專門的規範進行定義,包括不同模塊之間的統一接口定義。将一個非常複雜的網絡技術分解為便于理解的多個小技術領域,從而建立一個強大、靈活并且具有成本效益的網絡系統,以太網就是這樣的網絡技術。将複雜網絡技術處理為更易于理解和管理的組成部分的最常用方法是分層。分層是将網絡功能劃分到不同的層,每一個層包含一定的硬件和軟件組成元素。每一個層負責執行特定類型的任務,并且與上層和下層進行交互。所有層在垂直方向堆疊在一起,并且越低的層負責越具體的任務,諸如硬件信号收發,提供諸如基本的packet發送服務給高層。高層使用這些服務實現更抽象的功能,諸如确保可靠的通信,或者實現特定的用戶功能。車載以太網實際上是基于在一起工作的一定數量不同的架構。核心的底層架構通過不同的IEEE 802标準以及博通公司的BroadR-Reach技術進行定義。TCP/IP架構應用于基本車載以太網技術之上,使用運行在互聯網上的技術實現汽車工業标準的message傳輸。另外一個完全獨立的特殊架構稱為AVB(Audio-Video Bridging),它用來實現時間敏感的應用,諸如視頻回放。所有這些架構技術筆者在以後将進行詳細介紹,這裡隻是先做個大概的介紹。
接下來介紹一個重要的網絡技術術語:協議(protocol)。如果要選出一個在網絡相關書籍中出現頻率最高的術語,協議也許是其中一個。你會看到網絡協議、互聯網協議、高層協議、低層協議、協議棧和協議集合等術語。協議用來定義網絡的元素,但許多網絡書籍和标準不斷的使用“協議”,卻從來沒有給它一個明确的定義。造成這種情況的一個原因是“協議”這個詞可以有很多含義,因此比較難以把握它在各種語境下到底指代什麼。有些時候我們在理解一個技術術語時,如果我們回頭看下它對應的英文單詞在日常生活中是如何使用的,也許理解起來會容易一些。protocol在日常生活中可以指行為的準則或者外交上的某種形式的禮節,人們必須遵守這些規則以确保能夠高效的溝通并且不發生沖突。人們也必須理解與其它國家的人溝通時他們如何做才是得體的,例如,即使他們不習慣,也不能違反當地的風俗習慣。也許這些看起來與網絡協議沒什麼關系,但實際上這是對網絡協議究竟是什麼的一個從事物本質上的很好的诠釋。在現實世界中,人與人交往需要規則和禮節,在網絡世界中,發送方和接收方想進行數據交換,也必須建立數據交換的規則、标準或者約定,發送方和接收方必須使用相同的網絡協議才能進行通信(就像兩個人如果想直接溝通,必須使用同一種語言一樣,網絡協議是發送方和接收方所使用的語言)。網絡協議是網絡上所有設備(網絡服務器、計算機及交換機、路由器、防火牆等)之間通信規則的集合,它規定了通信時信息必須采用的格式和這些格式的意義。大多數網絡都采用分層的體系結構,每一層都建立在它的下層之上,向它的上一層提供一定的服務,而把如何實現這一服務的細節對上一層加以屏蔽。一台設備上的第 n層與另一台設備上的第n層進行通信的規則就是第n層協議。在網絡的各層中存在着許多協議,接收方和發送方同層的協議必須一緻,否則一方将無法識别另一方發出的信息。網絡協議使網絡上各種設備能夠相互交換信息。有些時候,人們會将與“協議”完全沒有關系的事物也叫做協議(例如,數據庫标準或者計算機語言實際上不是“協議”,但常常被叫做協議),也許是因為不理解協議是什麼,也許就是因為協議聽起來很專業,喜歡用這個詞。不管怎樣,當我們知道了“協議”的真實含義之後,對于正确理解經常産生混淆的網絡世界是很有意義的。
下面介紹區分不同網絡技術的2個基本維度。第1個是網絡技術如何确定信息傳輸的路徑。有2種基本的方法确定傳輸路徑:1. 線路交換技術(Circuit Switching):在信息傳輸之前确定設備之間的傳輸路徑,然後此路徑用于多次的信息傳輸。2. 包交換技術(Packet Switching):信息被分解為多個信息元素(packet-包),每個packet理論上都可以通過不同的路徑進行傳輸。第一種線路交換技術通常稱為舊的信息傳輸技術,例如多年以前的固定電話網絡。當建立一個通話連接後,兩個電話設備之間線路将一直保持直到通話結束。現代的網絡技術幾乎都使用第二種包交換技術。包交換技術将信息被拆分為包進行傳輸,接收方再将所有的包還原成原始的信息。這裡需要注意一點,“Packet”隻是在網絡上傳輸的message的幾種類型的一種,其它的類型還有frame(幀),datagram(數據報)、協議數據單元、服務數據單元。在某些情況下,這些用于指代message的不同術語非常有用,因為通過它們的名稱就可以判斷message所包含的數據是什麼。特别值得注意的是,這些不同的名稱通常與OSI參考模型中特定層的協議有關聯,因此這些名稱對于清晰地描述包含不同層的多個協議時會非常有用。但另一方面,這些名稱也同樣會造成困惑,因為對它們的使用并不總是能夠保持正确性和一緻性。一些人能夠嚴格按照規則在合适的技術場景下使用它們,但很多人卻經常将它們混淆使用。更糟糕的是,當這種混淆使用發生在用于描述OSI參考模型中特定層協議時,往往會造成嚴重的困惑。筆者将用于指代不同類型message的幾個常用術語描述如下,以便大家進行區分:1. Packet(包):這個術語經常用來指代OSI參考模型中網絡層協議所發送的message,例如你會經常看到“IP packet”這樣的描述。但packet也經常被用來指代任何類型的message,因此在很多地方都可以看到它。2. Datagram(數據報):這個詞基本上與packet是同義詞,也經常用來描述網絡層技術。但datagram也經常用來指代OSI參考模型中更高層發送的message,這種情況比packet要頻繁得多。3. Frame(幀):這個詞絕大部分情況下都用于指代OSI參考模型中低層發送的message,一般是物理層和數據鍊路層。frame這個詞在讨論諸如以太網這樣的網絡技術時會經常看到,CAN總線标準也使用frame用來描述它的message。之所以叫做frame是因為它将高層發送的packet或者datagram在低層加上額外的頭信息,從而形成特定的frame(幀)格式。4. PDU(協議數據單元)和SDU(服務數據單元):這2個詞是用來描述OSI參考模型中的協議message的正式術語。第N層的一個PDU是包括第N層的頭信息和經過封裝的來自第N+1層的message,這也可以叫做第N層的SDU和第N+1層的PDU。這裡需要說明的是,以上所介紹的這些技術術語的應用并不是一成不變的,有些時候它們會被誤用和濫用。在IEEE 802.3以太網标準中将數據鍊路層(OSI參考模型的第2層)的message稱為“frame”,也稱為“packet',但如上所述,'packet'通常用來描述高層的message。不過,隻有大家清楚所看到的術語的真實技術含義,在遇到這些非正式用法的時候就不會有什麼問題了。最後還必須指出,有一些特定的協議用非常特别的詞來描述它們的message,這些詞在網絡世界的任何其它地方都看不到。一個很好的例子是傳輸控制協議(TCP),這個協議将它發送的message稱為segments。第2個是網絡技術是連接導向的還是非連接導向的。連接導向的網絡技術在兩個設備之間傳輸數據之前需要建立它們之間的一個邏輯連接 。這通常是指建立一組規則,諸如定義這個邏輯連接如何初始化、如何管理以及如何終止。通常由一個設備發送建立連接的請求,另外一個進行響應。它們通過傳遞控制信息來決定是否應該建立連接以及如何建立連接。當連接建立成功後,數據開始傳輸。當數據傳輸完成之後,連接斷開。非連接導向的網絡技術不需要在兩個設備之間建立連接。隻要有設備需要發送信息到另一個設備就馬上發送。
下面對message的格式做一個介紹。每一個協議都使用特定的格式化方法,這個方法決定了它所使用的message結構。顯而易見,用來連接一個網頁服務器和網頁浏覽器的message,與在OSI低層連接2個以太網設備的message是有很大不同的。盡管如此,一個特定類型的message格式完全取決于它所使用的技術的本質,因此message基本上還是遵循一個總體上統一的結構。一般來講,每一個message都包含以下3種基本元素:1. 頭(Header)。header是放在message的實際數據之前的信息。header包括少量的表示控制信息的字節,這些控制信息用于表示message所包含數據的重要事實,并且說明這些數據如何解釋和使用。header作為不同設備的協議元素之間進行通信和控制的聯接。有些情況下header也可能用來對共享通道進行管理和使用權限控制,或者用于其它目的,諸如控制message的發送地點。2. 數據(data):data是message實際傳輸的數據,也經常被叫做message的payload。payload這個詞原來用于航天工業,用來表示運輸工具的最大載荷,message的payload則可以理解為message所能承載的最大數據量。絕大多數message都包含一定數量的數據,但有些message實際上不包含任何數據,這些message僅僅用于控制和通信的目的。例如,在數據 發送之前用來建立或者終止一個邏輯連接。3.尾(footer): footer是放在message的實際數據之後的信息。footer通常也包含控制信息,這點與header類似。footer有時候也叫做trailer。圖1展示了message的一般結構。
一般來說,将多個設備組成一個網絡有2個目的,即交換信息和共享資源。這裡的“資源”可以指硬件設備、軟件程序和數據庫,或者任何的其它數據集合。信息和資源如何在網絡上進行共享取決于網絡和組成網絡的設備被設定為以何種方式運行。更具體的說,網絡設計者必須選擇哪些設備管理資源、哪些設備為了獲取信息發布請求、哪些設備對這些請求進行響應。在一些網絡中,所有設備在這些方面是同等的,而另外一些網絡中,不同設備承擔特定的職責。這種決定網絡上的設備如何進行交互的不同方法有時候叫做運行模型(operational models)或者結構模型(structural models)。網絡設備所負責的工作任務也稱為他們的角色,這一點與電視劇中的演員類似。網絡一般有三種運行模型。1. 對等模型(Peer to Peer):每個網絡設備的角色都是對等的,都可以發送請求和響應請求,沒有設備設計成執行一個特殊的角色。這種模型一般用于小型和簡單的網絡。2. 客戶/服務模型(Client/Server):有一小部分設備作為服務器,它們配備特殊的硬件和軟件,從而可以更高效地與多個客戶端交互。客戶端之間也可以進行交互,但大多數時間客戶端是發送給服務器各種請求,随後服務器發送響應給客戶端。3. 主/從模型(Master/Slave):這個模型與客戶/服務模型比較類似,但主設備在主/從模型中的扮演的角色比服務器在客戶/服務模型中的角色更加正式和核心。除了向其它設備提供服務之外,主設備實際上負責控制整個網絡的運行。在某些情況下,從設備為了減小尺寸和成本可以相對簡單,它完全依賴于主設備去告訴它何時工作以及做什麼。另外一個重要區别是,在客戶/服務模型中,通常是由客戶端發起請求,然後服務器進行應答;而在主/從模型中,主設備可以管理所有的通信,從設備不會發起任何通信。車載網絡中的LIN總線是使用主/從模型的一個很好的例子。在車載網絡中,盡管實際的設備類型和設備功能多種多樣,但從網絡運行模型上來講基本都屬于對等模型。但也存在客戶/服務模型的例子,比如當汽車與診斷設備連接時,診斷設備就成為了客戶端,它發送請求給車内的ECU,車内的ECU根據請求回應所需的信息。這個例子也說明了同樣的設備可以扮演多個角色,這取決于應用的具體場景:一個ECU被診斷設備激活後就可以工作在客戶/服務模式,即使在通常情況下,它在車輛内部網絡中運行在對等模式下。
有話要說...