三次揮手:
後續補充:
TCP四次揮手:
理解 “三次握手”,“四次揮手”
需要知道 “客戶端”與 ”服務器端“
“主動方” 與“ 被動方 ” 之間的語言的含義是什麼,才能在心裏有個印象,才能去正確理解四次揮手的含義:
下圖中有幾個字段需要重點介紹下:
(1)序號:Seq序號,佔32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。
(2)確認序號:Ack序號,佔32位,只有ACK標誌位爲1時,確認序號字段纔有效,Ack=Seq+1。
(3)標誌位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
(A)URG:緊急指針(urgent pointer)有效。
(B)ACK:確認序號有效。
(C)PSH:接收方應該儘快將這個報文交給應用層。
(D)RST:重置連接。
(E)SYN:發起一個新連接。
(F)FIN:釋放一個連接。
重點:
需要注意的是:
(A)不要將確認序號Ack與標誌位中的ACK搞混了。
(B)確認方Ack=發起方Req+1,兩端配對。
四次揮手的總結:能看懂的就,看不懂的回看下面的解釋吧:
第一二次揮手: 主動方發送一條連接, 初始確認 確認序號爲Z 發送序號爲X 被動方確認 確認序號爲X+1,發送序號爲Z
(只有ACK標誌位爲1時,確認序號字段纔有效)
第三四次揮手: 被動方發送一條連接 , 初始確認 確認序號爲X 發送序號爲Y 主動方確認 確認序號爲Y 發送序號爲X
四次揮手博主自我理解: :依照上方各種單詞的含義總結:
可以將四次揮手看成是兩個人:
四次揮手分別是 第一 ,二次是主動方揮手,被動方揮手迴應 ,第三 ,四次是被動方主動揮手,,主動方揮手迴應
1:(FIN:釋放一個連接。) 2:確認序號:Ack序號,佔32位,只有ACK標誌位爲1時,確認序號字段纔有效,Ack=Seq+1。 3:序號:Seq序號,佔32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記
第 一: 主動方---》發送Fin+Ack 報文,併發送序號爲X
第一次揮手:主動方發送 :Fin=1 Ack=Z Seq=X
簡單理解: 1.主動方釋放一個連接 Fin=1 2.主動方發送一個待被動方接受的標誌ACK=Z (等待被動方接受,並以序號的方式發回到主動方) 3. 主動方發送一個待確認的seq的序號 X(表示此序號是從TCP 的{”主動方“} 向 {”被動方“}發送的seq序號)等待被動方確認
第 二: 被動方---》發送Ack 報文,並置發送序號爲Z 再確認序號爲X+1
第二次揮手 : 被動方發送:ACK=X+1 Seq =Z
簡單理解: ACK=X+1 指被動方確認主動方發送的序號 X 並 +1 迴應主動方(只有ACK標誌位爲1時,確認序號字段纔有效,)
Seq = Z 接受主動方發送的帶接受的標誌並將序號命名爲Z
第三,四的揮手跟一二的相反
;;;;: 三:被動方---》 發送Fin+Ack 報文,併發送序號爲Y
四:主動方---》 發送Ack 報文,並置發送序號爲X 再確認序號爲Y