小白都能理解的TCP三次握手四次揮手

  • 2021 年 7 月 19 日
  • 筆記

前言

TCP在學習網絡知識的時候是經常的被問到知識點,也是程序員必學的知識點,今天小楊用最直白的表述帶大家來認識認識,喜歡的朋友記得點點關注哈。

何為TCP

上點官方的話:是一種面向連接(連接導向)的、可靠的、 基於IP的傳輸層協議。啥意思咧,說白了就是實現客戶端與服務器之間的通訊的一種協議,是可靠的,可以傳送大量數據的,一個TCP連接必須要經過三次「握手」才能建立起來,經過四次「揮手」斷開

三次握手

那麼三次握手是咋樣的呢,一幅張三上門找李四恰飯的圖為你介紹:

通過上面圖,我們知道大概知道了啥意思了,結合一點術語的介紹下:

  • 第一次握手:客戶端發起請求,將SYN的數據包發送到服務端,請求建立請求
  • 第二次握手:服務端收到客戶端的請求後,將(SYN/ACK)的數據包發送到客戶端,表示收到請求,待確認
  • 第三次握手:客戶端發送(ACK的數據包)請求到服務端,表示確定建立連接

為啥需要三次呢

你想想作為一個張三上門去找李四恰飯,哪一步可以省呢?一問一答,最後肯定是要給人家回復嘛,不然人家還以為你開玩笑呢,你說對吧

四次揮手

那麼四次揮手是咋樣的呢,張三和李四繼續為你上映:

同過上圖,我們也知道是啥意思啦,張三一頓胡吃海塞的操作後,就想溜了,結合一點術語的介紹啦:

  • 首先:張三一頓操作吃飽後,就發了一個(FIN數據包)想着提桶跑路
  • 第二:李四收到了信息,發現還有一道拿手的壓軸菜還沒上,想讓他品嘗品嘗,就發了一個(ACK的數據包),讓他再等等
  • 第三:一會菜上了,張三也吃了,心滿意足了,發了一個(FIN數據包)告訴張三,今天的菜都吃完了,飯局結束了,要走可以走了啦
  • 第四:張三收到消息後,回了一個(ACK的數據包),表示收到了,然後撒腿就跑

為啥需要四次呢

上面場景來看,張三想走的請求發出後,並不代表對方也都處理完了,於是就先禮貌的回復一下,表示知道你發出請求了,等李四這邊安排都好了之後,在主動的告訴張三,張三得知後,也離開了。

歡迎下方交流討論。如果本篇博客有任何錯誤,請批評指教,不勝感激 !

共同進步,學習分享

歡迎大家關注我的公眾號【寫代碼的小楊】,相關文章、學習資料都會在裏面更新,整理的資料也會放在裏面。

覺得寫的還不錯的就點個贊,加個關注唄!持續更新 !!! 點關注,不迷路,小楊帶你上高速