TCP協(xié)議的四次揮手過程如下:
第一次揮手:客戶端發(fā)送一個(gè)FIN報(bào)文段給服務(wù)器,關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送,客戶端進(jìn)入FIN_WAIT_1狀態(tài)。
第二次揮手:服務(wù)器收到FIN報(bào)文段后,發(fā)送一個(gè)ACK報(bào)文段給客戶端,確認(rèn)序號(hào)為收到序號(hào)+1,服務(wù)器進(jìn)入CLOSE_WAIT狀態(tài)。
第三次揮手:服務(wù)器發(fā)送一個(gè)FIN報(bào)文段給客戶端,關(guān)閉服務(wù)器到客戶端的數(shù)據(jù)傳送,服務(wù)器進(jìn)入LAST_ACK狀態(tài)。
第四次揮手:客戶端收到FIN報(bào)文段后,客戶端進(jìn)入TIME_WAIT狀態(tài),接著發(fā)送一個(gè)ACK報(bào)文段給服務(wù)器,確認(rèn)序號(hào)為收到序號(hào)+1,服務(wù)器進(jìn)入CLOSED狀態(tài)。完成四次揮手。
其中,第二次揮手和第三次揮手都是為了確認(rèn)雙方都已經(jīng)完成數(shù)據(jù)的發(fā)送和接收。在第二次揮手后,客戶端可以繼續(xù)向服務(wù)器發(fā)送數(shù)據(jù),直到收到服務(wù)器的FIN報(bào)文段。同樣地,在第三次揮手后,服務(wù)器也可以繼續(xù)向客戶端發(fā)送數(shù)據(jù),直到收到客戶端的ACK報(bào)文段。
連接釋放(四次揮手)
①A,B都處于ESTABLISHED狀態(tài); ?
②客戶進(jìn)程A主動(dòng)關(guān)閉連接,向B發(fā)送連接釋放請(qǐng)求報(bào)文段(報(bào)文段不挾帶數(shù)據(jù)),F(xiàn)IN=1,序列號(hào)=u,進(jìn)入FIN-WAIT-1(終止等待1)狀態(tài); ?
③B收到A的連接釋放報(bào)文段后,應(yīng)答確認(rèn),ACK=1,確認(rèn)號(hào)=u+1,序號(hào)=v,進(jìn)入CLOSE-WAIT (關(guān)閉等待)狀態(tài),B仍然可以向A發(fā)送數(shù)據(jù),A進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài); ?
④若B已經(jīng)沒有向A的數(shù)據(jù),其應(yīng)用進(jìn)程通知TCP連接釋放,B向A發(fā)送連接釋放報(bào)文段,F(xiàn)IN=1,ACK=1,確認(rèn)號(hào)=u+1,序號(hào)=w,進(jìn)入LAST-ACK(最后確認(rèn))狀態(tài);
? ⑤A收到B的鏈接釋放報(bào)文段后,應(yīng)答確認(rèn),ACK=1,確認(rèn)號(hào)=w+1,序號(hào)=u+1,進(jìn)入TIME-TIME-WAIT(時(shí)間等待)狀態(tài),B收到A的確認(rèn)后,進(jìn)入CLOSED狀態(tài)。
A必須經(jīng)過時(shí)間等待計(jì)時(shí)器設(shè)置的時(shí)間2MSL(默認(rèn)2分鐘)后,進(jìn)入CLOSED狀態(tài):確保A發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)B;防止“已失效的連接請(qǐng)求報(bào)文段”出現(xiàn)在本連接中。
tcp協(xié)議為什么四次揮手
TCP協(xié)議的四次揮手是用于關(guān)閉連接的過程,與建立連接的三次握手不同。其原因可以總結(jié)為以下幾點(diǎn):
1. 全雙工通信:TCP連接是全雙工的,意味著雙方都可以同時(shí)發(fā)送和接收數(shù)據(jù)。因此,在關(guān)閉連接時(shí),客戶端和服務(wù)端都需要發(fā)送一個(gè)報(bào)文來表示自己沒有數(shù)據(jù)要發(fā)送了。
2. 確保數(shù)據(jù)完整性:TCP協(xié)議致力于可靠的數(shù)據(jù)傳輸,即使在連接關(guān)閉時(shí)也不例外。在關(guān)閉連接之前,雙方需要確保對(duì)方已經(jīng)接收到了所有的數(shù)據(jù),以避免數(shù)據(jù)丟失或不完整。
3. 等待延遲數(shù)據(jù):關(guān)閉連接時(shí)可能存在延遲的數(shù)據(jù),這些數(shù)據(jù)可能還在傳輸中。通過四次揮手,每一方可以告知對(duì)方自己已經(jīng)沒有數(shù)據(jù)要發(fā)送,同時(shí)等待對(duì)方的確認(rèn),以確保關(guān)閉連接之前已經(jīng)傳輸完所有的數(shù)據(jù)。
4. 保持連接的可靠性:在TCP連接關(guān)閉后,可能還會(huì)繼續(xù)有來自網(wǎng)絡(luò)中的延遲報(bào)文到達(dá)。發(fā)送方需要等待一個(gè)固定的時(shí)間,以確保自己收到了對(duì)方的確認(rèn),并且確認(rèn)對(duì)方已經(jīng)關(guān)閉了連接。
因此,四次揮手的過程主要是為了確保雙方都能夠正確地關(guān)閉連接,保證數(shù)據(jù)的完整性和可靠性。通過經(jīng)過四次揮手,連接才能真正地關(guān)閉,并釋放雙方所占用的資源。
審核編輯:黃飛
-
數(shù)據(jù)傳輸
+關(guān)注
關(guān)注
9文章
1869瀏覽量
64527 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9078瀏覽量
85287 -
TCP
+關(guān)注
關(guān)注
8文章
1353瀏覽量
79044 -
客戶端
+關(guān)注
關(guān)注
1文章
290瀏覽量
16674 -
TCP協(xié)議
+關(guān)注
關(guān)注
1文章
91瀏覽量
12068
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論