请简述一下三次握手四次挥手?
三次握手四次挥手

  • 客户端发送带有SYN标志,以及随机生成的seq报文到服务器

  • 服务器收到报文后返回一个带有SYN标志以及一个答复ack给客户端

  • 客户端再次发送带有ack标志的报文给服务器
    三次握手结束,此时客户端与服务器可以开始通话
    因为tcp连接是双向的,因此必须保持双向之间都能收到并且确认就像如下
    A说:b我想给你通话,你收到了么
    B说:我收到了,你准备好了么
    A说:准备好了咱们准备通话吧
    四次挥手过程:
    上面已经说过tcp连接是双向的,因此每个方向都必须单独的关闭,

  • 客户端发起带有FIN标志的报文给服务器请求关闭通信

  • 服务器收到之后回复ack确认客户端的关闭请求

  • 服务器向客户端发送带有FIN标志的报文请求关闭通信

  • 客户端向刘服务器发送ack确认服务器的关闭请求!
    2MSL
    在四次挥手最后一次的规程中主动发起FIN标志的一方要等待的这段时间我们 称之为2MSL(即最大报文生存时间)
    他可以让四次挥手关闭流程更加可靠
    防止丢包对后续的连接产生影响
    为什么主动发起FIN的一方在TIME_WAIT状态要等待2MSL?

    • 为了保证主动发起FIN标志一方最后发送的额ACK报文能后到达服务器.因为这个报文可能丢失.造成使处于LAST_ACK状态的额服务器接受不到这个报文.当超时的时候服务器会重新发送FIN以及ack报文给客户端.此时在2msl时间的客户端就会接收到这个报文然后重新发送ack确认,重启计时器,最好的状态是客户端和服务器都能进入close状态.如果客户端不等待2msl而是发送完最后 一个ack之后立马关闭.那么就无法接收到服务器重传的fin,ack报文.服务器也就接收不到ack确认,无法进入close状态
    • 、防止已失效的连接请求报文段出现在下次连接中。客户端在发送完最后一个ACK确认报文段
      后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样
      就可以使下一个新的连接中不会出现这种旧的连接请求报文段

相关文章:

  • 2021-08-02
  • 2021-12-09
  • 2021-04-03
猜你喜欢
  • 2021-07-25
  • 2022-01-07
相关资源
相似解决方案