計網 問題1 TCP三次握手和四次揮手

2021-10-09 15:29:38 字數 1744 閱讀 9758

(1)第一次握手:首先client給server傳送連線請求報文,在這個報文中,包含了syn=1,client_seq=任意值i,傳送之後處於syn-sent狀態,這是第一次握手

(2)第二次握手:server端接收到了這個請求,並分配資源,同時給client返回乙個ack報文,這個報文中呢包含了這些字段,標誌位syn和ack都為1,而小ack為i+1,此時位於syn-rcvd狀態,這是第二次握手

(3)第三次握手:client收到server發來的ack資訊後呢,他會看到server發過來的小ack是i+1,這時他知道了server收到了訊息,也給server回乙個ack報文,報文中同樣包含了ack=1這樣的訊息,同時呢,還包括了client_ack=k+1這樣的字段,這樣呢三次握手之後,連線就建立了,client進入established(已建立連線)狀態

(1)tcp斷開連線通常是由一方主動,一方被動的,這裡我們假設client主動,server被動 第一次揮手:當client沒有資料要傳送給server了,他會給server傳送乙個fin報文,告訴server:「我已經沒有資料要發給你了,但是你要是還想給我發資料的話,你就接著發,但是你得告訴我你收到我的關閉資訊了」,這是第一次揮手,揮手之後client進入fin_wait_1的第一階段

(2)第二次揮手:當server收到client發來的fin報文後,告訴client:「我收到你的fin訊息了,但是你等我發完的」此時給client返回乙個ack資訊,並且呢ack=seq+1,這是第二次揮手,揮手之後呢server進入close_wait階段,而client收到之後處於fin_wait_2第二階段

(3)第三次揮手:當server發完所有資料時,他會給client傳送乙個fin報文,告訴client說「我傳完資料了,現在要關閉連線了」,然後呢server變成last_ack狀態,等著client最後的ack資訊,這是第三次揮手

(4)第四次揮手:當client收到這個fin報文時,他會對這個訊息進行確認,即給server發ack資訊,但是它不相信網路,怕server收不到資訊,它會進入time_wait狀態,萬一server沒收到ack訊息它可以可以重傳,而當server收到這個ack資訊後,就正式關閉了tcp連線,處於closed狀態,而client等待了2msl這樣長時間後還沒等到訊息,它知道server已經關閉連線了,於是乎他自己也斷開了,這是第四次揮手,這樣tcp連線就斷開了 。

上文中紅字部分。

如果使用兩次握手的話,三次握手中的最後一次缺失,伺服器不能確認客戶端的接收能力。

舉兩個例子,第一種是黑客會偽造大量syn請求傳送給伺服器,伺服器立即確認並建立連線,分配資源,但是這一系列連線並不是真實存在的,這大大浪費了伺服器的資源並且阻塞了正常使用者的連線,這種也叫syn泛洪攻擊。第二種是伺服器返回給客戶端的ack資料報可能會在傳輸的過程中丟失,而客戶端沒有收到該ack資料報而拒絕接收伺服器接下來傳送的資料,於是伺服器一直在傳送,客戶端一直在拒絕,形成死鎖。

time_wait是指四次揮手中客戶端接收了服務端的fin報文並傳送ack報文給伺服器後,仍然需要等待2msl時間的過程。雖然按道理,四個報文都傳送完畢,我們可以直接進入close狀態了,但是我們必須假象網路是不可靠的,有可以最後乙個ack丟失。如果客戶端傳送的ack發生丟失,伺服器會再次傳送fin報文給客戶端,所以time_wait狀態就是用來重發可能丟失的ack報文。

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

tcp是提供客戶和伺服器之間的連線,tcp客戶端首先要先與某個給定的伺服器建立乙個連線,再通過該連線與那個伺服器交換資料,最後終止這個連線。此外,tcp提供了可靠性 當tcp向另一端傳送資料時,要求對端必須返回一次確認,如果沒有收到確認,tcp會自動的重新傳輸一次資料並等待更長的時間,在數次重傳結束...

計網 TCP的三次握手和四次揮手

昨天被360的筆試虐到了。辣麼多道c 引號還不能好好打,用中文的,我還以為選項是錯的。tat 不過考了幾道前端題也發現tcp的過程還是不大了解。這麼經典的題目。幾個字段 syn synchronize 在建立連線的時候用 ack acknowledge number 用於確認序號 seq seque...

tcp三次握手和四次握手

建立tcp需要三次握手才能建立,而斷開連線則需要四次握手。整個過程如下圖所示 先來看看如何建立連線的。首先client端傳送連線請求報文,server段接受連線後回覆ack報文,並為這次連線分配資源。client端接收到ack報文後也向server段發生ack報文,並分配資源,這樣tcp連線就建立了...