TCP為什麼需要三次握手?用最通俗的話解釋給你聽

傑華園發表於2021-09-07

TCP實現原理和為什麼需要三次握手?兩次握手不可以?四次握手不可以?讀者可以帶著疑問,看一遍本篇部落格的詳細講解

TCP為什麼需要三次握手?用最通俗的話解釋給你聽

ok,首先解釋原因之前還是要先複習一下TCP的基本知識和三次握手協議:

1、什麼是TCP協議?

TCP:Transmission Control Protocol翻譯過來就是傳輸控制協議,TCP協議是一個面向連線的、可靠的、基於位元組流的傳輸層協議

RFC 793對TCP連線的定義:

Connections:

The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status information for each data stream.

The combination of this information, including sockets, sequence numbers, and window sizes, is called a connection.

其大致意思是TCP連線是為了用於保證可靠性和流控制機制的,包括 Socket、序列號及視窗大小。

其中Socket是由IP加埠組成的,序列號是用來解決亂序問題的,而視窗大小則是用來做流量控制的。

2、TCP協議的特性

面向連線:是指TCP是透過服務端和客戶端進行連線的協議

面向位元組流:TCP服務端和客戶端之間的資料通訊是透過位元組流資料傳輸的

可靠的:是指TCP服務端客戶端之間的資料傳輸是很穩定的,即使網路很差的情況,TCP都能保證將資料傳輸到接收方。

TCP為什麼需要三次握手?用最通俗的話解釋給你聽

ps:TCP傳輸的可靠性得益於TCP會記錄資訊的傳送狀態,哪些資料收到了,哪些資料沒收到,TCP都是會記錄的,然後哪些丟包的情況,就是傳送不成功的情況,TCP會重新發包,所以TCP的可靠性就是這麼保證的

3、TCP三次握手執行流程

TCP的三次握手執行過程是面試中的一個很常見的問題,因為這個問題也是計算機的一個很重要的基礎,所以需要認真學習

TCP為什麼需要三次握手?用最通俗的話解釋給你聽

關鍵字說明:

  • SYN:Synchronize Sequence Numbers,同步序列編號
  • ACK:Acknowledge Character,確認字元
  • SEQ:Sequence Number,序列號

TCP三次握手執行過程:

(1)首先,服務端和客戶端都是處於CLOSED狀態的,然後服務端啟動,監聽埠,狀態變為LISTEN(監聽)狀態

(2)客戶端為了請求資源,傳送連線,傳送同步序列號SYN,此時客戶端就變成了SYN-SEND狀態

(3)服務端接收到客戶端請求之後,傳送SYN和ACK,然後服務端狀態就變成SYN-RCVD狀態

(4)客戶端接收到資訊之後,再次傳送ACK,然後變成ESTABLISHED(已確認)狀態,服務端接收到返回資訊後,狀態也變成ESTABLISHED(已確認)狀態

4、TCP協議為什麼需要三次握手?

ok,知道了TCP的三次握手的基本工作原理之後,就可以解釋為什麼TCP需要三次握手?為什麼不設計成兩次握手就可以?

原因:避免重複連線

其實在RFC 793 Transmission Control Protocol裡就有指出為什麼要三次握手的原因

The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion.

翻譯為中文大致意思是主要原因是為了防止舊的重複連線引起連線混亂問題

比如在網路環境比較複雜的情況,客戶端可能會連續傳送多次請求。如果只設計成兩次握手的情況,服務端只能一直接收請求,然後返回請求資訊,也不知道客戶端是否請求成功。這些過期請求的話就會造成網路連線的混亂。

所以設計成三次握手的情況,客戶端在接收到服務端SEQ+1的返回訊息之後,就會知道這個連線是歷史連線,所以會傳送報文給服務端,告訴服務端。

所以TCP設計成三次握手的目的就是為了避免重複連線。

然後可以設計成四次握手?五次握手?不可以?

答案是也是可以的,不過為了節省資源,三次握手就可以符合實際情況,所以就沒必要設計成四次握手、五次握手等等情況

TCP為什麼需要三次握手?用最通俗的話解釋給你聽


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21472864/viewspace-2790798/,如需轉載,請註明出處,否則將追究法律責任。

相關文章