(17)TCP 傳輸控制協議

2022-08-17 05:18:17 字數 1717 閱讀 1230

一、tcp的服務

儘管tcp和udp都是用相同的網路層(ip),tcp卻向應用層提供與udp完全不同的服務,tcp提供一種面向連線的、可靠的位元組流的全雙工服務。

面向連線意味著tcp的應用在彼此交換資料之前必須先建立乙個tcp連線。

tcp通過下列方式提供可靠性:

(1)應用資料被分割為tcp認為最合適傳送的資料塊,由tcp傳遞給ip的資訊單位稱為報文段或段(segment);

(2)當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。若不能及時收到乙個確認,則重發這個報文段;

(3)tcp收到發自tcp連線另一端的資料,它將傳送乙個確認,這個確認並不立即傳送,通常將推遲幾分之一秒;

(4)tcp將保持它首部和資料的校驗和;

(5)既然tcp報文段作為ip資料報來傳輸,可能會失序,tcp將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層;

(6)ip資料報會發生重複,tcp接收端需秀氣重複的資料;

(7)tcp提供流量控制。

兩個應用程式通過tcp連線交換8 bit位元組構成的位元組流,tcp不在位元組流中插入記錄識別符號,我們將這稱為位元組流服務(byte stream service)。另外tcp對位元組流不做任何解釋。

二、tcp首部

tcp資料被封裝在ip資料報中,如下所示:

tcp首部資料格式如下所示:

每個tcp段包含源端和目的端的埠號,用於尋找發端和收端應用程式,這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個tcp連線。乙個ip位址和乙個埠號也成為乙個插口(socket)。

序號用來表示這個報文段中的第乙個資料位元組。tcp用序號對每個位元組進行計數,序號是乙個32bit的無符號數,其到達2^32-1後又從0開始。

在建立乙個新連線時,syn標誌變1。序號字段包含由這個主機選擇的該連線的初始序號isn(initial sequence number)。該主機傳送資料第乙個位元組的序號為isn+1,因為syn標誌消耗了乙個序號。

確認序號包含傳送確認的一端所期望收到的下乙個序號,即為上次已成功接收資料位元組序號+1,只有ack標誌位1時,確認序號欄位才有效。

一旦建立的tcp連線,ack標誌總被設定為1。

首部長度表示首部中32bit字的數目。此字段佔4bit,因此tcp最多有60位元組的首部。無任選字段,正常的長度為20位元組。

tcp可以表述為乙個沒有選擇確認或否認的滑動視窗協議。

校驗和覆蓋整個tcp首部和tcp資料部分。是乙個強制性的字段。由發端計算和儲存,收端進行驗證。tcp校驗和與udp校驗和計算類似,使用乙個偽首部。

最常見的可選字段是最長報文大小,又稱為mss(maximum segment size)。通常在通訊的第乙個報文段(建立連線而設定syn標誌的那個段)中指明這個選項。它指明本段所能接收的最大長度的報文段。

tcp首部中標誌位簡介:

urg    緊急指標有效

ack    確認序號有效

psh    接收方應盡快將這個報文段交給應用層

rst    重建連線

syn    同步序號,用來發起乙個連線

fin    發端完成傳送任務

TCP 傳輸控制協議

推薦 tcp ip 簡直是程式設計師的福音 tcp 協議是 面向連線的,可靠的,流傳輸,協議。流 是指 不間斷 的資料結構,可以想象成排水管道中的水流。當應用程式採用 tcp 傳送訊息的時候,雖然可以保證傳送的順序,但是還是猶如沒有任何間隔的資料流,傳送給接收端。可以這麼理解 在傳送端,應用程式傳送...

TCP傳輸控制協議

tcp是網際網路中的傳輸層協議,使用三次握手協議建立連線。當主動方發出syn連線請求後,等待對方回答syn ack 1 並最終對對方的 syn 執行 ack 確認。這種建立連線的方法可以防止產生錯誤的連線,tcp使用的流量控制協議是可變大小的滑動視窗協議 tcp三次握手的過程如下 客戶端傳送syn ...

tcp傳輸控制協議

tcp服務 tcp是面向連線的,提供可靠的服務,對資料有校驗機制。tcp的首部 其格式如下 如上tcp的報文是tcp的首部和tcp的資料。tcp的首部是有源埠和目的埠,這個值和ip首部的源ip和目的ip構成了tcp唯一確定的乙個連線。序號是用來標示從tcp發端向tcp收端傳送的資料位元組。當建立乙個...