1.ソケットとは
コンピュータとコンピュータがネットワークを介してデータをやり取りするための出入り口となるもの。宛先IPアドレスとポート番号のセットで指定することで通信ができる。
ポート番号と宛先IPアドレスが電話番号でソケットが電話機のようなイメージ。
2.ソケットの状態
ソケットには通信のライフサイクル(接続準備→接続確立→通信→切断)ごとに状態が存在する。
状態 | 説明 |
---|---|
CLOSED | ソケットが閉じている状態。通信は行われていない。 |
LISTEN | サーバ側が接続要求を待っている状態。listen() 実行後。 |
SYN-SENT | クライアントが接続要求(SYN)を送信し、応答を待っている。 |
SYN-RECEIVED | サーバがSYNを受信し、ACK付きSYNを返して応答待ち。 |
ESTABLISHED | 接続が確立し、データを送受信できる安定状態。 |
FIN-WAIT-1 | 自分が接続終了要求(FIN)を送信した直後。 |
FIN-WAIT-2 | 相手からACKを受信し、相手のFINを待っている。 |
CLOSE-WAIT | 相手からFINを受け取ったが、自分はまだclose() していない。 |
CLOSING | 両者が同時にFINを送信した場合の一時的な状態。 |
LAST-ACK | 自分もFINを送り、最後のACKを待っている。 |
TIME-WAIT | 切断完了後も一定時間(2MSL)待機。古いパケット混入を防ぐため。 |