2017-08-21 16 views
0

私はパケットトレースを取っています。私のシステム上のサーバはRSTフラグを受信し、ACK、RST、PSHビットがすべてセットされたパケットで応答します。これは私には普通のようではありませんか? RSTシナリオでPSHビットが設定されているのがなぜ分かりませんか?なぜ誰がこのことが分かっているのですか?RST PSH ACKすべてのパケットが1つのパケットに設定されています

答えて

0

接続が確立されると、信頼できるトランスポート/セキュリティのためにすべてのパケットにACKが設定され、受信したパケットのシーケンス番号と一致する必要があります。 ACKのないRSTは受け付けられません。片側がRSTを送信すると、ソケットはすぐに閉じられ、受信側も有効なRSTを受信した直後にソケットを閉じます。それは認識する必要はなく、認識することもできません。 TCPハンドシェーク

A = Z、ACKフラグ

B --->シン= Y、ACK = X + Z lenを---> BのSYN = xで、ACK = Y、後

、LEN = O、ACKフラグ

A ---> = P lenのBのSyn = X + Z、ACK = Y + O、ACKフラグ

B --->のSyn = Y + O 、ACK = x + z + p、len = q、RST、ACKフラグ

Bは最後のパケットを送信した後にソケットを閉じ、Aは後でソケットを閉じるそれを受け取る。

(ここではTCPウィンドウを考慮し、またはacknoledgement前の一端からより多くのパケットがあるかもしれない)

ACKフラグ、確認応答番号と確認応答の手順は同じこと関連しているがされていません。

Per RFC793 

RFC793 確認応答番号:SYN-SENTを除く32ビットのすべての状態において

If the ACK control bit is set this field contains the value of the 
next sequence number the sender of the segment is expecting to 
receive. Once a connection is established this is always sent. 
Reset Processing 

は、全てのリセット(RST)セグメントは、それらのSEQフィールドをチェックすることによって検証されます。リセットは、シーケンス番号がウィンドウ内にある場合に有効です。 SYN-SENT状態(初期SYNに応答して受信されたRST)では、ACKフィールドがSYNを確認応答する場合、RSTは許容可能です。

RSTの受信側は、まずそれを検証し、状態を変更します。受信機がLISTEN状態にあった場合、受信機はそれを無視する。受信機がSYN-RECEIVED状態にあって以前にLISTEN状態にあった場合、受信機はLISTEN状態に戻り、受信機は接続を中止してCLOSED状態に移行する。レシーバが他の状態にあった場合、レシーバは接続を中止し、ユーザにアドバイスしてクローズ状態に移行します。

関連する問題