IIJでは広報誌「IIJ.news」を隔月で発行しています。本blogエントリは、IIJ.news連載コラム「インターネット・トリビア」を転載したものです。IIJ.newsはご希望者へ郵送でお送りしています。また、IIJ WebではPDF版をご覧頂けます。
IIJ.news vol.157 もくじ
- ぷろろーぐ「ぼんやりした不安」 鈴木 幸一
- 特別対談 人となり
フジサンケイグループ代表 日枝 久氏
IIJ 代表取締役社長 勝 栄二郎- Topics これだけは知っておきたいインターネットのきほん
- はじめにインターネットを活用するために
- IIJ電子@連絡帳サービスとは?
- インターネットを鉄道に喩えてみると──
- 今さら聞けない!インターネットの仕組み
~我々はインターネットにどのように接続しているのか?- 今さら聞けない!インターネット・セキュリティ
~セキュリティってどんなことに気を付ければいいの?- 今さら聞けない!DNSの世界
~WEBブラウザが通信を始める、その手前- これだけは知っておきたいインターネット・キーワード集
- 人と空気とインターネット: 三密の教え
- インターネット・トリビア: エラー検出・エラー訂正 ※この記事で掲載
- グローバル・トレンド: 上海の新型コロナウイルス対策
それぞれの記事はIIJ.news PDF版でお読み頂けます。
インターネット・トリビア: エラー検出・エラー訂正
「コンピュータは情報を正確に記録・通信できる」———— なんとなくそういう認識を持ってしまいがちですが、実は結構悩ましい問題です。
コンピュータが扱う情報をもっとも細かく分解すると「0」と「1」で表す二進数になります。情報を記録したり通信する際には、この「0」と「1」を、磁力や電気・光・電波の「ON/OFF」という物理的現象で表しています。こうした物理的現象は永久不変ではなく、外部からのノイズによって変化してしまうことがあります。例えば、電線を流れる電気は、近くに強い電気が流れると影響を受けることがあり、その結果「0」だったものが「1」に、「1」だったものが「0」に変わってしまうことがあるのです。これを「ビットエラー」と呼びます。
こうしたビットエラーが発生する確率は、昔より今のほうが高くなっています。最近のコンピュータは、記憶容量の増加や通信速度の向上に応じて、単純な ON/OFF ではなく、とても少量の電気の有無や、光・電波の波形を変化させることによって、一度に多くの情報を記録・通信しているため、些細な影響でも「0」「1」が変化してしまうのです。
もちろん、ビットエラーが起こると情報は使い物になりません。文章が読めなくなったり、画像が潰れてしまったり、場合によってはプログラムが正常に動かなくなることもあります。ですので、コンピュータや通信機器にはビットエラー対策が欠かせません。
エラー対策として、外部の磁気や電流の影響を受けないようにケーブルや部品をシールド構造にすることも行なわれています。しかし、どれだけ対策してもある程度のビットエラーが発生することは避けられません。そこで使われるのが、エラー検出・エラー訂正技術です。
「エラー検出技術」とは、データを記録したり通信する際に、そのデータが元のデータから変わっていないか(破損)を見つけるための技術です。もっとも単純な仕組みは、一定数の「0」「1」の羅列で作られたデータに対して、「1」が登場した回数が偶数か奇数かを表す情報を追加しておくというものです。例えば、「0」「1」が7つ連なるデータに対して、「1」があった個数が奇数の場合、「1」を追加して8連なりにするという方法です。もしこの8連なりのデータのなかでビットエラーが一箇所発生した場合、偶数・奇数の個数が変わって全体として整合性がとれなくなり、破損があったことが検出できます。この方法を「パリティ」と呼びます。パリティによりデータの破損を検出できますが、パリティのために余分なデータを追加しているため、データの記憶・伝送効率が低下するというデメリットもあります。またパリティでは、同時に二箇所でビットエラーが発生した場合はデータの破損を検出できないため、エラーが多発するような環境では利用できません。そういった場合は、エラーの検出精度を高めるためにより高度な手法を使いますが、データの効率はさらに低下することになります。
この考え方を進めたのが「エラー訂正技術」です。エラー訂正技術でも元のデータに余分なデータを追加するのは同様ですが、元のデータの一部にエラーがあったとしても、演算によって正しいデータを導くことができるよう、工夫がなされています。一定のルールに沿って数字を埋めていく数独というパズルがありますが、エラー訂正では数独の穴を埋めるように、破損した部分を復元できるのです。
エラー訂正は強力な技術ではありますが、それを実現するには複雑な演算が必要で、コンピュータの計算能力を余分に使います。また、エラー検出に比べると、追加しておくべき情報がさらに多くなります。そこで、実際のコンピュータのなかでは、エラー検出とエラー訂正が使い分けられています。エラーがあったとしても、もう一度情報を取り寄せればすむような場合は、エラー検出が適しています。一方、情報を再度取り寄せるのに時間がかかり、そうした遅れが許されない場合は、エラー訂正のほうが適しています。