高級數據鏈路控制(High-Level Data Link Control或簡稱HDLC),是一個在同步網上傳輸 數據、面向比特的數據鏈路層協定,它是由國際標準化組織(ISO)根據IBM公司的SDLC(Synchronous Data Link Control)協定擴展開發而成的.
歷史
七十年代初,IBM公司率先提出了面向比特的同步數據鏈路控制規程SDLC(Synchronous Data Link Control)。隨後,ANSI和ISO均採納並發展了SDLC,並分別提出了自己的標準:ANSI的高級通信控制過程ADCCP(Advanced Data Control Procedure),ISO的高級數據鏈路控制規程HDLC(High-level Data Link Contl)。
鏈路控制協定著重於對分段成物理塊或包的數據的邏輯傳輸,塊或包由起始標誌引導並由終止標誌結束,也稱為幀。幀是每個控制、每個回響以及用協定傳輸的所有信息的媒體的工具。所有面向比特的數據鏈路控制協定均採用統一的幀格式,不論是數據還是單獨的控制信息均以幀為單位傳送。
每個幀前、後均有一標誌碼01111110,用作幀的起始、終止指示及幀的同步。標誌碼不允許在幀的內部出現,以免引起畸意。為保證標誌碼的唯一性但又兼顧幀內數據的透明性,可以採用“0比特插入法”來解決。該法在傳送端監視除標誌碼以外的所有欄位,當發現有連續5個“1”出現時,便在其後添插一個“0”,然後繼續發後繼的比特流。在接收端,同樣監除起始標誌碼以外的所有欄位。當連續發現5個“1”出現後,若其後一個比特“0”則自動刪除它,以恢復原來的比特流;若發現連續6個“1”,則可能是插入的“0”發生差錯變成的“1”,也可能是收到了幀的終止標誌碼。後兩種情況,可以進一步通過幀中的幀檢驗序列來加以區分。“0比特插入法”原理簡單,很適合於硬體實現。
在面向比特的協定的幀格式中,有一個8比特的控制欄位,可以用它以編碼方式定義豐富的控制命令和應答,相當於起到了BSC協定中眾多傳輸控制 字元和轉義序列的功能。
作為面向比特的數據鏈路控制協定的典型,HDLC具有如下特點:協定不依賴於任何一種字元編碼集;數據報文可透明輿傳輸,用於實現透明傳輸的“0比特插入法”易於硬體實現;全雙工通信,不必等待確認便可連續傳送數據,有較高的數據鏈路傳輸效率;所有幀均採用CRC校驗,對信息幀進行編號,可紡止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性和較完善的控制功能。由於以上特點,目前網路設計普遍使用HDLC作為數據鏈路管制協定。
操作
1.HDLC的操作方式
HCLC是通用的數據鏈路控制協定,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼備。
在鏈路上用於控制目的站稱為主站,其它的受主站控制的站稱為從站。主站負責對數據流進行組織,半且對鏈路上的差錯實施恢復。由主站發往從站的幀稱為命令幀,而由由站返回主站的幀稱回響幀。
連有多個站點的鏈路通常使用輪詢技術,輪詢其它站的站稱為主站,而在點到點燃鏈路中每個站均可為主站。主站需要比從站有更多的邏輯功能,所以當終端與主機相連時,主機一般總是主站。
在一個站連線多條鏈中的情況下,該站對於一些鏈路而言可能是主站,而對另外一些鏈路而言又可能是從站。
有些可兼備主站和從站的功能,這站稱為組合站,用於組合站之間信息傳輸的協定是對稱的,即在鏈路上主、從站具有同樣的傳輸控制功能,這又稱作平衡操作,在計算機網路中這是一個非常重要的概念。相對的,那種操作時有主站、從站之分的,且各自功能不同的操作,稱非平衡操作。
HDCL中常用的操作方式有以下三種:
(1)正常回響方式NRM(Normal Responses Mode)是一種非平衡數據鏈路操作方式,有時也稱非平衡正常回響方式。該操作方式適用於面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啟動,從站只有收到主站某個命令幀後,才能作為回響向主站傳輸信息。回響信息可以由一個或多個幀組成,若信息 由多個幀組成,則應指出哪一個是最後一幀。主站負責管理整個鏈路,且具有輪詢、選擇從站及向從站傳送命令的權利,同時也負責對逾時、重發及各類恢復 操作的控制。NRM操作方式見圖3.7(a)。
(2)異步回響方式ARM
異步回響方式ARM(Asynchronous Responses Mode)也是一種非平衡數據鏈路操作方式,與NRM不同的是,ARM下的傳輸過程由從站啟動。從站主動傳送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發的幀。在這種操作方式下,由從站來控制逾時和重發。該方式對採用輪詢方式的多站蓮路來說是必不可少的。ARM操作方式見圖3.7(b)。
(3)異步平衡方式ABM
異步平衡方式ABM(Asynchronous Balanced Mode)是一種允許任何節點來啟動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啟動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協定,任何站都可以傳送或接收命令,也可以給出應答,並且各站對差錯恢復過程都負有相同的責任。
幀格式
在HDLC中,數據和控制報文均以幀的標準格式傳送。HDLC中的幀類似於BSC的字元塊,但BSC協定中的數據報文和控制報文是獨立傳輸的,而HDLC中的命令應以統一的格式按幀傳輸。HDLC的完整的幀由標誌欄位(F)、地址欄位(A)、控制欄位(C)、信息欄位(I)、幀校驗序列欄位(FCS)等組成.
(1)標誌欄位(F)
標誌欄位為01111110的比特模式,用以標誌幀的起始和前一幀的終止。標誌欄位也可以作為幀與幀之間的填充字元。通常,在不進行幀傳送的時刻,信道仍處於激活狀態,在這種狀態下,發方不斷地傳送標誌欄位,便可認為一個新的幀傳送已經開始。採用“0比特插入法”可以實現0數據的透明傳輸。
(2)地址欄位(A)
地址欄位的內容取決於所彩了的操作方式。在操作方式中,有主站、從站、組合站之分。每一個從站和組合站都被分配一個唯一的地址。命令幀中的地址欄位攜帶的是對方站的地址,而回響幀中的地址欄位所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱為組地址,利用一個組地址傳輸的幀能被組內所有擁有該組一焉的站接收。但當一個站或組合站傳送回響時,它仍應當用它唯一的地址。還可用全“1”地址來表示包含所有站的地址,稱為廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。另外,還規定全“0”地址為無站地址,這種地址不分配給任何站,僅作作測試。
(3)控制欄位(C)
控制欄位用於構成各種命令和回響,以便對鏈路進行監視和控制。傳送方主站或組合站利用控制欄位來通知被定址的從站或組合站執行約定的操作;相反,從站用該欄位作對命令的回響,報告已完成的操作或狀態的變化。該欄位是HDLC的關鍵。控制欄位中的第一位或第一、第二位表示傳送幀的類型,HDLC中有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。控制欄位的第五位是P/F位,即輪詢/終止(Poll/Final)位。
(4)信息欄位(I)
信息欄位可以是任意的二進制比特串。比特串長度未作限定,其上限由FCS欄位或通信站的緩衝器容量來決定,目前國際上用得較多的是1000~2000比特;而下限可以為0,即無信息欄位。但是,監控幀(S幀)中規定不可有信息欄位。
(5)幀校驗序列欄位(FCS)
幀校驗序列欄位可以使用16位CRC,對兩個標誌欄位之間的整個幀的內容進行校驗。FCS的生成多項式CCITT V4.1建議規定的X16+X12+X5+1。
3.HDLC的幀類型
(1)信息幀(I幀)
信息幀用於傳送有效信息或數據,通常簡稱I幀。I幀以控制字第一位為“0”來標誌。
信息幀的控制欄位中的N(S)用於存放傳送幀序號,以使傳送方不必等待確認而連續傳送多幀。N(R)用於存放接收方下一個預期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。N(S)和N(R)均為3位二進制編碼,可取值0~7。
(2)監控幀(S幀)
監控幀用於差錯控制和流量控制,通常簡稱S幀。S幀以控制欄位第一、二位為“10”來標誌。S幀帶信息欄位,只有6個位元組即48個比特。S幀的控制欄位的第三、四位為S幀類型編碼,共有四種不同編碼,分別表示:
00——接收就緒(RR),由主站或從站傳送。主站可以使用RR型S幀來輪詢從站,即希望從站傳輸編號為N(R)的I幀,若存在這樣的幀,便進行傳輸;從站也可用RR型S幀來作回響,表示從站希望從主站那裡接收的下一個I幀的編號是N(R)。
01——拒絕(REJ),由主站或從站傳送,用以要求傳送方對從編號為N(R)開始的幀及其以後所有的幀進行重發,這也暗示N(R)以前的I幀已被正確接收。
10——接收未就緒(RNR),表示編號小於N(R)的I幀已被收到,但目前正處於忙狀態,尚未準備好接收編號為N(R)的I幀,這可用來對鏈路流量進行控制。
11——選擇拒絕(SREJ),它要求傳送方傳送編號為N(R)單個I幀,並暗示它編號的I幀已全部確認。
可以看出,接收就緒RR型S幀和接收未就緒RNR型S幀有兩個主要功能:首先,這兩種類型的S幀用來表示從站已準備好或未準備好接收信息;其次,確認編號小於N(R)的所有接收到的I幀。拒絕REJ和選擇拒絕SREJ型S幀,用於向對方站指出發生了差錯。REJ幀用於GO-back-N策略,用以請求重發N(R)以前的幀已被確認,當收到一個N(S)等於REJ型S幀的N(R)的I幀後,REJ狀態即可清除。SREJ幀用於選擇重發策略,當收到一個N(S)等SREJ幀的N(R)的I幀時,SREJ狀態即應消除。
(3)無編號幀(U幀)
無編號幀因其控制欄位中不包含編號N(S)和N(R)而得名,簡稱U幀。U幀用於提供對鏈路的建立、拆除以及多種控制功能,這些控制功能5個M位(M1、M2、M3、M4、M5,也稱修正位)來定義。5個M位可以定義32種附加的命令功能或32種應答功能,但目前許多是空缺的。