2

Windows クライアントであると思われるものからのトラフィック キャプチャがあります。Wireshark によって「TCP Keep-Alive」として識別されるものを時々送信することに気付きましたが、単に ACK を設定してデータを送信しない代わりに、SEQ を 1 オクテットバックアップしてそのデータを再送信します。

(C = クライアント、S = サーバー、相対 seq / ack)

(connected, data transferred back and forth)
1  C: PSH      Seq=21, Ack=41, Len=12
2  S: PSH ACK  Seq=41, Ack=33, Len=12
3  C:     ACK  Seq=33, Ack=53
4  S: PSH ACK  Seq=53, Ack=33, Len=1
5  C:     ACK  Seq=33, Ack=54
   ... 3 seconds pass ...
6  C:     ACK  Seq=32, Ack=54, Len=1 (resends the last octet from #1)
7  S:     ACK  Seq=54, Ack=33
   ...

これは、TCP キープアライブを送信するときの Windows スタックの通常の動作ですか?

4

1 に答える 1

1

それがキープアライブセグメントです。これは別のプロトコルではなく、応答として現在のシーケンス番号を使用して ACK を誘発するために、既に確認済みのシーケンス番号を使用して冗長的に送信するだけです。PSH フラグを設定する必要もありません。

于 2012-10-15T20:26:23.747 に答える