學習自
握手syn
syn+ack
ack未連線佇列
服務端維護乙個未連線佇列,當客戶端發來ack時,伺服器會入佇列乙個相應的標識,那個標識是已接收ack狀態,然後會發syn ack,當客戶端再次傳送ack後,出佇列那個相應的標識,正式建立連線
為何要3次握手?
假如客戶端傳送syn,但是莫名滯留了,於是重傳了,建立了乙個連線。但在連線之後,那個syn又到達了服務端,如果服務端僅僅憑藉乙個syn就和客戶端建立連線了,資源就會被浪費。
揮手fin
ackfin
ack為何要4次揮手?
那是因為要把剩餘的資源發發光。如果直接就終止了,客戶端收到的資料的尾部就會缺失。
為何最後乙個ack發了後還要等一會?
那是因為這個ack可能傳送失敗需要重發。如果沒有重發,伺服器得不到確認,連線就一直保持了,資源就大大浪費了,而且伺服器絕對會崩。
ps:保活計時器
如果客戶端服務端已經建立連線了,突然客戶端炸了,但是連線還在。服務端如果2小時(假定的資料)內沒收到客戶端的資料,會發個訊號——「老哥你還在嗎???」,發個10個左右,就火了!lz生你氣了,嚶嚶嚶,然後就關閉連線了。
TCP3次握手與4次揮手
3次握手過程狀態 listen 這個也是非常容易理解的乙個狀態,表示伺服器端的某個socket處於監聽狀態,可以接受連線了。syn sent 當客戶端socket執行connect連線時,它首先傳送syn報文,因此也隨即它會進入到了syn sent狀態,並等待服務端的傳送三次握手中的第2個報文。sy...
TCP 3次握手及4次揮手
3次握手 tcp協議建立三次握手的過程如下 第一次握手 客戶端向伺服器傳送syn段 syn 1 請求建立新連線 第二次握手 伺服器收到syn段後,向客戶端傳送的synack段 syn 1,ack 1 進行確認,同意建立新連線 第三次握手 客戶端收到伺服器的synack段後,向伺服器傳送ack確認段 ...
TCP 3次握手和4次揮手
3次握手 3次握手指的是tcp 建立連線 階段 1.client service syn sequence number a 2.client service syn ack sequence number b acknowledge number a 1 3.client service ack ...