TCP三次握手其實,網絡上的傳輸是沒有連接的, TCP 是一樣的 TCP 所謂的 “連接”,其實只不過是在通信的雙方維護一個“連接狀態”,讓它看上去好像有連接一樣 所以, TCP 的狀態變換是非常重要的 。
TCP 連接的建立可以簡單地稱為三次握手,而連接的中止則可以稱為四次揮手。
建立連接 TCP/IP 協議中, TCP 協議提供可靠的連接服務,采用三次握手建立一個連接。
第一次握手:建立連接時,客戶端發送 SYN 包到服務器,并進入 SYN_SEND 狀態,等待服務器確認。
第二次握手:服務器收到 SYN 包,必須確認客戶的 SYN ,同時自己也發送一個 SYN 包,即 SYN+ACK 包,此時服務器進入 SYN_RECV 狀態。
第三次握手 :客戶端收到服務器的 SYN + ACK 包,向服務器發送確認包 ACK,此包發送完畢,客戶端和服務器進入 ESTABLISHE 態。
完成 三次握手,客戶端與服務器開始傳送數據,也就是 ESTABLISHED 狀態。
TCP四次揮手
TCP的連接斷開
TCP 一個特別的概念叫作半關閉,這個概念是說, TCP 的連接是全雙工(可以同時發送和接收)連接,因此在關閉連接的時候,必須關閉傳和送兩個方向上的連接。
客戶機給服務器 FIN 的 TCP 報文,然后服務器返回給客戶端一個確認 ACK 報文,并且發送一個FIN 報文,當客戶機回復 ACK 報文后( 四次握手),連接就結束了。
在建立連接的時候,通信的雙方要互相確認對方的最大報文長度( MSS ),以便通信。
一般這個 SYN 長度是 MTU 減去固定 IP 首部和 TCP 首部長度。對于一個以太網,一般可以達 1460 Byte 。當然如果對于非本地的 IP ,這個 MSS 可能就只有 536 Byte ,而且,如果中間的傳輸網絡的 MSS 更加的小的話,這個值還會變得更小。
為什么建連接要三次握手,斷連接需要四次揮手?
對于建連接的三次握手,主要是要初始化 Sequence Number 的初始值。通信的雙方要互相通知對方自己的初始化的 Sequence Numbe,所以叫 SYN 。
這個號要作為以后的數據通信的序號,以保證應用層接收到的數據不會因為網絡上的傳輸問題而亂序( TCP 會用這個序號來拼接數據)。
對于四次揮手,其實仔細看則是兩次,因為 TCP 是全雙工的,所以,發送方和接收方都需要 FIN 和 ACK。
只不過,有一方是被動的,所以看上去就成了所謂的四次揮手 。如果兩邊同時斷連接,那就會就進入到 CLOSING 狀態,接著就是TIME_WAIT 狀態。
-
服務器
+關注
關注
12文章
9029瀏覽量
85207 -
網絡
+關注
關注
14文章
7523瀏覽量
88654 -
TCP
+關注
關注
8文章
1351瀏覽量
78999 -
客戶端
+關注
關注
1文章
290瀏覽量
16663
發布評論請先 登錄
相關推薦
評論