HDLC協議

通信技術領域的協議標準

HDLC——面向比特的同步協議:High Level Data Link Control(高級數據鏈路控制規程)。 HDLC是面向比特的數據鏈路控制協議的典型代表,該協議不依賴於任何一種字元編碼集;數據報文可透明傳輸,用於實現透明傳輸的“0比特插入法”易於硬體實現;全雙工通信,有較高的數據鏈路傳輸效率;所有幀採用CRC檢驗,對信息幀進行順序編號,可防止漏收或重發,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性。

特點與格式


面向比特的協議中最有代表性的是IBM同步數據鏈路控制規程SDLC(Synchronous Data Link Control),國際標準化組織ISO (International Standards Organization)的高級數據鏈路控制規程HDLC(High Level Data Link Control),美國國家標準協會(American National Standards Institute )的先進數據通信規程ADCCP ( Advanced Data Communications Control Procedure)。這些協議的特點是所傳輸的一幀數據可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字元來標誌幀的開始和結束,故稱"面向比特"的協議。

幀信息的分段


SDLC/HDLC的一幀信息包括以下幾個欄位(Field),所有欄位都是從最低有效位開始傳送。

SDLC/HDLC標誌字元

SDLC/HDLC協議規定,所有信息傳輸必須以一個標誌字元開始,且以同一個字元結束。這個標誌字元是01111110,稱標誌欄位(F)。從開始標誌到結束標誌之間構成一個完整的信息單位,稱為一幀(Frame)。所有的信息是以幀的形式傳輸的,而標誌字元提供了每一幀的邊界。接收端可以通過搜索"01111110"來探知幀的開頭和結束,以此建立幀同步。

地址欄位和控制欄位

在標誌欄位之後,可以有一個地址欄位A(Address)和一個控制欄位C(Contro1)。地址欄位用來規定與之通信的次站的地址。控制欄位可規定若干個命令。SDLC規定A欄位和C欄位的寬度為8位。HDLC則允許A欄位可為任意長度,C欄位為8位或16位。接收方必須檢查每個地址位元組的第一位,如果為"0",則後邊跟著另一個地址位元組;若為"1",則該位元組就是最後一個地址位元組。同理,如果控制欄位第一個位元組的第一位為"0",則還有第二個控制欄位位元組,否則就只有一個位元組。

信息場

跟在控制欄位之後的是信息欄位(Information)。信息欄位包含有要傳送的數據,亦成為數據欄位。並不是每一幀都必須有信息欄位。即信息欄位可以為0,當它為0時,則這一幀主要是控制命令。

幀校驗欄位

緊跟在信息欄位之後的是兩位元組的幀校驗欄位,幀校驗欄位稱為FC(Frame Check)欄位,校驗序列FCS(Frame check Sequence)。SDLC/HDLC均採用16位循環冗餘校驗碼CRC (Cyclic Redundancy Code),其生成多項式CCITT多項式X^16+X^12+X^5+1。除了標誌欄位和自動插入的"0"位外,所有的信息都參加CRC計算。 CRC的編碼器在發送碼組時為每一碼組加入冗餘的監督碼位。接收時解碼器可對在糾錯範圍內的錯碼進行糾正,對在校錯范 圍內的錯碼進行校驗,但不能糾正。超出校、糾錯範圍之外的多位錯誤將不可能被校驗發現。

實際應用時的兩個技術問題


"0"位插入/刪除技術

如上所述,SDLC/HDLC協議規定以01111110為標誌位元組,但在信息欄位中也完全有可能有同一種模式的字元,為了把它與標誌區分開來,所以採取了"0"位插入和刪除技術。具體作法是發送端在發送所有信息(除標誌位元組外)時,只要遇到連續5個"1",就自動插入一個"0"當接收端在接收數據時(除標誌位元組)如果連續接收到5個"1",就自動將其後的一個"0"刪除,以恢複信息的原有形式。這種"0"位的插入和刪除過程是由硬體自動完成的,比上述面向字元的"數據透明"容易實現。

SDLC/HDLC異常結束

若在發送過程中出現錯誤,則SDLC/HDLC協議用異常結束(Abort)字元,或稱失效序列使本幀作廢。在HDLC規程中7個連續的"1"被作為失效字元,而在SDLC中失效字元是8個連續的"1"。當然在失效序列中不使用"0"位插入/刪除技術。
SDLC/HDLC協議規定,在一幀之內不允許出現數據間隔。在兩幀信息之間,發送器可以連續輸出標誌字元序列,也可以輸出連續的高電平,它被稱為空閑(Idle)信號。
HDLC(高級數據鏈路控制)產生的背景
面向字元型數據鏈路層協議的缺點:
控制報文和數據報文格式不一樣;
採用停止等待方式,效率低;
只對數據部分進行差錯控制,可靠性較差;
系統每增加一種功能就需要設定一個新的控制字元。
面向比特型協議的設計目標:
以比特作為傳輸控制信息的基本單元;
數據幀與控制幀格式相同;
傳輸透明性好;
連續發送,傳輸效率高。

數據鏈路的配置和數據傳送方式

數據鏈路的配置
非平衡配置
平衡配置
非平衡配置方式
非平衡配置中的主站與從站
主站:控制數據鏈路的工作過程。主站發出命令
從站:接受命令,發出響應,配合主站工作
非平衡配置中的結構特點
點-點方式
多點方式
非平衡配置方式
正常響應模式(normal response mode,NRM
主站可以隨時向從站傳輸數據幀;
從站只有在主站向它發送命令幀進行探詢(poll),從站響應后才可以向主站發送數據幀。
非同步響應模式(asynchronous response mode,ARM
主站和從站可以隨時相互傳輸數據幀;
從站可以不需要等待主站發出探詢就可以發送數據;
主站負責數據鏈路的初始化、鏈路的建立、釋放與差錯恢復等功能。
數據鏈路的非平衡配置方式
平衡配置方式
鏈路兩端的兩個站都是複合站(combined station);
複合站同時具有主站與從站的功能;
每個複合站都可以發出命令與響應;
平衡配置結構中只有非同步平衡模式(asynchronous balanced mode,ABM);
非同步平衡模式的每個複合站都可以平等地發起數據傳輸,而不需要得到對方複合站的許可。
數據鏈路的平衡配置方式

HDLC的幀結構

F(flag) :標誌欄位
01111110
幀同步
傳輸數據的透明性:當幀其它欄位的比特序列中出現和標誌欄位相同的比特序列時,就后出現判斷錯誤。解決辦法是零比特插入與刪除: 發送端在兩個標誌欄位之間的比特序列中,如果檢查出連續的5個1,不管它後面的比特位是0或1,都增加1個0;在接收端,在2個標誌欄位之間的比特序列中檢查出連續的5個1之後就刪除1個0
A(address) :地址欄位
當地址欄位的首位為1時表示地址欄位為8位;當首位為0時表示地址欄位為16位。
當使用非平衡方式傳送數據時,地址欄位總是填入從站地址;當使用平衡方式傳送數據時,地址欄位填入應答站地址。
如果地址欄位全為1,表示是廣播地址
C(control) :控制欄位
根據其最前面兩個比特的取值,可以分為3大類:信息幀、監控幀和無編號幀,也就是I幀、S幀和U幀。
控制欄位中第1或第1、2位表示傳送幀的類型,第1位為“0”表示是信息幀,第1、2位為“10”是監控幀,“11”是無編號幀。
信息幀中,234位為存放發送幀序號,5位為輪詢位,當為1時,要求被輪詢的從站給出響應,678位為下個預期要接收的幀的序號。
監控幀中,34位為S幀類型編碼。第5位為輪詢/終止位,當為1時,表示接收方確認結束。
無編號幀,提供對鏈路的建立、拆除以及多種控制功能,用34678這五個M位來定義,可以定義32種附加的命令或應答功能。
I(information) :信息欄位
只出現在信息幀和無編號幀中,它是網路層的用戶數據。
FCS:幀校驗欄位
HDLC採用的是CRC校驗,校驗A、C和I欄位的數據。
生成多項式採用CRC-CCITT,G(X)= X16+X12+X5+1
信息幀
如果控制欄位的b0為0,那麼該幀為信息幀,即I幀
N(S):b1、b2和b3,表示當前發送的信息幀的序號
N(R):b5、b6和b7,表示一個站所已正確接收序號N
(R)-1及以前的各幀,發送站應發序號為N(R)的幀
由於是全雙工通信,所以通信雙方都有一個N(S)和 N(R)
P/F位:b4,探詢/終止位
0,表示沒有意義
P=1(詢問),如果從站有幀發送,則可以向主站發送
F=1(終止),發送的最後一幀,表示從站已經發送結束
P=1和F=1在幀交換過程中成對出現
信息幀
信息幀
目前發送的序號為3幀
已經正確接收序號為3及以前的各幀,要求對方下一次發送序號為4的幀
使用探詢位P=1去詢問對方
監控幀
如果控制欄位的b0=1,b1=0,那麼該幀為監控幀,即S幀
無編號幀
如果控制欄位的b0=1,b1=1,那麼該幀為無編號幀,即U幀
沒有N(S)和N(R)位,主要起控制作用,它可以在需要時發出,不影響帶序號的信息幀的交換順序

數據鏈路層的工作過程

簡化的信息幀結構的表示方法
一個信息幀的表示
無編號幀的表示方法
SNRM幀與UA幀結構的表示方法