定義
高級數據鏈路控制(HDLC,High-level Data Link Control)是一組用於在
網路結點間傳送數據的
協定。在HDLC中,數據被組成一個個的單元(稱為
幀)通過網路傳送,並由接收方確認收到。HDLC協定也管理
數據流和數據傳送的間隔時間。HDLC是在數據鏈路層中最廣泛最使用的協定之一,數據鏈路層是
OSI七層網路模型中的第二層,第一層是
物理層,負責產生與收發物理
電子信號,第三層是
網路層,其功能包括通過訪問路由表來確定路由。在傳送數據時,網路層的
數據幀中包含了
源節點與目的節點的網路地址,在第二層通過HDLC規範將網路層的數據幀進行封裝,增加數據鏈路控制信息。
現在作為ISO的標準,HDLC是基於IBM的
SDLC協定的,SDLC被廣泛用於IBM的大型機環境之中。在HDLC中,屬於SDLC的被稱為普通回響模式(
NRM)。在通常回響模式中,
基站(通常是大型機)通過專線在多路或多點網路中傳送數據給本地或遠程的二級站。這種網路並不是我們平時所說的那種,它是一個非公眾的封閉網路,網路通信採取半雙工。
不同類型的HDLC被用於使用X.25協定的網路和幀中繼網路,這種協定可以在
區域網路或
廣域網中使用,無論此網是公共的還是私人的。
在
X.25版本的HDLC中,數據幀包含了一個
數據包。在X.25網路中,數據在傳送前先分成若干數據包,然後由路由器檢測網路狀況來確定路由,各數據包分別傳送到目的節點,在目的節點按照正確的順序合併為初始數據。X.25版本的HDLC採用點對點通信,通信方式採取全雙工方式。這種類型的HDLC能夠確保幀的差錯釋放和正確排序,稱為LAPB(鏈路訪問過程平衡)。
特點
1.透明傳輸。高級數據鏈路控制對任意
比特組合的數據均能
透明傳輸。“透明”是一個很重要的術語,它表示:某一個實際存在的事物看起來好象不存在一樣。“透明傳輸”表示經實際電路傳送後的數據信息沒有發生變化。因此對所傳送數據信息來說,由於這個電路並沒有對其產生什麼影響,可以說數據信息“看不見”這個電路,或者說這個電路對該數據信息來說是透明的。這樣任意組合的數據信息都可以在這個電路上傳送。
2.可靠性高。在高級數據鏈路控制規程中,
差錯控制的範圍是除了F標誌的整個
幀,而基本型傳輸控制規程中不包括
前綴和部分
控制字元。另外高級數據鏈路控制對I幀進行編號傳輸,有效地防止了幀的重收和漏收。
3.傳輸效率高。在高級數據鏈路控制中,額外的開銷比特少,允許高效的
差錯控制和
流量控制。
4.適應性強。高級數據鏈路控制規程能適應各種
比特類型的工作站和
鏈路。
5.結構靈活在高級數據鏈路控制中,傳輸控制功能和處理功能分離,層次清楚,套用非常靈活。
類型
下面列出了不同類型的高級數據鏈路控制(HDLC)及其套用範圍。
1.普通回響模式(
NRM),套用範圍:採用SDLC的多點網路;
3.鏈路訪問過程平衡(
LAPB),套用範圍:現在的X.25網路;
4.ISDN 鏈路訪問協定-D信道(
LAPD),套用範圍:ISDN-D信道以及幀中繼;
5.數據機鏈路存取規程(LAPM),套用範圍:錯誤校驗;
功能
幀控制
數據鏈路上傳輸的基本單位是
幀。幀控制功能要求傳送站把網路送來的數據信息分成若干碼組,在每個碼組中加入地址欄位、控制欄位、校驗欄位以及幀開始和結束標誌,組成幀來傳送;要求接收端從收到的幀中去掉標誌欄位,還原成原始數據信息後送到
網路層。
幀同步
在傳輸過程中必須實現
幀同步,以保證對幀中各個欄位的正確識別。
差錯控制
當數據信息在物理鏈路中傳輸出現差錯,數據鏈路控制規程要求接收端能檢測出差錯並予以恢復,通常採用的方法有自動請求重發
ARQ和
前向糾錯兩種。採用ARQ方法時,為了防止幀的重收和漏收,常對幀採用編號傳送和接收。當檢測出無法恢復的差錯時,應通知網路層做相應處理。
流量控制
流量控制用於克服鏈路的擁塞。它能對鏈路上信息流量進行調節,確保傳送端傳送的數據速率與接收端能夠接收的數據速率相容。常用的
流量控制方法是滑動視窗控制法。
鏈路管理
數據鏈路的建立、維持和終止,控制信息的傳輸方向,顯示站的工作狀態,這些都屬於鏈路管理的範疇。
透明傳輸
規程中採用的標誌和一些欄位必須獨立於要傳輸的信息,這就意味著數據鏈路能夠傳輸各種各樣的數據信息,即傳輸的透明性。
定址
在多點鏈路中,幀必須能到達正確的接收站。
異常狀態恢復
當鏈路發生異常情況時,如收到含義不清的序列或逾時收不到回響等,能自動重新啟動,恢復到正常工作狀態。
操作行為
HDLC的操作就是在兩個站點之間交換三種類型的幀的過程,根據幀的功能完成相應的語義,HDLC的操作主要有三個階段,首先雙方中有一方要
初始化數據鏈路,使得幀能夠以有序的方式進行交換。在這個階段,雙方需要就各種選項的使用達成一致意見,初始化鏈路之後,雙方交換數據和控制信息,並且實施流量和
差錯控制。最後,雙方中有一方要發出信號來終止操作,也就是斷開鏈路的連線。
建立鏈路連線
HDLC必須能夠初始化鏈路,即完成鏈路的連線,在HDLC中使用六個模式設定命令之一請求初始化,這些命令有以下作用和回響;
(1)通知請求對方
初始化;(2)指出請求的三種模式中的哪一種;這些模式確定是否一端作為主站並控制
互動,或者是否是對等的因此在互動時進行互相協作;(3)指出使用的序號。
如果一方接受這個請求,那么它的HDLC模組向初始化返回一個無編號確認(Unnumbered Acknowledged,UA)。如果這個請求被拒絕,那么它發出一個拆接方式(Disconnected Mode,
DM)幀。HDLC協定實體中A向對方B傳送SABM命令,並啟動一個
計時器。如果A收不到B傳送的UA,那么在計時器逾時的情況下A會重新傳送SABM命令。如果A一直收不到B的UA或者DM,那么這一過程將會不斷重複,或者在重試了規定的次數後,實體放棄嘗試並向管理實體報告操作失敗,在這種情況下就需要高層的介入。拆鏈的過程是某一方傳送一個DISC命令,對方用UA確認來回響。就完成了拆鏈。
數據的傳送
數據的傳送就是幀的傳送,正常的數據交換狀態是一種
全雙工交換方式。當一個實體在沒有接收到任何數據的情況下連續傳送若干個I幀時,它的接收序號只是在不斷的重複。如果實體在沒有發出任何幀的情況下連續收到若干個I幀,那么它發出的下一個幀中的接收序號必須反映出這一累積效果。請注意,除了
I幀之外,數據交換還可能會涉及到監控
幀。也會出現忙碌狀態的情況,導致這種狀態存在的原因可能是由於HDLC實體處理I幀的速率無法跟上這些幀到達的速率,或者是用戶接收數據的速率不如I幀中的數據到達的速率快。無論是哪一種情況,實體的接收
緩衝區都會填滿,它必須使用RNR命令來阻止進入緩衝區的I幀流。在數據傳送的過程中也可能出現用REJ命令進行差錯恢復的例子。
拆鏈
連線中的任何一方的HDLC模組都可以啟動拆鏈操作,可能是由於模組本身因某種錯誤而引起的中斷,也可能是由於高層用戶的請求。HDLC通過傳送一個拆鏈(disconnect,
DISC)幀宣布連線中止,對方必須用
UA做回答,表示接收拆鏈。