計算機網路 三次握手與四次揮手詳解以及相關問題

2021-10-06 10:32:29 字數 2183 閱讀 2353

syn(synchronous:同步):建立連線標誌位,置1表明建立連線。

ack(acknowledge:確認):確認標誌位,置1表明收到請求。

tcp傳送資料報括建立建立、傳送資料、斷開鏈結三個過程,三次握手發生在建立連線這一步。

2)握手過程:

第一次握手:clien(客戶機)將標誌位syn(用來標誌是否建立連線)置為1,隨機產生乙個值seq=j,並將該資料報傳送給server(伺服器),客戶機進入syn_sent(等待傳送)狀態,等待server(伺服器)確認。

第二次握手:server收到資料報後由標誌位syn=1知道client請求建立連線,server將標誌位syn和ack都置為1,ack=j+1,隨機產生乙個值seq=k,並將該資料報傳送給client以確認連線請求,server進入syn_rcvd狀態。

第三次握手:client收到確認後,檢查ack是否為j+1,ack是否為1,如果正確則將標誌位ack置為1,ack=k+1,並將該資料報傳送給server,server檢查ack是否為k+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間可以開始傳輸資料了。

*注意:seq隨機數相當於是用以核對是否正確接受,當傳送發傳送乙個隨機數seq時,傳送方就要收到乙個seq+1才能認為收到正確的確認。

(1)相關概念:四次揮手發生在tcp連線的斷開鏈結這一步。tcp共有6個標誌位,分別是:syn(synchronous),建立聯機;ack(acknowledgement),確認;psh(push),傳輸;fin(finish),結束;rst(reset),重置;urg(urgent),緊急。

*注:由於tcp連線是全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成資料傳送任務後,傳送乙個fin來終止這一方向的連線,收到乙個fin只是意味著這一方向上沒有資料流動了,即不會再收到資料了,但是在這個tcp連線上仍然能夠傳送資料,直到這一方向也傳送了fin。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉。

(2)揮手過程:

第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態

第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號),server進入close_wait狀態。此時tcp鏈結處於半關閉狀態,即客戶端已經沒有要傳送的資料了,但服務端若傳送資料,則客戶端仍要接收。

第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態。

第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手。

為了防止 已失效的鏈結請求報文突然又傳送到了服務端,因而產生錯誤。

客戶端發出的連線請求報文並未丟失,而是在某個網路節點長時間滯留了,以致延誤到鏈結釋放以後的某個時間才到達server。這是,server誤以為這是client發出的乙個新的鏈結請求,於是就向客戶端傳送確認資料報,同意建立鏈結。若不採用「三次握手」,那麼只要server發出確認資料報,新的鏈結就建立了。由於client此時並未發出建立鏈結的請求,所以其不會理睬server的確認,也不與server通訊;而這時server一直在等待client的請求,這樣server就白白浪費了一定的資源。若採用「三次握手」,在這種情況下,由於server端沒有收到來自客戶端的確認,則就會知道client並沒有要求建立請求,就不會建立鏈結。

msl:報文最大生存時間。

2msl即兩倍的msl,tcp的time_wait狀態也稱為2msl等待狀態,即第3次握手完成後傳送了第四次握手的ack包後就進入了time_wait狀態,必須在此狀態上停留兩倍的msl時間,等待2msl時間主要目的是怕最後乙個 ack包對方沒收到,那麼對方在超時後將重發第三次握手的fin包,主動關閉端接到重發的fin包後可以再發乙個ack應答包。在time_wait狀態 時兩端的埠不能使用,要等到2msl時間結束才可繼續使用。當連線處於2msl等待階段時任何遲到的報文段都將被丟棄。

計算機網路 TCP的三次握手與四次揮手(超詳細)

今天剛看完 計算機網路 自頂向下方法 這本書的運輸層這一章。直到今天我才知道,tcp協議居然有這麼複雜 之前上課都沒怎麼認真聽 這一章節總共七十多頁,主要介紹udp與tcp,但udp的內容卻只佔不超過5頁,大部分的篇幅都是在講解tcp的機制。但是就算這樣,我還是感覺這本書對tcp的講解不夠詳細,忽略...

計算機網路 TCP IP三次握手和四次揮手

udp通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出現丟包現象,實際應用中要求程式設計師程式設計驗證。udp與tcp位於同一層,但它不管資料報的順序 錯誤或重發。因此,udp不被應用於那些使用虛電路的面向連線的服務,udp主要用於那些面向查詢 應答的服務,例如nfs。相對於ftp或telnet,...

計算機網路 TCP的三次握手和四次揮手

參考鏈結 參考鏈結 三次握手 四次揮手 在完成三次握手的第三步之前分配 tcp 快取 和 變數,使得tcp易於受到syn洪氾的拒絕服務攻擊。linux為tcp連線分配的資源 linuxtcp的連線控制塊 tcp服務端在接收到syn報文時,會為該連線先分配乙個tcp request sock,三次握手...