• 締切済み

TCP/IPで同じパケットが2つ送信される。なぜ?

Windows8 PC上のブラウザから、LAN上の機器(HTTPサーバ)にアクセスしようとしています。 Wiresharkでそのときの通信を覗いてみると、PCから送信されるパケットはなぜか2回同じものが短時間の間に連続して送信されているようです。その理由に心当たりがある方がいらっしゃいましたら、教えて下さいませんか? また、設定で回避できるのであれば、その設定項目などもわかるとありがたいです。 詳しい状況です。Wiresharkのキャプチャ画像と合わせて見て下さい。 *PC側IPは192.168.0.12、HTTPサーバは192.168.0.18です。 *Wiresharkでは、パケット6と7、9と11、10と12、14と15は内容的に同じパケットのようです(seqとackが同じ) *同じパケットのうち、前の方のパケットではIPパケットのチェックサムが0000hとなっているようです(チェックサムオフロード?)。後の方のパケットには、具体的なチェックサムの値が入っています。 *前のパケットが短い場合(54バイトとか)、後のパケットにはパディングとして00hが追加されて、60バイト長となるようです。それ以上の長さのパケットは、前述のチェックサム以外には違いは見られません。 *同じ2つのパケットは、極短い期間で連続して送信されているので、HTTPサーバからの応答タイムアウトで再送しているという風には思えないです。 *PC側のブラウザは、ChromeでもIEでも同じように2つの同じパケットが送信されていました。しかし、LANの外(ルーター外のインターネット)に接続するときは、このように2つの同じパケットはWiresharkで見ると出ていないようです。 *ちなみに、PC側のLANはRealtekのGigabit Ether(有線)です。 よろしくお願いいたします。

みんなの回答

  • maesen
  • ベストアンサー率81% (646/790)
回答No.1

見当違いであったら申し訳ありません。 >*同じパケットのうち、前の方のパケットではIPパケットのチェックサムが0000hとなっているようです(チェックサムオフロード?)。後の方のパケットには、具体的なチェックサムの値が入っています。 TCPチェックサム・オフロードにより、チェックサムはネットワークアダプタに任せるのでパケット送出時にwireshakがキャプチャしたタイミングではチェックサムは付かないが、これは通常の動作。 後のパケットではチェックサムが付いているのでネットワークアダプタから送出された後のパケットがキャプチャされたことになる。 >*前のパケットが短い場合(54バイトとか)、後のパケットにはパディングとして00hが追加されて、60バイト長となるようです。それ以上の長さのパケットは、前述のチェックサム以外には違いは見られません。 上記と同様にキャプチャのタイミングではパティングが付かない。 後のパケットではパディングされているのでネットワークアダプタから送出された後のパケットがキャプチャされたことになる。 これらのことから、自分が送出したパケットがどこかで回り込んで自分自身に返ってきているのを拾っているように思える。 >しかし、LANの外(ルーター外のインターネット)に接続するときは、このように2つの同じパケットはWiresharkで見ると出ていないようです。 このことから、PCとルータ間は問題ないように思えるので、 PCからHTTPサーバまでの経路にある機器(サーバ、スイッチとかケーブルなど)に原因がありそうに思います。 PC同士はどうか、スイッチ等を変えたらどうか、ケーブルを変えたらどうか、など原因箇所を絞っていく必要がありそうです。 あとTCP以外のプロトコルはどうなんだろか。

haniriito
質問者

お礼

maesenさん、コメントありがとうございます。 >これらのことから、自分が送出したパケットがどこかで回り込んで自分自身に返ってきているのを拾っているように思える。 これを聞いてはたと思いました。 Wireshark上で、パケットのsourceアドレスが自IPだからといって、必ずしも自分が出したパケットとは限らないということですね。まして、Wiresharkはプロミスキャスモードを使って、自MAC宛て以外のパケットも拾っているようですし。 そう言えば、Netgearのsmartスイッチを使っていました。ポートVLANも設定しているので、その辺りの設定やLANケーブルの接続経路の関係で、チェックサムオフロードで送信したパケットが、チェックサムと長さが補完されて自分に戻ってきている可能性は大です。 LANの外のネットワークにアクセスするときは、別のVLANにルーティングしているので、パケットが二重にならないのはそういう違いがありそうです。 いま実機で確認できないので、後ほど検証してみます。 ありがとうございました。 ちなみに... >あとTCP以外のプロトコルはどうなんだろか。 PINGも試していたのですが、こちらはパケットが2つ送信されることはなかったです。

関連するQ&A