ネットワーク

CRC(巡回冗長検査)とは

2024年8月30日

CRC(巡回冗長検査)

CRCとは、Cyclic Redundancy Check(巡回冗長検査)の略で、送信データと受信データが同じかどうか確認する手法です。

ネットワーク上を流れるデータは、途中でノイズなどが入ることで波形が変わり、通信相手に正しいデータが届かないことがあります。そこで、パリティチェックやCRC(巡回冗長検査)などを用いて、誤りを検出します。

CRC(巡回冗長検査)の仕組み:送信側の動き

CRC(巡回冗長検査)では、はじめに送信側と受信側で特定の値を決めます。この値を「生成多項式」と呼びます。送信側は「送信データ」を「生成多項式」で割り、その余りをチェック用として「送信データ」に付加します。

次の図は、CRC(巡回冗長検査)のイメージ例です。

CRC送信のイメージ例

送信側は、「送信データ」に計算で得られた「余り」を付加して送信します。余りを付加することで、「生成多項式」で「割り切れる数」に変わります。

CRC(巡回冗長検査)の仕組み:受信側の動き

受信側は送られてきたデータを、送信側と同じ「生成多項式」で割り算します。この時に求められた余りとデータに付加された余りを比較して、一致していればデータを正常に受信できたと判断します。

CRC受信のイメージ例1

また、余りを検証する計算方法は特に決まっていないため、データからデータに付加された余りを引き算してから「生成多項式」で割り、割り切れれば(余りがない)データを正常に受信できたと判断することもできます。

CRC受信のイメージ例2

CRC(巡回冗長検査)では、複数ビットの誤りが検出できます。ただし、データの誤り訂正は行えません。そのため、誤りが見つかった場合は、データの再送を要求します。

helpful