全部課程
tcp為什么要三次握手
發(fā)布時間: 2021-10-28
tcp為什么要三次握手?TCP實現(xiàn)原理和為什么需要三次握手?兩次握手不可以?四次握手不可以?
TCP三次握手執(zhí)行過程:
(1)首先,服務(wù)端和客戶端都是處于CLOSED狀態(tài)的,然后服務(wù)端啟動,監(jiān)聽端口,狀態(tài)變?yōu)長ISTEN(監(jiān)聽)狀態(tài)
(2)客戶端為了請求資源,發(fā)送鏈接,發(fā)送同步序列號SYN,此時客戶端就變成了SYN-SEND狀態(tài)
(3)服務(wù)端接收到客戶端請求之后,發(fā)送SYN和ACK,然后服務(wù)端狀態(tài)就變成SYN-RCVD狀態(tài)
(4)客戶端接收到信息之后,再次發(fā)送ACK,然后變成ESTABLISHED(已確認)狀態(tài),服務(wù)端接收到返回信息后,狀態(tài)也變成ESTABLISHED(已確認)狀態(tài)
為什么需要TIME_WAIT狀態(tài)
1、可靠的終止TCP連接
2、保證讓遲來的TCP報文段有足夠的時間被識別并丟棄
①為實現(xiàn)TCP這種全雙工連接的可靠釋放,這樣可讓TCP再次發(fā)送最后的ACK以防這個ACK丟失(另一端超時并重發(fā)最后的FIN)這種2MSL等待的另一個結(jié)果是這個TCP連接在2MSL等待期間,定義這個連接的插口(客戶的IP地址和端口號,服務(wù)器的IP地址和端口號)不能再被使用。這個連接只能在2MSL結(jié)束后才能再被使用。
②為使舊的數(shù)據(jù)包在網(wǎng)絡(luò)因過期而消失,每個具體TCP實現(xiàn)必須選擇一個報文段較大生存時間MSL。它是任何報文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長時間。
TCP 建立連接時通過三次握手可以有效地避免歷史錯誤連接的建立,減少通信雙方不必要的資源消耗,三次握手能夠幫助通信雙方獲取初始化序列號,它們能夠保證數(shù)據(jù)包傳輸?shù)牟恢夭粊G,還能保證它們的傳輸順序,不會因為網(wǎng)絡(luò)傳輸?shù)膯栴}發(fā)生混亂,到這里不使用『兩次握手』和『四次握手』的原因已經(jīng)非常清楚了:
『兩次握手』:無法避免歷史錯誤連接的初始化,浪費接收方的資源;
『四次握手』:TCP 協(xié)議的設(shè)計可以讓我們同時傳遞 ACK 和 SYN 兩個控制信息,減少了通信次數(shù),所以不需要使用更多的通信次數(shù)傳輸相同的信息。
上一篇: 什么是tcp端口
下一篇: nb-iot能做什么