介紹 OSI 模型
我們已經知道 TCP/IP 能夠應用在不同的網路﹐這就必須要有一套大家都遵守的的標準才能保證彼此能夠溝通。因為數據通訊領域的專用屬于和技術實在太廣泛了﹐沒有任何一位電腦專家能夠熟悉全部的內容。因此必須有一套公認而且通用的參考架構以供厘清各項標準。在我們了解 TCP/IP 協定之前﹐有一個公認的網路模型我們必須要先了解的﹐它就是由 International Standardization Organisation (ISO) 于1978年開始開發的一套標準架構﹕Reference Model for Open System Interconnection (OSI) 模型。OSI 常被引用來說明數據通訊協定的結構及功能﹐成為討論通訊時代共同依據﹐已經被通訊界廣泛實用且有一致的認知了。
OSI 把數據通訊的各種功能分為七個層級﹐各司其職﹐但有相互依存﹑合作。但在功能上﹐它們又可以被劃分為兩組﹕
· 網路群組﹕由實體層﹑資料連接層﹑和網路層組成。
· 使用者群組﹕由傳送層﹑會談層﹑表現層﹑和應用層組成。
您可以從下圖看各個協定層的排列關系﹕
應用層 (Application)
表現層 (Presentation)
會談層 (Session)
傳送層 (Transport)
網路層 (Network)
資料連接層 (Data Link)
實體層 (Physical)
OSI 參考模型
OSI 提供了一個很有用的模式去解釋各個不同層面的網路協定﹐這些協定就像堆積木一樣﹐層層疊上去﹐因此此一架構常被稱為堆疊(stack)﹐或是協定堆疊。每一個協定都只和與之對應的協定溝通﹐然后將結構向相鄰的協定解釋。彼此之間如何傳送資料都有必然的協定﹐而且層層相扣﹐共同協力完成任務。各層無需知道其他層是如何工作的﹐只關心相同層級的協定就行﹔但層與層之間卻有一套既定協議相互交換處理結果。這樣有一個很明顯的好處是﹕這留給各層都有自己的設計與發展空間﹐當某一層要進行協定更新﹐其他層無需同時被修改。
下面分別對各個曾經做一個簡單的描述﹕
實體層(Physical Layer)
在這層里面您必須作出一些機械和電子方面的決定﹐也就是要定義出在終端和網絡之間要使用的設備。同時﹐采用何種布線也要在這里決定出來>這層實際是定義了應用在網路傳輸中的各種設備規格﹐以及如何將硬體所攜載的信號轉換成電腦可以理解的電子信號( 0 和 1 )﹐這通常都是設備上面之韌體(Firmware)的功能。這些規格一般是由硬體的生產廠商制定的﹐比如﹕數據線的接腳﹑電壓﹑波長﹑相位﹑等等。 bitsCN#com中國網管聯盟
例如網線﹑網路卡﹑電話線﹐等等﹐都是屬于實體層的范疇﹐也就是用來連接兩臺電腦的可以攜帶數據的媒體﹕可以是銅線﹑也可以是紅外線﹑也可以是光學纖維。我們常見的實體層是用來連接辦公室網路的 Ethernet 和 Token Ring 線路﹐或者是連接 modem 的電話線。而機器上的網路卡﹐或是連接遠端的 modem ﹐都能夠將物理媒體上面的電子脈沖轉換成電腦所能讀得懂的 0 和 1。
資料連接層(Data Link Layer)
在這層指定了要采用的信息單元 (message unit﹐通常在 LAN上面的信息單元被稱為 frame﹐翻譯為“訊框”或“框包”)﹐還有它們的格式﹑以及如何通過網絡。每一個 frame 都會被賦予一個 MAC 位址碼和偵錯監測值(checksum)。
Ethernet 的 Data Link Layer Frame 看起來如下圖﹕
Data Link Layer Frame 結構
數據在實體層是以bit為單位來傳輸的﹐資料連接層要制定不同網路形態的資料框包格式﹐確保數據能夠在不同的網路實體(比如﹕同軸電纜﹑雙絞線﹑光纖﹑電話數據線﹑等等)上進行資料傳送。有一個 Binary Synchronous Communications 協定﹐會判定出一個框包如果在丟失的情況下﹐要等待多久會被重新發送﹐以及如何處理重發的框包和封包確認。這個協定也是在這層里面定義。我們通常用來撥接上網的 PPP 協定就是在這層里面定義的﹔同時﹐一般給 Mainframe 使用的 xDLC 協定也屬于這里的范圍。 bitsCN~com
資料連接層通常會管轄以下的功能﹕
· 網路卡的實體位址(Physical Address)﹐也被稱為MAC(Media Access Control) Address
· 虛擬電路(Virtual Circuit)連接和邏輯連結(Logical Link)的建立和結束
· 控制框包的傳送和錯誤檢測方式
· 框包的傳送及接收順序和傳遞方式
· 判定框包的建立及重組分界
· 檢測框包的確認﹐以及在得不到回應或重復發送的情形下進行修復的程序
· 處理實體層的轉換和管理
· 對接收框包進行檢錯和確認
· 檢查發送框包的實體位址以確保資料能正確的被送抵目的地之網路層
在 IEEE802 標準里面﹐還將資料連接層再劃分為兩層﹕Media Access Control 和 Logical Link Control ﹐請參閱下表﹕
IEEE 802 / 803.x 標準
總體來說﹐這層的工作就是保證一個無錯誤的物理上的數據傳輸。
網路層(Network Layer)
這層就好比是一個中間人界乎于網絡功能和使用者功能之間。它會定義出封包在網路中移動的路由和其處理過程﹐這層還決定了網路是如何進行管理功能的﹐比如﹐發送狀態信息給接點和規范封包的流動等。
網路層的主要功能是讓封包(packet)在不同的網路之間成功地進行傳遞。它規定了網路的定址方式﹐及處理資料在不同網路之間的傳遞方式﹑處理子網路之間的傳遞﹑決定路由路徑﹑網路環境﹑資料處理順序﹑等等工作。
發送端電腦在封包被傳送出去之前﹐都會先為其建立 header ﹐作為在網路或子網間進行路由的依據。網路層在辨認和處理資料的時候﹐會忽略由高層協定制定的定義﹐只負責為數據在一個或多個網路間建立﹑維護﹑和終止連接。
網路層通常都有如下的這些功能﹕
· 如果封包不是屬于同一個網路的時候﹐會將之交由 router 處理
· 控制數據流量﹐當 router 的緩沖區飽和的時候﹐會通知數據傳輸設備使用其它路徑或暫停發送封包
· 當封包體積超過 router 的 MTU (Maximum Transmission Unit) 數值的時候﹐允許 router 對封包進行重組后再進行傳送。(一些所謂的增加 modem上網速度的軟體﹐就是因為可以對電腦的 MTU 數值進行最佳化﹐盡量減少 router 的封包重組﹐以達到最高的數據傳輸效率。)
· 負責 MAC 位址和網路位址(如 IP 位址﹑IPX 位址)之間的解釋和轉換
一個有趣的事情是﹐網路層還能將底層協定(網路功能)對上層協定(使用者功能)躲起來。這樣﹐在網路的使用者就可以使用不同種類的硬體了。這是非常好的事情﹐假如您用來建網的材料都不盡相同的話。
傳送層(Transport Layer)
在這層﹐將會設定如何控制節點之間的資料傳遞﹐還有錯誤檢測和修正的方法。
由于大多數網路﹐如 Ethernet 和 Token Ring等﹐由于物理上面的限制﹐一次所通過的數據流通常只有數千 byte 而已(IP 封包最大體積為 65536 bytes)﹐然而許多需要在網路中傳輸的資料都會超過這個數值。傳送層的主要功能是確保電腦資料正確的傳送到目的地。它的工作就是“打包”﹐也就是將電腦資料變成封包的形態﹐再賦以一定的檢測手段﹐將資料正確的傳到目的電腦﹐然后再將封包重組回資料。封包如果殘缺則進行重發﹐也能夠將重復的封包剔除。
傳送層可以等資料收集到足夠大的數量的時候才發送出去,并非應用程式每次產生一個數據就進行一次傳送,也就能減少了不必要的傳輸次數﹐以保證高效率的傳輸﹔反之,當應用程式產生大資料量數據時,則將之分拆成較小的封包再進行傳送。
傳送層的主要功能有﹕
· 接管由上層協定傳來的資料﹐并進行“分拆”和“打包”等工作。
· 利用點對點的方式進行資料傳送和回應的確認。
· 在得到接收端之資料緩沖區飽和信息之后﹐暫時停止資料發送。
· 能在單一位址上處理不同的程式協定(如ftp﹑http﹑telnet等)﹐并分別進行追蹤及轉換。
會談層(Session Layer)
這層定義了如何連接和掛斷連接﹐和在網路上面的數據如何交換。
這層所負責的是建立和管理電腦與電腦之間的溝通模式﹐也就是在資料真正進行傳送之前設定并建立好連線。這里定義了連線的請求和結束﹑傳送和接收狀態的設定﹑等等動作。
當節點 A 要建立和節點 B 的連線的時候﹐ 會先發出“連線請求”訊息, 若對方接受連線,則回應“建立請求”訊息﹐然后雙方就建立好一個會談了﹔當會談結束的時候﹐也是先由節點 A 送出一個“結束請求”信息﹐等對方確認這個請求之后﹐那么會談也就真正結束了。
會談層的功能主要有這些﹕
· 允許程式以電腦名稱注冊成為網路上唯一的位址。
· 在電腦之間建立﹑監測﹑和結束虛擬電路(Virtual Circuit)。
· 負責電腦之間的信息同步﹐監測資料溝通狀態﹐并對錯誤信息做出處理。
會談層為不同的程式以及與之對應的位于另一臺電腦的程式﹐提供了可靠的溝通渠道。在某些溝通渠道中使用的是 half-duplex(半雙工﹐即單向) 的模式﹐有些則使用 full-duplex(全雙工﹐即雙向) 的模式﹐為程式之間協定好共同認可的模式﹐并進行同步和管理等責任﹐都是會談層所肩負起的。
表現層(Presentation Layer)
在這層﹐定義了數據的語法(syntax)﹑變更﹑和格式。當應用程式的語法和格式都不同的時候﹐這層還將定義了如何翻譯這些不同。
如果您想將您的 PC 通過網路連接 mainframe 電腦﹐那您就必須使用合適的 mainframe 文字串﹐通常會是 EBCDIS(External Binary Coded Decimal for Interchange Code)﹐然而您的 PC 使用的卻是 ASCII 碼(American Standard Code for Information Interchange)﹐這兩種編碼格式是截然不同的。表現層則是主要負責在不同機器之間進行編碼轉換。


