TCP三次握手和四次揮手

2021-09-13 22:05:34 字數 1039 閱讀 6019

第一次握手:起初兩端都處於closed關閉狀態,client將標誌位syn置為1,隨機產生乙個值seq=x,並將該資料報傳送給server,client進入syn-sent狀態,等待server確認;

第二次握手:server收到資料報後由標誌位syn=1得知client請求建立連線,server將標誌位syn和ack都置為1,ack=x+1,隨機產生乙個值seq=y,並將該資料報傳送給client以確認連線請求,server進入syn-rcvd狀態,此時作業系統為該tcp連線分配tcp快取和變數;

第三次握手:client收到確認後,檢查ack是否為x+1,ack是否為1,如果正確則將標誌位ack置為1,ack=y+1,並且此時作業系統為該tcp連線分配tcp快取和變數,並將該資料報傳送給server,server檢查ack是否為y+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client和server就可以開始傳輸資料。

第三次握手的原因

主要為了防止已失效的連線請求報文段突然又傳送到了b,因而產生錯誤。如a發出連線請求,但因連線請求報文丟失而未收到確認,於是a再重傳一次連線請求。後來收到了確認,建立了連線。資料傳輸完畢後,就釋放了連線,a工發出了兩個連線請求報文段,其中第乙個丟失,第二個到達了b,但是第乙個丟失的報文段只是在某些網路結點長時間滯留了,延誤到連線釋放以後的某個時間才到達b,此時b誤認為a又發出一次新的連線請求,於是就向a發出確認報文段,同意建立連線,不採用三次握手,只要b發出確認,就建立新的連線了,此時a不理睬b的確認且不傳送資料,則b一致等待a傳送資料,浪費資源。

四次揮手

首先進行關閉的一方(即傳送第乙個fin)將執行主動關閉,而另一方(收到這

個fin)執行被動關閉。

當伺服器收到這個fin,它發回乙個ack,確認序號為收到的序號加1。和syn一

樣,乙個fin將占用乙個序號。

同時tcp伺服器還向應用程式(即丟棄伺服器)傳送乙個檔案結束符。接著這個

伺服器程式就關閉它的連線,導致它的tcp端傳送乙個fin。

客戶必須發回乙個確認,並將確認序號設定為收到序號加1。

tcp 四次揮手 TCP的三次握手和四次揮手

三次握手 第一次握手 客戶端傳送syn包 syn x 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack x 1 同時自己也傳送乙個syn包 syn y 即syn ack包,此時伺服器進入syn recv狀態 第三次握手 客戶端收到伺服...

TCP三次握手和四次揮手

一 tcp三次握手 three way handshake 1 tcp三次握手的作用 三次握手的目的是連線伺服器指定埠,建立tcp連線,並同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。在socket程式設計中,客戶端執行connect 時,將觸發三次握手。2 tcp三次握手過程 第一步 ...

TCP三次握手和四次揮手

三次握手 四次揮手 需四次揮手原因 由於tcp的半關閉特性,tcp連線時雙全工 即資料在兩個方向上能同時傳遞 因此,每個方向必須單獨的進行關閉。這個原則就是 當一方完成它的資料傳送任務後就能傳送乙個fin來終止這個方向上的連線。當一端收到乙個fin後,它必須通知應用層另一端已經終止了那個方向的資料傳...