9-2 伝送制御

伝送制御とは

 伝送制御とは、データが送信側から受信側へ、効率的かつ正確に送られるようにするためのプロセスやプロトコル(通信規約)を指します。具体的には、
回線制御 ・・・ 回線の接続や切断
データリンク制御 ・・・ データリンク(論理的な通信路)の確立や解放
誤り制御 ・・・ データ単位の確実な送受信
フロー制御 ・・・ データ内容の検証や訂正
                      などが含まれます。

同期制御

データの開始と終了を判断し、双方の間で伝送のタイミングを合わせる制御です。同期制御方式には次のようなものがあります。

①調歩(ちょうほ)同期

 1文字単位で同期を取る方式です。非同期方式とも呼ばれることもあります。調歩同期では、1文字の前後にはスタートビットとストップビットを付与して送信します。

②フレーム同期

 フラグシーケンスと呼ばれるパターン(011111110)で囲まれたフレームという単位でデータを伝送する方式です。

誤り制御

 送信データは伝送中にノイズなどの影響を受けて、誤った内容で受信されてしまうことがあります。この誤りを検出し、最終的には正しいデータを受信できるようにするのが誤り制御の役割です。
 誤りの検出には、大きく分けてパリティ検査(奇偶検査)とCRC方式(生成多項式による高精度な検出)があります。

①パリティ検査

 パリティビットという1ビットのデータを付加して誤りを検出します。

データは1と0のビット列で構成されています。その中の1の数が偶数もしくは奇数になるようパリティビットで調整することで、1ビットの誤りが生じたとき、「1の数が偶数(奇数)になっていないぞ?」という要領でデータの誤りを検出できるようになるのです。

シンプルな検出方法ですが、以下の欠点があります。
・2ビット以上の誤りが生じたときは検出できない
・誤りがあるビットを特定できない

 

②水平垂直パリティ検査

 パリティチェックは誤り検出だけでしたが、誤り訂正も行うための手法が「水平垂直パリティチェック」になります。

この手法は伝送するデータを文字などの単位に区切って並べて、区切ったデータ単位とビットの位置単位でそれぞれパリティビットを付加します。

<水平垂直パリティ>

  • 垂直パリティデータ単位でパリティビットを付加する
  • 水平パリティ:データを並べた時の各ビット位置単位でパリティビットを付加する

この二つのパリティを組み合わせると縦横両面から誤りを検出できるようになるので、1ビットの誤りであれば、誤りの位置を特定することができ、そこの誤り訂正ができます。

水平パリティと垂直パリティがおかしかった場合に、そのデータ列の交差部分に誤りがある、ということになります。
 ただし、2ビット以上の誤りになってしまうと位置の特定ができなくなるので、その場合は誤り訂正ができない、ということも覚えておいた方が良いです。

③CRC(巡回冗長検査)

 複数のビットに誤りが発生していた時はどのように検出したら良いのでしょうか?

その解決方法として、「CRC(Cyclic Redundancy Check):巡回冗長検査」があります。

これは伝送するデータのビット列を「生成多項式」と呼ばれる特定の式で割り、計算結果の余りをチェック用のデータとして付加する方法です。

データの送信側は計算で求められた余りを、元々のビット列に付加して送信します。

これにより、伝送後のデータは誤りが無ければ、同じ生成多項式で割った時に余りが無い、つまり割り切れる数になります。

もしも余りが出た場合は「誤りがある」ということで、誤りを検出できることになります。

CRCはパリティチェックと同じくデータの誤り訂正は行えないのですが、連続したビットの誤り(バースト誤り)を検出することができることがメリットです。

フロー制御(流れ制御)

 フロー制御とは、データ通信において、受信側の処理能力に合わせて送信側のデータ送信速度を調整し、データの取りこぼしを防ぐ仕組みのことです。受信側が送信側に「今、データを送らないでほしい」という信号(ACK:肯定応答)を送ることで、送信側はデータの送信を一時的に停止したり、速度を落としたりします。これにより、受信側のバッファオーバーフローやデータ損失を防ぎ、安定した通信を維持します。

応答を待つと効率が悪い!
連続であれば効率が良い