0

どの応答パケットがどの要求パケットに対するものであるかを区別する Java (jpcap) アプリケーションを作成していました。突然、ブラウザーがまったく同じ (seq 番号、ack 番号など) を送信したこれら 2 つの http パケットに遭遇しましたが、そのうちの 1 つはプッシュ フラグと異なる識別番号を持っています。なぜブラウザがこれら2つを送信したのか疑問に思っていましたか?アヤックスですか?

1342824149:911270 /192.168.2.#->/174.143.213.# protocol(6) priority(0)  hop(128)  offset(0) ident(14123) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542 

1342824149:911797 /192.168.2.#->/174.143.213.# protocol(6) priority(0)  hop(128)  offset(0) ident(14124) TCP 11303 > 80 seq(2473817076) win(17040) ack 3940549542  P

さらに重要な質問は、これら 2 つのパケットに対して個別の応答があるかどうかです。それとも1つの応答しかありませんか?または同じ応答?そして、どのような応答がどのように見えるでしょうか?

4

2 に答える 2

1

ブラウザは、「ポート Y で IP アドレス X に接続してください」と「これらのバイトを送信してください」と言うだけです。実際にパケットを作成し、宛先に確実に到達させるのは、カーネル内の TCP/IP スタックです。この場合、最初のパケットが宛先によって確認されなかったため、カーネルの TCP コードが再度送信しました。

于 2012-07-22T17:12:06.453 に答える
0

それらが同じ TCP シーケンス番号を持っている場合、それらは同じデータです。2 つ目は、非確認による再試行です。PUSH フラグは、おそらくルーター以外では何もしません。異なる Wireshark 番号は、実際の受信イベントが異なるためです。パケットには含まれていません。

于 2012-07-22T01:56:37.273 に答える