TCP三次握手
第一次握手:客户端发出连接请求,服务端收到连接请求,至此,服务端知道客户端有发送能力。
当我们的tcp第一次握手丢失后,客户端迟迟接收不到ack+syn报文,就会触发超时重传机制,每次超时重传的时间呈指数倍上涨,直到发送5次之后,就不会发送syn包了
第二次握手:服务端收到第一次客户端发出的连接请求后,向其发出收到连接请求的响应和连接请求,至此,客户端知道服务端有发送能力和接收能力。
客户端无法收到syn+ack报文,就会以为自己没有发送出去,也就相当于第一次握手时的重传一样。服务端无法收到ack应答报文,也一样会重发syn+ack包。如果下一次客户端重发的syn报文到了,服务端再次发送ack+syn包,但计时器不会重置,还在持续重传。因为服务端在没有收到第三次握手时,会持续重传到最大次数,默认为5次。
第三次握手:客户端收到服务端对它第一次所请求的回应后,发送收到连接请求的响应,服务端收到后,至此,服务端知道客户端有接收能力。
此时服务端没有收到应答报文,会重传到syn+ack的最大次数,此时服务端的连接终止了
客户端收到syn+ack的报文后,进入establelisten状态。之后发送数据,但服务端已经处于断开连接的状态了,所以客户端重传数据包到最大次数后(每次重传时间指数递增),也断开了连接。客户端重传数据默认为15次。