計算機網路 TCP的連線建立

2021-10-02 21:57:13 字數 1351 閱讀 5573

tcp的連線建立又稱為三次握手,謝希仁版教材中成為三報文握手,即客戶端程序與伺服器端程序通過三次報文的傳輸建立了tcp連線。

首先tcp首部為:

連線流程:

注意:

序號:自己傳送的報文段的資料的第乙個位置序號。

確認ack:僅當ack=1的時候確認號字段才有效,規定建立連線後所有的報文段的ack=1。

同步syn: 在建立連線時用來同步訊號,若syn=1,ack=0,表示這是乙個連線請求報文段;若syn=1,ack=1,表示這是乙個同意連線報文段。

首先,客戶端a程序與伺服器端b程序都處於關閉(closed)狀態。然後a主動開啟連線,b被動開啟連線。

一開始,b程序建立傳輸控制塊tcb,並進入listen收聽狀態,等待客戶端的連線請求。

與此同時,客戶端a程序也建立程序控制塊tcb。當想和b建立tcp連線時,向b傳送連線請求報文段,此報文段首部中的同步位syn=1,並且設定乙個初始序號seq=x,並且此報文段不攜帶資料,並且消耗乙個序號,即這個序號代表連線請求,並不代表資料的位置。此時客戶端a程序進入同步已傳送狀態(syn-sent),即此時a還不能確定此時自己傳送能力是否完善,一點也不確定自己收聽能力是否完善。

b收到a的連線請求報文段時,如果同意連線,則向a傳送乙個同意連線報文段,此報文段中syn和ack位置1,並且確認號ack=x+1,並且初始化自己的初始序號為y。並且此報文段不攜帶資料,並且消耗乙個序號,即這個序號代表同意連線,並不代表資料的位置。此時伺服器端b程序進入同步收到(syn-recv)狀態。即此時a不能確定此時自己和b的傳送能力是否完善,也不確定自己和b收聽能力是否完善,但是b知道a的傳送能力和自己的接受能力沒問題,但是不能確定a的接收能力和自己的傳送能力怎麼樣。

當客戶端a程序收到b的同意連線報文段後,此時a已經知道自己的傳送和接受能力都沒問題了,也知道b的傳送和接收能力也都沒問題了,但是b還不知道這個情況,所以還要向b傳送乙個確認報文段。此報文段中ack置1,確認號ack=y+1,同時自己的序號seq=x+1(確認報文段可以帶資料,也可以不帶資料,如果不帶資料,則下次傳送的資料報文段的序號也為x+1)。傳送後便將自己變成established(建立連線)狀態。

當b收到a的確認報文段後,知道雙方的傳送和接收能力都沒問題了,所以可以愉快的傳送訊息了,便將自己也置為established(建立連線)狀態。

計算機網路 二 TCP連線

客戶端傳送乙個syn給服務端,syn是由乙個演算法計算出來的,同時把syn標誌位置為1 服務端接收之後 傳送ack,ack為客戶端傳送的syn 1,並且傳送自己的syn,並把syn和ack標誌位置為1。跟上面的一樣,ack也是用syn 1表示 這個要從初始化socket和確定序列號和視窗大小 避免歷...

計算機網路 TCP協議

tcp 傳送的資料單元稱為報文段。乙個 tcp 報文段分為 tcp 首部和 tcp 資料兩部分,整個 tcp 報文段作為 ip 資料報的資料部分封裝在 ip 資料報中,如圖所示 各欄位意義如下 tcp 是面向連線的協議,因此每個 tcp 連線都有三個階段 建立連線 資料傳送和連線釋放。tcp 連線的...

計算機網路 TCP協議

tcp協議是面向連線的協議,把連線作為最基本的抽象。每一條tcp連線唯一的被通訊兩端的兩個端點所確定。tcp協議是點對點,而不是點對多點。端點又被稱為套接字,tcp協議規定,ip位址拼接埠號就構成套接字。1 可靠資料運輸原理 1 tcp協議傳送兩種資料報,一種資料報用來傳輸資料,一種資料報用來傳送控...