アットウィキロゴ
いつ見ても3日坊主@wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

いつ見ても3日坊主@wiki

HDLC

最終更新:

ryu7k

- view
管理者のみ編集可

HDLC


概要


 HDLC(High level DataLink Control)手順とは、通信速度、伝送効率、信頼性を高いレベルで実現する伝送制御手順です。 HDLC手順は、ISOで標準化され、日本でもJIS規格化されています。
HDLC手順は、データをひとかたまりにしたフレーム(frame)とよばれる単位で、データの送受信を行ないます。 フレームの構成は次のようになっています。

F A C ______ I ______ FCS F

記号 名称 内容
F
フラグシーケンス フレームの開始と終了を表します。「01111110」 という固定のビットパターンとなります。
A
アドレスフィールド 送信先もしくは送信元のアドレスです。8ビットで表現されます。
C
制御フィールド フレームの種類と制御内容、フレーム番号を表します。
I
情報フィールド 転送するデータ内容を表します。
FCS
フレームチェックシーケンス CRC方式による誤り制御のシーケンスを表します。



 HDLC手順では、フレームを連続して転送することが可能です。 連続して送信しているときは、下図のような状態でデータ転送を行なっていることとなります。

← フレーム 1 → ← フレーム 2 → ← フレーム 3 →
F A C I FCS F F A C I FCS F F A C I FCS F



 HDLC手順では、フレームの開始と終了を表す F;フラグシーケンスは、「01111110」という決められたビット列です。 もし、I;情報フィールドに「01111110」というデータが含まれていたらどうなるでしょうか? 当然ながら、データ受信側では、I;情報フィールド 受信中に、F;フラグシーケンス のビット列を受信することなり、フレームの構成が分からなくなってしまいます。

 このような問題に対処するため、HDLC手順では、

  • 送信側では、連続する5個の「1」の直後には、「0」を1個挿入する
  • 受信側では、連続する5個の「1」の直後の「0」を1個除去する
という決まりの制御を、送信側、受信側で行なうことで、I;情報フィールド 受信中に、F;フラグシーケンス のビット列が出現しないようにして、この問題に対処しています。

ちなみに、この対処方法はbit stuffingといわれている。
bit stuffing
送信時に 0 の後ろに 1 が連続して 5 つ続いたのを検知すると、その後ろに0を挿入する。
受信時には、0 の後に 1 が 5 つ続きその後ろに 0 があった場合データと判断し 0 を取り除く。1 が 6 つ続いた場合はフラグと判断する。





〆リュ
記事メニュー
最近更新されたスレッド
ウィキ募集バナー