TCP傳輸的建立(三次握手)

2021-08-01 11:38:16 字數 2325 閱讀 7963

摘自:《深入理解計算機網路》 王達著 機械工業出版社

1.ipv4資料報頭部格式

2.ipv6資料報頭部格式

3.ipv4資料報的封裝與解封裝

4.ipv4資料報的分段與重組

5.arp協議報文格式及arp表

6.arp位址解析原理

7.icmp協議及報文格式

8.ipv6協議族的其它協議

9.tcp的主要特性

10.tcp的套接字

11.tcp埠

12.tcp連線狀態轉移

tcp是乙個面向連線的傳輸層協議,因此,無論哪一方向的另一方傳送資料,都必須先在雙方之間建立一條傳輸連線。本文將詳細討論乙個 tcp 傳輸連線是如何建立的。

中有全面體現,這裡只是單獨把 tcp 傳輸連線建立過程列出來而已。具體步驟如下:

首先是伺服器初始化的過程,從 closed (關閉)狀態開始通過順序呼叫 socket、bing、listen、和 accept 原語建立 socket 套接字,進入 listen (監聽)狀態,等待客戶端的tcp傳輸連線要求。

客戶端最開始也是從 closed 狀態開始呼叫 socket 原語建立新的 socket 套接字,然後在需要再呼叫 connect 原語時,向伺服器傳送乙個將 syn 欄位值置1(表示此為同步資料段)的資料段(假設初始序號為 i),主動開啟埠,進入 syn sent (已傳送連線請求,等待對方確認)狀態。

伺服器接收到來自客戶端的syn資料段後,返回乙個 syn 欄位置1(表示此為同步資料段)、ack 欄位置1(表示此為確認資料段)、ack (確認號) = i + 1 的應答資料段(假設初始序號為 j),被動開啟埠,進入到 syn rcvd (已經接收到乙個連線請求,但未進行確認)狀態,注意,確認號是 i + 1, 不是 i,表示伺服器希望接收的下乙個資料段序號為 i + 1。

客戶端在收到來自伺服器的 syn + ack 資料段後,向伺服器傳送乙個 ack = 1(表示此為確認資料段)、序號為 i + 1、ack = j + 1 的確認資料段,同時進入established(連線建立)狀態,建立單向連線。要注意的是,此時序號為 i + 1, 確認好為 j +1,表示客戶端希望收到伺服器的下乙個資料段的序號為 j + 1.

伺服器在收到客戶端的 ack 資料段後, 進入 established 狀態,完成雙向連線的建立。

連線可以由任一方或雙方發起,一旦連線建立,資料就可以雙向對等地流動,而沒有所謂的主從關係。三次握手是連線兩端正確同步的充分必要條件,因為 tcp 建立在不可靠的分組傳輸服務至上,報文可能丟失、延遲、重複和亂序,因此,協議必須使用超時和重傳機制。如果重傳的連線請求和原先的連線請求在連線正在建立時到達,或者當乙個連線已經建立、使用和結束之後,某個延時的連線請求才到達,就會出現問題。採用三次握手協議可以解決上述問題。如客戶端傳送的 ack 資料段就是為了避免因網路延遲而導致的重複連線,因為這時客戶端通過檢查 ack 資料段中的確認號就可得知該連線請求是否已失效。

正常情況下,傳輸連線都是一方主動發起的,但也有可能雙方同時主動發起連線,此時就會發生連線碰撞,最終只有乙個連線能夠建立起來。所有連線都是由它們的端點進行標識的,如果第乙個連線請求建立起乙個由套接字(x, y)標識的連線,而第二個連線也建立了這樣乙個連線,那麼在tcp實體內部只有乙個套接字表項。

當出現同時發出連線請求時,兩端幾乎同時發出乙個 syn 欄位置1的資料段,並進入 syn_send 狀態。當每一端收到 syn 資料段時,狀態變為 syn_rcvd, 同時它們都再傳送 syn 欄位置1、ack 欄位置1的資料段,對收到的 syn 資料段進行確認。當雙方都收到對方的 syn+ack 資料段後,便都進入到了 established 狀態。下圖顯示了這種同時建立起連線過程,但最終建立的是乙個tcp連線,不是兩個,這點要注意。

同時發起連線的tcp連線建立過程

從上圖看出,乙個雙方同時開啟的傳輸連線需要交換4個資料段,比正常的傳輸連線建立所進行的三次握手多交換乙個資料段。此外,要注意的是,此時沒有將任何一端稱為客戶端或伺服器,因為每一端即是客戶端也是伺服器。

tcp的三次握手 傳輸層 TCP 三次握手

使用tcp協議進行通訊的雙方必須先建立連線,然後才能開始傳輸資料。為了確保連線雙方可靠性,在雙方建立連線時,tcp協議採用了三次握手策略。如圖 客戶端傳送帶有syn標誌的連線請求報文段,然後進入syn send狀態,等待服務端的確認。服務端接收到客戶端的syn報文段後,需要傳送ack資訊對這個syn...

tcp三次握手 TCP 三次握手總結

tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...

三次握手 TCP建立連線

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