資料連結層

框架化(framing)

一條線或無線連結傳的是連續不斷的位元串流,一個接一個,本身沒有任何東西告訴你一則訊息在哪結束、下一則在哪開始。這就像收到一封沒有空格也沒有標點的長電報:這是一整串連在一起的字。框架化就是把標記插進這條串流的技巧,讓接收方能分辨出每一塊從哪開始、到哪結束。每一塊連同它的標記,就是一個訊框(frame)。

做法有幾種標準方式。一種是在每個訊框的開頭與結尾放一個特殊的旗標位元組,例如位元樣式 01111110;接收方只要看到這個旗標,就知道這裡是訊框邊界。麻煩在於同樣的樣式可能恰巧出現在資料內部,所以發送方會用位元填塞(bit stuffing)或位元組填塞(byte stuffing)——它在任何長得像旗標的資料中插入一個無害的多餘位元或跳脫位元組,把它打斷,接收方再把它剝掉。另一種方法是在標頭裡放一個長度計數,標明後面到底有幾個位元組,接收方就照數點完。不管哪種方式,接收方都能可靠地回答一個問題:這個訊框到哪裡結束?

框架化之所以重要,是因為連結層其他每一項工作都依賴它。如果你連訊框從哪開始、到哪結束都分不清,就無法檢查它有沒有錯、讀它的位址、或對它做確認。一個常見的誤解是框架化能帶來可靠性——並不會;框架化只負責劃界。偵測錯誤、從錯誤中復原,都是疊在乾淨框架化之上、另外的工作。

發送方要送出 ...7E... 這串位元組,而 7E 恰好就是旗標。用位元組填塞時,它會先送一個跳脫位元組,讓接收方知道接下來的 7E 是真正的資料,不是訊框邊界,並在收進來時把跳脫位元組移除。

位元組填塞讓旗標樣式能安全地出現在資料內部。

框架化只負責標記邊界,本身並不保證內容完好無損。位元/位元組填塞,是你為使用保留旗標樣式所付出的代價。

又称
封框訊框化