通俗理解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

时间: 2024-08-26 21:32:04

通俗理解TCP握手次数是三次的相关文章

深入理解TCP协议及其源代码——三次握手

Wireshark分析报文 对TCP三次握手过程进行抓包分析,并通过Wireshark的Analyze分析出tcp握手过程,通过截图体现传输内容. 1.捕获大量的由本地主机到远程服务器的TCP分组: 2.浏览追踪信息 在显示筛选规则编辑框中输入“tcp”,可以看到在本地主机和服务器之间传输的一系列tcp和HTTP消息,你应该能看到包含SYN Segment的三次握手.通过Analyze的Follow TCP Stream分析出传输内容.写出其中某TCP数据包的源IP地址,目的IP地址,源端口,目

通俗理解TCP/IP协议三次握手四次分手流程

转自:https://blog.csdn.net/special23/article/details/54137298 三次握手流程 客户端发个请求“开门呐,我要进来”给服务器 服务器发个“进来吧,我去给你开门”给客户端 客户端有很客气的发个“谢谢,我要进来了”给服务器 四次挥手流程 客户端发个“时间不早了,我要走了”给服务器,等服务器起身送他 服务器听到了,发个“我知道了,那我送你出门吧”给客户端,等客户端走 服务器把门关上后,发个“我关门了”给客户端,然后等客户端走(尼玛~矫情啊) 客户端发

滴滴工程师带你深入理解 TCP 握手分手全过程

本文作者:饶全成,中科院计算所硕士,滴滴出行后端研发工程师. 个人主页:https://zhihu.com/people/raoquancheng 记得刚毕业找工作面试的时候,经常会被问到:你知道"3次握手,4次挥手"吗?这时候我会"胸有成竹"地"背诵"前期准备好的"答案",第一次怎么怎么,第二次--答完就没有下文了,面试官貌似也没有深入下去的意思,深入下去我也不懂,皆大欢喜! 作为程序员,要有"刨根问底"

通俗大白话来理解TCP协议的三次握手和四次分手

通俗理解: 但是为什么一定要进行三次握手来保证连接是双工的呢,一次不行么?两次不行么?我们举一个现实生活中两个人进行语言沟通的例子来模拟三次握手. 引用网上的一些通俗易懂的例子,虽然不太正确,后面会指出,但是不妨碍我们理解,大体就是这么个理解法. 第一次对话: 老婆让甲出去打酱油,半路碰到一个朋友乙,甲问了一句:哥们你吃饭了么? 结果乙带着耳机听歌呢,根本没听到,没反应.甲心里想:跟你说话也没个音,不跟你说了,沟通失败.说明乙接受不到甲传过来的信息的情况下沟通肯定是失败的. 如果乙听到了甲说的话

TCP三次握手和四次挥手通俗理解

一.TCP报文格式 在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接.TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…) 报文主要段的意思 序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号 确认序号:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1.只有ACK=1时才有效. ACK:确认序号的标志,ACK=1表

理解TCP为什么需要进行三次握手(白话)

首先简单介绍一下TCP三次握手     在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态: 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此

深入理解TCP协议及其源代码——connect及bind、listen、accept背后的“三次握手”

一.TCP简介 TCP(Transmission Control Protocol,传输控制协议)是一个传输层(Transport Layer)协议,它在TCP/IP协议族中的位置如图1所示.它是专门为了在不可靠的互联网络上提供一个面向连接的且可靠的端到端(进程到进程)字节流而设计的.互联网络与单个网络不同,因为互联网络的不同部分可能有截然不同的拓扑.带宽.延迟.分组大小和其他参数.TCP的设计目标是能够动态地适应互联网络的这些特性,而且当面对多种失败的时候仍然足够健壮. 图1 TCP在TCP/

TCP协议中的三次握手和四次挥手(图解)【转】

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. [更新于2017.01.04 ]该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好.这么久才来更新,抱歉!! 错误配图如下: 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?

tcp/ip协议的三次握手4次断开

tcp/ip协议的3次握手4次断开: (注:syn用来建立连接 sck用来确认连接 rst用来复位连接错误 ) (listen监听状态 syn_sent 在发送连接请求后等待匹配的连接请求 syn_RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认  established 完成连接,可以传送数据 Sequence     number顺序号码 Acknowledge number确认号码 FIN(finish结束)URG(urgent紧急)PSH(push传送)) 三次握手: c