hldc

 

HDLC 高級數據鏈路控制(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 Control)。

 

 

協議結構

  鏈路控制協議着重於對分段成物理塊或包的數據的邏輯傳輸,塊或包由起始標誌引導並由終止標誌結束,也稱爲幀。幀是每個控制、每個響應以及用協議傳輸的所有信息的媒體的工具。所有面向比特的數據鏈路控制協議均採用統一的幀格式,不論是數據還是單獨的控制信息均以幀爲單位傳送。
  每個幀前、後均有一標誌碼01111110,用作幀的起始、終止指示及幀的同步。標誌碼不允許在幀的內部出現,以免引起畸意。爲保證標誌碼的唯一性但又兼顧幀內數據的透明性,可以採用“0比特插入法”來解決。該法在發送端監視除標誌碼以外的所有字段,當發現有連續5個“1”出現時,便在其後添插一個“0”,然後繼續發後繼的比特流。在接收端,同樣監除起始標誌碼以外的所有字段。當連續發現5個“1”出現後,若其後一個比特“0”則自動刪除它,以恢復原來的比特流;若發現連續6個“1”,則可能是插入的“0”發生差錯變成的“1”,也可能是收到了幀的終止標誌碼。後兩種情況,可以進一步通過幀中的幀檢驗序列來加以區分。“0比特插入法”原理簡單,很適合於硬件實現。
  在面向比特的協議的幀格式中,有一個8比特的控制字段,可以用它以編碼方式定義豐富的控制命令和應答,相當於起到了BSC協議中衆多傳輸控制 字符和轉義序列的功能。

HDLC的特點

  HDLC是面向比特的數據鏈路控制協議的典型代表,該協議不依賴於任何一種字符編碼集;數據報文可透明傳輸,用於實現透明傳輸的“0比特插入法”易於硬件實現;全雙工通信,有較高的數據鏈路傳輸效率;所有幀採用CRC檢驗,對信息幀進行順序編號,可防止漏收或重份,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大靈活性。
  1.HDLC的操作方式
  HCLC是通用的數據鏈路控制協議,當開始建立數據鏈路時,允許選用特定的操作方式。所謂鏈路操作方式,通俗地講就是某站點以主站方式操作,還是以從站方式操作,或者是二者兼備。
  在鏈路上用於控制目的站稱爲主站,其它的受主站控制的站稱爲從站。主站負責對數據流進行組織,並且對鏈路上的差錯實施恢復。由主站發往從站的幀稱爲命令幀,而由從站返回主站的幀稱響應幀。
  連有多個站點的鏈路通常使用輪詢技術,輪詢其它站的站稱爲主站,而在點到點鏈路中每個站均可爲主站。主站需要比從站有更多的邏輯功能,所以當終端與主機相連時,主機一般總是主站。
  在一個站連接多條鏈中的情況下,該站對於一些鏈路而言可能是主站,而對另外一些鏈路而言又可能是從站。
  有些可兼備主站和從站的功能,這站稱爲組合站,用於組合站之間信息傳輸的協議是對稱的,即在鏈路上主、從站具有同樣的傳輸控制功能,這又稱作平衡操作,在計算機網絡中這是一個非常重要的概念。相對的,那種操作時有主站、從站之分的,且各自功能不同的操作,稱非平衡操作。
  HDL C中常用的操作方式有以下三種:
  (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)是一種允許任何節點來啓動傳輸的操作方式。爲了提高鏈路傳輸效率,節點之間在兩個方向上都需要的較高的信息傳輸量。在這種操作方式下任何時候任何站都能啓動傳輸操作,每個站既可作爲主站又可作爲從站,每個站都是組合站。各站都有相同的一組協議,任何站都可以發送或接收命令,也可以給出應答,並且各站對差錯恢復過程都負有相同的責任。
  2.HDLC的幀格式
  在HDLC中,數據和控制報文均以幀的標準格式傳送。HDLC中的幀類似於BSC的字符塊,但BSC協議中的數據報文和控制報文是獨立傳輸的,而HDLC中的命令應以統一的格式按幀傳輸。HDLC的完整的幀由標誌字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成.
  (1)標誌字段(F)
  標誌字段爲01111110的比特模式,用以標誌幀的起始和前一幀的終止。標誌字段也可以作爲幀與幀之間的填充字符。通常,在不進行幀傳送的時刻,信道仍處於激活狀態,在這種狀態下,發方不斷地發送標誌字段,便可認爲一個新的幀傳送已經開始。採用“0比特插入法”可以實現數據的透明傳輸。
  (2)地址字段(A)
  地址字段的內容取決於所採用的操作方式。在操作方式中,有主站、從站、組合站之分。每一個從站和組合站都被分配一個唯一的地址。命令幀中的地址字段攜帶的是對方站的地址,而響應幀中的地址字段所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱爲組地址,利用一個組地址傳輸的幀能被組內所有擁有該組一一的站接收。但當一個站或組合站發送響應時,它仍應當用它唯一的地址。還可用全“1”地址來表示包含所有站的地址,稱爲廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。另外,還規定全“0”地址爲無站地址,這種地址不分配給任何站,僅作作測試。
  (3)控制字段(C)
  控制字段用於構成各種命令和響應,以便對鏈路進行監視和控制。發送方主站或組合站利用控制字段來通知被尋址的從站或組合站執行約定的操作;相反,從站用該字段作對命令的響應,報告已完成的操作或狀態的變化。該字段是HDLC的關鍵。控制字段中的第一位或第一、第二位表示傳送幀的類型,HDLC中有信息幀(I幀)、監控幀(S幀)和無編號幀(U幀)三種不同類型的幀。控制字段的第五位是P/F位,即輪詢/終止(Poll/Final)位。
  控制字段中第1或第1、2們表示傳送幀的類型,第1位爲“0”表示是信息幀,第1、2位爲“10”是監控幀,“11”是無編號幀。
  信息幀中,234位爲存放發送幀序號,5位爲輪詢位,當爲1時,要求被輪詢的從站給出響應,678位爲下個預期要接收的幀的序號。
  監控幀中,34位爲S幀類型編碼。第5位爲輪詢/終止位,當爲1時,表示接收方確認結束。
  無編號幀,提供對鏈路的建立、拆除以及多種控制功能,,用34678這五個M位來定義,可以定義32種附加的命令或應答功能。
  (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種應答功能,但目前許多是空缺的。

HDLC如何保證數據的透明傳輸

  HDLC通過採用“0比特插入法”來保證數據的透明傳輸。即:在發送端,只要發現有5個連續“1”,便在其後插入一個“0”。在接收一個幀時,每當發現5個連續“1”後是“0”,則將其刪除以恢復比特流的原貌。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章