私の大学の宿題での質問は、なぜ TCP チェックサムのビットの合計ではなく、1 の補数を使用するのかということです。私の本でそれを見つけることができず、Google も役に立ちません。誰かが私を正しい方向に向けることができますか?
ありがとう、マイク
これは宿題なので、ヒントは次のとおりです。
最初のチェックサムを含む、パケット全体の2 番目のチェックサムを計算したとします。結果を決定する数式はありますか?
おそらく最も重要なのは、エンディアンに依存しないことです。
リトル エンディアン コンピュータは、LSB を最後にして 16 進数を格納します (たとえば、Intel プロセッサ)。ビッグ エンディアン コンピュータでは、LSB が最初に配置されます (たとえば、IBM メインフレーム)。キャリーが LSB に追加されて 1 の補数の和が形成される場合、03 + 01 を追加するか 01 + 03 を追加するかは問題ではありません。結果は同じです。
その他の利点には、送信とチェックサム計算のチェックの容易さに加えて、変更された IP フィールドのみを更新することによって計算を高速化するさまざまな方法が含まれます。