【Linux:tcp三次握手和四次挥手】

客户端和服务端都能主动发起请求

  • 假设客户端主动发起连接关闭请求
  • 客户端向服务端发送FIN包,同时客户端进入终止等待1状态(第一次挥手)
  • 服务端收到FIN包并发送ACK包,表示服务端进入关闭等待状态
  • 客户端进入终止等待2状态(第二次挥手)
  • 此时,服务端还可以发送数据,客户端能够接收数据
  • 等服务端发送完数据后,向客户端发送FIN包,客户端收到后回复ACK包(第三次挥手)
  • 客户端进入超时等待状态,经过超时时间后关闭连接,服务端收到ACK包后立即关闭连接(第四次挥手)

为什么客户端需要等待超时时间?

为了保证对端已收到ACK包,因为假设客户端发送完ACK包后就释放了连接,一旦ACK在网络中丢失,服务端将会一直停留在最后的确认阶段,而如果客户端发送完ACK包后停留一段时间,此时如果服务端没有收到ACK包就会重发FIN包,客户端就会响应FIN包重发ACK包,还会重新刷新超时时间

上一篇:springboot房屋租赁系统-计算机设计毕业源码32524


下一篇:[单例模式]