高級數據鏈路控制

用於網路結點間傳送數據的協議

高級數據鏈路控制(HDLC,High-level Data Link Control)是一組用於在網路結點間傳送數據的協議,是由國際標準化組織(ISO)頒布的一種高可靠性、高效率的數據鏈路控制規程,其特點是各項數據和控制信息都以比特為單位,採用“幀”的格式傳輸。

簡介


高級數據鏈路控制HDLC協議是基於的一種數據鏈路層協議,促進傳送到下一層的數據在傳輸過程中能夠準確地被接收(也就是,差錯釋放中沒有任何損失並且序列正確)。HDLC的另一個重要功能是流量控制,換句話說,一旦接收端收到數據,便能立即進行傳輸。HDLC具有兩種不同的實現方式:高級數據鏈路控制正常響應模式即HDLCNRM(又稱為SDLC)和HDLC鏈路訪問過程平衡(LAPB)。其中第二種使用更為普遍。HDLC是X.25棧的一部分。

概述


HDLC是面向比特的同步通信協議,主要為全雙工點對點操作提供完整的數據透明度。它支持對等鏈路,表現在每個鏈路終端都不具有永久性管理站的功能。另一方面,HDLCNRM具有一個永久基站以及一個或多個次站。
HDLCLAPB是一種高效協議,為確保流量控制、差錯監測和恢復它要求額外開銷最小。如果數據在兩個方向上(全雙工)相互傳輸,數據幀本身就會傳送所需的信息從而確保數據完整性。
幀窗口是用於在接收第一個幀已經正確收到的確認之前發送復幀。這就意味著在具有長“turn-around”時間滯后的情況下數據能夠繼續傳送,而不需要停下來等待響應。例如在衛星通信中會發生這種情形。

類型


下面列出了不同類型的高級數據鏈路控制(HDLC)及其應用範圍:
信息幀:在鏈路上傳送數據,並封裝OSI體系的高層;
管理幀:用於實現流量控制和差錯恢復功能;
無編號幀:提供鏈路的初始化和終止操作;
普通響應模式(NRM),應用範圍:採用SDLC的多點網路;
鏈路訪問協議(LAP),應用範圍:早期X.25網路;
鏈路訪問過程平衡(LAPB),應用範圍:X.25網路;
ISDN 鏈路訪問協議-D通道(LAPD),應用範圍:ISDN-D通道以及幀中繼;
數據機鏈路存取規程(LAPM),應用範圍:錯誤校驗。

定義


在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.結構靈活在高級數據鏈路控制中,傳輸控制功能和處理功能分離,層次清楚,應用非常靈活。

功能


幀控制

數據鏈路上傳輸的基本單位是幀。幀控制功能要求發送站把網路送來的數據信息分成若干碼組,在每個碼組中加入地址欄位、控制欄位、校驗欄位以及幀開始和結束標誌,組成幀來發送;要求接收端從收到的幀中去掉標誌欄位,還原成原始數據信息後送到網路層。

幀同步

在傳輸過程中必須實現幀同步,以保證對幀中各個欄位的正確識別。

差錯控制

當數據信息在物理鏈路中傳輸出現差錯,數據鏈路控制規程要求接收端能檢測出差錯並予以恢復,通常採用的方法有自動請求重發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做回答,表示接收拆鏈。