データ伝送web講座

3. 汎用インターフェース

line

3.3. パソコン等のインターフェース

3.3.(2-D) H D L C

3.3.(2-D-a) 概   要

◆ フレーム単位の伝送の、代表的汎用プロトコルに、HDLC があります。HDLC は、ブロードで多く使用されています。HDLC 用のLSI(たとえばμPD7201A) がありますから、ローカルのシステムにも利用されています。
HDLC は、ハイレベル手順 とも言い、文字通り、キャラクタ単位伝送のプロトコルと比べて、ハイレベルで信頼性が高いプロトコルです。フレームのデータ長さは任意で透過性があります。キャラクタ単位である必要はありません。もちろん、キャラクタ単位で使用することも可能です。
◆ HDLC は、親子式のネットワーク伝送をサポートします(図.51)。

[図.51] 親子式ネットワークが可能

親子式ネットワークが可能

◆ HDLC では、親を 1 次局 、子を 2 次局 と呼びます。
HDLC のフレームフォーマットを図.52 に示します。

[図.52] HDLC のフレームフォーマット

HDLCのフレームフォーマット

(a) フラグシーケンス : フレームの開始と終了とを識別する同期パターンです。
(b) アドレス部 : HDLC は、親子式ネットワークで使用できます。親局が子局に送るときも、子局が親局に送るときも、アドレス部には、子局のアドレスが入ります。
子局は、送られてきたフレームのアドレス部を調べ、自分のアドレスと一致したときのみ、そのフレームを受信します。親局は、自分が送信したフレーム以外は、すべて子局から送られてきたものですから、それを受信します。アドレス部によって、どの子局から送られてきたのか分かります。
アドレス部は、8 ビットですが、子局の数は最大 254 局です(アドレス部を 16 ビットに拡張して子局数を増やすことも可能です)。
(c) 制御部 : 制御情報が入ります。この制御部の情報によって、プロトコルが実行されます。
(d) 情報部 : データが入ります。データ部がゼロのフレームが存在します。データ部がゼロのフレームは、制御だけの目的に使用されます。任意のビットパターン、任意の長さが可能です。
(e) フレーム検査シーケンス : 伝送誤り制御用のチェックコードです。CRC と呼ばれる、誤り制御能力の高い優れた方式を使用しています(コラム 3.6 参照)。HDLC では、アドレス部から情報部までを、チェックの対象としています。すなわち、アドレス部も、制御部もチェックされます。

[コラム.3.6] C R C

★ 伝送誤り制御において、誤りを検出するために、元のデータに付け加える情報をチェックコード といいます。チェックコードの種類は多数あります。コードの長さも色々で、伝送誤り検出能力も異なります。
★ 伝送誤りの発生は、確率現象です。誤り発生の確率を伝送誤り率 といい、システムや、環境条件によって異なります。誤りの検出もまた確率現象であり、誤りを 100% 検出することはできません。パリティの例を示します。

判定を誤る

★ 誤りがあったにも関わらず、誤り無しと判定してしまうことを,誤り見逃し といい、これも確率です。
★ 誤り発生状況も、誤り発生の原因によって、大きく 2 つに分けられます。一般に多いのは、発生確率がほぼ一定のランダム誤りです。誤り発生原因によっては、1 度誤りが発生すると引き続いて誤りが発生するものもあります。このような誤りをバースト誤りといいます。

バースト誤りの定義

Nビットの中間が誤りであっても正しくても、両端に誤りがあるときが、Nビットのバースト誤りです。

★ CRC は、伝送誤り制御用のチェックコードとして利用されているコードです。CRC は、データを 2 進数とみなして、ある特定の 2 進数で割り算を行って、その余りとして求まります。具体例で示します。

データとその代数式表現
例題に用いる値
CRCの計算
チェック

★ データを、代数式で、(a) のように表します。CRC の対象となるデータをメッセージ多項式 、割り算を行う除数を生成多項式 と呼びます。CRC の計算を例題で示し値を(b)のように取ります。被除数は、メッセージ多項式ですが、(c)のように予め桁数を調整します。(d) のように割り算を実行して、余り(BCC)を求めます。データの後に、チェックコード(BCC)を付け加えますから、チェックコードを含む送信内容は(e)となります。
★ (f)は、受信部における、チェックのやり方を示します。チェックコードを含む受信データを、生成多項式で割ります。割り算の結果、余りがゼロであれば、誤り無しと判定します。
CRC の生成多項式は任意の数ですから、具体的な CRC は無数に存在します。誤り検出能力も、高低色々です。この中で生成多項式の桁数が比較的短くて、誤り制御能力が高いものを利用します。具体的には、HDLC では、CRC-CCITT と呼ばれている、生成多項式が、
     P(X) = X16 + X12 + X2 + 1
のものが使用されています。
★ 一般論として、生成多項式の桁数が長いほうが、誤り制御能力が高くなります。しかし、長さが同じでも、優劣があります。誤り検出能力は、ランダム誤りとバースト誤りに対してとでは異なります。
★ パリティチェックも、生成多項式が、P(X) = X + 1 の CRC ですが、誤り制御能力は、極めて低いのです。
CRC は、誤り制御能力が高いと言われています。しかし、パリティチェックの例から分かるように、CRC だから優れているということはありません。CRC の中に優れたものがあり、それが使用されているということです。




3.3.(2-D-b) ゼロインサート

◆ HDLC では、データの完全な透過性を保証し、かつ信頼性の高い伝送を行うために、ゼロインサート と呼ばれることを行っています。HDLC フレーム同期パターンであるフラグシーケンスのビットパターンは、「01111110」です。もしアドレス部等を含むデータ部分にフラグシーケンスと同じビットパターンがあれば、それをフラグシーケンスと誤認してしまいます(図.53)。

[図.53] フラグの誤認

フラグの誤認

◆ ゼロインサートは、これを防止します。伝送路中のデータ部分の中では、「1」が、6 ビット以上続くことが無いようにします。すなわち、データ部分で 1 が 5ビット連続したときは、ゼロを挿入してから送信します(図.54)。

[図.54] ゼロインサート(送信側)

ゼロインサート(送信側)

◆ 受信側では、インサートされたゼロを取り除いて、元のデータに戻します(図.55)。

[図.55] ゼロリムーブ(受信側)

ゼロリムーブ(受信側)

◆ フレームを送っていないときは、1 を連続して送ります。1 が 7ビット以上連続した状態をアボート といいます。フレームを送っていないときには、アボートが正常状態です。しかし受信側で、フレームの途中で、フラグシーケンスでなくアボートを検出したときは、異常と判定して、受信を中止します。
◆ 以上に説明した以外にも、各種の異常状態がありますが、伝送がハングアップしないように、信頼性の高い処理が行われます。
データ伝送においては、伝送がハングアップすることは好ましくない現象です。異常発生のために、伝送続行が不可能となった場合においても、プロトコルソフトは、伝送を終了させ、それをユーザーソフトに通知する必要があります。

3.3.(2-D-c) 制 御 部

◆ 制御部の内容を、図.56 に示します。

[図.56] 制御部の内容

制御部の内容

◆ フレームは、情報(I)フレーム 監視(S)フレーム 非番号制(U)フレー ムの 3 種類あり、制御部のb1、b2で区別します。情報フレームには、情報部があり、データを送るフレームです。監視フレームと非番号制フレームは、情報部が無い制御フレームです。
監視フレームと非番号制フレームは、それぞれ複数種類あり、S(b3、b4)と M(b3、b4、b6、b7、b8)によって、種類が識別されます。
◆ N(S)、N(R) は、順序番号 です。情報フレームがデータを送信するときに、フレームごとに、送信の順序を示す、順序番号 N(S) を付けて送ります。フレームが相手に到着しない、同じものを2 度受ける、送信したのと異なった順番で受け取るなどの、異常が発生することがあり得ます。受信側で、順序番号 N(S) をチェックすることによって、これらの異常を検出することができます。
◆ N(R) は、受信側から送信側に対する順序番号です(使い方は次項参照)。
b5の P/F ビットは、複数のフレームを連続して送信しているときに、1 を立てることによって、最終フレームであることを示します。

3.3.(2-D-d) 伝送の手順

◆ HDLC は、各種各様の使い方に対応しており、その伝送方式は、6 種類のモード に分類されています。その中で、最も基本的な正規応答モードと呼ばれる手順について、簡単に説明します。このモードは、ポーリング/セレクション方式で動作します。ポーリングの場合の手順を図.57 に示します。

[図.57] 正規応答モードにおけるポーリング

正規応答モードにおけるポーリング

(1) SNRM は非番号制フレームで、子局に対する接続要求です。単なる接続要求ではなく、正規応答モードであることを指定しています。
(2) 子局は、ACK を意味する非番号制フレーム UA を返します。この(1)、(2)のやり取りが回線接続処理です。
(3) RR は、ポーリングを意味する監視フレームです。N(R)=0 は、順序番号 0 の情報(I)フレームを要求していることを示します。
(4) 子局は、送信データあるときは、N(S)=0 で、順序番号 0 の I フレームを送信します。ポーリングされたが送信データが無いときは、子局は、N(R)=0 の RR フレームを返します。これは、親局に対して、送信データが無いという意思表示です。
(5)この例では、(4)で、子局から I フレームを送りました。親局は、このデータを受け入れて、次のポーリングを行います。順序番号 NR=(1) です。もし、子局からのフレームに誤りがあれば、再送要求を行います。順序番号 NR=(0) とすることによって、再送要求であることを示します。
(6) 子局は、N(R)=1 のポーリング要求に対して、N(S)=1 の I フレームを送ります。以下これを繰り返します。この例から分かるように、ACK/NAKのやり取りはありませんが、順序番号を利用することによって、肯定/否定を表しています。
◆ 一連の伝送が終了すれば、切断処理に入ります(図.58)。

[図.58] 切断処理

切断処理

DISC は切断要求の非番号制フレームです。子局は、切断要求を受け入れたことを示す ACK(UA)を返します。

3.3.(2-D-e) S D L C

◆ HDLC では、ありませんが、HDLC とよく似たプロトコルに、SDLC があります。SDLC は、IBM が開発したプロトコルで、HDLC の基礎となったプロトコルです。SDLC には、HDLC にはない、独自のゴーアヘッドポーリングと呼ばれる機能があります。通常のポーリングよりも、効率が高い方式です。ただし、ネットワークのトポロジが、ループであることが必要です(図.59)。

[図.59] ループであることが必要

ループであることが必要

目次に戻る   前に戻る   次に進む