1. 程式人生 > >TCP/IP三次握手四次揮手

TCP/IP三次握手四次揮手

.net 執行 source 建立連接 二次 同步 結束 tps sock

TCP三次握手
所謂握手,也就是建立連接,三次過程。
三次握手旨在連接到服務端的指定端口,進行通信。建立一個TCP連接,需要向客戶端和服務端發送三個包。
其中包含同步序列號和確認號以及TCP窗口大小的信息交換。一般觸發握手在socket中都是connect()函數觸發的
第一次握手:
客戶端發送TCP請求, (SYN標記位置1個包,SYN=1,ACK=0 也就是帶有SYN標記的TCP包,初始序列號為X,保存在包頭的序列號中). 表示客戶端需要建立一個TCP連接,這是握手中的第一不,發送請求。
第二次握手:
服務端收到帶有SYN標記的TCP包,發送確認包(帶有ACK和SYN的數據包,SYN=1,ACK=1,序列號為y是服務端的)此時服務端詢問客戶端是否準備好數據傳輸,此時服務器進入SYN_RECV狀態。。
第三次握手:
客戶端接收到服務端的數據包(ACK+SYN數據包)向服務端發送一個(序列號x+1,ACK=y+1)的數據包,此包發送完畢,客戶端和服務器進入ESTAB_LISHED(TCP連接成功)狀態,完成三次握手。
TCP四次揮手
TCP連接是雙工的,所以每個方向都是單獨關閉。當其中一方完成數據傳輸後可以發送FIN結束。接收到了FIN只是意味著沒有這個方向的數據流了
收到FIN的TCP連接可以發送數據,第一個關閉方執行主動動作,另一個執行被動動作。
第一次揮手:
客戶端發送FIN請求,說我要關閉TCP連接了,不再傳輸數據了。 (FIN=1,序列號=n)
第二次揮手:
服務端收到這個請求,並且響應此請求,發送一個ACK包,確認ack為收到的序號+1。
第三次揮手:
服務端關閉TCP連接,向客戶端發送FIN消息。
第四次揮手:
客戶端接收到消息,發送ACK包確認,並將確認序號seq設置為收到序號+1。


本文來自 luoyan01 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/luoyan01/article/details/82910437?utm_source=copy

TCP/IP三次握手四次揮手