• 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是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。

    屏幕前的你学会了吗?

     

  • 相关阅读:
    探索 AIGC 和 Web3 游戏的结合点
    linux之perf(4)stat统计
    一个移动应用程序是如何让我被动地赚到 500 美元以上的?
    Three.js
    ARM核心板有什么不同
    选择致敬持续奋斗背后的精神——对话威尔价值观【第四期】
    SqueezeNet 一维,二维网络复现 pytorch 小白易懂版
    InVideo AI:用人工智能轻松制作视频
    WPF 自定义文本框输入法 IME 跟随光标
    解决 npm install 报错的问题
  • 原文地址:https://blog.csdn.net/m0_62600503/article/details/130892048