文章目录

状态解释

  • SYN_SENT:客户端状态,发送tcp连接请求,等待服务端返回
  • SYN_RECV:服务端状态,服务端收到客户端连接请求,发送确认请求
  • ESTABLISHED 连接已建立
  • FIN-WAIT-1:客户端状态,发送释放连接请求
  • CLOSE-WAIT:服务端状态,收到客户端释放连接请求,发送确认报文,进入此状态
  • FIN-WAIT-2:客户端状态,客户端收到释放连接确认报文,等待服务端发送连接释放报文,之前还需要接受服务端发送的最后数据
  • LAST-ACK:服务端状态,服务端最后的数据发送完毕,发送连接释放报文,服务端进入此状态
  • TIME-WAIT:客户端状态,客户端收到服务器的连接释放报文后,发出确认,进入次状态,注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态
  • CLOSED:服务端只要收到客户端确认报文,进入此状态,客户端需等待2msl时间

问题

  1. 为什么四次挥手?

    服务端收到释放请求后,可能还有剩余任务需要处理,需要等待处理完成后才能释放连接

  2. 为什么客户端在收到服务端释放连接请求后,不马上断开?

    网络不可靠,最后一个ack可能丢失,服务端如果没有收到,会不断重复发送fin,所以客户端不能直接close

  3. 客户端故障会怎么样?

tcp 设有一个保活计时器,服务端每收到客户端请求就会重置计时器,时间通常为2个小时,如果2个小时没收到客户端请求,服务端就会发送一个探测报文段,以后每个75秒发送一次,若连续10次都没有反应,则关闭连接

TCP握手挥手状态

TCP握手挥手状态

相关文章:

  • 2021-04-06
  • 2021-07-07
  • 2022-01-30
  • 2022-01-09
  • 2021-08-08
  • 2021-04-15
猜你喜欢
  • 2021-09-25
  • 2021-06-07
  • 2021-11-26
  • 2021-05-22
  • 2022-01-07
  • 2022-01-21
相关资源
相似解决方案