通俗理解TCP握手次数是三次
理解之后,应该说是至少三次就可以保证可靠传输了。
看到网上一篇帖子http://www.cnblogs.com/TechZi/archive/2011/10/18/2216751.html
是这么说的,“我Google该问题答案后发现,网络上对于“三次握手”的过程都有很详细的描述,但对于为什么需要“三次握手”来建立连接却没有很好的答案。只能求助于书本了。”
后面有谢希德树和另一本书的解释,其实还是太书面化,不够通俗,但是看到后面引到google论坛看到一个让我非常满意的答案。
https://groups.google.com/forum/#!topic/pongba/kF6O7-MFxM0/discussion
这是通信当中的基本问题, 看明白Two Generals' Problem:
http://en.wikipedia.org/wiki/Two_Generals'_Problem
就很容易明白为什么三次握手是必须的了.
这个问题的本质是, 通过一个不完全可靠的信道, 最少需要几次消息传输, 信道两边的人能够对一个问题达成一致. 对于TCP来说, 无论有没有初始
序号的要求, 想要两边都同意开始传出数据, 就至少需要3次消息的交换:
0次: 显然不行
1次: A->B, A不知道B是否同意
2次: A->B, B->A. B不知道A是否收到自己的消息, 因为信道不完全可靠
3次: A->B, B->A, A->B. 两边都收到了对方的ACK, 意味着各自都了解了对方的意图, 从而可以对是否开始通信这个最简单的问题
达成一致.
简单而言,就是0次显然不行,1次B未必收到,2次,B不知道A是否收到,其实更准确的说,是B的reply未必到A,A是不敢发的,因为不确信B是否做好准备,3次的话刚好,B->A表示B做好了准备
第三次A->B A收到了B的reply,双方都知道对方要做什么,A知道B准备好收,B知道A准备好发,第三次A->B没到也没关系,因为系统关注的是A试图发第三次,这个应该是TCP-IP有个变量
记录下来第三次确实发了,至于收不收到没关系。
当然4次也可以,但只要3次就可以确认了,所以为何不降低代价呢,TCP请求也是很耗资源的。
从http的过程来看,首先DNS找IP,应该是GFW屏蔽了域名有google.com的url,然后更快的返回一个假的IP,尽管真实的可以查到,但是总是比假的要慢很多到client,所以被墙了,还没到TCPIP这一步,这是第二步,找到IP之后才能TCPIP,当然,GFW也可能直接屏蔽IP
通俗理解TCP握手次数是三次的更多相关文章
- 通俗理解TCP的三次握手
三次握手流程的本质,可以这么理解:TCP的三次握手其实是双方各一次握手,各一次确认,只是其中一次握手和确认合并在一起. 当然也可以更通俗的去理解: "喂,你听得到吗?" " ...
- 通俗理解TCP/IP协议三次握手四次分手流程
转自:https://blog.csdn.net/special23/article/details/54137298 三次握手流程 客户端发个请求“开门呐,我要进来”给服务器 服务器发个“进来吧,我 ...
- 滴滴工程师带你深入理解 TCP 握手分手全过程
本文作者:饶全成,中科院计算所硕士,滴滴出行后端研发工程师. 个人主页:https://zhihu.com/people/raoquancheng 记得刚毕业找工作面试的时候,经常会被问到:你 ...
- 大数据技术 - 通俗理解MapReduce之WordCount(三)
上一章我们编写了简单的 MapReduce 程序,掌握这些就能编写大多数数据处理的代码.但是 MapReduce 框架提供给用户的能力并不止如此,本章我们仍然以上一章 word count 为例,继续 ...
- 通俗大白话来理解TCP协议的三次握手和四次断开
from : https://blog.csdn.net/Neo233/article/details/72866230?locationNum=15&fps=1%20HTTP%E6%8F%A ...
- 通俗大白话来理解TCP协议的三次握手和四次分手
通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指 ...
- 通俗了解TCP/IP三次握手四次挥手
前言: tcp/ip通信机制是计算机中很重要的一个知识点,不是一句两句就能解释清楚的,需要反复推敲其中的玄妙. 通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我 ...
- 【俗话说】换个角度理解TCP的三次握手和四次挥手
PS:通俗一点的解释都会在引用块中 Nothing is true, Everything is permitted. 0. 什么是TCP TCP,全称Transmission Control Pro ...
- 如何理解TCP的三次握手协议?
• TCP是一个面向链接的协议,任何一个面向连接的协议,我们都可以将其类比为我们最熟悉的打电话模型. 如何类比呢?我们可以从建立和销毁两个阶段分别来看这件事情. 建立连接阶段 首先,我们来看看TCP中 ...
随机推荐
- http头部 Expect
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/90 在通过curl调用对方接口时,发现超时现象很严重,于是询问对 ...
- 一口一口吃掉Volley(四)
欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/02/17/一口一口吃掉Volley(四)/ 非常感谢你能够坚持看到第四篇,同时这也是这个Volley系列教 ...
- IT小白学习Discuz!框架(一)
1.Discuz!是什么? 答:(1).Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统. (2).Crossday ...
- springBoot系列教程07:异常捕获
发生异常是很正常的事,异常种类也是千奇百怪,发生异常并不可怕,只要正确的处理,并正确的返回错误信息并无大碍,如果不进行捕获或者处理,分分钟服务器宕机是很正常的事 所以处理异常时,最基本的要求就是发生异 ...
- vue的挖坑和爬坑之css背景图样式终极解决方法
原问题 #wrapper{ width:100%; height:100%; position:fixed; background-image:url(./img/open_bg.jpg) } 在.v ...
- java 集合类基础问题汇总
1.Java集合类框架的基本接口有哪些? 参考答案 集合类接口指定了一组叫做元素的对象.集合类接口的每一种具体的实现类都可以选择以它自己的方式对元素进行保存和排序.有的集合类允许重复的键,有些不允许 ...
- <转>LOG日志级别
Level Description Example emerg Emergencies - system is unusable 紧急 - 系统无法使用 Child cannot open lock ...
- MicroPython-TPYBoard固件编译教程
本文主要介绍一下,在Linux环境下编译micropython固件的方法和流程. 首先,我们先来看一下MicroPython的源码结构. github地址:https://github.com/mic ...
- vue2.0 vetur插件提示 'v-for' directives require 'v-bind:key' directives 的解决办法
在用vscode编写vue代码时,因为安装的有vetur插件,所以当代码中有v-for语法时,会提示 [vue-language-server] 'v-for' directives require ...
- 【转】彻底理解js中this的指向,不必硬背。
首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然 ...