こんにちは😀
今回は、データ誤り制御に関してまとめました。
データはネットワーク上で「0」か「1」を電気信号で送るわけですが、電気信号の波形の乱れでデータ誤りが発生することがあります。
そのデータの誤りをパリティチェックやCRCという手法を用いて、誤りを判定したり訂正したりします。
パリティチェックに関して
送信するビット列に対して、パリティビットと呼ばれる検査用のビットを追加することでデータの誤りを検出する方法をパリティチェックと呼びます。
パリティビットを追加する方法は、以下の2種類あります。
偶数パリティ
ビット列の中の「1」の数が偶数になるように、ビット列の先頭に「0」か「1」を追加します。
奇数パリティ
ビット列の中の「1」の数が奇数になるように、ビット列の先頭に「0」か「1」を追加します。
パリティチェックで可能なのは、1ビットの誤りを検出することなので、偶数個のビット誤りだと検出できません。
誤り箇所も特定できないので、誤り訂正もできません。
水平垂直パリティチェック
パリティビットは、どの方向にビットを付加するかによって垂直パリティと水平パリティに分かれます。
水平パリティ
データを並べた時の各ビット位置の単位で付加します。
垂直パリティ
データ単位で付加します。
水平垂直パリティ
上記2つのパリティを組み合わせて使用します。
水平と垂直のパリティチェックを行うことで、交差部分の誤りがわかり誤り訂正が行えます。
CRCに関して
ビット列を特定の式で割り、その余りをチェック用のデータとして付加する方法をCRC(Cyclic Redundancy Check)と呼びます。
この割るのに使用する特定の式を生成多項式といいます。
送信データを生成多項式で割った余りがチェック用のデータとなります。
送信側は、チェック用のデータを元々のビット列にくっつけて送信データとします。
データを受信した側は、送信側と同一の生成多項式を使用して、受信データを割り算し、正常に計算ができるかでデータ誤りを判定します。
この方式では、データの誤り訂正は行えませんが、連続したビットの誤りなど、複数ビットの誤りを検出することができます。
ハミング符号に関して
ビット列に対して検査用の冗長ビットを付加することで、2ビットまでの誤り検出と、1ビットの誤りを訂正できるようにしたものをハミング符号といいます。
ハミング符号では、元のビット列から次のように異なる組み合わせパターンを作り、それぞれの排他的論理和を求めることで、検査用の冗長ビット列を算出します。
今回はここまで🤚
では、また次回。