美文网首页
通俗理解 TCP 连接三次握手和断开四次握手的过程

通俗理解 TCP 连接三次握手和断开四次握手的过程

作者: JinyaMax | 来源:发表于2018-04-11 15:06 被阅读199次

    Client 与 Server 连接前的三次握手过程:

    TCP连接三次握手
    • 第一次握手,A 向 B 发送信息,B 收到信息后可以确认自己的收信能力和 A 的发信能力没有问题。
    • 第二次握手,B 向 A 发送信息,A 可以确认自己的发信能力和B的收信能力没有问题,但是 B 不知道自己的发信能力到底如何,所以就需要第三次通信。
    • 第三次握手,A 向 B 发送信息,B 就可以确认自己的发信能力没有问题。

    Client 与 Server 断开时的四次握手过程:

    TCP断开四次握手

    假设 A 为主动断开方,B 为被动断开方

    • 第一次握手,A 向 B 发送消息,表明数据发送完成需要断开连接
    • 第二次握手,B 向 A 发送消息,让 A 先等等,等 B 把数据传完
    • 第三次握手,B 向 A 发送消息,数据已传完,可以断开了
    • 第四次握手,A 向 B 发送消息,稍后*会断开连接(等待2MSL后变成 CLOSED 状态)

    *注:虽然双方都同意关闭连接了,而且握手的4个报文也都发送完毕,按理可以直接回到 CLOSED 状态(好比从 SYN_SENT 状态到 ESTABLISH 状态那样),但是我们需要考虑到网络是不可靠的,你无法保证你(客户端)最后发送的 ACK 报文一定会被对方收到,就是说对方处于 LAST_ACK 状态下的 SOCKET 可能会因为超时未收到ACK 报文,而重发 FIN 报文,所以这个 TIME_WAIT 状态的作用就是用来重发可能丢失的ACK报文。

    相关文章

      网友评论

          本文标题:通俗理解 TCP 连接三次握手和断开四次握手的过程

          本文链接:https://www.haomeiwen.com/subject/ujtzhftx.html