HDLC協議(一)——基本概念

主要參考百度百科。

1. 什麼是HDLC

廣域網簡稱WAN,是一種跨越超大的、地域性的計算機網絡集合。通常跨省、市、甚至一個國家。廣域網包括很多子網,子網可以是局域網;也可以是小型的廣域網。由於串行通信有着傳輸距離遠、成本低的特點,所以遠距離、超遠距離的通信中較常使用串行通信。廣域網以及兩種最常用的廣域網鏈路層協議——PPP協議HDLC協議

HDLC就是一種面向比特的網絡節點之間同步傳輸數據的數據鏈路層協議。

【注】:OSI是Open System Interconnect的縮寫,意爲開放式系統互聯。開放系統互連參考模型 (Open System Interconnect 簡稱OSI)是國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)聯合制定的開放系統互連參考模型,爲開放式互連信息系統提供了一種功能結構的框架。它從低到高分別是:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層和應用層

HDLC(High-Level Data Link Control,高級數據鏈路控制),是鏈路層協議的一項國際標準,用以實現遠程用戶間資源共享以及信息交互。HDLC協議用以保證傳送到下一層的數據在傳輸過程中能夠準確地被接收,也就是差錯釋放中沒有任何損失,並且序列正確。HDLC協議的另一個重要功能是流量控制,即一旦接收端收到數據,便能立即進行傳輸。

HDLC協議由ISO/IEC13239定義,於2002年修訂,2007年再次討論後定稿。在通信領域中,HDLC協議應用非常廣泛,其工作方式可以支持半雙工全雙工傳送,支持點到點、多點結構,支持交換型、非交換型信道。 

2. 簡介

HDLC(High-level Data Link Control,高級數據鏈路控)協議是一種面向比特的高效鏈路層協議。一般情況下,HDLC通信協議IP核爲三個部分,即外部接口模塊、數據發送部分和數據接收部分。在這類面向比特的數據鏈路協議中,幀頭和幀尾都是特定的二進制序列, 通過控制字段來實現對鏈路的監控,可以採用多種編碼方式 實現高效的、可靠的透明傳輸。故其最大特點是不需要數據必須是規定字符集,對任何一種比特流,均可以實現透明的傳輸。

1974年,IBM公司率先提出了面向比特的同步數據鏈路控制規程SDLC(Synchronous Data Link Control)。隨後,ANSI和ISO均採納並發展了SDLC,並分別提出了自己的標準:

  • 1、ANSI的高級通信控制過程ADCCP(Advanced DataControl Procedure),
  • 2、 ISO的高級數據鏈路控制規程HDLC(High-level Data LinkContl)。

從此,HDLC協議開始得到了人們的廣泛關注,並開始應用於通信領域的各個方面。

3.特點

HDLC協議使用統一的幀格式,運用方便;採用零比特插入法,易於硬件實現,且支持任意的位流傳輸,實現信息的透明傳輸;全雙工通信,吞吐率高,在未收到應答幀的情況下,可連續發送信息幀,提高數據鏈路傳輸的效率;採用CRC幀校驗序列,可防止漏幀,提高信息傳輸的可靠性。 

主要有四個特點:

  • 1·對於任何一種比特流都可透明傳輸。
  • 2·較高的數據鏈路傳輸效率。
  • 3·所有的幀都有幀校驗序列(FCS),傳輸可靠性高。
  • 4·用統一的幀格式來實現傳輸。 

4. 基本配置

HDLC協議定義了3種類型的站、2種鏈路配置和3種數據傳輸方式。

4.1 三種類型的站如下:

  • (1)主站。主站發出的幀叫命令幀,負責對鏈路進行控制。
  • (2)從站。從站發出的幀叫響應幀,在主站的控制下進行操作。
  • (3)複合站。既具有主站的功能,也有從站的功能,既可以發送命令幀,也可以發送響應幀。

4.2 兩種種鏈路配置如下:

  • (1)非平衡配置。既可用於點對點鏈路也可用於多點鏈路。這種鏈路由一個主站和多個從站組成,可以支持全雙工半雙工
  • (2)平衡配置。只能用於點對點鏈路。這種配置由兩個複合站組成,同樣支持全雙工或半雙工傳輸。

4.3 三種數據傳輸方式如下:

  • (1)正常響應方式(Normal Response Mode,NRM):這種方式適合不平衡配置,主站啓動數據傳輸過程,從站只有收到命令時才能發送數據。
  • (2)異步平衡方式(Asynchronous Balanced Mode,ABM):這種方式適合兩端都是複合站的平衡配置,任何一方都可以啓動數據傳輸。
  • (3)異步響應方式(Asynchronous Response Mode,ARM):這種方式適合不平衡配置,從站在沒有收到主站命令時,就可以啓動數據傳輸服務。 

5. 幀類型

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)和選擇性拒絕接收(SREG)。

S幀的名稱和功能:

(3)無編號幀(U幀)。U幀用於鏈路控制。U幀比較多,按其控制功能可以分爲以下幾類:

  • a)設置數據傳輸方式的命令幀和響應幀。
  • b)傳輸信息的命令幀和響應幀。
  • c)鏈路恢復的命令幀和響應幀。
  • d)其他的命令幀和響應幀。

HDLC幀的U幀的類型定義 :

6. 幀格式

 

(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位。

控制字段中傳輸幀的類型用第1位或第1、第2位表示。在HDLC中有三種不同類型的幀,分別是信息幀、監控幀和無編號幀。信息幀對應的第1位爲「0」,監控幀對應的第1位和第2位爲「10」,無編號幀對應的第1位和第2位爲「11」。所有幀的控制字段的第5位都相同,叫做P/F位。 在信息幀中,第2、3、4位表示的N(S)是發送幀的幀序號。第5位P/F是輪詢位,其值爲1時,被輪詢的從站對主站的要求必須給出響應。第6、7、8位表示的N(R)是主站要接收的下一個幀的序號。 在監控幀中,第3、4位表示的是S幀的類型編碼。第5位P/F是輪詢/終止位,其值爲1時,表明了接收方已經確認結束。 在無編號幀中,鏈路的建立、控制和斷等多種功能都由其管控。各種功能由第2、3、4、6、7、8位這五個M位來表示,根據組合計算能夠表示最多32種命令或應答的功能。  

(4)信息字段INFO。I幀和一部分的U幀含有控制字段。這個字段可以包含用戶數據的所有比特序列,長度沒有限制,但在使用時通常限定了長度。

(5)校驗字段FCS。校驗字段包含地址字段、控制字段、信息字段的校驗和,但不包括標誌字段。一般校驗字段使用的是16bit的CRCCCITT標準的校驗序列,也可以使用32bit的CRC-32校驗序列。

7. 協商過程

隨着通信的進步,通信信道的可靠性比過去已經有了非常大的改進。已經沒有必要在數據鏈路層使用很複雜的協議(包括編號、檢錯重傳等技術)來實現數據的可靠傳輸。因此,不可靠傳輸協議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狀態、可承載網絡層報文。