CP四次挥手
过程
- A发送连接释放报文段, FIN = 1.
- B收到后发出确认, 这个时候TCP处于半关闭状态. B能向A发送数据, A不能向B发送数据.
- 当B不需要再发送数据后, 发送FIN = 1, 发送释放请求报文段.
- A收到后发送确认请求, 进入TIME-WAIT状态, 等待2个MSL(最大报文存活时间)后释放连接.
- B收到A的确认后释放连接.
四次挥手的原因
客户端发送FIN释放报文请求后, 服务器收到这个报文, 就会进入CLOSE-WAI状态. 这个状态是为了让服务器发送还未传送完毕. 传送完毕后服务器会发送FIN连接释放报文.
客户端接收到服务器的FIN报文后进入TIME_WAIT状态, 并不是直接进入CLOSED状态, 需要等待2MSL. 原因有二:
- 确保最后一个确认报文到达. 如果B没有收到A发来的确认报文段, 那么会重新发送连接释放请求报文段.
- 等待一段时间是为了让本连接持续时间内发生的所有报文段都从网络中消失, 使得下一个新的连接不会出现旧的连接中的报文段.