TCP四次握手断开连接的客户端TIME_WAIT问题

TCP四次握手断开连接的客户端TIME_WAIT问题

了解TCP四次握手断开连接可知:

==客户端最后一次发送ACK包后进入TIME_WAIT状态,而不是直接进入closed状态==

为什么呢?

  • TCP是面向连接的传输方式,必须保证数据能够正确到达目标文件,不能丢失或者出错,而网络是不稳定的,随时都可能回毁坏数据,所以每一次客户端向服务端发送数据包后,都要求服务端进行确认,回传ACK包,告诉客户端已收到数据,这样客户端才能知道数据传送成功了。
  • 如果客户端没有收到确认包,客户端回重新发送,知道服务端回传ACK包。

​ 但是,在四次握手断开连接过程中,客户端最后一次向服务端回传ACK包时,又可能因为网络问题导致服务器收不到,这时,服务端会再次发送FIN包,如果这时客户端完全关闭了连接,那么服务器无论如何也收不到ACK包了,所以客户端需要等待片刻,确认对方收到ACK包后才能进入CLOSED状态。

那么,这个等待的时间时多久呢?

  • 数据包在网路中是有生存时间的,超过这个时间还未到达目标就会被舍弃,并通知发送源主机。
  • 这个时间称为报文最大生存时间(MSL,Maximum Segment Lifetimr)。而TIME_WAIT要等待2MSL才会进入CLOSED状态。ACK包到达服务器需要MSL时间,服务器重传FIN包也需要MSL时间,2MSL时数据包往返的最大时间,如果2MSL后还未收到服务器重传的FIN包,就说明服务器已经收到了ACK包了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值