1

TCP 3ウェイハンドシェイク手順をシミュレートするために一連のパケットを生成しようとしています。最初のステップは、実際の接続パケットをキャプチャし、同じマシンから同じパケットを再送信しようとすることですが、機能しませんでした。初めに。

最後に、tcpdumpでキャプチャしたパケットが、コンピューターが送信したものと正確に一致しないことがわかりました。TCPのチェックサムフィールドが変更され、TCPチェックサムが正しくない場合でもtcp接続を確立できると思いました。

だから私の質問は、チェックサムフィールドはどのように計算されるのですか?tcpdumpまたはハードウェアによって変更されていますか?なぜ変更されるのですか?tcpdumpのバグですか?または、計算が省略されているためです。

以下は、ホストマシンと仮想マシンからキャプチャしたスクリーンショットです。異なるネットマシンでキャプチャされた同じパケットは、TCPチェックサムを除いてすべて同じであることがわかります。

小さなウィンドウは私の仮想マシンです。ホストからのコマンド「ssh10.82.25.138」を使用してこれらのパケットを生成しました

ここに画像の説明を入力してください

4

1 に答える 1

8

表示されているのは、チェックサム オフロードの結果である可能性があります。Wireshark wiki ( http://wiki.wireshark.org/CaptureSetup/Offloading ) から引用するには:

最近のほとんどのオペレーティング システムは、ネットワーク処理の一部が CPU ではなく NIC で行われる、何らかの形式のネットワーク オフロードをサポートしています。通常、これは素晴らしいことです。システムの残りのリソースを解放し、より多くの接続を処理できるようにします。トラフィックをキャプチャしようとすると、誤ったエラーが発生したり、奇妙なトラフィックや欠落したトラフィックが発生したりする可能性があります。

チェックサム オフロードをサポートするシステムでは、IP、TCP、および UDP チェックサムは、ネットワーク上で送信される直前に NIC で計算されます。Wireshark では、これらは、黒と赤のテキストでマークされた送信パケットとして表示され、メモ [正しくありません。xxxx である必要があります (「TCP チェックサム オフロード」が原因である可能性がありますか?)]。

Wireshark は、パケットがネットワーク アダプタに送信される前にキャプチャします。まだ計算されていないため、正しいチェックサムは表示されません。さらに悪いことに、ほとんどの OS はわざわざこのデータを初期化しません。

これは Wireshark の場合ですが、同じ原則が適用されます。ホスト マシンでは、まだ入力されていないため、間違ったチェックサムが表示されます。「ワイヤ」に送信される前に入力されるため、ゲストでは正しく見えます。このトラフィックを処理しているインターフェースでチェックサムオフロードを無効にしてみてください。

ethtool -K eth0 rx off tx off

eth0の場合。

于 2013-03-21T03:39:24.703 に答える