TCP四次挥手

  • 面试题:你知道TCP四次挥手是什么吗?为什么要进行四次挥手

    • 确保数据能够完整传输

      • 当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。
      • 但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接
      • 所以这里的ACK报文和FIN报文多数情况下都是分开发送的。
    • 模拟流程

 

 

 
    A:“喂,我不说了 (FIN)。”A->FIN_WAIT1
    
    B:“我知道了(ACK)。等下,上一句还没说完。Balabala…..(传输数据)”B->CLOSE_WAIT | A->FIN_WAIT2
    
    B:”好了,说完了,我也不说了(FIN)。”B->LAST_ACK
    
    A:”我知道了(ACK)。”A->TIME_WAIT | B->CLOSED
    
    A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSED
  • 图解分析TCP四次挥手协议

    • TCP前面10种状态切换

       

  • TCP第11种状态CLOSING 状态概念

    • 这种状态在实际情况中应该很少见,属于一种比较罕见的例外状态。正常情况下,当一方发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。但是CLOSING 状态表示一方发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。什么情况下会出现此种情况呢?那就是当双方几乎在同时close()一个SOCKET的话,就出现了双方同时发送FIN报文的情况,这是就会出现CLOSING 状态,表示双方都正在关闭SOCKET连接。
  • netstat -anp|grep 8080

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值