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