HDLC幀格式介紹
特點與格式
面向比特的協(xié)議中最有代表性的是IBM的同步數(shù)據(jù)鏈路控制規(guī)程SDLC(Synchronous Data Link Control),國際標(biāo)準(zhǔn)化組織ISO (International Standards Organization)的高級數(shù)據(jù)鏈路控制規(guī)程HDLC(High Level Data Link Control),美國國家標(biāo)準(zhǔn)協(xié)會(American National Standar ds Institute )的先進(jìn)數(shù)據(jù)通信規(guī)程ADCCP ( Advanced Data Communications Control Procedure)。這些協(xié)議的特點是所傳輸?shù)囊粠瑪?shù)據(jù)可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來標(biāo)志幀的開始和結(jié)束,故稱"面向比特"的協(xié)議。
幀信息的分段
SDLC/HDLC的一幀信息包括以下幾個場(Field),所有場都是從***有效位開始傳送。
1. SDLC/HDLC標(biāo)志字符
SDLC/HDLC協(xié)議規(guī)定,所有信息傳輸必須以一個標(biāo)志字符開始,且以同一個字符結(jié)束。這個標(biāo)志字符是01111110,稱標(biāo)志場(F)。從開始標(biāo)志到結(jié)束標(biāo)志之間構(gòu)成一個完整的信息單位,稱為一幀(Frame)。所有的信息是以幀的形式傳輸?shù)?,而?biāo)志字符提供了每一幀的邊界。接收端可以通過搜索"01111110"來探知幀的開頭和結(jié)束,以此建立幀同步。
2.地址場和控制場
在標(biāo)志場之后,可以有一個地址場A(Address)和一個控制場C(Contro1)。地址場用來規(guī)定與之通信的次站的地址??刂茍隹梢?guī)定若干個命令。SDLC規(guī)定A場和C場的寬度為8位。HDLC則允許A場可為任意長度,C場為8位或16位。接收方必須檢查每個地址字節(jié)的***位,如果為"0",則后邊跟著另一個地址字節(jié);若為"1",則該字節(jié)就是***一個地址字節(jié)。同理,如果控制場***個字節(jié)的***位為"0",則還有第二個控制場字節(jié),否則就只有一個字節(jié)。
3.信息場
跟在控制場之后的是信息場I(Information)。I場包含有要傳送的數(shù)據(jù),亦成為數(shù)據(jù)場。并不是每一幀都必須有信息場。即信息場可以為0,當(dāng)它為0時,則這一幀主要是控制命令。
4.幀校驗場
緊跟在信息場之后的是兩字節(jié)的幀校驗場,幀校驗場稱為FC(Frame Check)場, 校驗序列FCS(Frame check Sequence)。SDLC/HDLC均采用16位循環(huán)冗余校驗碼CRC (Cyclic Redundancy Code),其生成多項式為CCITT多項式X^16+X^12+X^5+1。除了標(biāo)志場和自動插入的"0"位外,所有的信息都參加CRC計算。 CRC的編碼器在發(fā)送碼組時為每一碼組加入冗余的監(jiān)督碼位。接收時譯碼器可對在糾錯范圍內(nèi)的錯碼進(jìn)行糾正,對在校錯范圍內(nèi)的錯碼進(jìn)行校驗,但不能糾正。超出校、糾錯范圍之外的多位錯誤將不可能被校驗發(fā)現(xiàn) 。
實際應(yīng)用時的兩個技術(shù)問題
1."0"位插入/刪除技術(shù)
如上所述,SDLC/HDLC協(xié)議規(guī)定以01111110為標(biāo)志字節(jié),但在信息場中也完全有可能有同一種模式的字符,為了把它與標(biāo)志區(qū)分開來,所以采取了"0"位插入和刪除技術(shù)。具體作法是發(fā)送端在發(fā)送所有信息(除標(biāo)志字節(jié)外)時,只要遇到連續(xù)5個"1",就自動插入一個"0"當(dāng)接收端在接收數(shù)據(jù)時(除標(biāo)志字節(jié))如果連續(xù)接收到5個"1",就自動將其后的一個"0"刪除,以恢復(fù)信息的原有形式。這種"0"位的插入和刪除過程是由硬件自動完成的,比上述面向字符的"數(shù)據(jù)透明"容易實現(xiàn)。
2. SDLC/HDLC異常結(jié)束
若在發(fā)送過程中出現(xiàn)錯誤,則SDLC/HDLC協(xié)議用異常結(jié)束(Abort)字符,或稱失效序列使本幀作廢。在HDLC規(guī)程中7個連續(xù)的"1"被作為失效字符,而在SDLC中失效字符是8個連續(xù)的"1"。當(dāng)然在失效序列中不使用"0"位插入/刪除技術(shù)。
SDLC/HDLC協(xié)議規(guī)定,在一幀之內(nèi)不允許出現(xiàn)數(shù)據(jù)間隔。在兩幀信息之間,發(fā)送器可以連續(xù)輸出標(biāo)志字符序列,也可以輸出連續(xù)的高電平,它被稱為空閑(Idle)信號。
HDLC中常用的操作方式
(1)正常響應(yīng)方式NRM
正常響應(yīng)方式NRM(Normal Responses Mode)是一種非平衡數(shù)據(jù)鏈路操作方式,有時也稱非平衡正常響應(yīng)方式。該操作方式適用于面向終端的點到點或一點與多點的鏈路。在這種操作方式,傳輸過程由主站啟動,從站只有收到主站某個命令幀后,才能作為響應(yīng)向主站傳輸信息。響應(yīng)信息可以由一個或多個幀組成,若信息 由多個幀組成,則應(yīng)指出哪一個是***一幀。主站負(fù)責(zé)管理整個鏈路,且具有輪詢、選擇從站及向從站發(fā)送命令的權(quán)利,同時也負(fù)責(zé)對超時、重發(fā)及各類恢復(fù) 操作的控制。
(2)異步平衡方式ABM
異步平衡方式ABM(Asynchronous Balanced Mode)是一種允許任何節(jié)點來啟動傳輸?shù)牟僮鞣绞?。為了提高鏈路傳輸效率,?jié)點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啟動傳輸操作,每個站既可作為主站又可作為從站,每個站都是組合站。各站都有相同的一組協(xié)議,任何站都可以發(fā)送或接收命令,也可以給出應(yīng)答,并且各站對差錯恢復(fù)過程都負(fù)有相同的責(zé)任。
(3)異步響應(yīng)方式
異步響應(yīng)方式ARM(Asynchronous Responses Mode)也是一種非平衡數(shù)據(jù)鏈路操作方式,與NRM不同的是,ARM下的傳輸過程由從站啟動。從站主動發(fā)送給主站的一個或一組幀中可包含有信息,也可以是僅以控制為目的而發(fā)的幀。在這種操作方式下,由從站來控制超時和重發(fā)。該方式對采用輪詢方式的多站蓮路來說是必不可少的。
幀格式
在HDLC中,數(shù)據(jù)和控制報文均以幀的標(biāo)準(zhǔn)格式傳送。HDLC中的幀類似于BSC的字符塊,但BSC協(xié)議中的數(shù)據(jù)報文和控制報文是獨立傳輸?shù)?,而HDLC中的命令應(yīng)以統(tǒng)一的格式按幀傳輸。HDLC的完整的幀由標(biāo)志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成.
(1)標(biāo)志字段(F)
標(biāo)志字段為01111110的比特模式,用以標(biāo)志幀的起始和前一幀的終止。標(biāo)志字段也可以作為幀與幀之間的填充字符。通常,在不進(jìn)行幀傳送的時刻,信道仍處于激活狀態(tài),在這種狀態(tài)下,發(fā)方不斷地發(fā)送標(biāo)志字段,便可認(rèn)為一個新的幀傳送已經(jīng)開始。采用“0比特插入法”可以實現(xiàn)0數(shù)據(jù)的透明傳輸。
(2)地址字段(A)
地址字段的內(nèi)容取決于所彩了的操作方式。在操作方式中,有主站、從站、組合站之分。每一個從站和組合站都被分配一個唯一的地址。命令幀中的地址字段攜帶的是對方站的地址,而響應(yīng)幀中的地址字段所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱為組地址,利用一個組地址傳輸?shù)膸鼙唤M內(nèi)所有擁有該組一焉的站接收。但當(dāng)一個站或組合站發(fā)送響應(yīng)時,它仍應(yīng)當(dāng)用它唯一的地址。還可用全“1”地址來表示包含所有站的地址,稱為廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。另外,還規(guī)定全“0”地址為無站地址,這種地址不分配給任何站,僅作作測試。
(3)控制字段(C)
控制字段用于構(gòu)成各種命令和響應(yīng),以便對鏈路進(jìn)行監(jiān)視和控制。發(fā)送方主站或組合站利用控制字段來通知被尋址的從站或組合站執(zhí)行約定的操作;相反,從站用該字段作對命令的響應(yīng),報告已完成的操作或狀態(tài)的變化。該字段是HDLC的關(guān)鍵??刂谱侄沃械?**位或***、第二位表示傳送幀的類型,HDLC中有信息幀(I幀)、監(jiān)控幀(S幀)和無編號幀(U幀)三種不同類型的幀??刂谱侄蔚牡谖逦皇荘/F位,即輪詢/終止(Poll/Final)位。
(4)信息字段(I)
信息字段可以是任意的二進(jìn)制比特串。比特串長度未作限定,其上限由FCS字段或通信站的緩沖器容量來決定,國際上用得較多的是1000~2000比特;而下限可以為0,即無信息字段。但是,監(jiān)控幀(S幀)中規(guī)定不可有信息字段。
(5)幀校驗序列字段(FCS)
幀校驗序列字段可以使用16位CRC,對兩個標(biāo)志字段之間的整個幀的內(nèi)容進(jìn)行校驗。FCS的生成多項式CCITV4.1建議規(guī)定的X16+X12+X5+1。
幀類型
(1)信息幀(I幀)
信息幀用于傳送有效信息或數(shù)據(jù),通常簡稱I幀。I幀以控制字***位為“0”來標(biāo)志。
信息幀的控制字段中的N(S)用于存放發(fā)送幀序號,以使發(fā)送方不必等待確認(rèn)而連續(xù)發(fā)送多幀。N(R)用于存放接收方下一個預(yù)期要接收的幀的序號,N(R)=5,即表示接收方下一幀要接收5號幀,換言之,5號幀前的各幀接收到。N(S)和N(R)均為3位二進(jìn)制編碼,可取值0~7。
(2)監(jiān)控幀(S幀)
監(jiān)控幀用于差錯控制和流量控制,通常簡稱S幀。S幀以控制字段***、二位為“10”來標(biāo)志。S幀帶信息字段,只有6個字節(jié)即48個比特。S幀的控制字段的第三、四位為S幀類型編碼,共有四種不同編碼,分別表示:
00——接收就緒(RR),由主站或從站發(fā)送。主站可以使用RR型S幀來輪詢從站,即希望從站傳輸編號為N(R)的I幀,若存在這樣的幀,便進(jìn)行傳輸;從站也可用RR型S幀來作響應(yīng),表示從站希望從主站那里接收的下一個I幀的編號是N(R)。
01——拒絕(REJ),由主站或從站發(fā)送,用以要求發(fā)送方對從編號為N(R)開始的幀及其以后所有的幀進(jìn)行重發(fā),這也暗示N(R)以前的I幀已被正確接收。
10——接收未就緒(RNR),表示編號小于N(R)的I幀已被收到,但目前正處于忙狀態(tài),尚未準(zhǔn)備好接收編號為N(R)的I幀,這可用來對鏈路流量進(jìn)行控制。
11——選擇拒絕(SREJ),它要求發(fā)送方發(fā)送編號為N(R)單個I幀,并暗示它編號的I幀已全部確認(rèn)。
可以看出,接收就緒RR型S幀和接收未就緒RNR型S幀有兩個主要功能:首先,這兩種類型的S幀用來表示從站已準(zhǔn)備好或未準(zhǔn)備好接收信息;其次,確認(rèn)編號小于N(R)的所有接收到的I幀。拒絕REJ和選擇拒絕SREJ型S幀,用于向?qū)Ψ秸局赋霭l(fā)生了差錯。REJ幀用于GO-back-N策略,用以請求重發(fā)N(R)以前的幀已被確認(rèn),當(dāng)收到一個N(S)等于REJ型S幀的N(R)的I幀后,REJ狀態(tài)即可清除。SREJ幀用于選擇重發(fā)策略,當(dāng)收到一個N(S)等SREJ幀的N(R)的I幀時,SREJ狀態(tài)即應(yīng)消除。
(3)無編號幀(U幀)
無編號幀因其控制字段中不包含編號N(S)和N(R)而得名,簡稱U幀。U幀用于提供對鏈路的建立、拆除以及多種控制功能,這些控制功能5個M位(M1、M2、M3、M4、M5,也稱修正位)來定義。5個M位可以定義32種附加的命令功能或32種應(yīng)答功能,但目前許多是空缺的。