High-Level Data Link Control
High-Level Data Link Control(以下HDLCと略す)は国際標準化機構(ISO)によって標準化された、ビットオリエンテッドなフレーム同期型のデータリンク層プロトコルである。最初のHDLCはISOによって以下のように定義された。
- ISO 3309 — フレーム構造
- ISO 4335 — 処理手順の要素
- ISO 6159 — 非平衡型処理手順
- ISO 6256 — 平衡型処理手順
これらの定義はISO 13239に取りまとめられ、現在のHDLCの定義となっている。HDLCはコネクションオリエンテッド型通信にもコネクションレス型通信にも対応できる。
HDLCはポイント・ツー・マルチポイントでの通信を行うことができるが、現在はほとんどAsynchronous Balanced Mode(ABM)を使ったポイント・ツー・ポイントでの通信でしか使われていない。HDLCにはABMの他にNormal Response Mode(NRM)とAsynchronous Response Mode(ARM)の2つがある。
歴史
HDLCはIBMが開発したSystems Network Architecture(SNA)のレイヤ2プロトコルであるSDLCが大元になっている。それを国際電気通信連合(ITU)が、LAPBとしてX.25プロトコル・スタックに持ち込みHDLCの誕生となった。現在、これは同期型のPPPとして、インターネットのようなWANにサーバなどを繋ぐのに用いられている。これと一部異なるバージョンのものがISDNの制御チャンネルやSDH多重電話回線で使用されている。またシスコなど一部のベンダではシスコHDLCのように、下位のHDLCのフレーミング技術のみを導入し、ヘッダ部分は独自といったプロトコルを開発したりもしている。
フレーミング
HDLCのフレームは同期リンク、非同期リンクに関わらず送信することが可能である。これらのリンクにはフレームの始めと終わりを見分けるメカニズムはないので、通信を行うには各フレームの始めと終わりを認識するメカニズムが必要である。フレームの始まりと終わりを認識するにはフラグか、もしくはフレームデリミタを使用する。どのように使用するかと言うと、特定のビット配列(=フレームデリミタ)が存在する=その部分はフレームではない、という具合でフレームを認識する。そのビット配列は”01111110”で16進数で表示すると”7E”である。
同期リンク上でフレームの通信がない場合、連続してフレームデリミタが送信され続け、以下のような連続したビット配列を示す。
01111110011111100111111001111110 ______ ______ ______ ______ _ __ __ __ _
これを利用しモデムは位相同期回路を経由して時計をシンクロさせる。
フレーム構造
フラグを含むHDLCのフレーム構造は以下のようになっている。
フラグ | アドレス | コントロール | 情報 | FCS | (オプショナルのフラグ) |
---|---|---|---|---|---|
8ビット | 8ビット | 8ビット もしくは 16ビット | 可変長, 0もしくは8の倍数ビット | 16ビット | 8ビット |
後のフラグは次のフレームの始めのフラグを兼ねている(なくても大丈夫)。
伝送される情報は8の倍数ビットになる。これは電話、テレタイプの長距離デジタル伝送装置が8ビットずつ伝送しているのにHDLCが適応した結果である。これによりHDLCは効率的にバイナリデータを送受信できる。
FCSはFrame Check Sequenceの略でパリティチェックより洗練されたエラーチェック方法である。