TCP 連接狀態(tài)流轉(zhuǎn)圖
完整狀態(tài)機

image.png
分離的狀態(tài)流轉(zhuǎn)圖
服務(wù)端狀態(tài)流轉(zhuǎn)

image.png
客戶端狀態(tài)流轉(zhuǎn)

image.png
三次握手時序圖

image.png
四次揮手時序圖

image.png
狀態(tài)轉(zhuǎn)換匯總表
| 狀態(tài) | 角色 | 觸發(fā)操作 | 下一狀態(tài) |
|---|---|---|---|
| CLOSED | 服務(wù)端 | socket() + listen() | LISTEN |
| CLOSED | 客戶端 | connect() → 發(fā)送 SYN | SYN_SENT |
| LISTEN | 服務(wù)端 | 收到 SYN → 發(fā)送 SYN+ACK | SYN_RECV |
| SYN_SENT | 客戶端 | 收到 SYN+ACK → 發(fā)送 ACK | ESTABLISHED |
| SYN_RECV | 服務(wù)端 | 收到 ACK | ESTABLISHED |
| ESTABLISHED | 客戶端 | close() → 發(fā)送 FIN | FIN_WAIT_1 |
| ESTABLISHED | 服務(wù)端 | 收到 FIN → 發(fā)送 ACK | CLOSE_WAIT |
| FIN_WAIT_1 | 客戶端 | 收到 ACK | FIN_WAIT_2 |
| CLOSE_WAIT | 服務(wù)端 | close() → 發(fā)送 FIN | LAST_ACK |
| FIN_WAIT_2 | 客戶端 | 收到 FIN → 發(fā)送 ACK | TIME_WAIT |
| LAST_ACK | 服務(wù)端 | 收到 ACK | CLOSED |
| TIME_WAIT | 客戶端 | 等待 2MSL (約 60 秒) | CLOSED |