電腦網路與連結技術第三章 鏈路層 上一頁    下一頁

3-2  訊框化

內容:

3-2-1 何謂訊框化?

到目前為止,我們瞭解『訊框』(或稱資料框,Frame)是鏈路層傳送給實體層的資料封包。它以位元流(Bit Stream)的序列(連續的二進位資料)傳送給實體層,實體層再依序將位元資料轉換成訊號傳送出去,於是在傳輸媒介會上出現一連串的訊號,如圖3-1 所示。因此,鏈路層必須將資料分割及包裝,使規格大小和內容適於轉換成訊號,也適合於媒介上傳送,這個過程稱為『訊框化』(Framing

通常工作站欲將資料發送到傳輸媒介之前,會先將原資料(或上層的協定資料單元,PDU)分割成若干個訊框,再依序發送到傳輸媒介上;接收端依序收到訊框後,再將這些訊框組合回原來資料封包(或 PDU),如圖 3-2 所示。分割成較小的訊框,主要有下列兩個原因:

3-2 資料分割傳送

(1) 錯誤控制:資料在傳送過程中,可能會有某些位元發生錯誤,假使一筆未經分割的大資料(假設有10 Mbits)出了錯,則整個(10 Mbits)的資料都必須重送。如將原始資料分割成若干個小訊框(2 ~ 4 Kbits),即使其中某一訊框發生錯誤,也只需重新傳送該訊框即可。

(2) 共享媒介:一般網路中,傳輸媒介是共用的,如果不將資料分割成若干小訊框,當某一部工作站佔用傳輸媒介並且傳送一筆大資料時,將會佔用過長的時間,而造成其它工作站必須等待很久,也會使網路的整體傳輸效率降低。

當鏈路層以位元流(Bit Stream的方式將訊框發送到網路上,而在傳輸媒介上產生一連串的訊號。接收端收到該訊號串列時,得去判斷訊號框的開始和結束,因此,訊框必須作特殊的包裝,使接收端可以輕易判別訊框的開始和結束。另外,在訊框裡也必須加入適當的控制訊息,使雙方的通訊協定可充分表達。一般來說,網路上的訊框結構可分為:字元導向(Character-oriented)和位元導向(Bit-oriented兩大類。一般網路依其功能及環境因素或許稍有差異,但皆以這兩大類為基礎,以下分別述之。

3-2-2 字元導向鏈路控制

字元導向鏈路控制』(Character-Oriented Link Control)是於訊框內插入一個特殊『控制字元』(Control Character)(如 DLE)來表示訊框的開始和結束,因而如是稱之。一般通訊協定都會將訊框分為若干個欄位,每個欄位皆有其特殊功能,以圖 3-3 (a) 訊框為例,一般常用的控制欄位有下列幾種:

  • SYNSynchronous idle:同步空閒訊號。一般都是連續 0 1 交替資料之訊號,接收端接收到 SYN 訊號即開始調整本身的時序,使同步於 SYN訊號,也表示同步於傳送端(請參考 1-8-3 節介紹)。

  • STXStart of Text:利用一個特殊字元,表示後面緊接著傳輸字元(Text)。

  • ETXEnd of Text:傳輸字元結束後之特殊字元,表示傳輸資料已結束。

  • BCCBlock Check Character:訊框的錯誤控制字元

  • DLEData Link Escape:啟動控制字元。表示後面緊接著為特殊控制字元,如 STX ETX

3-3 字元導向訊框結構及字元填塞

3-3 (a) 為正常訊框結構,以 DLE 控制字元表示啟動訊框開始(STX)和結束(ETX)。我們也可以用『DLE STX』來表示訊框的開始,以『DLE ETX』表示結束,這就是『字元導向』(Character-Oriented)的基本原理。但 DLE 字元也可能出現在訊息欄位內(即為傳送資料的一部分),造成接收端判斷的錯誤,以為訊框已結束、開始、或誤解為其他意義,如圖 3-3 (b) 所示。因此,當鏈路層發送訊息時,必須檢查訊息內是否有出現 DLE 字元。如果有出現 DLE 字元,則必須在 DLE 字元後再插入一個 DLE 字元,以聲明該 DLE 是訊息而非控制字元,此動作稱之為『字元填塞』(Character Stuffing),如圖 3-3 (c) 所示。在訊息之中需要傳遞多少個 DLE,就必須相對插入多少個 DLE 字元;接收端收到 DLE 字元時,如緊接著又收到 DLE,便可判斷前一個 DLE 是訊息而非控制字元,並將第二個 DLE 字元剔除。如圖 3-3 (d) 所示。

3-2-3 位元導向控制鏈路

位元導向鏈路控制』(Bit-Oriented Link Control)不再以控制字元來標示訊框結構,而是用一個旗號(Flag)來表示一個訊框的開始與結束。這個旗號是一組位元字串所組成,一般使用8個位元的式樣(Pattern 01111110』,因此稱之為『位元導向』(Bit-Oriented)。圖 3-4 為一般位元導向的訊框結構,其中各欄位功能如下:

Preamble:前置訊號,48 位元。接收端用來調整時序,使同步於傳送端(請參考 2-8-3 節介紹)。

  • Flag:旗號欄位,8位元。以位元式樣『01111110』來表示訊框的開始和結束。

  • Address:位址欄位,16/32位元,可變長度。其中包含來源和目的地兩個位址,一般每個位址會用8個位元(8 bits)或16個位元(16 bits)來表示。

  • Control:控制欄位,8/16位元,可變長度。傳送端將控制訊號放在控制欄位,作為標示本訊框的類型、以及通訊雙方溝通交換控制訊息時使用。

  • Information:訊息,可變長度。傳送端傳送給接收端之訊息。

  • FCSFrame Check Sequence:訊框的檢查碼,16/32位元。接收端利用FCS來偵測訊框是否發生錯誤。

3-4 位元導向之訊框結構圖

由圖 3-4 可知,整個訊框的開始和結束是利用位元式樣『01111110』(7EH)組成,用這個旗號來表示一個訊框的結束,和下一個訊框的開始。因此所有已啟動的通訊都必須隨時檢視這個旗號,以做為訊框起始的同步。接收端在接收資料時也須隨時檢視這個旗號,以辨識訊框是否結束。但在訊息(或其他欄位)中也非常有可能會出現『01111110』字串,接收端將會誤認為是訊框的控制旗號,而產生錯誤的判斷,所以在整個訊框中不允許有『01111110』的位元串發生。為解決這個問題,資料流(Data Stream)中必須有『位元填塞』(Bit Stuffing的功能。所謂位元填塞功能就是傳送端在發送資料流(Data Stream)當中,檢查位元串列之中是否有連續 5 1。如有,每5個連續的 1之後便自動插入一個0(旗號欄除外)。接收端在偵測到訊框旗號後,繼續不斷的檢測位元串列(Bit Stream),如發現連續51,則必須偵測它之後的第6個位元是01。第 6 位元若是0則刪掉(位元填塞),若是1,則必須偵測它之後的第7位元。第 7 位元若是0則被認為是旗號。若第6及第7位元都是1時,則表示傳送端要求終止連線的訊號(終止連線旗號)。位元填塞的例子如下:

原來之位元字串:111111111111101111111011110

位元填塞後位元字串:1111101111101110111110110111100表示填塞)

並非加入位元填塞的功能就不會出問題,位元填塞有時也會因一個位元在傳送過程發生變化,而產生嚴重的錯誤。如圖3-5 (a) 所示,在資料流中如果有某個關鍵位元在傳送當中發生變化(01),就可能導致一個訊框被分割成兩個訊框。另外也有可能在傳輸中旗號串列的某個位元發生錯誤(10),因而被誤判為一般訊息,導致兩個訊框被合成一個訊框,如圖 3-5 (b) 所示。這些錯誤必須由其他錯誤控制方法偵測出,較常見的方法是在訊框內增加一個計算訊框長度(Length)的欄位。接收端計算所收到的訊框長度是否相同於『長度』欄位的值,如果不符合,表示訊框有被合併或分割的可能。

3-5 位元轉換產生之錯誤

 

翻轉工作室:粘添壽

 

電腦網路與連結技術:

 

 

翻轉電子書系列: