TCP、三次握手、四次揮手(圖解)
傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於位元組流的傳輸層通訊協議,為了在不可靠的互聯網路上提供可靠的端到端位元組流而專門設計的一個傳輸協議。TCP使用三次握手協議建立連接,使用四次揮手終止連接。具體過程如下所示:
1、三次握手
(1)客戶端與服務端建立連接時,需要發送請求連接消息,請求號syn=1,序列號seq=123(假設為123),此時客戶端進入SYN_SEND狀態;
(2)服務端接收數據後,會發送確認操作(確認號ack=1,ack=123+1),然後服務端會發送與客戶端建立連接的請求(請求號syn=1,序列號seq=456(假設為456)),此時服務端進入SYN_RECV狀態;
(3)客戶端收到數據之後,會再返回一個確認的操作(確認號ack=1,ack=456+1),至此服務端到客戶端的鏈路建立成功;此時客戶端進入ESTABLISHED狀態,服務端收到ack後進入ESTABLISHED狀態。
2、四次揮手
(1)客戶端發送完數據之後,向伺服器請求斷開連接,此時客戶端進入FIN_WAIT_1狀態;
(2)服務端收到FIN包之後,回復ACK包表示已經收到,但此時服務端可能還有數據沒發送完成,此時服務端進入CLOSE_WAIT狀態;客戶端進入FIN_WAIT_2狀態;
(3)服務端數據發送完成之後,發送FIN包給客戶端,此時服務端進入LAST_ACK狀態;
(4)客戶端收到FIN包後,回復一個ACK包,此時客戶端進入TIME_WAIT狀態;
(5)服務端接收到ACK包後,此時服務端進入CLOSE狀態。