Tcp/Ip

TCP的連接和建立都是採用客戶服務器(C/S)方式。主動發起連接建立的應用進程叫做客戶端(Client)。被動等待連接建立的應用進程叫做服務器(Server)。

建立TCP連接需要三次握手,斷開連接需要四次揮手,如圖:
在這裏插入圖片描述

(1)三次握手:
在TCP/IP中,採用三次握手建立一個連接,連接過程就像打電話的過程,如圖:
在這裏插入圖片描述
第一次握手:Client(主機A)向Server(主機B)發送一個連接請求,在這個包中,標誌爲SYN=1,發送序號SEQ=x,上圖中x=200,Client進入SYN_SEND狀態,等待Server確認。

第二次握手:Server接受數據包後由標誌位SUnder=1知道 Client 請求建立連接,Server將標誌位SYN和ACK都置爲1,確認序號ACK=x+1=201,隨機產生一個發送序號SEQ=y,上圖中y=500,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。

第三次握手:Client收到確認後,檢查確認序號ACK是否爲x+1=201,標誌位ACK是否爲1,如果正確,則將標誌位ACK置爲1,確認序號ACK置爲1,確認序號ACK=y+1=501,標誌位ACK是否爲1,如果正確則連接建立成功,Client和Server都進入ESTABLISHED狀態。

完成三次握手建立連接,客戶端與服務器就可以開始傳送數據。

(2)四次揮手:
四次揮手(Four-Way Wavehand)即終止TCP連接,就是斷開一個TCP連接時,需要客戶機和服務端總共發送4個包以確認連接的斷開,如圖:
在這裏插入圖片描述

第一次揮手:當主機A要斷開TCP連接時,發送一個包給主機B,其中標誌位FIN=1,ACK=1,發送序號SEQ=x,確認序號ACK=y,上圖中x=200,y=500。Client進入FIN_WAIT_1狀態;

第二次揮手:主機B知道A要斷開的請求後,發送一個確認包,其中標誌位ACK=1,發送序號SEQ=y,確認序號ACk=x+1=201,Server(主機B)進入CLOSE_WAIT狀態;

第三次揮手:主機B也斷開TCP連接,此時發送一個包,其中標誌位FIN=1,發送序號SEQ=y+1=501,Server(主機B)進入LAST_ACK狀態;

第四次揮手:主機A收到B的請求後,Client進入TIME_WAIT狀態,接着發送一個確認包,標誌位ACK=1,發送序號SEQ=x+1=201,確認序號ACK=y+2=502,Server進入CLOSE狀態。

TCP是全雙關的,因此每個方向都必須單獨進行關閉,這一原則是當一方完成發送數據任務後,發送一個FIN來終止這一方向的連接,收到一個FIN只是意味着這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍能發送數據,知道這一方也發送了FIN包。

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