3次握手建立連接和4次握手斷開連接

三次握手協議指的是在發送數據的準備階段,服務器和客戶端之間需要進行三次交互:第一次握手:客戶端發送syn包(syn=j)到服務器,並進入到SYN_SEND狀態,等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的syn(ack=j+),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入到SYN_RECV狀態;第三次握手:客戶端收到服務器的SYN_ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。連接建立後,客戶端和服務器就可以開始進行數據傳輸了。

         由於TCP連接時全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向的連接,收到一個FIN只意味着這一方向上沒有數據流動,一個TCP連接收到一個FIN後仍能發送數據,首先進行關閉的一方是主動斷開方,而另一方是被動斷開方。四次斷開過程

         1、客戶端發送一個FIN,用來關閉客戶端到服務器的數據傳送,此時客戶端進入TIME_WAIT1狀態

         2、服務器收到這個FIN後,它發回一個ACK,確認號爲收到的序號加1,和SYN一樣,一個FIN將佔用一個序號,此時服務器進入到CLOS_WAIT2;

         3、當服務器端也沒有要傳送的數據時,服務器關閉與客戶端的連接,發送一個FIN給客戶端,服務器進入LAST_ACK

         4、客戶端發回ACK報文確認,並將確認號設置爲收到序列號加1,客戶端進入到TIME_WAIT,等待2MSL-120s,服務器接受後進入CLOSED。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章