溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java Tcp的三次握手和四次揮手

發(fā)布時間:2020-06-17 15:34:58 來源:億速云 閱讀:233 作者:元一 欄目:編程語言

一、TCP傳輸?shù)倪^程

1.建立連接并確認連接(三次握手)

三次握手(three times handshake;three-way handshake)所謂的"三次握手"即對每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進行協(xié)商使數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認數(shù)及數(shù)據(jù)發(fā)送、接收完畢后何時撤消聯(lián)系,并建立虛連接。

為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序?qū)?shù)據(jù)包的序號,并需要這些包傳送給目標機之后的確認消息。TCP總是用來發(fā)送大批量的數(shù)據(jù)。當應(yīng)用程序在收到數(shù)據(jù)后要做出確認時也要用到TCP。

Java Tcp的三次握手和四次揮手
過程:
(1)客戶端向服務(wù)端發(fā)出連接請求SYN,等待服務(wù)端響應(yīng)
(2)服務(wù)端做出響應(yīng)ACK和連接信號SYN
(3)為防止數(shù)據(jù)丟失,客戶端也要做出響應(yīng)ACK,確認是否有效

2 .進行數(shù)據(jù)傳輸,發(fā)送數(shù)據(jù)包

Java Tcp的三次握手和四次揮手
數(shù)據(jù)傳輸總是從 客戶端---》服務(wù)端,因此客戶端和服務(wù)端不是固定的。

3.關(guān)閉連接(四次揮手):

Java Tcp的三次握手和四次揮手

由于TCP連接是全雙工的,因此每個方向都必須單獨進行關(guān)閉。這原則是當一方完成它的數(shù)據(jù)發(fā)送任務(wù)后就能發(fā)送一個FIN來終止這個方向的連接。收到一個 FIN只意味著這一方向上沒有數(shù)據(jù)流動,一個TCP連接在收到一個FIN后仍能發(fā)送數(shù)據(jù)。首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉,而另一方執(zhí)行被動關(guān)閉。

1.(客戶端:終止等待1)客戶端向服務(wù)端發(fā)起關(guān)閉連接的請求,不再發(fā)送數(shù)據(jù)了,但如果服務(wù)器發(fā)送數(shù)據(jù),客戶端還要接收
2.(服務(wù)端:關(guān)閉等待)服務(wù)端可能還有數(shù)據(jù)為傳輸完畢,所以還無法完成關(guān)閉。所以先響應(yīng)客戶端ACK,,表示收到關(guān)閉請求??蛻舳讼蚍?wù)器的方向釋放,整個處于半關(guān)閉狀態(tài)
3.(客戶端:終止等待2)客戶端收到服務(wù)器的確認請求后,客戶端進入終止等待2,等待服務(wù)端發(fā)送連接釋放報文
4.(服務(wù)端:最后確認)等服務(wù)器的數(shù)據(jù)傳輸工作完成,就把FIN信號(連接釋放報文)發(fā)送給客戶端,可能還會發(fā)送一些數(shù)據(jù)
5.(客戶端:時間等待)客戶端收到服務(wù)器的連接釋放報文。發(fā)出確認ACK
6.(服務(wù)端:CLOSED)服務(wù)端收到客戶端的確認,立即進入CLOSED狀態(tài)
7.服務(wù)器結(jié)束TCP連接的時間比客戶端早

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI