一粒没、什么是三次握手?
? ?三次握手:指建立一個tcp連接時,需要客戶端和服務端總要發(fā)三個包簇爆。保證數(shù)據(jù)在傳輸時的一個完整性癞松。
? ?為什么握手要三次:更安全倾贰、可靠。服務端第一次發(fā)包時拦惋,由于網(wǎng)絡阻塞被延遲匆浙,于是又發(fā)了一次包,這次服務端收到了并作出響應厕妖,這時服務端又收到了客戶端第一次發(fā)的包首尼,誤以為這是客戶端發(fā)的請求,于是又響應了一次言秸,于是就造成了資源浪費软能。而且在三次握手時前兩次握手不會攜帶數(shù)據(jù),只有在第三次握手建立長連接狀態(tài)時才會攜帶數(shù)據(jù)举畸。
圖示:
? ?在TCP/IP協(xié)議中查排,TCP協(xié)議提供可靠的連接服務,采取三次握手建立一個連接抄沮,
? ?第一次握手:建立連接時跋核,客戶端發(fā)送syn包(syn=j)到服務器,并進入syn_send狀態(tài)叛买,等待服務器確認砂代;
? ?第二次握手:服務器收到SYN包,必須確認客戶的SYN(ack=j+1)率挣,同時自己也發(fā)送一個SYN包(syn=k)刻伊,即syn+ack包,此時服務器進入syn_recv狀態(tài)椒功;
? ?第三次握手捶箱;客戶端收到服務器的SYN+ACK 包,向服務器發(fā)送確認包ACK(ack=k+1)动漾,此包發(fā)送完畢丁屎,客戶端和服務器進入established狀態(tài),完成三次握手谦炬。
? ?完成三次握手悦屏,客戶端與服務器開始傳送數(shù)據(jù)
二、什么是四次揮手键思?
? ? 四次揮手:TCP的連接的拆除需要發(fā)送四個包础爬,因此稱為四次揮手。
? ? 為什么揮手要四次:因為Tcp是全雙工通信的吼鳞,同時也是為了數(shù)據(jù)的完整性看蚜。
(1)客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務器B的數(shù)據(jù)傳送赔桌。
(2)服務器B收到這個FIN供炎,它發(fā)回一個ACK渴逻,確認序號為收到的序號加1。和SYN一樣音诫,一個FIN將占用一個序號惨奕。
(3)服務器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A竭钝。
(4)客戶端A發(fā)回ACK報文確認梨撞,并將確認序號設置為收到序號加1。
總結(jié)
? ? 在TCP/IP協(xié)議中香罐,TCP協(xié)議提供可靠的連接服務卧波,采用三次握手建立一個連接,完成三次握手庇茫,客戶端與服務器開始傳送數(shù)據(jù)港粱。由于TCP連接是全雙工的,因此每個方向都必須單獨進行關(guān)閉旦签。且四次揮手可由任何一段發(fā)起查坪,這個原則是當一方完成它的數(shù)據(jù)發(fā)送任務后就能發(fā)送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數(shù)據(jù)流動顷霹,一個TCP連接在收到一個FIN后仍能發(fā)送數(shù)據(jù)咪惠。首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉,而另一方執(zhí)行被動關(guān)閉淋淀。TCP四次揮手之后就關(guān)閉該連接。