通俗理解TCP握手次数是三次?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/richardzrc/article/details/37567793
理解之后。应该说是至少三次就能够保证可靠传输了。


看到网上一篇帖子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
就非常easy明确为什么三次握手是必须的了.
这个问题的本质是, 通过一个不全然可靠的信道, 最少须要几次消息传输, 信道两边的人能够对一个问题达成一致. 对于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

猜你喜欢

转载自www.cnblogs.com/mqxnongmin/p/10803231.html