複製鏈接
請複製以下鏈接發送給好友

HDLC協議

鎖定
HDLC(High-Level Data Link Control,高級數據鏈路控制),是鏈路層協議的一項國際標準,用以實現遠程用户間資源共享以及信息交互。HDLC協議用以保證傳送到下一層的數據在傳輸過程中能夠準確地被接收,也就是差錯釋放中沒有任何損失,並且序列正確。HDLC協議的另一個重要功能是流量控制,即一旦接收端收到數據,便能立即進行傳輸。
HDLC協議由ISO/IEC13239定義,於2002年修訂,2007年再次討論後定稿。在通信領域中,HDLC協議應用非常廣泛,其工作方式可以支持半雙工全雙工傳送,支持點到點、多點結構,支持交換型、非交換型信道 [1] 
中文名
高級數據鏈路控制協議
外文名
High-level Data Link Control
簡    稱
HDLC
制定者
國際標準化組織
特    點
傳輸可靠性高等
所屬領域
通信技術

HDLC協議簡介

HDLC(High-level Data Link Control,高級數據鏈路控)協議是一種面向比特的高效鏈路層協議。一般情況下,HDLC通信協議IP核為三個部分,即外部接口模塊、數據發送部分和數據接收部分。 [2]  在這類面向比特的數據鏈路協議中,幀頭和幀尾都是特定的二進制序列, 通過控制字段來實現對鏈路的監控,可以採用多種編碼方式 實現高效的、可靠的透明傳輸 [3]  故其最大特點是不需要數據必須是規定字符集,對任何一種比特流,均可以實現透明的傳輸。
1974年,IBM公司率先提出了面向比特的同步數據鏈路控制規程SDLC(Synchronous Data Link Control)。隨後,ANSI和ISO均採納並發展了SDLC,並分別提出了自己的標準:
1、ANSI的高級通信控制過程ADCCP(Advanced DataControl Procedure),
2、 ISO的高級數據鏈路控制規程HDLC(High-level Data LinkContl)。
從此,HDLC協議開始得到了人們的廣泛關注,並開始應用於通信領域的各個方面。

HDLC協議特點

HDLC協議使用統一的幀格式,運用方便;採用零比特插入法,易於硬件實現,且支持任意的位流傳輸,實現信息的透明傳輸;全雙工通信吞吐率高,在未收到應答幀的情況下,可連續發送信息幀,提高數據鏈路傳輸的效率;採用CRC幀校驗序列,可防止漏幀,提高信息傳輸的可靠性。 [4] 
主要有四個特點:
1·對於任何一種比特流都可透明傳輸。
2·較高的數據鏈路傳輸效率。
3·所有的幀都有幀校驗序列FCS),傳輸可靠性高。
4·用統一的幀格式來實現傳輸。 [5] 

HDLC協議HDLC基本配置

HDLC協議定義了3種類型的站、2種鏈路配置和3種數據傳輸方式。3種類型的站如下:
(1)主站。主站發出的幀叫命令幀,負責對鏈路進行控制。
(2)從站。從站發出的幀叫響應幀,在主站的控制下進行操作。
(3)複合站。既具有主站的功能,也有從站的功能,既可以發送命令幀,也可以發送響應幀。
2種鏈路配置如下:
(1)非平衡配置。既可用於點對點鏈路也可用於多點鏈路。這種鏈路由一個主站和多個從站組成,可以支持全雙工半雙工
(2)平衡配置。只能用於點對點鏈路。這種配置由兩個複合站組成,同樣支持全雙工或半雙工傳輸。
3種數據傳輸方式如下:
(1)正常響應方式(Normal Response Mode,NRM):這種方式適合不平衡配置,主站啓動數據傳輸過程,從站只有收到命令時才能發送數據。
(2)異步平衡方式(Asynchronous Balanced Mode,ABM):這種方式適合兩端都是複合站的平衡配置,任何一方都可以啓動數據傳輸。
(3)異步響應方式(Asynchronous Response Mode,ARM):這種方式適合不平衡配置,從站在沒有收到主站命令時,就可以啓動數據傳輸服務。 [6] 

HDLC協議HDLC幀結構

圖1 HDLC幀結構 圖1 HDLC幀結構
HDLC幀是由6個字段組成的。幀的兩端都是以標誌字段(F)結束,傳輸的數據包含在信息字段(INFO),幀結構如圖1《HDLC幀結構》所示。下面對HDLC幀結構做詳細的介紹:
(1)幀標誌F。HDLC採用固定的標誌字段01111110作為幀的邊界。當接收端檢測到一個F標誌時就開始接收幀,在接收的過程中如果發現F標誌就認為該幀結束了。在傳輸的數據中可能會含有和標誌字段相同的字段,而導致接收端誤以為數據傳輸結束,為了防止這種情況的發生,引入了位填充技術。發送站在發送的數據比特序列中一旦發現0後有5個1,就在第7位插入一個0。接收端要進行相反的操作,如果在接收端發現0後面有5個1,則檢查第7位,如果是0,則將0刪除;如果是1並且第8位是0,則認為是標誌字段F,這樣就保證了數據比特位中不會有和標誌字段相同的字段。
(2)地址字段A。地址字段用在多點鏈路中,它是用來存放從站的地址的。一般的地址字段是8位長,也可以擴展采用更長的地址,但是都是8的整數倍。每一個8位組的最低位表示該8位是否是地址字段的末尾:1表示是最後的8位組;0表示後面還有地址組,其餘的7位表示整個擴展字段。
(3)控制字段C。HDLC定義了3種不同的幀,可以根據控制字段區分,信息幀(l幀)不僅用來傳送數據,而且捎帶流量控制和差錯控制的應答信號。管理幀(S幀)是在不使用捎帶機制的情況下管理幀控制的傳輸過程。無編號幀(U幀)具有各種鏈路的控制功能。控制字段使用前1位或前2位用來區別不同格式的幀,基本控制字段長度是8位。擴展控制字段是16位。
(4)信息字段INFO。I幀和一部分的U幀含有控制字段。這個字段可以包含用户數據的所有比特序列,長度沒有限制,但在使用時通常限定了長度。
(5)校驗字段FCS。校驗字段包含地址字段、控制字段、信息字段的校驗和,但不包括標誌字段。一般校驗字段使用的是16bit的CRCCCITT標準的校驗序列,也可以使用32bit的CRC-32校驗序列。 [6] 

HDLC協議HDLC幀類型

HDLC的幀類型包括以下3種:
(1)信息幀(l幀)。信息幀包含用户數據、該幀的編號和捎帶的應答序列N(R)。I幀包含一位PF位,主站發出的命令幀是P,即詢問(Polling);從站發出的響應幀是F位,即終止位(Final)。
在正常響應方式(NRM)下,主站發出的命令幀將PF置l,表示詢問幀,也允許從站發送數據;從站響應主站的詢問,可以發送多個響應幀表示,只將最後一個響應幀的PF置1就表示數據發送完畢。在異步響應方式(ARM)和異步平衡方式(ABM)時,P/F位用於控制U幀和S幀的交換過程。
(2)管理幀(S幀)。管理幀負責流量控制和差錯控制,管理幀有4種,包括接收就緒(RR)、接收未就緒(RNR)、拒絕接收(REJ)和選擇性拒絕接收(SREJ) [7] 
(3)無編號幀(U幀)。U幀用於鏈路控制。U幀比較多,按其控制功能可以分為以下幾類:
a)設置數據傳輸方式的命令幀和響應幀。
b)傳輸信息的命令幀和響應幀。
c)鏈路恢復的命令幀和響應幀。
d)其他的命令幀和響應幀。 [6] 

HDLC協議協商過程

隨着通信的進步,通信信道的可靠性比過去已經有了非常大的改進。已經沒有必要在數據鏈路層使用很複雜的協議(包括編號、檢錯重傳等技術)來實現數據的可靠傳輸。因此,不可靠傳輸協議PPP已成為數據鏈路層主流協議,而可靠傳輸責任落到運輸層TCP協議身上。
下面來討論其鏈路協商的過程。
(1)協商建立過程:HDLC每隔10s後互相發送鏈路探測的協商報文,報文的收發順序是由序號決定的,序號失序則造成鏈路中斷。這種用來探詢點到點鏈路是否激活狀態的報文稱之為keepalive報文。
(2)傳輸報文過程:將IP報文封裝在HDLC層上,數據傳輸過程中,仍然進行keep-alive的報文協商以探測鏈路的合法有效。
(3)超時斷連階段:當封裝HDLC的接口連續3次(當接收包速率超過1000packets/s時為6次),無法收到對方對自己的遞增序號的確認時,HDLC協議Line Protocol由Up向Down轉變。此時鏈路處於癱瘓狀態,數據無法通信。
簡單的説,鏈路處於Down狀態,當設備檢測到載波或網管配置指示物理層可用時,HDLC發送一個UP事件,進入Establish階段。啓動鏈路檢測定時器、初始化超時計數器,通過Keepalive報文交互建立連接,當收到對端鏈路檢測幀時,將鏈路協議UP並進入Maintain階段,鏈路始終處於UP狀態、可承載網絡層報文。 [5] 

HDLC協議使用限制

HDLC協議使用限制有:
1·只支持點到點連接
2.只能工作於同步方式。
3·不支持驗證,缺乏安全性。
4·不支持IP地址協商。 [5] 

HDLC協議基於FPGA平台的HDLC協議的實現

HDLC協議初始模塊

在實現HDLC模塊以前必須針對其完成初始化的相應流程以後方可正常進入工作運行裝填。這裏的初始化具體來説是針對HDLC模塊內部的各類寄存器進行參數上的配置,其中主要的寄存器類型有輔助寄存器、地址寄存器等。而且地址寄存器的初始化尤為重要,一般當對這幾類寄存器完成初始化配置後,系統會自動生成一個標識信號,如果信號顯示為正常且有效的,那麼其代表HDLC的初始化工作已經基本完成,且可以進入到下一步工作狀態中。而輔助配置寄存器的初始化則並不一定需要在該階段中完成。 [3] 

HDLC協議發送模塊

在HDLC協議中,具體負責差錯校檢功能的為CRC校檢模塊,具體的幀發送模塊的實現過程為:首先系統與CPU線路開始連接一户,然後數據開始被寫入到FIFO中,如果檢測到某條線路正好處於未被資源佔用的狀態,那麼CRC校驗模塊則開始對FIFO中的數據進行校驗和插零程序。同時,數據經過插零併發送以後,每一個數據序列必須添加包頭和包圍並以串行的形式被髮送端傳輸出去,並且將幀標誌的狀態修改為“011111100”。 [3] 

HDLC協議接收模塊

HDLC協議中的接收模塊在功能測試,主要由CRC校驗模塊、完所有串並轉換以後的數據流後,就會開始對幀頭狀態進控制模塊、數據鎖存模塊以及同步模塊組成。 [3] 
參考資料