TCP三次握手与四次挥手
1.TCP三次握手建立连接
- 首先客户端初始化序列号,syn位设置位1发送给服务端
- 服务端接收之后确认应答号设置为序列号+1,syn和ack都设置位1发送给客户端
- 客户端接收之后确认应答号设置为序列号+1,ack设置为1然后发送给服务端,然后服务端接收后状态设置为建立连接状态
2.为啥是3次握手?
1.防止历史连接造成影响,比如客户端发送第一次握手请求之后宕机了,然后恢复之后又发送新的握手请求,此时如果是2次握手的话就会导致历史连接恢复造成资源浪费,三次握手给了服务端缓冲时间。
2.还有一个原因就是同步双方的初始序列号
3.四次挥手断开连接
1.客户端主动断开连接,向服务端发送FIN报文,之后客户端进入FIN_WAIT1状态
2.服务端收到后,发送ACK确认报文,进入CLOSE_WAIT状态
3.客户端收到ACK确认报文后进入FIN_WAIT2状态,
4.服务端再次发送FIN报文,之后进入LAST_ACK状态
5.客户端收到FIN报文,发送ACK报文,进入TIME_WAIT状态,
6.服务端收到ACK之后进入CLOSE状态
7.客户端等待2MSL之后进入CLOSE状态