zoukankan      html  css  js  c++  java
  • 对三次握手的理解

    第一次握手:
        建立链接的时候,客户端发送一个同步(syn)请求的包到服务器,进入一个等待服务器响应的状态(syn_sent),会有一个专定的一个同步序列编号来识别本次链接(synchronize sequence numbers);
        解释:
            syn(synchronous):是TCP/IP链接时候的握手信号。
            ACK (Acknowledgement): 是对发送数据的确认接受情况。
        假设:
            我:客户端;
            你:服务器端
        链接的过程:(我要给你一个包裹的过程)相当于客户端对服务器端链接的过程;我面对着你(发送的方向地址ip以及端口),大声叫你“张三有包裹”(这个过程syn求服务器响应,并进入等待响应状态(SYN_SENT)),同时我把我的工号(SYN序列号编码)给你发送过去,等你的响应,我再送包裹给你。

    第二次握手:
        建立链接后,客户端向服务器端发送数据,服务器端进入接受SYN包的状态(SYN_RECV);
        解释:
            SYN_RECV:服务器打开链接后,接收到SYN并发送了响应(ACK),再进一步进入接受信息接受的状态;
        接受信息的过程:
            这个时候我就一直等你的回答有没有听到,如果你听到了就回答到“我听到了,你是不是xx快递公司的给我看看你的工号”(就相当于服务器接受到了请求的响应,并对该同步序列号进行验证),验证你是邮递员之后我在说“你给我拿过来嘛”(并作出了一个响应,服务器也发送一个SYN和一个应答返回给客服端(SYN+ACK)),然后我就听到了你的话就说“要得,我马上给你拿过来”(这个时候客户端对服务器端的响应得到了接受,并作出了响应(ACK)),现在我就准备把我放在地上的包裹拿起来准备送到你那里去。(进入SYN_RECV的状态,等待获取数据)。

    第三次握手;
        客户端收到服务器的SYN+ACK包,向服务器发送请求包ACK,发送完成后,客户端与服务器进入ESTABLISHED状态,完成三次握手、   
        解释:
            ESTABLISHED:TCP链接成功
        建立联系:
            确定你是接受包裹的人后(建立好链接后,TCP连接成功),我就把包裹重公司运送到你的地方(最后完成数据的发送);

  • 相关阅读:
    CodePlus#4 最短路
    最大子矩阵问题———悬线法
    Luogu P3393 逃离僵尸岛
    SCOI2011 糖果
    关于页面的跳转添加参数(比如id啥的)
    npm 常用命令
    移动开发中的一些基本的思想,和需要注意的细节技巧之处
    Mock模拟后台数据接口--再也不用等后端的API啦
    普及知识
    移动端JD首页H5页面
  • 原文地址:https://www.cnblogs.com/leexq/p/4593915.html
Copyright © 2011-2022 走看看