• TCP三次握手四次挥手(幽默版)


    三次握手:


    假设你是一只鸟,你要与另一只鸟进行交流。(你是客户端)

    1.首先你会问候:“你好,我是一只鸟,你可以听到我说话吗?”(一次会话)

    2.另一只鸟回答:“是的,我可以听到你说话,我也是一只鸟。”(两次会话)

    3.你再说:“非常好,我想我们可以开始交流了。”(三次会话)



    正式的回答:

    计算机网络中三次握手是利用TCP协议确保通信双方建立可靠连接的过程。它的具体步骤如下:

    第一次握手(SYN发送):客户端向服务端发送一个SYN(Synchronize Sequence Numbers,同步序列号)标志位,要求建立连接并告知服务端自己的初始序列号(ISN)。

    第二次握手(SYN-ACK回应):服务端接收到客户端的SYN标志位后,返回一个SYN-ACK(Synchronize-Acknowledgment,同步确认)标志位,表示同意建立连接并告知自己的初始序列号。

    第三次握手(ACK发送):客户端接收到服务端的SYN-ACK标志位后,向服务端发送一个ACK(Acknowledgement,确认)标志位,表示已经接收到服务端的SYN-ACK,连接成功建立。

    这样,在第三次握手的过程中,客户端和服务端之间就可以互相确认对方的状态,建立起可靠的连接,从而进行数据传输和通信。如果任何一方在这个三次握手过程中出错,连接就会失败,双方需要重新发起握手连接。


    四次挥手:

    类比男女分手,男生说要分手(第一次挥手),女生同意并表示自己也要分手(第二次挥手),男生收到女生的消息后表示自己也接受分手(第三次挥手),女生收到消息后双方分手结束(第四次挥手)。



    1.  初始状态:Client和Server建立连接,Client发送FIN报文,表示要关闭连接。
    2.  第一次挥手:Server收到FIN报文后,发送ACK报文,表示已经收到Client的请求,并告诉Client自己也要关闭连接。
    3.  第二次挥手:Server发送FIN报文,表示自己也准备好关闭连接了。
    4.  第三次挥手:Client收到Server的FIN报文后,发送ACK报文,表示已经收到Server的请求,并告诉Server自己也准备好关闭连接。
    5.  状态结束:Server收到ACK报文后,双方断开连接。


    为什么 TIME_WAIT 等待的时间是 2MSL?

    主要原因是为了保证客户端发送那个的第一个ACK报文能到到服务器,因为这个ACK报文可能丢失,并且2MSL是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。

    屏幕前的你学会了吗?

     

  • 相关阅读:
    常用的一些vscode前端插件
    全面认识redux应用
    【华为OD题库-022】阿里巴巴找黄金宝箱(IV)-java
    降温了好冷,总结下11月
    JVM学习-字节码指令集(三)
    使用信号分析器
    SpringBoot 整合缓存 Redis 代码详解
    程序思想中的冒泡法在python和1200PLC中scl高级编程中的应用
    对比学习里面instance_loss的意义
    Unity2023引入可选的基于64位浮点位置的大世界坐标系
  • 原文地址:https://blog.csdn.net/m0_62600503/article/details/130892048