前言
今天肥朝和大家唠唠老生常谈的一个问题,TCP为什么要三次握手。为什么会突然想起这个话题呢?
按照肥朝以往的风格,网上一搜就一大把的文章,肥朝一般都是不愿意去提及的。其实每个技术人都或多或少萌生过写博客的想法,但是后面发现想写的内容网上似乎都有,最后就断了这个念头。
因此,肥朝的定位就两个,一个是成体系的源码解析类文章(类似17年的 Dubbo
源码解析和19年的图解 SpringBoot
源码),一个是 真实 场景源码实战,既然是真实场景,那么雷同的概率就几乎忽略不计了。
既然如此,那为啥要提TCP的三次握手?这些别说网上了,大学课本都大把,而且还权威。
对于学习的一些思考
在 计算机原理
、 网络
、 编译原理
、 数据结构与算法
等标配计算机知识上,我们经常遇到的问题是,学了面试完就忘,下次面试又要重新“背”题,这样就会导致时间成本过大。因此这段时间肥朝也在思考 如何学习
这个问题。因为这些标配的知识点,往往晦涩难懂,需要一定的功力和工作年限才能做到 理解性记忆
。我在思考,学习知识的过程,能否也像架构演进一样,从0到1,从1到10,从10到100这样呢?具体是什么意思呢?
就像架构演进一样,我们先用最简单的单机应用快速搭建业务抢占市场,而不是一上来就直接分布式、高可用,容器化。
同理我们理解一个知识点,是不是一开始并不一定要这么权威,而是先粗略了解他的大致基本思路,等工作经验、知识体系逐步丰满完善,我们再回过头,再进一步学习,这样效果是否会更好?
回到主题
要说TCP为什么是三次握手,那么其实换个角度而言,就是要证明2次太少,4次又没必要。
所谓的三次握手,他的本质是什么?TCP是可靠传输协议,他的本质其实就是要确定客户端和服务端,他们的 发送
和 接收
能力是没有问题的。也就是客户端要考察服务端的 发送
和 接收
能力,服务端也要考察客户端的 发送
和 接收
能力。
第一次握手
肥朝小声逼逼:第一次握手服务端收到了数据包,确定了客户端的发送能力是没有问题的(如图)
第二次握手
肥朝小声逼逼:第二次握手客户端收到了数据包,这个时候,就能证明服务端的发送能力是没有问题的。但是服务端的接收能力有没有问题呢?第一次握手的时候,我们提出的问题是“怎么找到肥朝的公众号?”,收到的回答是“公众号搜索名称肥朝就可以了,你试下可以了告诉我”。回答正好是我们刚才问的,那就说明,服务端的接收能力是没有问题的(如图)
那么,回到刚开始的问题,为啥两次握手不行,因为这个时候,客户端已经确定了服务端的 发送
和 接收
能力都没有问题,但是服务端,却没有确定,客户端的 接收
能力,到底有没有问题。
第三次握手
肥朝小声逼逼:第三次握手,服务端收到了数据包,发现确实是刚才提问的答案,那么,就确定了客户端的 接收
能力是没有问题的。
再次回到刚才的问题,3次,是完成双方考察 发送
和 接收
能力的最少次数。这也就是为啥不是2次,也不是4次。
写在最后
当然你想看更专业的TCP相关知识,大学和考研教辅资料也是不错的选择。留言和肥朝说一下你的春节学习情况吧。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 老生常谈,TCP 为啥要三次握手?
- 老生常谈分布式锁
- 老生常谈,HashMap的死循环
- 老生常谈——Android冷启动优化
- 老生常谈:Promise 用法与源码分析
- 《iOS面试题 - 老生常谈》之提示答案
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Nature of Code
Daniel Shiffman / The Nature of Code / 2012-12-13 / GBP 19.95
How can we capture the unpredictable evolutionary and emergent properties of nature in software? How can understanding the mathematical principles behind our physical world help us to create digital w......一起来看看 《The Nature of Code》 这本书的介绍吧!