老背題卻記不住TCP爲何三次握手?

前言

今天肥朝和你們嘮嘮老生常談的一個問題,TCP爲何要三次握手。爲何會忽然想起這個話題呢?面試

按照肥朝以往的風格,網上一搜就一大把的文章,肥朝通常都是不肯意去說起的。其實每一個技術人都或多或少萌生過寫博客的想法,可是後面發現想寫的內容網上彷佛都有,最後就斷了這個念頭。算法

所以,肥朝的定位就兩個,一個是成體系的源碼解析類文章(相似17年的Dubbo源碼解析和19年的圖解SpringBoot源碼),一個是真實場景源碼實戰,既然是真實場景,那麼雷同的機率就幾乎忽略不計了。網絡

既然如此,那爲啥要提TCP的三次握手?這些別說網上了,大學課本都大把,並且還權威。數據結構

對於學習的一些思考

計算機原理網絡編譯原理數據結構與算法等標配計算機知識上,咱們常常遇到的問題是,學了面試完就忘,下次面試又要從新「背」題,這樣就會致使時間成本過大。所以這段時間肥朝也在思考如何學習這個問題。由於這些標配的知識點,每每晦澀難懂,須要必定的功力和工做年限才能作到理解性記憶。我在思考,學習知識的過程,可否也像架構演進同樣,從0到1,從1到10,從10到100這樣呢?具體是什麼意思呢?架構

就像架構演進同樣,咱們先用最簡單的單機應用快速搭建業務搶佔市場,而不是一上來就直接分佈式、高可用,容器化。分佈式

同理咱們理解一個知識點,是否是一開始並不必定要這麼權威,而是先粗略瞭解他的大體基本思路,等工做經驗、知識體系逐步豐滿完善,咱們再回過頭,再進一步學習,這樣效果是否會更好?學習

回到主題

要說TCP爲何是三次握手,那麼其實換個角度而言,就是要證實2次太少,4次又不必。3d

所謂的三次握手,他的本質是什麼?TCP是可靠傳輸協議,他的本質其實就是要肯定客戶端和服務端,他們的發送接收能力是沒有問題的。也就是客戶端要考察服務端的發送接收能力,服務端也要考察客戶端的發送接收能力。code

第一次握手

肥朝小聲逼逼:第一次握手服務端收到了數據包,肯定了客戶端的發送能力是沒有問題的(如圖)cdn

第二次握手

肥朝小聲逼逼:第二次握手客戶端收到了數據包,這個時候,就能證實服務端的發送能力是沒有問題的。可是服務端的接收能力有沒有問題呢?第一次握手的時候,咱們提出的問題是「怎麼找到肥朝的公衆號?」,收到的回答是「公衆號搜索名稱肥朝就能夠了,你試下能夠了告訴我」。回答正好是咱們剛纔問的,那就說明,服務端的接收能力是沒有問題的(如圖)

那麼,回到剛開始的問題,爲啥兩次握手不行,由於這個時候,客戶端已經肯定了服務端的發送接收能力都沒有問題,可是服務端,卻沒有肯定,客戶端的接收能力,到底有沒有問題。

第三次握手

肥朝小聲逼逼:第三次握手,服務端收到了數據包,發現確實是剛纔提問的答案,那麼,就肯定了客戶端的接收能力是沒有問題的。

再次回到剛纔的問題,3次,是完成雙方考察發送接收能力的最少次數。這也就是爲啥不是2次,也不是4次。

寫在最後

固然你想看更專業的TCP相關知識,大學和考研教輔資料也是不錯的選擇。


相關文章
相關標籤/搜索