TCP为什么不是两次握手而是三次?
为什么不采用两次握手?
如果是两次握手的情景:
客户端在发送一个连接建立请求之后进入等待状态,等到服务端确认之后就进入established状态。服务端在发送一个确认连接建立请求报文之后(不管客户端是否有回应)也进入established状态。
这就好比,
A给B打电话,
A:你听得到我说话吗?
B:我听得到啊
A和B就都以为对方都能听得到自己了。
但有一种情况是,B的麦是坏的,A根本就听不到B说话,结果A没收到B的回应,但B却以为A能听得到他,B就一直等着A说点什么...这样让B身心俱疲。
三次握手:
客户端在发送一个连接建立请求报文之后进入等待状态,等到服务端返回确认建立连接的通知;
服务端发送确认建立连接请求报文,同时向客户端发送连接建立请求报文,进入等待状态。
客户端接受到服务端发送的确认请求报文。进入established状态。客户端接受到来自服务端的连接建立请求报文,发送确认连接建立请求报文。
服务端接受到来自客户端的确认建立连接报文,进入established。
如果是三次握手,则会是这样:
A:你能听得到我说话吗?
B:我听得到啊,你能不能听得到我说话?
A:我也听得到你啊。( established)
B:(established)
这样子A和B都能明确知道对方都能听到自己说话了。
这样A和B就能安心煲电话粥了。从此过上幸福的快乐的生活。
TCP为什么不是两次握手而是三次?的更多相关文章
- TCP两次握手
TCP的三次握手已经说烂了,TCP为何要三次握手?为何不两次握手也有很多说法.对于这些类似的问题,最好的办法是看RFC 常规思路,由面到点 两军问题 在不可靠通信下,两军想要达到状态一致是无解的.因为 ...
- 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】
网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的. 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的 ...
- TCP 两次握手为什么无法阻止历史连接?
摘要:在两次握手的情况下,「被动发起方」没有中间状态给「主动发起方」来阻止历史连接,导致「被动发起方」可能建立一个历史连接,造成资源浪费. 本文分享自华为云社区<TCP 两次握手为什么无法阻止历 ...
- TCP 协议连接与关闭的握手
原文链接 http://blog.csdn.net/oney139/article/details/8103223 TCP头部: 其中 ACK SYN 序号 这三个部分在以下会用到,它们 ...
- tcp网络通信的三次握手与三次挥手
背景描述 通过上一篇中网络模型中的IP层的介绍,我们知道网络层,可以实现两个主机之间的通信.但是这并不具体,因为,真正进行通信的实体是在主机中的进程,是一个主机中的一个进程与另外一个主机中的一个进程在 ...
- tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?
用wireshark 抓包,看看tcp 断开连接的过程. 以前书上说tcp断开连接,4次握手,可我为什么wireshark 只能抓到3个包? 百度一下,别人也有类似的疑问. [求助]书上和网上的资料 ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
- LayoutInflater.inflate()方法两个参数和三个参数
转载请标明出处:https://www.cnblogs.com/tangZH/p/7074853.html 很多人都用过LayoutInflater(布局填充器) 对于我来说通常使用下面两种:Lay ...
- LeetCode:两数之和、三数之和、四数之和
LeetCode:两数之和.三数之和.四数之和 多数之和问题,利用哈希集合减少时间复杂度以及多指针收缩窗口的巧妙解法 No.1 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在 ...
随机推荐
- 用DDK开发的9054驱动 .
和S5933比较起来,开发PLX9054比较不幸,可能是第一次开发PCI的缘故吧.因为,很多PCI的例子都是对S5933,就连微软出版的<Programming the Microsoft Wi ...
- javascript 正则表达式学习教程
正则表达式 就是用某种模式去匹配一类字串的一个公式 RegExp 对象表示正则表达式 Regular Expression 正则表达式是很多程序设计语法都支持的 //①隐式创建 var regexp ...
- 【mongodb系统学习之十】mongodb查询(三)
6).特殊类型的查询: A).查询键为null的文档:查询时,如果按常规的key:null的方式做条 件,不仅会匹配到值为null的,还会匹配到不存在这个键的:如果只是要值为null的文档,就必须使用 ...
- freemarker自定义标签报错(一)
freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Token manager error: freemarker.core.TokenMgr ...
- MiniGUI + Hi3531 笔记 .
一.移动光驱安装Ubuntu 10.04 1. 重启系统按住Delete进入BIOS界面! 2. 退出/高级模式 --> 启动 --> 启动设备选择. 移动光驱正常被识别后这里应该 ...
- Django学习-1-管理我的django程序
网页中文文档 http://python.usyiyi.cn/documents/django_182/topics/db/models.html Django性能测试工具 https://githu ...
- js、css等引入文件路径正确,却报404的解决办法
问题的原因,一般是web.xml文件的过滤器给设置"/"或者"/*"全部拦截了,你可以这样设置过滤器,"*.html"等,就可以正常引用文件 ...
- 由会话信息保存认识ThreadLocal
这次想总结ThreadLocal这个东西,也是由于项目中使用到了它去帮助保存会话信息.传统的(或者说我在学校的时候)方法,大多是用服务端的session保存会话,与浏览器端的cookie协作去追踪这个 ...
- 试着讲清楚:js代码运行机制
一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...
- 都是SCI惹的祸?
都是SCI惹的祸? 过去只知道地质学家需要跋山涉水寻找宝藏,最近同一位海外归来的学者谈起,方知少数其它领域的科研人员,也"跋山涉水",在内地研究机构寻找可以写好文章的研究成果,不管 ...