巡回冗長検査(CRC: Cyclic Redundancy Check)とは、データ通信や保存時に、送信データが正しく送受信・保存されたかを検出するための技術です。送信側がデータから計算した「CRC値」という付加情報と、受信側が同じデータに対して再計算したCRC値が一致するかを照合することでエラーを検出します。
CRCの仕組み
- 送信側:送信するデータに、特定の「生成多項式」と呼ばれる数式を用いて除算を行い、その「余り」をCRC値(検査データ)として付加し、データと共に送信します。
- 受信側:送られてきたデータからCRC値を分離し、残りのデータに対して送信側と同じ生成多項式で割り算を行います。
- 照合:割り算で得られた余り(受信側で再計算したCRC値)が、送信側から送られてきたCRC値と一致すれば、データにエラーはなかったと判断します。一致しない場合はエラーが発生したと判断し、再送を要求するなどして対応します。
CRCの特徴
- 高い検出精度:単純なチェックサムと比較して、ランダムなビット誤りやバースト誤り(連続したビットの誤り)の検出精度が高いです。
- エラー訂正機能はない:CRCはあくまでもエラーを「検出」するものであり、「訂正」する機能はありません。
- 用途:HDLCなどの通信手順、CSMA/CD方式、イーサネット、ZIPやPNGといったデータ形式など、幅広い分野で使われています。
- CRCエラー:CRC機能によってエラーが検出されると、一般的に「CRCエラー」と表示されます。これは、データが破損している可能性が高く、その原因が物理的な障害であることも多いとされています。

コメント