TCP三次握手与四次断开
客户端发送SYN包同步连接请求,且序列号为x,服务器端收到客户端连接请求后,回一个包,内容为SYN=1,ACK=1,同意连接,是对客户端发的包的确认,自己的序列号为y,ack=x+1意味着期待客户端下一次发包的序列号为x+1,客户端收到后再回一个确认包,ACK=1,包序列号为x+1,ack=y+1,意味着期待服务器端下次包的序列号
客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u。
服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时客户端没有数据发送了,但是服务器若发送数据,客户端依然接受。
客户端收到服务器的确认请求后,将等待服务器发送连接释放报文。
服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了等待客户端确认状态。
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了时间等待状态。## 标题此时TCP连接还没有释放,必须经过两倍的MSL(最长报文段寿命)时间,当客户端撤销相应的TCB后,才进入CLOSED状态。
服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
TCP的三次握手与四次断开
最新推荐文章于 2022-08-23 23:10:29 发布