tcp三次握手與四次揮手

2021-07-30 22:06:35 字數 1336 閱讀 4865

一.tcp三次握手:(簡述:a傳送乙個請求給b,b發回確認,然後a再加以確認,來回共3次)

(1)第一次握手:客戶端傳送syn包(syn=x)到伺服器,並進入syn_send狀態,等待伺服器確認。

(2)第二次握手:伺服器收到syn包之後,必須確認客戶的syn(ack=x+1),同時自己也傳送乙個syn(syn=y)包,即傳送syn+ack包,此時伺服器進入syn_recv狀態。

(3)第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此時傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。

握手過程中傳送的包裡不包含資料,三次握手完畢後,客戶端與服務端才正式開始傳送資料,理想狀態下,tcp連線一旦建立,在通訊雙方中的任何一方主動關閉連線之前,tcp連線都將被一直保持下去。

二.四次揮手:與建立連線的「三次握手」類似,斷開乙個tcp連線則需要「四次握手」。

①. 第一次揮手:主動關閉方傳送乙個fin,用來關閉主動方到被動關閉方的資料傳送,也就是主動關閉方告訴被動關閉方(我已經不會再給你傳送資料了,當然,在fin包之前傳送出去的資料,如果沒有收到對應的ack確認報文,主動關閉方依然會重發這些資料),但是,此時主動關閉方還可以接受資料。

②第二次揮手:被動關閉方收到fin包後,傳送乙個ack給對方,確認序號為收到序號+1(與syn相同,乙個fin占用乙個序號)。

③第三次揮手:被動關閉方傳送乙個fin,用來關閉被動關閉方到主動關閉方的資料傳送,也就是告訴主動關閉方(我的資料也傳送完了,我的資料也傳送完了,不會再給你傳送資料了)。

④第四次揮手:主動關閉方收到fin,傳送乙個ack給被動關閉方,確認序號為收到序號+1,至此,完成四次揮手。

三 採用三次握手,那採用二次握手可以嗎?

採用三次握手是為了防止失效的連線請求報文段突然再次傳送到伺服器端,因而產生錯誤。

失效的連線請求報文段是指:主機a傳送的請求沒有收到主機b的確認,於是經過一段時間後,主機a又重新向主機b傳送連線請求,且建立成功,順利完成資料傳輸。

採用二次不行的原因:考慮這樣一種特殊情況,主機a第一次傳送的連線請求並沒有丟失,而是因為網路節點導致延遲到達主機b,主機b以為是主機a又發起的新連線,於是主機b同意連線,並向主機a發回確認,但此時主機a根本不會理會,主機b就一直在等待主機a傳送資料,導致主機b的資源浪費。

Tcp三次握手與四次揮手

tcp三次握手 四次揮手 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 syn 同步序列編號 synchronize sequence numbers 第二次...

TCP三次握手與四次揮手

也許三次握手你會經常聽到,但你知道三次握手的真正意義嗎,為什麼需要三次握手呢?首先我們必須明白tcp是面向連線的協議,無論哪乙個方向在傳送資料之前,都必須先在雙方之間建立連線。這一點與udp協議是不一樣的,udp在傳送資料報之前是不需要建立連線的。建立tcp連線的過程中,通訊的雙方需要互相發報文進行...

TCP三次握手與四次揮手

1 tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線 1 第一次握手 建立連線時,客戶端a傳送syn包 syn j 到伺服器b,並進入syn send狀態,等待伺服器b確認。2 第二次握手 伺服器b收到syn包,必須確認客戶a的syn ack j 1 同時自己也傳送乙個sy...