首页 > 其他分享 >重新思考TCP三次握手,两次握手的缺点

重新思考TCP三次握手,两次握手的缺点

时间:2022-10-25 18:34:06浏览次数:64  
标签:重传 握手 TCP 缺点 服务器 超时 连接 客户端

两次握手也能保证有序可达

  两次握手在CS架构中是能保证有序、可达的,因为客户端在收到服务器的确认后,双方知道客户端下一次消息的正确序号,客户端到服务器

的单向连接就建立了,只是服务器此时不能再发送消息,因为服务器不知道客户端有没有收到自己消息,客户端如果没收到,服务器发送下一序号

信息将不能保证服务器信息有序到达。除非客户端重传了连接请求或者发送了下一个序号的消息,服务器在收到这个消息后,双方知道服务器下

一条消息的序号,服务器到客户端的连接也就建立了。

 

两次握手会有什么问题

  教科书给的答案是过时的连接请求发送到服务端会一直等待直到超时,以产生资源浪费,那服务端不等不行吗,下面分析一下。

  若两次握手,当客户端发送的SYN1在链路阻塞后,客户端重传SYN2,在与服务器交互完SYN2的需求并断开连接后,服务器收到SYN1的报文,

服务器将发送确认报文,之后当然不会有任何客户端报文再发来,服务器需要考虑几种情况:

  1. 客户端已退出,将不会收到确认报文(此时真实情况)
  2. 客户端暂时没有请求数据,只是建立连接

服务器将对这几种情况一视同仁,进行超时重传,直到到达最大时间限制,客户端没有发送消息,服务器关闭此次连接。这里的关键在于超时时

间的设置,服务器不知道此时情况,超时时间的设置将是相同的。

实际上,只有情况2需要长连接,如果服务器只考虑2,来一个连接请求就等待几小时,那么对于情况1服务器将无谓的等待。

  如果服务器想知道是否是情况1,怎么做?这需要客户端返回一个对服务器响应的响应,如果服务器短时间没收到响应,那么可能是1,那阻塞情况

又怎么区分呢,没错,重传多次,如果还是没有响应,那就一律按1处理(这条件,上炕都费劲还指望我给你服务呢),服务器将进入Closed状态。服务器

知道具体情况前是一视同仁的,对于情况2,服务器也将需要客户端发送响应,有响应消息,确认是情况2后,服务器可以安详等待了,直到超时再做相

应工作。

  我超,这不就是三次握手吗!!

 

标签:重传,握手,TCP,缺点,服务器,超时,连接,客户端
From: https://www.cnblogs.com/hyh2050/p/16825871.html

相关文章

  • http keepalive 和 tcp keepalive 的区别
    HTTPkeep-alive和TCPkeepalive的区别首先,二者是完全不同的东西:HTTPkeep-alive:是应用层(用户态)实现,称为HTTP长连接;TCPkeepalive,是传输层TCP(内核态)实现,称为TCP保活......
  • TCP进程与线程的区别
    1、进程和线程的区别:答:线程是指进程内的一个执行单元,也是进程内的可调度实体。与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。(2)......
  • zbx_tcp_listen() fatal error:unable to serve on any address [[-]:10070]
    Zabbix服务器未启动侦听器失败:zbx_tcp_listen()致命错误:无法在任何地址上提供服务[[-]:10070]日志错误:服务状态以及尝试启动时:进程正在运行:但是服务仍然停止: ......
  • tcp:协议流程
    三次握手四次挥手进入listen状态客户端和服务的还没有建立连接前,都处于CLOSED状态并且在开始之前需要创建TCB(传输控制块)、直到TCB创建完成后,才进入LISTEN状态开始......
  • TCP/IP网络编程之地址族与数据序列
    分配IP地址和端口号IP是InternetProtocol(网络协议)的简写,是为收发网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为区分程序中创建的套接字而分配给套接字的......
  • TCP拥塞控制
    ......
  • TCP 粘包/拆包的原因及解决方法?
    TCP是以流的方式来处理数据,一个完整的数据包可能会被TCP拆分成多个包进行发送,也可能把多个小的包封装成一个大的数据包。由于TCP数据包之间没有边界保护,所以当发生粘包或拆......
  • 连续结构的优缺点
    ​优点:简单支持顺序存取和随机存取所需的磁盘寻道次数和寻到时间最少可以同时读入多个块,检索一个块也很容易缺点:文件不能动态增长预留空间:浪费或  重新分配和移动链接结......
  • 面试官, TCP连接状态中的TIME_WAIT表示什么
    答案其实就藏在下面这张图里,接下来我们就一步一步看这张图,图看完了,答案也就有了。状态名词解释整个图client和server的状态都是从ClOSED开始流转LISTEN:表示server在等......
  • 【转】单页面应用程序优缺点
    图片来自黑马程序员      ......