zoukankan      html  css  js  c++  java
  • 56、为什么需要三次握手,两次不行吗?

    弄清这个问题,我们需要先弄明白三次握手的目的是什么,能不能只用两次握手来达到同样的目的。

    1.第一次握手:客户端发送网络包,服务端收到了。 这样服务端就能得出结论:客户端的发送能力、 服务端的接收能力是正常的。

    2.第二次握手:服务端发包,客户端收到了。 这样客户端就能得出结论:服务端的接收、发送能力, 客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

    3.第三次握手:客户端发包,服务端收到了。 这样服务端就能得出结论:客户端的接收、发送能力正 常,服务器自己的发送、接收能力也正常。

    因此,需要三次握手才能确认双方的接收与发送能力是否正常。

    试想如果是用两次握手,则会出现下面这种情况:

    如客户端发出连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。 后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报 文段,其中第一个丢失,第二个到达了服务端,但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接,不采用三次握手,只要服务端发出确认,就建立新的连接了,此时客户端忽略服务端发来的确认,也不发送数据,则服务端一致等待客户端发送数据,浪费资源。

  • 相关阅读:
    MysqlServer如何实现成功卸载,并成功安装
    win7安装xampp,提示windows找不到-n文件(安装成功后,443端口占用,apache服务器无法正常启动)
    (JS实现顾客商品浏览记录以及购物车)Cookie的保存与删除
    (转)SVN 服务端、客户端安装及配置、导入导出项目
    正则表达式详解
    Struts2.3.4+Hibernate4.2.4+Mysql6.0整合
    CSS中TRBL和position关系
    const typedef #define
    数组的替代品
    输入
  • 原文地址:https://www.cnblogs.com/crbhf/p/15116565.html
Copyright © 2011-2022 走看看