为甚TCP的3次握手不是2次握手(思考实验)
如果是通讯正常的情况下,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次握手(思考实验)相关推荐
- pythonsocket中tcp通信接收不到数据_TCP 为什么三次握手而不是两次握手(正解版)...
先说结论 为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的. 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已 ...
- 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开
用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...
- TCP协议握手过程,以及为什么握手,不握手又会怎么样?
1. 为什么要用三次握手 在<计算机网络>一书中其中有提到,三次握手的目的是"为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误",这种情况是:一端(cli ...
- mysql三次握手_TCP的三次握手和四次挥手详解
TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字. 例如,若IP地址为192.3.4.16 ...
- 三次握手过程和四次握手过程
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence Numbers). 第二次 ...
- RTMP握手协议及lal RTMP握手实现解析
目录 1. RTMP握手解析 为了在保证握手的身份验证功能的基础上尽量减少通信的次数,RTMP握手发送顺序一般是: |client|Server | |---C0+C1---->| |<- ...
- 数字IC验证:总线握手协议(VALID/READY握手机制)
写在前面: 最近学习总线协议,涉及握手,因此整理本文.若内容有疑惑或错误之处,请在评论区指出,感谢! 文章目录 1 什么是"握手"? 2 VALID/READY握手机制 3 Cas ...
- TCP/IP 协议栈4层结构及3次握手4次挥手
TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输.TCP/IP 协议采用4层结构,分别是应用层.传输层.网络层和链路 ...
- 4-5:TCP协议之连接管理机制(三次握手、四次挥手详解)
文章目录 一:TCP三次握手过程和状态变迁 (1)三次握手过程和状态变迁过程详解 (2)为什么必须要三次握手? A:只有三次握手才可以阻止重复历史连接的初始化(主要原因) B:同步双方初始序列号 C: ...
最新文章
- 车牌识别--Towards End-to-End License Plate Detection and Recognition: A Large Dataset and Baseline
- 【Luogu】P3927 SAC E#1 - 一道中档题 Factorial
- 【经典面试题一】最长公共子序列(经典动态规划题)
- mysql 获取子分类_MySQL 自定义函数获取一个分类的无限级子分类
- 如何判断当面的网页加载完成?
- 22 款设计和可视化神经网络的工具
- php r很卡,Laravel 在高并发下很卡?求大神解答
- POI技术—用于java开发解析excel的抽象类
- libgdx for eclipse开发环境搭建
- 20145127 《Java程序设计》第四次实验报告
- 【PROTEUS】使用PROTEUS与电脑串口调试助手进行通讯
- 供应链金融产品业务全揭秘
- keychron机械键盘使用感受
- 欢迎火狐FireFox正式进入中国
- PKI详解与openssl实现私有CA证书签发
- flex:1 的含义 以及属性值1的含义
- BackTrack3 硬盘安装教程
- pandas基础篇一
- vue+axios 实现Excel下载
- 全球土地利用/覆盖数据
热门文章
- operator的解释
- 3600000毫秒等于多少小时_工地扬尘监测规定-多少算超标?
- Java实验报告手写_java实验1实验报告(20135232王玥)
- 企业级虚拟化实战之KVM——从KVM到云计算OpenStack
- week3-day7 某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问:有几种换法?
- 湖南艺术职业学院计算机音乐,湖南艺术职业学院音乐系
- 【笔记】LaTex参考文献bibtex的使用(RAA)
- 安装双系统后卸载统信
- IPsec ACL隧道模式的路由设置
- 手机便签内容怎么分享到微博上?