18

醜い用語「巡回冗長検査」の概念と仕組みを理解するのに苦労しています。私はコンピュータネットワークの大学のコースに参加していますが、すでに道に迷っています。

問題は、私の数学の理解が非常に限られていることです(ずっと前に学校で数学を勉強し、そのほとんどを忘れていました)。たとえば、生成多項式が何であるか、多項式がCRCと何の関係があるのか​​を知ることができません。要約すると、それはすべて私にはまったく理解できないようです。

CRCに関するwikiエントリを読みましたが、数学が苦手で、これらの記号や数学用語はすべて中国語に似ているため、役に立ちませんでした。

ネットワーク上でデータを送信する際のエラー検出にCRCが使用されていることは理解していますが、それ以降は迷子になります。

誰かがこの概念を簡単な言葉で説明するのを手伝ってくれて、おそらく例を挙げてもらえますか?

前回の講義で、教授はこれらすべての1と0を描き始め、分割しました。何がわからないので、私はただ見つめて愚かでした。

誰もが私を理解するのを手伝ってくれることをとても感謝しています!

4

1 に答える 1

35

答えを非常に単純にしたい場合は、過度の単純化を受け入れる必要があります。それを受け入れたい場合は、次のようになります。

データは不完全なリンクを介して送信されます-途中でエラーが発生する可能性があります。受信した情報が送信された情報と同じであることを、帯域幅を無駄にせずに確認したいとします。どうすればよいでしょうか。

すべての情報を2回送信することができ、受信側で最初の情報が2番目の情報と異なることがわかり、エラーが発生したことがわかっているため、データを再度要求する必要がありますが、これは非常に無駄になります。帯域幅を効果的に半分に削減します。

では、データ自体よりもはるかに小さいが、それに依存している値を計算できるとしたらどうでしょうか。したがって、データが途中で変更された場合(エラーのため)、計算された値はデータと「一致」しなくなり、エラーが発生したことがわかります。そのような計算はありますか?

単純な除算と余りをこの値として取るのはどうですか?

情報/番号1,000を送信したいとします。選択した数値で除算します。たとえば、6のように、166と余りは4になります。余りは、実際に送信している情報よりもはるかに小さいチェック値と見なすため、無駄にはなりません。帯域幅が多すぎるため、1,000の後に4を送信します。受信者はそれを取得し、1,000を6で割った数を取り、余りが4の場合、エラーは発生していないと見なします。

エラーが発生し、リンクのエラーが原因で1,000ではなく998を受け取る場合は、6で除算し、4と一致しない2の余りを取得し、violaはエラーが発生したことを認識します。それがCRCの基本原理です。

もちろん、多項式で除算するので少し複雑ですが、余りを「データを表す短い値」として使用して、同じようにエラーをチェックするという原則があります。

これが、何が起こっているのかを頭に入れておくのに役立つことを願っています;)

于 2012-03-12T23:37:04.083 に答える