データ通信において、信頼性を確保するために「誤り制御」という技術が使われます。
この記事では、誤り制御の基本から、さまざまな誤り検出方法について詳しく解説します。
誤り制御とは
誤り制御とは、データ通信の際に生じる誤りを検出し、必要に応じて修正するための一連の技術のことを指します。
ネットワーク上でデータが送信される際、ノイズや信号劣化によって誤りが発生する可能性があります。
このような誤りを未然に検出し、場合によっては自動的に修正することで、受信者が正確なデータを受け取れるようにする仕組みが「誤り制御」です。
誤り検出の種類
誤り検出の主な方法には、「パリティチェック」や「CRC」などがあります。
これらの技術は、送信データにチェック情報を追加し、受信側でデータを検証することで誤りを検出します。
以下では、それぞれの誤り検出方法について詳しく説明します。
パリティチェック
パリティチェックは、データにビットを追加して「偶数」または「奇数」になるようにし、受信側でデータの整合性を確認するシンプルな誤り検出法です。
パリティチェックにはいくつかの種類があります。
垂直パリティ
垂直パリティは、各データバイトに対して1ビットのパリティビットを追加する方法です。
このビットは、各バイトが偶数または奇数のビット数になるように調整されます。例えば、データが 1011 0101
というバイトであれば、全ビット数が偶数になるようにパリティビットを追加し、1011 01010
という形で送信します。
受信側はこのパリティビットを確認することで、単一のビット誤りを検出できますが、2ビット以上の誤りには対応できません。
水平パリティ
水平パリティは、データの各行(水平)に対してパリティビットを設定する方法です。
複数のデータ行がある場合、各行ごとに偶数または奇数のビット数になるようにパリティビットが追加されます。
これにより、特定の行でのビット誤りを検出できるようになりますが、複数行にわたる誤りには対応が難しい場合があります。
水平垂直パリティ
水平垂直パリティは、垂直と水平の両方のパリティを使用する方法です。
データを二次元に並べて、各行および各列にパリティビットを追加することで、より多くの誤りを検出できるようにします。
この方法では、特に1ビットの誤りを特定しやすく、より高い精度で誤りを検出できる利点があります。
CRC(循環冗長検査)
CRC(Cyclic Redundancy Check:循環冗長検査)は、データの誤り検出に使われる非常に強力な方法です。CRCはデータのビット列を特定の数値(多項式)で割り算し、余りをチェック値としてデータに付加します。受信側でも同じ計算を行い、チェック値が一致するかどうかを確認することで、データに誤りがないかを判定します。CRCはパリティチェックと比べて誤り検出精度が非常に高く、多くのネットワークプロトコルで採用されています。
まとめ
データ通信の信頼性を確保するための「誤り制御」は、通信エラーを検出・修正する重要な技術です。
パリティチェックやCRCなど、様々な誤り検出技術が存在し、それぞれに特長と適用範囲があります。
用途に応じて適切な方法を選ぶことで、効率的かつ正確なデータ通信が可能となります。
コメント