1

ネットワーク経由で複数のデータのチャンクを単純に連結して送信したいのですが、チェックサムを使用して、すべてが正常に完了したことを確認できるようにしたいと考えています (これは主に、バグに対する防御チェックとして意図されています)。 、実際の低レベルのデータ破損を見た、または予想したからではありません)。そのため、部分のチェックサムから全体のチェックサムを計算できるチェックサムアルゴリズムを探しています。

私がうまくいくと思うそのような手法の簡単な例の 1 つは、各チャンクの各バイトを整数として扱い、それらの整数をすべて加算することです (もちろん、ゼロバイトの欠落は検出されません)。もう 1 つは、各チャンクの長さを計算することです (もちろん、ネットの挿入や削除を引き起こさないデータ変更は検出されません)。もう 1 つは、すべてのバイトを一緒に XOR することだと思いますが、これは 1 バイトのチェックサムしか生成できません (一度に 4 バイトを取得し、それらの単位ごとに XOR を使用できますが、チャンクの長さが「 t が 4 の倍数であると、混乱状態に陥る必要があり、おそらく異なるチャンクを単純に連結する機能が失われると思います)。

したがって、各チャンクのチェックサムが与えられた場合に、連結されたいくつかのチャンクのチェックサムを簡単に計算できる、より深刻なチェックサムまたはハッシュ アルゴリズムを探しています。存在しますか?

4

1 に答える 1

0

TCPを介してメッセージを正しく転送するには、プロトコルが必要です。このプロトコルは、メッセージの開始、終了、またはできれば両方を定義する必要があります。これは、メッセージの長さを常に知っていることを意味します。プロトコルがメッセージの最初に長さを置き、最後に整数チェックサムを置く場合、送信されたチェックサムがストリーム内の間違ったバイトから回復され、平均して65535になるため、欠落しているゼロバイトが検出されます。 65536のうちのタイムアウト。

于 2012-04-23T00:41:56.063 に答える