誤り制御とは?基本情報技術者試験の重要ポイント解説

更新日:2022年1月14日

部品を見ている男性

ネットワークを介してコンピュータ間で通信を行う際には、物理的な理由や通信上の理由により、通信誤りが必ず発生します。そこで、ネットワーク通信においては様々なレイアーで誤り制御が行われており、正しいデータ転送ができるように工夫されています。

この記事では、基本情報技術者試験の対策として誤りについての解説を行います。

目次

誤り制御とは

誤り制御とは、コンピュータ間通信の途中で失われた情報や壊れた情報を検知し、適切な状態に修正することを指します。コンピュータ間通信では必ずエラーが発生するため、誤り制御が必須となります。

コンピュータ間通信において誤りが発生する理由はいくつかあります。まずは、主に物理的な回線での雑音などの混入が発生するケースです。ケーブルや無線での通信においてデータは0または1の形で転送されています。この0と1は、ケーブルを通る電圧の違いにより表現されますが、この電圧が雑音により乱れてしまい、0であった情報が1として判断されたり、その反対が起きたりするのです。

また、通信の断絶などを理由としてデータの抜けが発生するケースもあります。特に回線やネットワーク機器が混雑しているケースなどでは、ネットワーク通信中にパケットロスすることがあります。

これらのような誤りを制御し、正しいデータとするためにコンピュータ間通信においては誤り制御が必要となるのです。

誤り制御を行うタイミング

誤り制御は、OSI基本参照モデルの階層構造のうち、主にデータリンク層とトランスポート層で実施されます。以下ではそれぞれの階層での誤り制御の内容について解説します。

データリンク層

データリンク層では、コンピュータ間で通信されるフレームの誤り検知を行います。データリンク層で検知されるのは、主に通信で発生した物理的な誤りが対象です。上述の通り、ケーブルや無線通信においては必ず誤りが発生するため、誤りを検知した場合は相手の端末に再送要求を行い、正しいデータとなるように修正します。

トランスポート層

トランスポート層では、主にTCPなどのプロトコルにおいてコンピュータ間通信の誤り検知を行います。上述の通り、パケットロスなどを原因として、転送するデータの一部が欠損することがあります。ファイルデータなどで欠損が生じると、正しいファイルとして利用できませんので、必ず修正が必要になります。TCPプロトコルにおいては、誤りを検知した場合はパケットの再送要求を行い、転送されるデータを完全なものとします。

誤り制御の実施方法

以下では、誤り制御として用いられる手法について解説します。基本情報技術者試験では、主にデータリンク層での誤り制御に用いられる手法が出題されます。

パリティチェック

パリティチェックは、データに対してパリティビットと呼ばれる検査用のビットを追加することで誤りを検知する方法です。データリンク層で発生する主な誤りは、データビット列中の0と1が誤って送付されることであるため、パリティビットによりデータビット列の0と1の組み合わせが正しいものであるかを確認する手法が有効です。

パリティチェックはその方法により、奇数パリティと偶数パリティ、および垂直パリティと水平パリティに分かれます。対象となるビット列の1の個数が奇数である場合にパリティを0にするのが奇数パリティであり、対象となるビット列の1の個数が偶数である場合にパリティを0にするのが偶数パリティです。また、垂直パリティはデータのビット列を一定ブロックごとに分けて表のように並べたうえで、垂直方向に対してパリティビットを設ける方法で、水平パリティは同様にビット列を一定ブロックごとに分けて表のように並べたうえで、水平方向に対してパリティビットを設ける方法です。

ハミング符号方式

ハミング符号方式は、複数のチェックコードを付けることで2ビット以上の誤り検知を行えるようにする方法です。具体的には、パリティビットを複数つけることで、誤りを検知できる量を増やします。

ハミング符号の特徴は、誤りの検知だけではなく訂正もできることです。パリティチェックでは、ビット列に誤りがあるかないかしかわかりませんでしたが、ハミング符号方式では複数のパリティビットによりデータのどこに誤りが生じたかまでを特定することができます。これにより、誤り検知時に再送要求をする必要がなく、受信側でデータを訂正することができ、効率的な通信を実現できます。

CRC

CRCは、データをある式で除算した余りをチェックコードとすることで、より多くのビットの誤りを検知できるようにした方法です。日本語では巡回冗長検査とも呼ばれます。

CRCでは、事前に対象のデータに対して一定の値で除算を行い、余りを算出しておきます。そして、対象のデータを送信する際に、その値を相手に送付します。受信側は同様に対象のデータに対して除算を行い、余りを算出して受信したものと一致することを確認し、誤りがないか確かめます。

まとめ

この記事では、基本情報技術者試験を受けようとされている方に向けて、誤り制御関する内容の解説を行いました。誤り制御はコンピュータの内部処理であり、なかなか理解が難しいポイントではありますが、基本情報技術者試験では比較的出題例が多い分野となります。ぜひ、この機会にポイントを押さえておいてください。

基本情報技術者コラム一覧へ戻る