TCP 标志位
- SYN:建立
- ACK:确认
- PSH:传送
- FIN:结束
- RST:重置
- URG:紧急
TCP 11 种状态
- SYN_RCVD
- SYN_SEND
- LISTEN
- ESTABLISHED
- FIN_WAIT1
- FIN_WAIT2
- TIME_WAIT
- CLOSED
- CLOSING
- CLOSE_WAIT
- LAST_ACK
3 次握手 建立连接
假设从 A 到 B 建立连接:
4 次握手 关闭连接
假设 A 想主动关闭与 B 之间的 TCP 连接:
MSL:Maximum Segment Lifetime 表示一个 IP 数据包在互联网上生存的最长时间。
为什么要有 TIME_WAIT 状态?:
为了可靠地实现 TCP 双工连接的关闭!
在主动关闭方 A 发送完最后一个 ACK 后,进入 TIME_WAIT 状态,持续 2 MSL。
假设没有 TIME_WAIT 状态,主动关闭方 A 发送完最后一个 ACK 后直接关闭,进入 CLOSED 状态。如果这个 ACK 在网络上丢失,被动关闭方 B 没有收到,只能再次发送 FIN,而此时 A 已经关闭,就会响应 RST,错误。