這樣理解,你也能在 30 秒內講明白 TCP 三次握手

前言

某四年經驗的同事,去一家包括老闆在內總人數只有 13 人的創業團隊,面試一份移動端技術經理的職位。開始聊得還挺好的,涉及的不外乎何時何地項目上解決了哪些用戶痛點、開發過程中遇到過哪些問題、怎麼看待和診斷遇到過的問題、有沒有業餘的開源項目等等。

畢竟四年老手,面試前也有些準備,輕鬆地就答覆了前面這些疑問,只是沒想到,面試官最後拋出這樣一個問題,把同事給難住了:如何用 30 秒給新手講明白 TCP 三次握手?

技術經理的職責是解決認知困擾

技術經理不同於剛畢業一兩年的工程師,也不能和“主程”同日而語。技術經理的職責是,“爲團隊成員指明正確的方向、用最小的代價幫助團隊快速成長”。

這句話看似難理解,其實歸根結底是指,技術經理的首要工作是解決團隊成員的認知困擾,包括在遇到研發問題時,能結合背景知識輕鬆定位到問題的實質,以及面對新技術和陌生領域時,能夠結合背景知識迅速歸類和深入淺出地給新手講明技術的來由。

你的遭遇,也是共同普遍的遭遇

換言之,如果交待任務時,上司只會“給個眼神你自己體會”,

或是遇到問題時,一言不合就發車、手把手帶你怎麼做、留下一旁觀看的你一臉懵逼,而不是首先使用簡練的語言將事情的緣由講明白、然後引導你、鼓勵你自己去完成,那這樣的相處勢必會讓你感到自己很笨很囧。

然而,事情變成這樣,並不全是你的錯,你每天都要頂着壓力、忙着完成搬磚的任務,深度思考的時間自然就少。與此同時,上司若是沒能夠履行自己的職責,而只是經驗上十分嫺熟,那他是無法真正幫你撥開迷霧、帶你快速成長的。

下面回到最初的那個問題:

如何用 30 秒給新手講明白 TCP 三次握手?

首先,絕不可能引用某些書籍或某百科的說辭。本來新手就已經足夠迷惑了,結果這些“權威”反倒樂此不疲地介紹表象、介紹怎麼做,一言不合就 ACK=j+1、SYN+ACK,而絕口不提事情的本質、現象產生的緣由。

總之聽不懂都怪新手自己,他們的世界觀是完美而母庸質疑的。如果新手因爲被蠱惑而被迫盲從,那正是他們想看到的。比起用技術改善生活,他們更熱衷於拔高門檻或建立個人宗教。

好在這位同事除了經驗嫺熟,業餘時間還有覆盤的習慣,能夠拋開“怎麼做”的表象,去審視一件事它之所以存在,到底“是什麼”、“爲什麼”。因此,藉此機會我們和這位同事一起來審視一下,三次握手的本質到底是什麼?引發它這麼做的背景又是什麼?

三次握手的背景是通信雙方“人在家中坐”

如你所知,通信設備之所以存在,是因爲有“遠距離通信”的需要,否則你就站在我面前,我何須對着你講電話呢?既然我與通信的另一方有一定的物理距離,並且既然我選擇使用通信設施,那我就不可能親自護送信息到對方面前,我和對方都需要原地不動地交由第三方送信使者來幫助我們來回傳遞信息

因此,在相互寄送真正的信物之前,我們需要首先確認雙方收發信件的能力是否正常,否則我寄出信物,路上遭遇車禍,或對方已搬家,那麼我們便無法實現彼此的通信。並且前面也說了,“人在家中坐,不可親自來”,我和對方各自坐在家裏,怎麼才能知道彼此之間能夠正常收發信件呢

正是基於上述的背景,我們的前輩發明了三次握手 —— 用於“確認通信雙方收發數據能力”的解決方案。

三次握手的本質是確認通信雙方收發數據的能力

首先,我讓信使運輸一份信件給對方,對方收到了,那麼他就知道了我的發件能力和他的收件能力是可以的

於是他給我回信,我若收到了,我便知我的發件能力和他的收件能力是可以的,並且他的發件能力和我的收件能力是可以

然而此時他還不知道他的發件能力和我的收件能力到底可不可以,於是我最後回饋一次,他若收到了,他便清楚了他的發件能力和我的收件能力是可以的

這,就是三次握手,這樣說,你理解了嗎?

全文完

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章