zoukankan      html  css  js  c++  java
  • 三次握手与四次挥手

     为什么要三次握手?

      在只有两次“握手”的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,“三次握手”很有必要!

      为什么要四次挥手?

      试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

      使用TCP的协议:FTP(文件传输协议)、Telnet(远程登录协议)、SMTP(简单邮件传输协议)、POP3(和SMTP相对,用于接收邮件)、HTTP协议等。

    1、三次握手

    这里写图片描述

    三次握手的过程如下:

    • 客户端A 发送SYN(seq = x)报文给服务器B,然后进入SYN_SENT状态;
    • B收到SYN报文,回应一个SYN(seq = y) ACK (ACK = x + 1)报文,进入SYN_RCVD状态;
    • A收到SYN报文后,回应一个ACK(ACK = y + 1),进入ESTABLISHED状态;B收到ACK报文后,进入ESTABLISHED状态

    三次握手后,A和B成功地建立了连接,可以开始传输数据了~

     简单理解就是:

      A与B发报文,确定彼此收发功能是否正常

      第一次: A--->B         证明B接收功能正常(B收到A的信息)。

      第二次:B--> A          证明A发送功能正常 ,接收功能正常  B接收功能正常。

      第三次:A--> B         证明A发送功能正常 ,接收功能正常   B发送功能正常 ,接收功能正常。

      双方功能都正常,可以进行报文的收发。  

    2、四次挥手

    四次挥手的过程如下:

    • 客户端A上的某个进程,主动关闭连接,发送FIN(seq = u)报文给B,然后进入FIN_WAIT_1状态;
    • B收到FIN报文,回应一个ACK (ACK = u + 1)报文,进入CLOSED_WAIT状态;A收到FIN报文,进入FIN_WAIT_2状态;
    • B向A发送FIN(seq = v)报文,进入LAST_ACK状态;
    • A收到FIN报文后,向B发送ACK(ACK = v + 1)报文,进入TIME_WAIT状态

    四次挥手后,A和B成功地断开了连接~

    这里写图片描述

    简单理解就是:

          确认消息都被接收完毕后,关闭连接

          举例: A、B俩地之间的地铁线(双通道)

     第一次挥手: A-->B : 我这是最后一班车了,发完这个不发车了。

    第二次挥手: B--->A :接到你发来的最后一班车了

    第三次挥手: B--->A:我这还有一班车,你接收完咱就关闭地铁线了。

    第四次挥手:   A-->B : 我接到你发的最后一班车了,咱关闭吧. 2分钟后我会关闭,不管你那关不关。

  • 相关阅读:
    Javascript 获得数组中相同或不同的数组元素   
    Java IO流 FileOutputStream、FileInputStream的用法   
    你的项目中使用过哪些JSTL标签?
    JavaWeb代码复用
    软件质量保证体系是什么
    二叉树的递归遍历框架:
    二叉树节点的定义框架:
    SQL 2012 Always On 为 MSCRMSqlClrLogin SQL 登录名创建非对称密钥时报语法错误
    linux命令指usermod(管理用户以及权限的命令)
    Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015
  • 原文地址:https://www.cnblogs.com/lxk233/p/9566203.html
Copyright © 2011-2022 走看看