HDLC通信には、以下の3つの動作モードがあります。
a.NRM(Normal Response Mode)
2次局は1次局から送信許可コマンドを受信した場合に送信可能
b.ARM(Asynchronous Response Mode)
2次局は1次局から送信許可が無くても送信可能
c.ABM(Asynchronous Balanced Mode)
1次局と2次局の区別なく送信可能
通常の通信プロトコルでもマスタ(1次局)とスレーブ(2次局)を決めて通信するのか、全ての端末がマスタになるのか事前に検討しますが、HDLCでもモードを準備しており、利用するモードを事前に取り決めします。
以下にHDLCの基本的なフレーム構成を示します。
| フレーム構成 |
フラグシーケンス |
アドレスフィールド |
コントロールフィールド |
情報フィールド |
FCSフィールド |
フラグシーケンス |
| フレーム内容 |
B'011111110 |
8ビット |
8ビット |
任意データ長 |
16ビット or 32ビット |
B'011111110 |
|
|
表1. HDLCフレーム構成
|
2-2-1. フラグシーケンス
HDLCのフレームはフラグシーケンスと呼ばれる固定のビットパターン(B’01111110)に挟まれて構成されています。
このフラグシーケンスは、フレームの開始と終了の判断に利用される重要な役目があります。
このため、フレームの途中にフラグシーケンスと同じビットパターンが存在すると、フレームの開始や終了を誤認識してしまいます。
この回避方法として、ゼロインサートという手法が利用されています。
ゼロインサートとは、’1’が連続で5ビット以上連続した場合は6ビット目に0を強制挿入することでフラグシーケンスと同じビットパターンが出来ないようにしています。
このゼロインサートでは、1ビットを強制的に追加するため、1バイト(8ビット)のデータを送信する場合でも、実際に送信されるビット数は8ビット以上になることもあります。
(受信側も8ビット以上のデータを受信出来なければなりません)
一方、パソコンやマイコンで利用出来る通信は、1バイト(8ビット)単位でデータを扱うことが前提とされているため、8ビット以上のデータ長となるゼロインサートが出来ません。
このため、HDLCボードのような専用のハードウェアと組み合わせてHDLCを実現します。
2-2-2. アドレスフィールド
アドレスフィールドは、「誰に送りたいのか?」、「誰から応答があったのか?」という確認に利用します。
コマンドを送信する場合は、送信先のアドレスを設定します。
レスポンスを送信する場合は、送信元のアドレスを設定します。
2-2-3. コントロールフィールド
コントロールフィールドは、フレームの種類と、そのフレーム制御方法について表します。
以下にコントロールフィールドのビットの意味を示します。
| フォーマットの種類 |
コントロールフィールドのビット |
| 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
| Iフォーマット |
0 |
N(S) |
P/F |
N(R) |
| Sフォーマット |
1 |
0 |
S |
S |
P/F |
N(R) |
| Uフォーマット |
1 |
1 |
M |
M |
P/F |
M |
M |
M |
|
N(S):送信シーケンスNo.
N(R):受信シーケンスNo.
P/F:Poll/Final bit
M:Modifier function bit
S:Supervisory function bit |
| 表2. コントロールフィールドの内容 |
一般的にはIフォーマット(Information format)でデータを通知し、受信可能状態などSフォーマット(Supervisory format)で状態通知を行います。
Uフォーマット(Unnumbered format)は、通信回線の論理的な接続/切断など通信制御に関するコマンドとして利用します。
HDLCは、Iフォーマットで送信する際にP/Fビットの設定で、レスポンスの有無を2次局へ通知することが出来ます。
このため、レスポンスを待たずに連続送信し、最後のデータを送信する際にP/Fビットによりレスポンスを要求し全ての正常に送信出来たことを確認します。
この動作により、HDLC通信は効率良く送信出来るプロトコルと言えます。
2-2-4. 情報フィールド
情報フィールドには、送信したい任意のデータをセットします。
2-2-5. FCS(Frame Check Sequence)フィールド
CRC(Cyclic Redundancy Check)チェックの結果を設定します。
対象はフレームのアドレスフィールド、コントロールフィールド、情報フィールドです。
HDLC通信では、誤り制御能力が高いと言われるCRCを利用し、高信頼性の通信を実現しています。