高レベルデータリンク制御(HDLC)について
概要
HDLC(High-Level Data Link Control)は、データ通信におけるフレーム同期型の
データリンク層プロトコルであり、
国際標準化機構(ISO)によって規定されています。HDLCは、ビットオリエンテッドで、コネクションオリエンテッドとコネクションレスの両方に対応した設計となっています。
初めてのHDLCに関する規定は、以下の規格によって明確にされました。
- - ISO 3309:フレーム構造に関する定義
- - ISO 4335:処理手順の要素
- - ISO 6159:非平衡型処理手順
- - ISO 6256:平衡型処理手順
これらの規格は、最終的にISO 13239にまとめられ、現在のHDLCの基盤を形成しています。日本においては、
1998年にJIS X 5203として規格化され、
1999年にはJIS X 5204が制定されました。
通信モード
HDLCはポイント・ツー・マルチポイント通信をサポートしていますが、実際には多くの場合、非同期平衡モード(Asynchronous Balanced Mode - ABM)が用いられています。ABMのほかに、正規応答モード(Normal Response Mode - NRM)と非同期応答モード(Asynchronous Response Mode - ARM)が存在し、それぞれ異なる通信ニーズに応じた動作を提供します。
歴史
HDLCは
IBMによって開発されたシステムネットワークアーキテクチャ(SNA)の一部であるSDLC(Synchronous Data Link Control)を基にしています。その後、
国際電気通信連合(ITU)によってX.25プロトコルスタックに導入され、HDLCが誕生しました。今日のHDLCは、主にWAN(ワイドエリアネットワーク)やサーバ接続に利用されています。また、特定のベンダ(例:シスコ)はHDLCのフレーミング技術を利用し独自のプロトコルを開発しています。
フレーミングの仕組み
HDLCのフレームは、送信の同期リンクや非同期リンクに関係なく利用可能ですが、各フレームの始まりと終わりを示すために「フレームデリミタ」と呼ばれる
8ビットコード(0x7E)が用いられます。このデリミタを利用して通信を行うため、フレームの境界を認識するメカニズムが必要です。
データ通信時にビット列がフラグシーケンスと一致する可能性があるため、ビットスタッフィングやバイトスタッフィングを用いて、誤認識を防ぎます。これにより、デバイス間でのデータの整合性が保たれます。
ビットスタッフィング
ビットスタッフィングは、データ内に特定のビット列が存在する場合に、その後に追加のビットを挿入する手法です。例えば、0の後に1が5つ続いた場合には、0を挿入してビット列を変換します。この方法により、受信機は正確にデータを認識し、誤りが生じることを避けられます。
バイトスタッフィング
非同期リンクにおいて使用されるバイトスタッフィングは、フレームデリミタや特殊なエスケープ用のバイトに対して処理を行います。送信デバイスがデータ内のオクテットがフレームデリミタと同じであることを検知すると、エスケープオクテットを追加します。この手法によってもデータの誤認識を回避し、正確に通信を行うことが可能になります。
フレーム構造
HDLCのフレームはデリミタを含む構造を持ち、アドレス部、コントロール部、データ部、フレームチェックシーケンス(FCS)に分かれます。
- - アドレス部:送信側と受信側のアドレスが含まれる
- - コントロール部:フレームの役割や状態を示す情報が格納される
- - 情報部:実際に送信されるデータが含まれる
- - FCS:データの誤り検出に使用される検査情報です。
このフレーム構造により、HDLCは効率的にデータが送受信できる仕組みを実現しています。これにより、HDLCは多様なアプリケーションで利用され、安定した通信が可能となっています。