IP(Internel Protocol) は、TCP、UDP、ICMP に対して、 パケット配送の機能を提供する下位のプロトコルです。
![]() |
![]() |
| サーバ | クライアント | |||
| 関 数 | ステータス | ステータス | 関 数 | |
| CLOSED | CLOSED | |||
| socket()/bind()/listen() → | ||||
| LISTEN | ||||
| ← socket()/connect() | ||||
| SYN_SENT | ||||
| SYN_RECV | ||||
| ESTABLISHED | ESTABLISHED | |||
| accept() → | ||||
| : | : | |||
| ← read()/write() | ||||
| read()/write() → | ||||
| : | : | |||
| ← close() | ||||
| CLOSE_WAIT | FIN_WAIT_1 | |||
| (CLOSING) | ||||
| close() → | LAST_ACK | FIN_WAIT_2 | ||
| TIME_WAIT | ||||
| CLOSED | CLOSED | |||
ソケットのクローズは、サーバ、クライアントどちらからでも可能です。
通常クライアントが先にクローズしますが、
サーバが先にクローズした場合は、CLOSE_WAIT/FIN_WAIT_2
のステータスは、上記の図とは逆になります。
| 状態値 | 説 明 | 注 |
|---|---|---|
| CLOSED | クローズ中です。ソケットは未使用です | |
| LISTEN | 着信する接続を待っている状態です | |
| SYN_SENT | 接続を確立中です | *1 |
| SYN_RECV | 接続の最初の同期をとっています | *2 |
| ESTABLISHED | 接続が確立しました | |
| CLOSE_WAIT | 遠隔でシャットダウンし、 自分側のソケットがクローズするのを待っている状態です | *3 |
| FIN_WAIT_1 | ソケットをクローズします。接続をシャットダウンします | *1 |
| CLOSING | ソケットをクローズし、遠隔シャットダウンします。 その後、肯定応答をまちます | *1 |
| LAST_ACK | 遠隔シャットダウンし、クローズします。 その後、肯定応答をまちます | *1 |
| FIN_WAIT_2 | ソケットをクローズし、遠隔シャットダウンをまちます | *1 |
| TIME_WAIT | クローズ後、遠隔シャットダウン再送信を待っています | *4 |
| *1 | 通常この状態にあるのは短時間で見ることはできません |
|---|---|
| *2 | 通常この状態にあるのは短時間で見ることはできませんが、 SYN flood 攻撃されたとき現れます。 |
| *3 | 通常この状態にあるのは短時間で見ることはできません。 詳細は、CLOSE_WAIT とはを参照してください。 |
| *4 | この状態のセッションが多数ある場合は、
tcp_time_wait_interval をチューニングする必要があります。 詳細は、TIME_WAIT とはを参照してください。 |
![]() |
![]() |
![]() |
![]() |