層協議


我們在前面的“網路概論”裡面已經略略提到過OSI的七層協定了。不過﹐類似的﹐TCP/IP和Microsoft網路也有其對應的協定層﹐我們可以從下面列表中看看它們的比較﹕

Open System Interconnection Internet Protocol Suite Microsoft Network
應用層 (Application) 應用層
(Application)
應用界面層 
(Application Interface)
表現層 (Presentation)
會談層 (Session)
傳送層 (Transport) 傳送層 (Transport) 傳送設備界面層
(Transport Device Interface)
網路層 (Network) 網路層 (Network)
資料連接層 (Data Link) 實體層 (Physical) 網路驅動界面層
(Network Driver Interface)
實體層 (Physical) 實體網路層
(Physical Network Layer)

我們對這些協定層的名字都知道了﹐但它們之間的關係和定義又如何呢﹖下面讓我們以OSI的七個協定層逐一來探討一下﹕

實體層

這層實際是定義了應用在網路傳輸中的各種設備規格﹐以及如何將硬體所攜載的信號轉換成電腦可以理解的信號(0和1)﹐這通常都是設備上面之韌體(Firmware)的功能。這些規格一般是由硬體的生產廠商制定的﹐比如﹕數據線的接腳、電壓、波長、相位、等等。

我們在“網路概論”裡面討論的網線、網路卡、電話線﹐等等﹐都是屬于實體層的範疇﹐也就是用來連接兩台電腦的可以攜帶數據的媒體﹕可以是銅線、也可以是無線電波、也可以是光學纖維。而我們常見的實體層會是用來連接辦公室網路的Ethernet和Token Ring線路﹐或者是連接modem的電話線。而機器上的網路卡﹐或是連接modem的通訊口﹐都會將物理媒體上面的電子脈沖轉換成電腦所能讀得懂的1和0。

資料連接層

由於數據在實體層是以bit為單位來傳輸的﹐資料連接層則使用數據框包(frame)的概念來在電腦之間傳輸數據﹐它負責安排框包的界定﹐也同時處理重複框包和框包的確認。所以資料連接層要制定不同網路形態的資料框包格式﹐確保數據能夠在不同的網路實體(比如﹕同軸電纜、雙絞線、光纖、電話數據線、等等)上進行資料傳送。我們通常用來撥接上網的PPP協定就是在這層裡面定義的了﹐且一般給Mainframe使用的xDLC協定也屬于這裡的範圍。

資料連接層通常會管轄以下的功能﹕

  • 網路卡的實體地址(Physical Address)﹐也被稱為MAC(Media Access Control) Address
  • 虛擬電路(Virtual Circuit)連接和邏輯連結(Logical Link)的建立和結束
  • 控制框包的傳送和錯誤檢測方式
  • 框包的傳送及接收順序和傳遞方式
  • 判定框包的建立及重組分界
  • 檢測框包的確認﹐以及在得不到回應或重複發送的情形下進行修復的程序
  • 處理實體層的轉換和管理
  • 對接收框包進行檢錯和確認
  • 檢查發送框包的實體地址以確保資料能正確的被送抵目的地之網路層

在IEEE802標準裡面﹐還將資料連接層再劃分為兩層﹕Media Access Control和Logical Link Control﹐請參閱下表﹕

OSI
模式

IEEE 802
模式

IEEE 802 標準

資料
連接層

Logical Link Control

802.2

其它802

標準

Media Access Control

CSMA/CD

Token Bus

Token Ring

實體層

實體層 802.3 802.4 802.5

我們在“網路概論”裡面介紹的bridge可以說是工作於資料連接層的。

網路層

網路層的主要功能是讓封包(packet)在不同的網路之間成功地進行傳遞。它規定了網路的定址方式﹐及處理資料在不同網路之間的傳遞方式、處理子網路之間的傳遞、決定路由路徑、網路環境、資料處理順序、等等工作。

發送端電腦在封包被傳送出去之前﹐都會先為其建立header﹐作為在網路或子網間進行路由的依據。網路層在辨認和處理資料的時候﹐會忽略由高層協定制定的定義﹐只負責為數據在一個或多個網路間建立、維護、和終止連接。

網路層通常都有如下的這些功能﹕

  • 如果封包不是屬于同一個網路的時候﹐會將之交由router處理
  • 控制數據流量﹐當router的緩衝區飽和的時候﹐會通知數據傳輸設備使用其它路徑或暫停發送封包
  • 當封包體積超過router的MTU(Maximum Transmission Unit)的數值的時候﹐允許router對封包進行重組後再進行傳送。(一些所謂的增加modem上網速度的軟體﹐就是因為可以對電腦的MTU數值進行最佳化﹐儘量減少router的封包重組﹐以達到最高的數據傳輸效率。)
  • 負責MAC地址和網路地址(如IP地址、IPX地址)之間的解釋和轉換

我們在“網路概論”裡面介紹的router就是工作於網路層的。

傳送層

我們在前面“網路概論”裡面已經知道OSI的最底三層屬於網路功能﹐而上面四層則屬于使用者功能。也就是說﹐從傳送層起﹐協定所負責的可以說是純“資料處理”的功能。

由於大多數網路﹐如Ethernet和Token Ring等﹐由於物理上面的限制﹐一次所通過的數據流通常只有數千byte而已﹐然而許多需要在網路中傳輸的資料都會超過這個數值。傳送層的主要功能是確保電腦資料正確的傳送到目的地。它的工作就是“打包”﹐也就是將電腦資料變成封包的形態﹐再賦以一定的檢測手段﹐將資料正確的傳到目的電腦﹐然後再將封包重組回資料。封包如果殘缺則進行重發﹐也能夠將重複的封包剔除。

傳送層可以等資料收集到足夠大的數量的時候才發送出去,並非應用程式每次產生一個數據就進行一次傳送,也就能減少了不必要的傳輸次數﹐以保證高效率的傳輸﹔反之,當應用程式產生大資料量數據時,則將之分拆成較小的封包再進行傳輸。

傳送層的主要功能有﹕

  • 接管由上層協定傳來的資料﹐並進行“分拆”和“打包”等工作。
  • 利用點對點的方式進行資料傳送和回應的確認。
  • 在得到接收端之資料緩衝區飽和信息之後﹐暫時停止資料發送。
  • 能在單一位址上處理不同的程式協定(如ftp、http、telnet等)﹐並分別進行追蹤及轉換。

會談層

這層所負責的是建立和管理電腦與電腦之間的溝通模式﹐也就是在資料真正進行傳輸之前設定並建立好連線。這裡定義了連線的請求和結束、傳送和接收狀態的設定、等等動作。

當節點 A 要建立和節點 B 的連線的時候﹐ 會先發出“請求連線”訊息(SYN), 若對方接受連線,則回應“確認請求”訊息(SYN/ACK) ,接著節點 A 再回應一個“確認連線”信息(ACK)﹐然後就可開始傳送資 料了。在結束連線的時候﹐節點 A 也會先發出“終止連線”的信息﹐如果得到節點B的“確認終止”的回應﹐那麼連線就可以結束了﹕

這就是著名的“三向握手 (Three-Way Handshack)”連線形式了。請您一定要記住這個連線動作﹐以後在您的 TCP/IP 管理中﹐尤其是安全設定上面﹐尤為重要。

會談層的功能主要有這些﹕

  • 允許程式以電腦名稱註冊成為網路上唯一的地址。
  • 在電腦之間建立、監測、和結束虛擬電路(Virtual Circuit)。
  • 負責電腦之間的信息同步﹐監測資料溝通狀態﹐並對錯誤信息做出處理。

會談層為不同的程式以及與之對應的位於另一台電腦的程式﹐提供了可靠的溝通渠道。在某些溝通渠道中使用的是half-duplex(半雙工﹐即單向)的模式﹐有些則使用full-duplex(全雙工﹐即雙向)的模式﹐為程式之間協定好共同認可的模式﹐並進行同步和管理等責任﹐都是會談層所肩負起的。

表現層

如果您想將您的PC通過網路連接mainframe電腦﹐那您就必須使用合適的mainframe文字串﹐通常會是EBCDIS(External Binary Coded Decimal for Interchange Code)﹐然而您的PC使用的卻是ASCII碼﹐這兩種編碼格式是截然不同的。表現層則是主要負責在不同機器之間進行編碼轉換。當應用程式產生資料要進行傳送的時候﹐表現層會將之換成網路的標準編碼格式再交由下層協定處理﹔然後當資料抵達目的地﹐表現層也會將網路的編碼換成對方應用程式所需的格式。

表現層的主要功能如下﹕

  • 字元碼轉換﹐例如﹕ASCII碼和EDCDIC碼之間的轉換。
  • 資料形態轉換﹐例如﹕CR碼和CR-LF碼、整數和浮點數之間的轉換。
  • 對資料進行壓縮和加密﹐以提高速度和增加安全性。

應用層

剛才談到的表現層是負責將傳入來的資料種類轉換成PC的資料種類﹐不過﹐應用層則只轉換應用程式相關的檔案格式。例如﹕您的網路流覽器或許只能看得懂BMP的圖像格式﹐那麼當接收到JPEG或GIF圖像的時候﹐應用層就可以將他們轉換成BMP的格式﹐以讓您的流覽器能看到圖像。

表現層的轉換與應用層的轉換之間﹐最大的分別是﹕表現層是針對特定的主機的CPU類型﹐而應用層則針對特定應用程式。

應用層所定義的還有一些應用程式功能﹐例如FTP﹐HTTP﹐TELNET等﹐主要負責客戶端和伺服端的連接。相信您對這些程式或多或少接觸過﹐比如您要從網上下載資料﹐可以通過FTP客戶程式﹐也可以通過流覽器將資料拿到。但在您的機器和在網路上面的伺服器﹐都必須使用相同的應用程式功能才可以做到﹐這在TCP/IP的網路環境裡面﹐通常都會是以不同的port的號碼來讓不同的程式進行溝通。Port號碼可以隨你喜歡來定﹐只要你知道號碼是多少就可以用相對的程式來進行交談了﹐不過﹐為了不至於太混亂﹐讓大家有規可尋﹐TCP/IP也指定了一些常用的port來給常用的程式使用﹐例如﹐HTTP使用80、FTP使用21、TELNET使用23、諸如此類... 不過﹐需要知道的是﹕管理 port 連接的功能卻應該是傳送層的事情。

 

 


© 2000 Netman 網中人
Last Updated: March 28, 2000