原创 | 老生常谈,TCP为啥要三次握手?

前言

今天肥朝和你们唠唠老生常谈的一个问题,TCP为何要三次握手。为何会忽然想起这个话题呢?面试

按照肥朝以往的风格,网上一搜就一大把的文章,肥朝通常都是不肯意去说起的。其实每一个技术人都或多或少萌生过写博客的想法,可是后面发现想写的内容网上彷佛都有,最后就断了这个念头。算法

图片

所以,肥朝的定位就两个,一个是成体系的源码解析类文章(相似17年的Dubbo源码解析和19年的图解SpringBoot源码),一个是真实场景源码实战,既然是真实场景,那么雷同的几率就几乎忽略不计了。网络

既然如此,那为啥要提TCP的三次握手?这些别说网上了,大学课本都大把,并且还权威。数据结构

对于学习的一些思考

计算机原理网络编译原理数据结构与算法等标配计算机知识上,咱们常常遇到的问题是,学了面试完就忘,下次面试又要从新“背”题,这样就会致使时间成本过大。所以这段时间肥朝也在思考如何学习这个问题。由于这些标配的知识点,每每晦涩难懂,须要必定的功力和工做年限才能作到理解性记忆。我在思考,学习知识的过程,可否也像架构演进同样,从0到1,从1到10,从10到100这样呢?具体是什么意思呢?架构

就像架构演进同样,咱们先用最简单的单机应用快速搭建业务抢占市场,而不是一上来就直接分布式、高可用,容器化。分布式

同理咱们理解一个知识点,是否是一开始并不必定要这么权威,而是先粗略了解他的大体基本思路,等工做经验、知识体系逐步丰满完善,咱们再回过头,再进一步学习,这样效果是否会更好?ide

回到主题

要说TCP为何是三次握手,那么其实换个角度而言,就是要证实2次太少,4次又不必。学习

所谓的三次握手,他的本质是什么?TCP是可靠传输协议,他的本质其实就是要肯定客户端和服务端,他们的发送接收能力是没有问题的。也就是客户端要考察服务端的发送接收能力,服务端也要考察客户端的发送接收能力。spa

第一次握手

肥朝小声逼逼:第一次握手服务端收到了数据包,肯定了客户端的发送能力是没有问题的(如图)code

第二次握手

肥朝小声逼逼:第二次握手客户端收到了数据包,这个时候,就能证实服务端的发送能力是没有问题的。可是服务端的接收能力有没有问题呢?第一次握手的时候,咱们提出的问题是“怎么找到肥朝的公众号?”,收到的回答是“公众号搜索名称肥朝就能够了,你试下能够了告诉我”。回答正好是咱们刚才问的,那就说明,服务端的接收能力是没有问题的(如图)

那么,回到刚开始的问题,为啥两次握手不行,由于这个时候,客户端已经肯定了服务端的发送接收能力都没有问题,可是服务端,却没有肯定,客户端的接收能力,到底有没有问题。

第三次握手

图片

肥朝小声逼逼:第三次握手,服务端收到了数据包,发现确实是刚才提问的答案,那么,就肯定了客户端的接收能力是没有问题的。

再次回到刚才的问题,3次,是完成双方考察发送接收能力的最少次数。这也就是为啥不是2次,也不是4次。

写在最后

固然你想看更专业的TCP相关知识,大学和考研教辅资料也是不错的选择。留言和肥朝说一下你的春节学习状况吧。



图片

相关文章
相关标签/搜索