这样理解,你也能在 30 秒内讲明白 TCP 三次握手
作者:互联网
前言
某四年经验的同事,去一家包括老板在内总人数只有 13 人的创业团队,面试一份移动端技术经理的职位。开始聊得还挺好的,涉及的不外乎何时何地项目上解决了哪些用户痛点、开发过程中遇到过哪些问题、怎么看待和诊断遇到过的问题、有没有业余的开源项目等等。
毕竟四年老手,面试前也有些准备,轻松地就答复了前面这些疑问,只是没想到,面试官最后抛出这样一个问题,把同事给难住了:如何用 30 秒给新手讲明白 TCP 三次握手?
技术经理的职责是解决认知困扰
技术经理不同于刚毕业一两年的工程师,也不能和“主程”同日而语。技术经理的职责是,“为团队成员指明正确的方向、用最小的代价帮助团队快速成长”。
这句话看似难理解,其实归根结底是指,技术经理的首要工作是解决团队成员的认知困扰,包括在遇到研发问题时,能结合背景知识轻松定位到问题的实质,以及面对新技术和陌生领域时,能够结合背景知识迅速归类和深入浅出地给新手讲明技术的来由。
你的遭遇,也是共同普遍的遭遇
换言之,如果交待任务时,上司只会“给个眼神你自己体会”,
或是遇到问题时,一言不合就发车、手把手带你怎么做、留下一旁观看的你一脸懵逼,而不是首先使用简练的语言将事情的缘由讲明白、然后引导你、鼓励你自己去完成,那这样的相处势必会让你感到自己很笨很囧。
然而,事情变成这样,并不全是你的错,你每天都要顶着压力、忙着完成搬砖的任务,深度思考的时间自然就少。与此同时,上司若是没能够履行自己的职责,而只是经验上十分娴熟,那他是无法真正帮你拨开迷雾、带你快速成长的。
下面回到最初的那个问题:
如何用 30 秒给新手讲明白 TCP 三次握手?
首先,绝不可能引用某些书籍或某百科的说辞。本来新手就已经足够迷惑了,结果这些“权威”反倒乐此不疲地介绍表象、介绍怎么做,一言不合就 ACK=j+1、SYN+ACK,而绝口不提事情的本质、现象产生的缘由。
总之听不懂都怪新手自己,他们的世界观是完美而母庸质疑的。如果新手因为被蛊惑而被迫盲从,那正是他们想看到的。比起用技术改善生活,他们更热衷于拔高门槛或建立个人宗教。
好在这位同事除了经验娴熟,业余时间还有复盘的习惯,能够抛开“怎么做”的表象,去审视一件事它之所以存在,到底“是什么”、“为什么”。因此,借此机会我们和这位同事一起来审视一下,三次握手的本质到底是什么?引发它这么做的背景又是什么?
三次握手的背景是通信双方“人在家中坐”
如你所知,通信设备之所以存在,是因为有“远距离通信”的需要,否则你就站在我面前,我何须对着你讲电话呢?既然我与通信的另一方有一定的物理距离,并且既然我选择使用通信设施,那我就不可能亲自护送信息到对方面前,我和对方都需要原地不动地交由第三方送信使者来帮助我们来回传递信息。
因此,在相互寄送真正的信物之前,我们需要首先确认双方收发信件的能力是否正常,否则我寄出信物,路上遭遇车祸,或对方已搬家,那么我们便无法实现彼此的通信。并且前面也说了,“人在家中坐,不可亲自来”,我和对方各自坐在家里,怎么才能知道彼此之间能够正常收发信件呢?
正是基于上述的背景,我们的前辈发明了三次握手 —— 用于“确认通信双方收发数据能力”的解决方案。
三次握手的本质是确认通信双方收发数据的能力
首先,我让信使运输一份信件给对方,对方收到了,那么他就知道了我的发件能力和他的收件能力是可以的。
于是他给我回信,我若收到了,我便知我的发件能力和他的收件能力是可以的,并且他的发件能力和我的收件能力是可以。
然而此时他还不知道他的发件能力和我的收件能力到底可不可以,于是我最后回馈一次,他若收到了,他便清楚了他的发件能力和我的收件能力是可以的。
这,就是三次握手,这样说,你理解了吗?
标签:发件,握手,30,能力,TCP,收件,三次,新手 来源: https://blog.51cto.com/14217562/2384804