一 HDLC概述
1.1 HDLC的發展歷史
高級數據鏈路控制(High-Level Data Link Control或簡稱HDLC),是一個在同步網上傳輸數據、面向比特的數據鏈路層協議,它是由國際標準化組織(ISO)根據IBM公司的SDLC(SynchronousData Link Control)協議擴展開發而成的.其最大特點是不需要數據必須是規定字符集,對任何一種比特流,均可以實現透明的傳輸。1974年,IBM公司率先提出了面向比特的同步數據鏈路控制規程SDLC(Synchronous Data Link Control)。
隨后,ANSI和ISO均采納并發展了SDLC,并分別提出了自己的標準:
1* ANSI的高級通信控制過程ADCCP(Advanced DataControl Procedure),
2* ISO的高級數據鏈路控制規程HDLC(High-level Data LinkContl)。
從此,HDLC協議開始得到了人們的廣泛關注,并開始應用于通信領域的各個方面。
1.2 HDLC的特點
HDLC是面向比特的數據鏈路控制協議的典型代表,有著很大的優勢:
1*??HDLC協議不依賴于任何一種字符編碼集;
2*?數據報文可透明傳輸,用于實現透明傳輸的“0比特插入法”易于硬件實現;
3*全雙工通信,有較高的數據鏈路傳輸效率;
4*所有幀采用CRC檢驗,對信息幀進行順序編號,可防止漏收或重份,傳輸可靠性高;
5*傳輸控制功能與處理功能分離,具有較大靈活性。
由于以上特點,目前網絡設計及整機內部通訊設計普遍使用HDLC數據鏈路控制協議。HDLC已經成為通信領域額不可缺少的一個重要協議。
二 數據鏈路層的控制規程
2.1數據鏈路結構
數據鏈路結構可以分為兩種:點-點鏈路和點-多點鏈路。
在點-點鏈路中,發送信息和命令的站稱為主站,接收信息和命令而發出確認信息或響應的站稱為從站,兼有主、從功能可發送命令與響應的站稱為復合站。在點-多點鏈路中,往往有一個站為控制站,主管數據鏈路的信息流,并處理鏈路上出現的不可恢復的差錯情況,其余各站則為受控站。
2.2 數據鏈路控制規程功能
數據鏈路層是OSI參考模型的第二層,它在物理層提供的通信接口與電路連接服務的基礎上,將易出錯的數據電路構筑成相對無差錯的數據鏈路,以確保DTE與DTE之間、DTE與網絡之間有效、可靠地傳送數據信息。為了實現這個目標,數據鏈路控制規程的功能應包括以下幾個部分:
1*幀控制
數據鏈路上傳輸的基本單位是幀。幀控制功能要求發送站把網絡送來的數據信息分成若干碼組,在每個碼組中加入地址字段、控制字段、校驗字段以及幀開始和結束標志,組成幀來發送;要求接收端從收到的幀中去掉標志字段,還原成原始數據信息后送到網絡層。
2*幀同步
在傳輸過程中必須實現幀同步,以保證對幀中各個字段的正確識別。
3*差錯控制
當數據信息在物理鏈路中傳輸出現差錯,數據鏈路控制規程要求接收端能檢測出差錯并予以恢復,通常采用的方法有自動請求重發ARQ和前向糾錯兩種。采用ARQ方法時,為了防止幀的重收和漏收,常對幀采用編號發送和接收。當檢測出無法恢復的差錯時,應通知網絡層做相應處理。
4*流量控制
流量控制用于克服鏈路的擁塞。它能對鏈路上信息流量進行調節,確保發送端發送的數據速率與接收端能夠接收的數據速率相容。常用的流量控制方法是滑動窗口控制法。
5*鏈路管理
數據鏈路的建立、維持和終止,控制信息的傳輸方向,顯示站的工作狀態,這些都屬于鏈路管理的范疇。
6*透明傳輸
規程中采用的標志和一些字段必須獨立于要傳輸的信息,這就意味著數據鏈路能夠傳輸各種各樣的數據信息,即傳輸的透明性。
7*尋址
在多點鏈路中,幀必須能到達正確的接收站。
8*異常狀態恢復
?當鏈路發生異常情況時,如收到含義不清的序列或超時收不到響應等,能自動重新啟動,恢復到正常工作狀態。
2.3 數據鏈路層協議
數據鏈路控制規程,根據幀控制的格式,可以分為面向字符型、面向比特型。
1*面向字符型
國際標準化組織制定的ISO 1745、IBM公司的二進制同步規程BSC以及我國國家標準GB3543-82屬于面向字符型的規程,也稱為基本型傳輸控制規程。在這類規程中,用字符編碼集中的幾個特定字符來控制鏈路的操作,監視鏈路的工作狀態,例如,采用國際5號碼中的SOH、STX作為幀的開始,ETX、ETB作為的結束,ENQ、EOT、ACK、NAK等字符控制鏈路操作。面向字符型規程有一個很大的缺點,就是它與所用的字符集有密切的關系,使用不同字符集的兩個站之間,很難使用該規程進行通信。面向字符型規程主要適用于中低速異步或同步傳輸,很適合于通過電話網的數據通信。
2*面向比特型
ITU-T制定的X.25建議的LAPB、ISO制定的HDLC、美國國家標準ADCCP、IBM公司的SDLC等均屬于面向比特型的規程。在這類規程中,采用特定的二進制序列01111110作為幀的開始和結束,以一定的比特組合所表示的命令和響應實現鏈路的監控功能,命令和響應可以和信息一起傳送。所以它可以實現不編碼限制的、高可靠和高效率的透明傳輸。面向比特型規程主要適用于中高速同步半雙工和全雙工數據通信,如分組交換方式中的鏈路層就采用這種規程。隨著通信的發展,它的應用日益廣泛。
三HDLC協議
3.1 HDLC的基本概念
3.1.1主站、從站、復合站
HDLC涉及三種類型的站,即主站、從站和復合站。
1*主站的主要功能是發送命令(包括數據信息)幀、接收響應幀,并負責對整個鏈路的控制系統的初啟、流程的控制、差錯檢測或恢復等。
2*從站的主要功能是接收由主站發來的命令幀,向主站發送響應幀,并且配合主站參與差錯恢復等鏈路控制。
3*復合站的主要功能是既能發送,又能接收命令幀和響應幀,并且負責整個鏈路的控制。
3.1.2 HDLC鏈路結構
在HDLC中,對主站、從站和復合站定義了三種鏈路結構。
3.2HDLC協議的主要內容
3.2.1 HDLC幀結構
HDLC的幀格式如圖3所示,它由六個字段組成,這六個字段可以分為五中類型,即標志序列(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗字段(FCS)。在幀結構中允許不包含信息字段I。
1*標志序列(F)
HDLC指定采用01111110為標志序列,稱為F標志。要求所有的幀必須以F標志開始和結束。接收設備不斷地搜尋F標志,以實現幀同步,從而保證接收部分對后續字段的正確識別。另外,在幀與幀的空載期間,可以連續發送F,用來作時間填充。
在一串數據比特中,有可能產生與標志字段的碼型相同的比特組合。為了防止這種情況產生,保證對數據的透明傳輸,采取了比特填充技術。當采用比特填充技術時,在信碼中連續5個“1”以后插入一個“0”;而在接收端,則去除5個“1”以后的“0”,恢復原來的數據序列,如圖4所示。比特填充技術的采用排除了在信息流中出現的標志字段的可能性,保證了對數據信息的透明傳輸。
?
數據中某一段比特組合恰好????? 0 0 1 0 0 11 1 1 1 1 0 0 0 1 0 1 0
???????? 出現和F字段一樣的情況???????????? 會誤認為是F字段
?
??????? 發送端在5個連1之后??????? ??0 0 1 0 0 1 1 1 1 1 0 10 0 0 1 0 1 0
????? ????填入0比特再發送出去??????????????? ?????????填入0比特
?
在接收端將5個連1之后??????? 00 1 0 0 11 1 1 1 1 0 0 0 1 0 1 0
圖4 比特填充
當連續傳輸兩幀時,前一個幀的結束標志字段F可以兼作后一個幀的起始標志字段。當暫時沒有信息傳送時,可以連續發送標志字段,使接收端可以一直保持與發送端同步。
2*地址字段(A)
地址字段表示鏈路上站的地址。在使用不平衡方式傳送數據時(采用NRM和ARM),地址字段總是寫入從站的地址;在使用平衡方式時(采用ABM),地址字段總是寫入應答站的地址。
地址字段的長度一般為8bit,最多可以表示256個站的地址。在許多系統中規定,地址字段為“11111111”時,定義為全站地址,即通知所有的接收站接收有關的命令幀并按其動作;全“0”比特為無站地址,用于測試數據鏈路的狀態。因此有效地址共有254個之多,這對一般的多點鏈路是足夠的。但考慮在某些情況下,例如使用分組無線網,用戶可能很多,可使用擴充地址字段,以字節為單位擴充。在擴充時,每個地址字段的第1位用作擴充指示,即當第1位為“0”時,后續字節為擴充地址字段;當第1位為“1”時,后續字節不是擴充地址字段,地址字段到此為止。
3*控制字段(C)
控制字段用來表示幀類型、幀編號以及命令、響應等。從圖5-11可見,由于C字段的構成不同,可以把HDLC幀分為三種類型:信息幀、監控幀、無編號幀,分別簡稱I幀(Information)、S幀(Supervisory)、U幀(Unnumbered)。在控制字段中,第1位是“0”為I幀,第1、2位是“10”為S幀,第1、2位是“11”為U幀,它們具體操作復雜,在后面予以介紹。另外控制字段也允許擴展。
4*信息字段(I)
信息字段內包含了用戶的數據信息和來自上層的各種控制信息。在I幀和某些U幀中,具有該字段,它可以是任意長度的比特序列。在實際應用中,其長度由收發站的緩沖器的大小和線路的差錯情況決定,但必須是8bit的整數倍。
5*幀校驗序列字段(FCS)
幀校驗序列用于對幀進行循環冗余校驗,其校驗范圍從地址字段的第1比特到信息字段的最后一比特的序列,并且規定為了透明傳輸而插入的“0”不在校驗范圍內。
3.2.2 HDLC的幀類型
1*信息幀(I幀)
信息幀用于傳送有效信息或數據,通常簡稱I幀。I幀以控制字第一位為“0”來標志。
信息幀的控制字段中的N(S)用于存放發送幀序號,以使發送方不必等待確認而連續發送多幀。N(R)用于存放接收方下一個預期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。N(S)和N(R)均為3位二進制編碼,可取值0~7。
2*監控幀(S幀)
監控幀用于監視和控制數據鏈路,完成信息幀的接收確認、重發請求、暫停發送
求等功能。監控幀不具有信息字段。監控幀共有4種,表1是這4種監控幀的代碼、名稱和功能。
表1監控幀的名稱和功能
? 記憶符 | ? 名? 稱 | 比特 | ? 功??????? 能 | |
b2 | b3 | |||
RR | 接收準備好 | 0 | 0 | 確認,且準備接受下一幀,已收妥N(R)以前的各幀 |
RNR | 接收未準備好 | 1 | 0 | 確認,暫停接收下一幀,N(R)含義同上 |
REJ | 拒絕接收 | 0 | 1 | 否認,否認N(R)起的各幀,但N(R)以前的幀已收妥 |
SREJ | 選擇拒絕接收 | 1 | 1 | 否認,只否認序號為N(R)的幀 |
?
可以看出,接收就緒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幀)
無編號幀用于數據鏈路的控制,它本身不帶編號,可以在任何需要的時刻發出,
不影響帶編號的信息幀的交換順序。它可以分為命令幀和響應幀。用5個比特位(即M1、M2)來表示不同功能的無編號幀。HDLC所定義的無編號幀名稱和代碼見表2。
表2無編號幀的名稱和代碼
記憶符 | 名?? 稱 | 類型 | M1 | M2 | |
命令 | 響應 | b3? b4 | b6? b7? b8 | ||
SNRM | 置正常響應模式 | C | ? | 0? 0 | 0? 0? 1 |
SARM/DM | 置異步響應模式/斷開方式 | C | R | 1? 1 | 0? 0? 0 |
SABM | 置異步平衡模式 | C | ? | 1? 1 | 1? 0? 0 |
SNRME | 置擴充正常響應模式 | C | ? | 1? 1 | 0? 1? 1 |
SARME | 置擴充異步響應模式 | C | ? | 1? 1 | 0? 1? 0 |
SABME | 置擴充異步平衡模式 | C | ? | 1? 1 | 1? 1? 0 |
DISC/RD | 斷鏈/請求斷鏈 | C | R | 0? 0 | 0? 1? 0 |
SIM/RIM | 置初始化方式/請求初始化方式 | C | ? | 1? 0 | 0? 0? 0 |
UP | 無編號探詢 | C | ? | 0? 0 | 1? 0? 0 |
UI | 無編號信息 | C | ? | 0? 0 | 0? 0? 0 |
XID | 交換識別 | C | R | 1? 1 | 1? 0? 1 |
RESET | 復位 | C | ? | 1? 1 | 0? 0? 1 |
FRMR | 幀拒絕 | ? | R | 1? 0 | 0? 0? 1 |
UA | 無編號確認 | ? | R | 0? 0 | 1? 1? 0 |
?
?
?
?
3.2.3 HDLC的操作方式
HDLC是通用的數據鏈路控制協議,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是以主節點方式操作,還是以從節點方式操作,或者是二者兼備。
在鏈路上用于控制目的的節點稱為主節點,其他的受主節點控制的節點稱為從節點。主節點負責對數據流進行組織,并且對數據上的差錯實施恢復。由主節點發往從節點的幀稱為命令幀,而由從節點返回主節點的幀稱為響應幀。連有多個節點的鏈路通常使用輪詢技術,輪詢其他節點的節點為主節點,而在點到點鏈路中每個節點均可為主節點。在一個節點點連接多條鏈路的情況下,該節點對于一些鏈路而言可能是主節點,而對另外一些鏈路而言有可能是從節點。
HDLC中常用的操作方式有3種:
1*正常響應方式 NRM
正常響應方式NRM(Normal Response Mode)一種非平衡數據鏈路操作方式,有時也稱為非平衡正常響應方式。該操作方式使用于面向終端的點到點或一點到多點的鏈路。在這種操作方式下,傳輸過程由主節點啟動,從節點只有收到主節點某個命令幀后,才能作為響應向主節點傳輸信息。響應信息可以由一個或多個幀組成,若信息由多個幀組成,則應指出哪一幀是最后一幀。主節點負責管理整個鏈路,且具有輪詢、選擇從節點及及向從節點發送命令的權利,同時也負責對超時、重發及各類恢復操作的控制。
2*異步響應方式 ARM
異步響應方式ARM(Asynchronous Response Mode)也是一種非平衡數據鏈路操作方式,與NRM不同的是,ARM下的傳輸過程由從節點啟動。從節點主動發送給主節點的一個或一組幀中可包含有信息,
也可以是僅以控制為目的而發的幀。在這種操作方式下,由從節點來控制超時和重發。該方式對采用輪詢方式的多節點點鏈路來說是比不可少的。
3*異步平衡方式 ABM
異步平衡方式ABM(Asynchronous Balanced Mode)是一種允許任何節點來啟動傳輸的操作方式。為了提高鏈路傳輸效率,節點之間在兩個方向上都需要有較高的信息傳輸量。在這種操作方式下,任何時候任何節點都能啟動傳輸操作,每個節點點即可以作為主節點又可以作為從節點,即每個節點都是組合節點。各個節點都有相同的一組協議,任何節點都可以發送或接受命令,也可以給出應答,并且各節點對差錯恢復過程都負有相同的責任。
整個數據通信一般分為3個階段:數據鏈路建立階段、信息幀傳送階段、數據鏈路釋放階段。第2階段的完成需要用到信息幀和監控幀,第1、3階段的完成需要用到無編號幀。
圖5畫出了多點鏈路的建立和釋放。主站A先向從站B發出置正常響應模式SNRM的命令,并將P置1,要求B站作出響應。B站同意建立鏈路后,發送無編號確認UA的響應,將F置1。A站和B站在將其狀態變量V(S)和V(R)進行初始化后,就完成了數據鏈路的建立。接著A站開始與C站建立鏈路。
?????? 圖5 多點鏈路的建立和釋放
當數據傳送完畢后,A站分別向B站和C站發出斷鏈命令DISC,B站、C站用無編號確認幀UA響應,數據鏈路就釋放了。
圖6為點對點鏈路中兩個站都是復合站的情況。復合站中的一個站先發出置異步平衡模式SABM的命令,對方回答一個無編號響應幀UA后,即完成了數據鏈路的建立。由于兩個站是平等的,任何一個站均可在數據傳送完畢后發出DISC命令提出斷鏈的要求,對方用UA幀響應,完成數據鏈路的釋放。
?
?
3.3 HDLC規程的特點
與面向字符的基本型傳輸控制規程相比較,HDLC具有以下特點:
1*透明傳輸
HDLC對任意比特組合的數據均能透明傳輸。“透明”是一個很重要的術語,它表示:某一個實際存在的事物看起來好象不存在一樣。“透明傳輸”表示經實際電路傳送后的數據信息沒有發生變化。因此對所傳送數據信息來說,由于這個電路并沒有對其產生什么影響,可以說數據信息“看不見”這個電路,或者說這個電路對該數據信息來說是透明的。這樣任意組合的數據信息都可以在這個電路上傳送。
2*可靠性高
在HDLC規程中,差錯控制的范圍是除了F標志的整個幀,而基本型傳輸控制規程中不包括前綴和部分控制字符。另外HDLC對I幀進行編號傳輸,有效地防止了幀的重收和漏收。
3*傳輸效率高
在HDLC中,額外的開銷比特少,允許高效的差錯控制和流量控制。
4*適應性強
HDLC規程能適應各種比特類型的工作站和鏈路。
5*結構靈活
在HDLC中,傳輸控制功能和處理功能分離,層次清楚,應用非常靈活。
3.4 HDLC存在的問題
如上所述,SDLC/HDLC協議規定以01111110為標志字節,但在信息場中也完全有可能
有同一種模式的字符,為了把它與標志區分開來,所以采取了"0"位插入和刪除技術。具體作法是發送端在發送所有信息(除標志字節外)時,只要遇到連續5個"1",就自動插入一個"0"當接收端在接收數據時(除標志字節)如果連續接收到5個"1",就自動將其后的一個"0"刪除,以恢復信息的原有形式。這種"0"位的插入和刪除過程是由硬件自動完成的,比上述面向字符的"數據透明"容易實現。
3.4.2 SDLC/HDLC異常結束
若在發送過程中出現錯誤,則SDLC/HDLC協議用異常結束(Abort)字符,或
稱失效序列使本幀作廢。在HDLC規程中7個連續的"1"被作為失效字符,而在SDLC中失效字符是8個連續的"1"。當然在失效序列中不使用"0"位插入/刪除技術。
四 HDLC協議的應用與發展前景
4.1 HDLC的應用特點
1*應用場合
就系統結構而言,HDLC適用于點到點或點到多點式的結構;就工作方式而言,HDLCHDLC適用于半雙工或全雙工;就傳輸方式而言,HDLC只用于同步傳輸;在傳輸速率方面考慮,HDLC常用于中高速傳輸。
2*傳輸效率
HDLC開始發送一幀后,就要連續不斷地發完該幀;HDLCHDLC可以同時確認幾個幀;HDLC中的每個幀含有地址字段A,在多點結構中,每個從節點只接收含有本節點地址的幀,因此主節點在選中一個從節點并與之通訊的同時,不用拆鏈,便可以選擇其他的節點通訊,即可以同時與多個節點建立鏈路。
由于以上特點,HDLC具有較高的傳輸效率。
3*傳輸可靠性
HDLC中所有的幀(包括響應幀)都有FCS,I幀按窗口序號順序編號,傳輸可靠性比異步通訊高。
4*數據透明性
HDLC采用“0比特插入法”對數據進行透明傳輸,傳輸信息的比特組合模式無任何限制,處理簡單。
5*信息傳輸格式
HDLC采用統一的幀格式來實現數據、命令、響應的傳輸,實現起來方便。
6*鏈路控制
HDLC利用改變一幀中的控制字段的編碼格式來完成各種規定的鏈路操作功能,提供的是面向比特的傳輸功能。
4.2 HDLC協議的發展前景
HDLC作為面向比特的數據鏈路控制協議的典型代表,具有如下特點:協議不依賴于任何一種字符編碼集;數據報文可透明傳輸,用于實現透明傳輸的“0比特插入法”易于硬件實現;全雙工通信,不必等待確認便可連續發送數據,有較高的數據鏈路傳輸效率;所有幀均采用CRC校驗,對信息幀進行編號,可防止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性和較完善的控制功能。由于以上的優點,HDLC協議發展和普及的非常快,目前網絡設計普遍使用HDLC作為數據鏈路層協議,HDLC協議的發展前景也被業內人士看好。
五 結論
本文通過對數據鏈路層的HDLC協議進行綜述介紹,主要內容包括對HDLC的發展數據鏈路控制協議,HDLC協議的主要內容、存在的技術標準以及HDLC的應用和發展前景等進行了研究。HDLC作為面向比特的數據鏈路控制協議的典型代表,有著很大的優勢:?HDLC協議不依賴于任何一種字符編碼集;并且數據報文可透明傳輸,用于實現透明傳輸的“0比特插入法”也易于硬件實現;另外它采用的是全雙工通信,有較高的數據鏈路傳輸效率;它的所有幀采用CRC檢驗,對信息幀進行順序編號,可防止漏收或重份,傳輸可靠性比較高;最后其傳輸控制功能與處理功能分離,具有較大靈活性。
由于以上特點,HDLC的應用得很廣泛。目前網絡設計普遍使用HDLC作為數據鏈路層協議。所以說HDLC已經成為通信領域額非常重要的一個協議。