衝突
コンピューターサイエンスでは、「衝突」には2つの異なる意味があります。1つは、2つ以上のデータの集合が変更され、同じ結果の値を生成する場合に発生します。もう1つはネットワークに特有のもので、2台のデバイスが同時にデータを送信したときに発生します。
1. データの衝突
データの衝突は、データをハッシュ化するときや、チェックサムを計算するときに発生することがあります。ハッシュ関数はデータをより小さな値に変換するもので、圧縮や暗号技術でよく使用されます。ハッシュ処理によってディスク容量を節約できる一方で、2つの異なる入力が同じ出力を生成する可能性があります。衝突が発生したときに重複する値を避けるため、複数のハッシュ関数を使用できます。
同様に、チェックサムは元のデータより小さいため、一意であることが保証されていません。確率は非常に低いことが多いものの、理論上は2つの異なるデータ集合が同じチェックサム値を生成する可能性があります。適切に設計されたアルゴリズムは、このリスクを最小限に抑える必要があります。
2. ネットワークの衝突
ネットワークの衝突は、2台以上のデバイスがネットワーク経由で同時にデータを送信しようとしたときに発生します。たとえば、イーサネットネットワーク上の2台のコンピューターがまったく同じ瞬間にデータを送信すると、データが「衝突」して送信が完了しません。このため、ほとんどのネットワークプロトコルは、追加のデータを送信する前にパケットが受信されたことを確認します。
スイッチやルーターは、データを送信する前に伝送路がアイドル状態か、または「使用中」かを確認することで、衝突を減らせます。一般的な方法に、CSMA/CD、つまり「Carrier-sense multiple access with collision avoidance」があります。衝突を減らすことはできますが、完全に避けることはできません。たとえば、2つのシステムが伝送路がアイドル状態だと判断し、まったく同じ時刻にデータを送信すると、衝突が発生する可能性があります。これは、ランダムな遅延の後にデータを再送信することで解決できます。
知識をテストする