TCP的連線(三次握手)和釋放(四次揮手)

2021-07-13 06:22:37 字數 1460 閱讀 3171

tcp的連線(三次握手):

第一次握手:客戶機的 tcp 首先向伺服器的 tcp 傳送乙個連線請求報文段。這個特殊的報文段中不含應用層資料,其首部 syn 標誌置為1。另外,客戶機會隨機選擇乙個起始序號seq=x(連線請求報文不攜帶資料,但要消耗掉乙個序號)

第二次握手:伺服器的 tcp 收到連線請求報文段後,如同意連線,就會向客戶機發回確認,並為該 tcp 連線分配 tcp 快取和變數。在確認報文段中,syn 和 ack 都置為1,確認號字段為ack = x+1,並且伺服器隨機產生起始序號seq = y。確認報文段同樣不包含應用層資料。

第三次握手:當客戶機收到確認報文段後,還要向伺服器給出確認,並且也要給該連線分配快取和變數。這個報文段 ack 標誌位置為1, 序號欄位seq = x+1,確認號字段ack=y+1。

連線建立(三次握手)

syn:同步位

seq :起始序號

ack:確認號字段

1)syn = 1, seq = x

2)syn = 1, ack = 1, seq = y, ack = x+1

3)ack = 1, seq = x+1,ack = y+1

tcp的釋放(四次揮手)

第一步:客戶機打算關閉連線,就向其 tcp 傳送乙個連線釋放的報文段,並停止傳送資料,主動關閉 tcp 連線,該報文段的 fin 標誌位置為1, seq = u,它等於前面已傳送過的資料的最後乙個位元組序號加1.

第二步:伺服器收到釋放連線的報文段後即發出確認,確認號為ack = u+1,而這個報文段自己的序號seq=v,等於它前面傳送過的資料最後乙個位元組的序號加1。此時,客戶機到伺服器這個方向的連線就釋放了,tcp 連線處於半關閉狀態,但伺服器傳送資料,客戶機仍然要接受,即從伺服器到客戶機這個方向的連線並未關閉。

第三步:若伺服器已經沒有要向客戶機傳送的資料,就通知 tcp 釋放連線,此時其發出 fin = 1的連線釋放報文段。

第四步:客戶機收到連線釋放的報文段後,必須發出確認。在確認報文段中,ack=1,確認號ack=w+1,序號seq=u+1,此時tcp連線還沒有釋放掉,必須經過實踐等待計時器設定時間 2msl 後,進入連線關閉狀態。

釋放連線(四次揮手)

fin:終止位

seq :起始序號

ack:確認號字段

1)fin = 1, seq = u

2)ack = 1, seq = v, ack = u+1

3)fin = 1, ack = 1, seq = w,ack = u+1

4)ack = 1,seq = u+1, ack = w+1

tcp的三次連線握手和四次釋放握手

這篇部落格講的很清楚。下面我簡單說明一下 三次連線握手,首先client傳送請求報文,然後伺服器返回,客戶端在傳送請求。為什麼要三次握手,兩次握手不就夠了嗎?三次握手是為了確保安全,client向server傳送請求,server返回了以後,server不知道client有沒有收到返回,所以無法確定...

TCP建立連線三次握手和釋放連線四次握手

尊重 在談及tcp建立連線和釋放連線過程,先來簡單認識一下 tcp報文段首部格式 的的幾個名詞 這裡只是簡單說明,具體請檢視相關教程 序列號seq 佔4個位元組,用來標記資料段的 順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個...

TCP建立連線三次握手和釋放連線四次握手

尊重 在談及tcp建立連線和釋放連線過程,先來簡單認識一下tcp報文段首部格式 的的幾個名詞 這裡只是簡單說明,具體請檢視相關教程 序列號seq 佔4個位元組,用來標記資料段的順序,tcp把連線中傳送的所有資料位元組都編上乙個序號,第乙個位元組的編號由本地隨機產生 給位元組編上序號後,就給每乙個報文...