• 八股文-TCP的四次挥手


    TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,它的连接的建立和关闭过程都是经过精心设计的。在TCP连接关闭时,使用四次挥手来保证数据的完整传输和连接的正常终止。

    tcp.jpg

    漫画TCP的四次挥手

    tcp.png

    第一次挥手:主动关闭方发送关闭请求(FIN)

    在TCP的四次挥手过程中,首先由主动关闭方(通常是客户端)发起关闭请求。主动关闭方发送一个TCP报文,其中包含FIN(Finish)标志位,表示主动关闭方不再有数据要发送了。此时,主动关闭方进入FIN_WAIT_1状态,等待被动关闭方的确认。

    第二次挥手:被动关闭方回应确认(ACK)

    被动关闭方(通常是服务器)接收到主动关闭方的FIN后,发送一个确认(ACK)报文,表示已经收到了关闭请求。此时,被动关闭方进入CLOSE_WAIT状态,表示服务器端的应用程序已经等待关闭了,但仍可以接收来自客户端的数据。

    第三次挥手:被动关闭方发送关闭请求(FIN)

    在完成自己的数据发送后,被动关闭方也发送一个带有FIN标志的TCP报文,表示被动关闭方也没有数据要发送了。此时,被动关闭方进入LAST_ACK状态,等待主动关闭方的确认。

    第四次挥手:主动关闭方回应确认(ACK)

    主动关闭方接收到被动关闭方的FIN后,发送一个确认(ACK)报文,表示已经收到了关闭请求。此时,主动关闭方进入TIME_WAIT状态,等待一段时间,以确保被动关闭方收到了确认,并防止可能存在的延迟报文导致连接混乱。一旦等待时间过去,主动关闭方进入CLOSED状态,表示连接已经完全关闭。

    TCP的四次挥手过程确保了连接的正常关闭,同时保证了数据的完整传输。
    详细图示如下:

    tcp05e8967a8b423a94.png

    为什么要四次挥手

    TCP进行四次挥手的原因是为了确保数据的完整传输和连接的正常终止。在TCP连接中,数据的传输是双向的,因此在关闭连接时,双方都需要确认彼此已经完成数据的发送。以下是TCP进行四次挥手的详细原因:

    • 全双工通信: TCP连接是全双工的,允许双方在同一时间进行双向通信。每一方都有可能在连接中发送数据,因此在关闭连接时,需要保证双方都能完成数据的发送。

    • 保证数据完整传输: 在关闭连接之前,可能还有未传输完成的数据在网络中。通过四次挥手,双方可以确认彼此的数据已经全部接收完毕,从而确保数据的完整传输。

    • 防止连接混淆: 为了防止在网络中可能存在的延迟报文导致连接混乱,采用四次挥手的方式等待一段时间(TIME_WAIT状态)。这样可以确保在关闭连接之前,网络中的所有报文都得到处理,避免可能的重复连接。

  • 相关阅读:
    八大排序(一)冒泡排序,选择排序,插入排序,希尔排序
    lammps计算角度分布(ADF)
    LeetCode[剑指Offer54]二叉搜索树的第K大节点
    Win8局域网设置文件共享
    Linux内核顶层Makefile的make过程说明二
    Leetcode112. 路径总和
    java毕业生设计医院就诊预约计算机源码+系统+mysql+调试部署+lw
    腾讯数字生态大会详解腾讯云全球化发展规划,全真互联为重要发力点
    TCP的三次握手和四次挥手 | 查看网络状态
    建造者模式 创建型模式之三
  • 原文地址:https://blog.csdn.net/weixin_44002151/article/details/134477916