簡述TCP三次握手和四次揮手

ringoo_ming發表於2019-05-28

TCP三次握手:

  1. 第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該資料包傳送給Server,Client進入SYN_SENT狀態,等待Server確認。

  2. 第二次握手: Server 收到資料包後由標誌位 SYN=1 知道 Client 請求建立連線, Server 將標誌位 SYN ACK 都置為 1 ack=J+1 ,隨機產生一個值 seq=K ,並將該資料包傳送給 Client 以確認連線請求, Server 進入 SYN_RCVD 狀態。

  3. 第三次握手: Client 收到確認後,檢查 ack 是否為 J+1 ACK 是否為 1 ,如果正確則將標誌位 ACK 置為 1 ack=K+1 ,並將該資料包傳送給 Server Server 檢查 ack 是否為 K+1 ACK 是否為 1 ,如果正確則連線建立成功, Client Server 進入 ESTABLISHED 狀態,完成三次握手,隨後 Client Server 之間可以開始傳輸資料了。

簡單來說,就是

  1. 建立連線時,客戶端傳送SYN包(SYN=i)到伺服器,並進入到SYN-SEND狀態,等待伺服器確認。

  2. 伺服器收到 SYN 包,必須確認客戶的 SYN ack=i+1 , 同時自己也傳送一個 SYN 包( SYN=k , SYN+ACK 包,此時伺服器進入 SYN-RECV 狀態。

  3. 客戶端收到伺服器的 SYN+ACK 包,向伺服器傳送確認報 ACK ack=k+1 , 此包傳送完畢,客戶端和伺服器進入 ESTABLISHED 狀態,完成三次握手,客戶端與伺服器開始傳送資料。



TCP四次揮手:

  1. 第一次揮手:Client傳送一個FIN,用來關閉Client到Server的資料傳送,Client進入FIN_WAIT_1狀態。

  2. 第二次揮手: Server 收到 FIN 後,傳送一個 ACK Client ,確認序號為收到序號 +1 (與 SYN 相同,一個 FIN 佔用一個序號), Server 進入 CLOSE_WAIT 狀態。

  3. 第三次揮手: Server 傳送一個 FIN ,用來關閉 Server Client 的資料傳送, Server 進入 LAST_ACK 狀態。

  4. 第四次揮手: Client 收到 FIN 後, Client 進入 TIME_WAIT 狀態,接著傳送一個 ACK Server ,確認序號為收到序號 +1 Server 進入 CLOSED 狀態,完成四次揮手。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31442725/viewspace-2645992/,如需轉載,請註明出處,否則將追究法律責任。

相關文章