摘 要: 高級數據鏈路控制(HDLC)是重要的數據鏈路控制協議之一,HDLC不僅使用最廣泛,而且它還是其他許多重要數據鏈路控制協議的基礎。為了更好地提高高速網絡的性能與服務質量,在此主要對HDLC的操作行為進行研究。詳細解釋HDLC的三個階段的操作,并用范例對HDLC的操作原理進行了說明,易于理解接受。
關鍵詞: HDLC; 操作行為; 幀; 數據鏈路控制協議
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2013)08?0010?03
HDLC(High?level Data Link Control)的操作涉及是互聯的兩個站點之間的兩類信息交互,它的信息交互可以描述為:第一,HDLC從某些高層軟件接受用戶數據并通過鏈路把用戶數據投遞給鏈路的另外一端;另一方面,HDLC接受用戶數據并把它投遞給另一端的高層軟件。第二,兩個HDLC模塊必須交互控制信息以便提供流量控制、差錯控制和其他控制功能。完成這項工作的方法是把要交互的信息組成幀的格式。
1 HDLC幀結構
HDLC的幀一共包含了6個字段:標志、地址、控制、信息、FCS、標志,如圖1所示。
標志字段:一般用來同步。它在一個幀的開始和結尾,而且是個固定的值:01111110。
地址字段:用來標識出準備接收這個幀的次站。在多鏈路中需要這個字段,其中一個主站可以發送一個幀到多個站中的某一個,或者某一個次站發送一個幀到主站。地址字段通常為8 b,也可以擴展其位數。
控制字段:這里的控制字段指的是此幀的作用和功能,也就是這個幀是一個什么功能的幀,一般有三種幀:信息幀(I幀:攜帶的是用戶的數據和流量和差錯控制數據)、監控幀(S幀:提供了另外一種差錯和流量控制)和無編號幀(U幀:提供了附加的鏈路控制功能,關閉鏈接等)。
信息字段:這個字段可以包含待傳的數據。
FCS字段:這是“幀檢驗序列”字段,用于差錯控制。
2 HDLC的操作行為
HDLC的操作就是在兩個站點之間交換三種類型的幀的過程,根據幀的功能完成相應的語義,HDLC的操作主要有三個階段,首先雙方中有一方要初始化數據鏈路,使得幀能夠以有序的方式進行交換。在這個階段,雙方需要就各種選項的使用達成一致意見,初始化鏈路之后,雙方交換數據和控制信息,并且實施流量和差錯控制。最后,雙方中有一方要發出信號來終止操作,也就是斷開鏈路的連接。
2.1 建立鏈路連接
HDLC必須能夠初始化鏈路,即完成鏈路的連接,在HDLC中使用六個模式設置命令之一請求初始化,這些命令有以下作用和響應;
(1)通知請求對方初始化。
(2)指出請求的三種模式中的哪一種;這些模式確定是否一端作為主站并控制交互,或者是否是對等的因此在交互時進行互相協作。
(3)指出使用的是3 b還是7 b的序號。
如果一方接受這個請求,那么它的HDLC模塊向初始化返回一個無編號確認(Unnumbered Acknowledged,UA)。如果這個請求被拒絕,那么它發出一個拆接方式(Disconnected Mode,DM)幀。見表1。
表1 HDLC的命令和響應
HDLC協議實體中A向對方B發送SABM命令,并啟動一個計時器。如圖2所示,B在收到這個SABM后會返回一個UA響應,并將局部變量和計數器設置為初始值。發起端A會在收到這個UA響應后設置自己的變量和計數器,并停止計時器,這時的邏輯鏈路就建立起來了,并且雙方可以開始傳輸數據。如果A收不到B發送的UA,那么在計時器超時的情況下A會重新發送SABM命令。如果A一直收不到B的UA或者DM,那么這一過程將會不斷重復,或者在重試了規定的次數后,實體放棄嘗試并向管理實體報告操作失敗,在這種情況下就需要高層的介入。拆鏈的過程是某一方發送一個DISC命令,對方用UA確認來響應。就完成了拆鏈。
2.2 數據的傳送
數據的傳送就是幀的傳送,在HDLC中信息幀(I幀)、監控幀(S幀)、無編號幀(U幀)的結構如圖3所示。
正常的數據交換狀態是一種全雙工交換方式,如圖4所示。當一個實體在沒有接收到任何數據的情況下連續發送若干個I幀時,它的接收序號只是在不斷的重復(如,從A到B的方向上有I,1,1;I,2,1)。如果實體在沒有發出任何幀的情況下連續收到若干個I幀,那么它發出的下一個幀中的接收序號必須反映出這一累積效果(如在從B到A的方向上有I,1,3)。請注意,除了I幀之外,數據交換還可能會涉及到監控幀。
也會出現忙碌狀態的情況,導致這種狀態存在的原因可能是由于HDLC實體處理I幀的速率無法跟上這些幀到達的速率,或者是用戶接收數據的速率不如I幀中的數據到達的速率快。無論是哪一種情況,實體的接收緩沖區都會填滿,它必須使用RNR命令來阻止進入緩沖區的I幀流,如圖5所示。在數據傳送的過程中也可能出現用REJ命令進行差錯恢復的例子。如圖6所示,A傳輸了編號為3,4,5的幀,幀4出現差錯并被丟失。當B接收到幀5時,它會因順序不對而丟失這個幀,并發送一個N(R)為4的REJ,這促使A初始化重傳過程,再次發送以幀4為首的所有I幀。A也可以再重傳之后繼續發送其他的幀。
2.3 拆鏈
連接中的任何一方的HDLC模塊都可以啟動拆鏈操作,可能是由于模塊本身因某種錯誤而引起的中斷,也可能是由于高層用戶的請求。HDLC通過發送一個拆鏈(disconnect,DISC)幀宣布連接中止,對方必須用UA做回答,表示接收拆鏈。
3 結 語
HDLC是面向比特的數據鏈路層協議,傳輸的數據中中不存在任何特殊的控制代碼,但幀中包含了控制和響應命令,支持全雙工傳輸,具有較高的吞吐率,HDLC是采用比特填充技術的面向比特協議,它根據特定用途選擇一個子集,并具有透明傳輸、可靠性高、傳輸效率高和靈活性高等特點,適合于點對點和點對多點連接,廣泛應用于數據通信領域。
參考文獻
[1] 謝希仁.計算機網絡[M].4版.大連:大連理工大學出版社,2004.
[2] [美]STALLINGS William.高速網絡與互聯網:性能與服務質量[M].2版.齊望東,薛衛娟,譯.北京:電子工業出版社,2003.
[3] 王芊,劉革明,吳通華.HDLC應用中的幾點建議[J].電力系統保護與控制,2010(18):196?198.
[4] 李曉娟,黃翌.基于FPGA的HDLC設計實現[J].現代電子技術,2007,30(6):35?37.
[5] 楊劍峰,胡慶陽,鐘小艷,等.基于FPGA的多通道HDLC收發電路設計[J].電子科技,2009(3):13?15.
[6] 俞張輝,張自強,顧美康.基于模型的設計思想加速電梯控制算法開發[J].電子科技,2011(8):28?30.