管理平台接口文档,优化业务流程的灵魂之匙
251
2022-09-11
TCP/IP四次挥手(tcp 4次挥手)
TCP/IP四次挥手
TCP/IP四次挥手流程图:
名词解释:FIN(finish)结束TCP状态解释:ESTABLISHED (表示TCP连接已经成功建立)FIN_WAIT_1 (结束等待1:表示客户端已向服务端发送了FIN连接释放报文段)FIN_WAIT_2 (结束等待2:表示客户端已收到服务端的ACK确认报文段)CLOSE-WAIT (关闭等待:表示服务端已向客户端发送ACK确认报文段,正在确认是否还有数据向客户端发送)LAST-ACK (最后确认:表示服务端已向客户端发送FIN连接释放报文段)TIME-WAIT (时间等待:表示客户端已向服务端发送ACK确认报文段,正在等待2MSL时间)CLOSED (表示连接已关闭)其他解释:MSL (Maximum Segment Lifetime)(报文最大生存时间)2MSL即两倍的MSL,TCP的TIME_WAIT状态也称为2MSL等待状态,当客户端发起主动关闭,在客户端发出最后一个ACK确认报文段后,即第3次挥手完成后发送了第四次挥手的ACK确认报文段后,客户端就进入了TIME_WAIT状态,必须在此状态上停留两倍的MSL时间,等待2MSL时间主要目的是怕客户端的最后一个ACK确认报文段服务端没收到,那么服务端没收到客户端ACK确认报文段后将重发第三次挥手的FIN连接释放报文段,客户端接到服务端重发的FIN连接释放报文段后可以再发一个ACK确认报文段。如果直到2MSL结束,客户端都没有再次收到服务端的FIN连接释放报文段,那么客户端推断ACK已经被成功接收,则结束TCP连接。说明:TCP/IP四次挥手是可以两端任意发起的,因为TCP是全双工通信的,下面流程以客户端发起为例第一次挥手客户端向服务端发送(FIN=1 seq=u)连接释放报文段,等待服务端确认,客户端进入FIN_WAIT_1状态。(当客户端主动发起连接释放报文段时,客户端即无法发送数据给服务端)第二次挥手服务端收到客户端(FIN=1 seq=u)连接释放报文段后,即发出确认报文段(ACK=1 seq=v ack=u+1),服务端进入CLOSE-WAIT状态,此时TCP处于半关闭状态。(客户端已没有数据发送到服务端,但服务端若有数据发送,客户端依然可以接收。)第三次挥手客户端收到服务端(ACK=1 seq=v ack=u+1)确认报文段后,客户端进入FIN-WAIT-2状态,等待服务端的连接释放报文段(此时服务端正在确认是否有数据向客户端发送,有则发送,无则发送连接释放报文段)服务端确认无数据发送到客户端后,即发送连接释放报文段(FIN=1 ACK=1 seq=w ack=u+1),服务端进入LAST-ACK状态,等待客户端的确认报文段。第四次挥手客户端收到服务端(FIN=1 ACK=1 seq=w ack=u+1)连接释放报文段后,即发送确认报文段(ACK=1 seq=u+1 ack=w+1),客户端进入TIME-WAIT状态,此时TCP未释放,需要经过时间等待计时器设置的时间2MSL后,客户端才会进入CLOSED状态,而服务端收到客户端(ACK=1 seq=u+1 ack=w+1)确认报文段后,立即进入CLOSED状态。(可以发现服务端比客户端早进入CLOSED状态,因为客户端还需要等待2MSL时间才能进入CLOSED状态)
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~