SSブログ

RSTを受信したときの挙動 [TCP]



TCPにはRSTというパケットがある。
RSTとは、簡単に言うと強制終了を示すものである。

このRSTを受信したときの挙動がLinuxとWindowsで違うことを発見したのでメモしておく。
(WindowsはXPとVistaです。)

Linuxの場合、
パケット1→パケット2→RSTという順序で受信したとすると、
readシステムコールは、パケット1、パケット2をユーザプログラムに読み込ませた後にエラーを返す。

Windowsの場合、
パケット1→パケット2→RSTという順序で受信したとすると、
パケット1、パケット2がソケットバッファに残っていたとしても、
recv関数は、ユーザプログラムにパケット1、パケット2を受信させることなくエラーを返す。

RSTが相手から送られてきた時点で、そのストリームは異常な状態に陥ったということなので、
受信済みのデータ(パケット1、パケット2)をユーザに読ませるかどうかは重要ではないはず、
ということで、このような差が生まれてしまったのだろう。


マスタリングTCP/IP 入門編 第4版

マスタリングTCP/IP 入門編 第4版

  • 作者: 竹下 隆史
  • 出版社/メーカー: オーム社
  • 発売日: 2007/02/24
  • メディア: 大型本







タグ:TCP RST

人気ブログランキングへ
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。