面試八股文之TCP的三次握手

2022-09-21 23:03:31 字數 428 閱讀 5381

三次握手的主要目的是確認自己和對方的傳送和接收都是正常的,從而保證了雙方能夠進行可靠通訊。若採用兩次握手,當第二次握手後就建立連線的話,此時客戶端知道伺服器能夠正常接收到自己傳送的資料,而伺服器並不知道客戶端是否能夠收到自己傳送的資料。

我們知道網路往往是非理想狀態的(存在丟包和延遲),當客戶端發起建立連線的請求時,如果伺服器直接建立了這個連線並返回包含 syn、ack 和 seq 等內容的資料報給客戶端,這個資料報因為網路傳輸的原因丟失了,丟失之後客戶端就一直接收不到返回的資料報。

由於客戶端可能設定了乙個超時時間,一段時間後就關閉了連線建立的請求,再重新發起新的請求,而伺服器端是不知道的,如果沒有第三次握手告訴伺服器客戶端能否收到伺服器傳輸的資料的話,伺服器端的埠就會一直開著,等到客戶端因超時重新發出請求時,伺服器就會重新開啟乙個埠連線。長此以往, 這樣的埠越來越多,就會造成伺服器開銷的浪費。

面試 網路 TCP的三次握手

tcp運輸連線的建立和釋放是每一次面向連線的通訊中必不可少的過程。運輸連線有三個階段 連線建立 資料傳送和連線釋放。tcp的連線建立可以簡稱為 三次握手 three way handshake 1 a b 嗨!我想跟你通訊 2 b a 嗨!可以啊 3 a b 嗨!我要給你傳資料了 then 資料傳送...

tcp的三次握手 傳輸層 TCP 三次握手

使用tcp協議進行通訊的雙方必須先建立連線,然後才能開始傳輸資料。為了確保連線雙方可靠性,在雙方建立連線時,tcp協議採用了三次握手策略。如圖 客戶端傳送帶有syn標誌的連線請求報文段,然後進入syn send狀態,等待服務端的確認。服務端接收到客戶端的syn報文段後,需要傳送ack資訊對這個syn...

TCP三次握手之Socket

原文 include int listen int sockfd,int backlog 本函式的第二個引數規定了核心應該為相應套介面排隊的最大連線個數,一般為以下兩個佇列的大小之和,即未完成三次握手佇列 已經完成三次握手佇列 為了更好的理解backlog引數,我們必須認識到核心為任何乙個給定的監聽...