1. 程式人生 > >tcp三次握手都做了什麼?!

tcp三次握手都做了什麼?!

一,tcp三次握手圖

這裡寫圖片描述

二,為什麼要進行三次我手?

  首先,我們來舉一個生活中的栗子。在我們初中時我們便學過這樣的英語對白。場景是小明和小紅初次見面

  小明(客戶端):How are you?(SYN)
  小紅(伺服器):i am fine,thank you(Ack,對問題的確認。)
                and you?(SYN)
  小明(客戶端):me too.(Ack)
  一番禮貌之後,聯絡已經建立。可以進行家長裡短的交談了,也就是可以傳送資料了。

 SYN=1的資料包是請求資料包。Ack是確認資料包。當客戶端給伺服器傳送SYN=1的資料報時,目的是告訴伺服器我的傳送快取已經建立,你快建立你的接收快取吧。當伺服器給客戶端發SYN=1,Ack=x+1的資料包時,Ack表示好的我知道了,我的接收快取已經建立好了。SYN=1是告訴客戶端我的傳送快取已經建立,你快建立接收快取吧。客戶端最後給伺服器發了一個Ack,表示好的我的 接收快取建好了。

如圖,其實伺服器和客戶端有各自的接收快取和傳送快取,下圖顯示了一部分。
這裡寫圖片描述
tcp三次握手不僅是傳送接收快取的建立。還協商了一些重要的引數:如傳送快取等。