網路 對TCP協議三次握手的理解

2021-08-07 08:36:48 字數 1885 閱讀 5584

tcp建立連線為什麼是三次握手,為什麼不是兩次或四次?,感覺是乙個很有意思的問題。

首先,我們來複習一下什麼是tcp協議:

由於鏈路層和網路層搭配已經實現了網際網路中任意兩台計算機之間的通訊。因此,傳輸層的功能就是建立「埠到埠」的通訊。只要確立主機和埠,我們就能實現應用程式之間的交流。

tcp就是用來完成這樣功能的一種協議,與之對應的還有一種協議就是udp協議。udp協議為了完成這樣的功能,使用了最簡單粗暴的實現,它的格式幾乎就是在資料之前加上埠號資訊。udp資料報由「標頭」和「資料報」兩個部分組成,「標頭」部分定義了傳送埠和接收埠,「資料」部分就是具體的內容,然後將整個udp資料報放入ip資料報的「資料」部分。udp資料報非常簡單,「標頭」部分一共只有8個位元組,總長度不超過65535位元組,正好放入乙個ip資料報中。雖然udp協議簡單且容易實現,但缺點也很明顯,資料報一旦發出,傳送方無法知道對方是否接收到。

為了解決這個問題,提高傳輸的穩定性,tcp協議橫空出世!

tcp全稱是transmission control protocol,中文名為傳輸控制協議,它可以提供可靠的、面向連線的網路資料傳遞服務。傳輸控制協議主要包含下列任務和功能:

- 確保ip資料報的成功傳遞。 對程式傳送的大塊資料進行分段和重組。

- 確保正確排序及按順序傳遞分段的資料。

- 通過計算校驗和,進行傳輸資料的完整性檢查。

- 根據資料是否接收成功傳送肯定訊息。通過使用選擇性確認,也對沒有收到的資料傳送否定確認。

- 為必須使用可靠的、基於會話的資料傳輸程式,如客戶端/伺服器資料庫和電子郵件程式,提供首選傳輸方法。

tcp協議非常複雜,但可以近似認為,它就是有確認機制的udp協議,每發出乙個資料報都要求確認。如果有乙個資料報遺失,就收不到確認,發出方就知道有必要重發這個資料報了。因此,tcp協議能夠確保資料不會遺失。它的缺點是過程複雜、實現困難、消耗較多的資源。tcp資料報和udp資料報一樣,都是內嵌在ip資料報的」資料」部分。tcp資料報沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常tcp資料報的長度不會超過ip資料報的長度,以確保單個tcp資料報不必再分割。

上面提到了tcp提供可靠的、面向連線的網路資料傳遞服務。那麼,每次進行資料傳遞之前,tcp協議都要求客戶端和伺服器端首先建立乙個連線,「三次握手」即出現在這個時候。

首先看下面一張「三次握手」建立連線的過程:

(syn:同步標誌,ack:確認標誌)

第一次握手:建立連線。客戶端傳送連線請求報文段,將syn位置為1,sequence number為x;然後,客戶端進入syn_send狀態,等待伺服器的確認;

第二次握手:伺服器收到syn報文段。伺服器收到客戶端的syn報文段,需要對這個syn報文段進行確認,設定acknowledgment number為x+1(sequence number+1);同時,自己自己還要傳送syn請求資訊,將syn位置為1,sequence

number為y;伺服器端將上述所有資訊放到乙個報文段(即syn+ack報文段)中,一併傳送給客戶端,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack報文段。然後將acknowledgment number設定為y+1,向伺服器傳送ack報文段,這個報文段傳送完畢以後,客戶端和伺服器端都進入established狀態,完成tcp三次握手。

看完後,結合圖上的文字說明可得知:3次握手後,客戶端和服務端即能能確認自己、對方都是可傳送和可接受資料的。少於3次無法確認以上資訊,多於3次浪費資源。

網路協議 TCP的三次握手

2 握手失敗 3.三次握手流程圖 3.那麼為什麼要建立三次握手連線?4.雙方同時發起握手過程是什麼樣?5.握手過程一方突然掛了,另一方如何斷開?那為啥要握手呢,不握手不行麼,這樣就可以有效隔離病毒了,噢,好吧,我要全民免疫。必須的握手,因為tcp區別於udp的最明顯的就是他的有鏈結性,所以,在他倆通...

TCP三次握手協議

摘自 syn攻擊原理以及防範技術 tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack ...

TCP三次握手協議

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