如果是通讯正常的情况下,2次握手是可以的:正常通讯客户端发送同步请求让server端开始接收,server端准备接收数据并且发送确认信息告诉客户端,“来吧,come on,我已经敞开怀抱”,这时候客户端接到确认信息后开始发data,这是正常情况。

但是实际情况中网络会不稳定,出现通讯问题:情况一,客户端发的同步申请,server没接到,这个没什么问题,客户端可以设置个等待确认的时间,超过后没有接到ack,客户端再次发送syn-send,直到接到ack,发送数据,这种情况没问题。
情况二:客户端没接到ack。这时候如果是2次握手,那就会出现问题。server发送完ack已经是在准备接收数据的状态,而客户端因为没有接到ack,会再次发送syn-send,这个时候server端就会把syn-send当data来接,这就会出现问题。当然你可以在代码中写判断,判断接收的是否是握手信息,还是数据信息,但是这会相当于之后每次接收data都会对data进行检查判断,性能上肯定会下降。而且这样子做有点像应用层在做的事情了。传输层只是做数据的传输,应用层才做数据的解析与应用。

如果是3次握手,就是在网络问题的时候,两边都有确认等待的状态,。。。。。。。。。。。。。。。。。。好了下面不想写了,看片去

为甚TCP的3次握手不是2次握手(思考实验)相关推荐

  1. pythonsocket中tcp通信接收不到数据_TCP 为什么三次握手而不是两次握手(正解版)...

    先说结论 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的. 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已 ...

  2. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  3. TCP协议握手过程,以及为什么握手,不握手又会怎么样?

    1. 为什么要用三次握手 在<计算机网络>一书中其中有提到,三次握手的目的是"为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误",这种情况是:一端(cli ...

  4. mysql三次握手_TCP的三次握手和四次挥手详解

    TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字. 例如,若IP地址为192.3.4.16 ...

  5. 三次握手过程和四次握手过程

    第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence Numbers). 第二次 ...

  6. RTMP握手协议及lal RTMP握手实现解析

    目录 1. RTMP握手解析 为了在保证握手的身份验证功能的基础上尽量减少通信的次数,RTMP握手发送顺序一般是: |client|Server | |---C0+C1---->| |<- ...

  7. 数字IC验证:总线握手协议(VALID/READY握手机制)

    写在前面: 最近学习总线协议,涉及握手,因此整理本文.若内容有疑惑或错误之处,请在评论区指出,感谢! 文章目录 1 什么是"握手"? 2 VALID/READY握手机制 3 Cas ...

  8. TCP/IP 协议栈4层结构及3次握手4次挥手

    TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...

  9. 4-5:TCP协议之连接管理机制(三次握手、四次挥手详解)

    文章目录 一:TCP三次握手过程和状态变迁 (1)三次握手过程和状态变迁过程详解 (2)为什么必须要三次握手? A:只有三次握手才可以阻止重复历史连接的初始化(主要原因) B:同步双方初始序列号 C: ...

最新文章

  1. 车牌识别--Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline
  2. 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
  3. 【经典面试题一】最长公共子序列(经典动态规划题)
  4. mysql 获取子分类_MySQL 自定义函数获取一个分类的无限级子分类
  5. 如何判断当面的网页加载完成?
  6. 22 款设计和可视化神经网络的工具
  7. php r很卡,Laravel 在高并发下很卡?求大神解答
  8. POI技术—用于java开发解析excel的抽象类
  9. libgdx for eclipse开发环境搭建
  10. 20145127 《Java程序设计》第四次实验报告
  11. 【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯
  12. 供应链金融产品业务全揭秘
  13. keychron机械键盘使用感受
  14. 欢迎火狐FireFox正式进入中国
  15. PKI详解与openssl实现私有CA证书签发
  16. flex:1 的含义 以及属性值1的含义
  17. BackTrack3 硬盘安装教程
  18. pandas基础篇一
  19. vue+axios 实现Excel下载
  20. 全球土地利用/覆盖数据

热门文章

  1. operator的解释
  2. 3600000毫秒等于多少小时_工地扬尘监测规定-多少算超标?
  3. Java实验报告手写_java实验1实验报告(20135232王玥)
  4. 企业级虚拟化实战之KVM——从KVM到云计算OpenStack
  5. week3-day7 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
  6. 湖南艺术职业学院计算机音乐,湖南艺术职业学院音乐系
  7. 【笔记】LaTex参考文献bibtex的使用(RAA)
  8. 安装双系统后卸载统信
  9. IPsec ACL隧道模式的路由设置
  10. 手机便签内容怎么分享到微博上?