【アールエスティーパケット】
RSTパケット とは?
最終更新:
💡 TCP接続をリセットする制御信号
TCPヘッダーのRSTフラグを使い、接続をリセットするセグメント。FINとの違い、接続拒否、受信時の検証と原因調査の考え方を解説します。
📌 このページのポイント
- TCPヘッダーのRSTはResetを意味する
- 接続拒否や、成立した接続の中止などで使う
- 受信すれば無条件に切断するのではなく、状態や番号を検証
- RSTだけで障害の原因や攻撃の有無は決められない
RSTパケットは、何の合図?
普通に閉じるFINと違う?
FINは、その方向ではもうデータを送らないことを伝え、通常の終了手順を進める。RSTは接続を中止する動作なので、同じ終了手順ではない。まだ渡し終えていないデータが残る可能性もあるよ。
届いたら、何でも即座に切断する?
受信側は、TCPの状態やシーケンス番号などを検証するよ。無関係なRSTを受け取っただけで、すべての接続が切れるわけではない。条件を満たさないものを捨てたり、確認用のACKを返したりする場合があるんだ。
接続しようとしただけでも、RSTが来る?
対応する接続や待ち受けがない場合などに、TCPがRSTを返すことがある。アプリが接続を中止する場合にも使う。接続する段階と、通信中の中止を分けて確認しよう。
RSTが多ければ、攻撃されている?
RSTだけでは判断できないよ。いつ、どの通信で起きたか、接続先のポートやアプリのログなどと合わせて調べる。途中の機器も含めて通信を確認し、エラーの表示だけで原因を一つに決めないことが大切だね。
もっと詳しく知りたい人へ
challenge ACKは何をする?
RFC 5961の保護を実装するTCPでは、受信ウィンドウ内でも次に期待する番号と一致しないRSTに、確認用のACKを返してそのRSTを捨てます。すべてのTCP実装が同じ保護を行うとは限りません。
通信をもう一度試してよい?
リセット後の再接続は新たな通信になります。アプリの処理が相手側で完了していた可能性もあるため、注文や保存などを再試行するときは、重複した処理を防ぐ仕組みも確認します。
📖 おまけ:英語の意味
「RST(Reset)」 = リセット
💬 TCPヘッダーの制御フラグです。RSTが立ったTCPセグメントを、RSTパケットと呼ぶことがあります。