TCP 傳輸控制協議

2021-08-30 08:46:18 字數 2103 閱讀 5662

首先tcp和udp都是使用相同的網路層ip,tcp向應用層提供與udp完全不同的服務。

tcp是面向連線的,可靠的位元組流服務。面向連線意味著兩個使用tcp的程式進行通訊時首先要進行三次握手連線;tcp的可靠性由他的 頭部和多種方式實現。

兩個應用程式通過tcp連線交換8bit位元組 構成 的位元組流。tcp不在位元組流中插入記錄識別符號。我們將這稱為流式服務。如果一方的應用程式先傳10位元組,又傳20位元組,再傳30位元組,連線的另一端無法了解傳送方每次傳送了多少位元組。收方可以3次接收這60位元組,也可以一次接收。

在乙個tcp連線中,僅有兩方進行 彼此通訊,廣播和多播不能用於tcp。

tcp可靠性由以下方式提供:

tcp頭部

每個tcp段包含的源埠和目的埠,加上ip首部中的源ip和目的ip唯一確定乙個tcp連線。乙個ip位址和乙個埠號也稱為乙個插口socket。

序號 用來標識從tcp發端向tcp收端傳送的資料字節流,他表示在這個報文段中的第乙個資料位元組。如果將位元組流看做在兩個應用程式間的單向流動,則tcp用序號對每個位元組進行計數。序號是32bit的無符號位,序號達2^32-1後從0開始。       

確認號包含傳送確認的一端所期望收到的下乙個序號。因此,確認號應當是上次已成功收到資料位元組序號加1.只有ack標誌位為1時確認號字段才有效。

首部長度給出首部中32bit字的數目。需要這個值是因為任選欄位的長度是可變的。這個欄位佔4bit,因此tcp最多有60位元組的首部。然而嗎,沒有任選字段,正常的長度是20位元組。

6個標誌位元,他們中的多個可以同時被設定為1.          urg 緊急指標 ack確認號有效  psh 接收方應盡快將這個報文段交給應用層 rst 重建連線 syn 同步序號,用來發起乙個連線  fin 發端完成傳送任務。

tcp的流量控制由連線的每一端通過宣告的視窗大小來提供。視窗大小為位元組數,起始於確認號字段指明的值,這個值是接收端正期望接收的位元組。視窗大小是乙個16bit欄位,因而視窗大小最大為65535位元組。

檢驗和覆蓋了整個的tcp報文段:tcp首部和tcp資料。這是乙個強制性的字段,一定是由發端計算和儲存,並由收端進行驗證。tcp檢驗和的計算和udp檢驗和的計算相似。使用偽首部。

只有當urg標誌置1 時緊急指標才有效。緊急指標是乙個正的偏移量,和序號欄位中的值相加表示緊急資料最後乙個位元組的序號。tcp的緊急方式是傳送端向另一端傳送緊急資料的一種方式。

tcp的半關閉

tcp提供了連線的一端在結束它的傳送後還能接收另一端資料的能力。這就是所謂的半關閉。為了使用這個特性,變成介面必須為應用程式提供 一種方式來說明「我們已經完成了資料傳輸,因此傳送乙個檔案結束fin給另一端,但我還想接收另一端發來的資料,直到他給我發來檔案結束fin」。(如果應用程式不呼叫close而呼叫shutdown,且第二個引數設定為1,則插口的api支援半關閉)

2msl等待狀態

time_wait狀態也稱為2msl等待狀態。每個具體tcp實現必須選擇乙個報文段最大生存時間msl。他是任何報文段被丟棄前在網路內的最長時間。我們知道這個時間是有限的,因為tcp報文段以ip資料報在網路內傳輸,而ip資料報則有限制其生存時間ttl欄位。

復位報文段

tcp首部中的rst位元是用於「復位」的。一般來說,無論何時乙個報文段發往基準的連線出現錯誤,tcp都會發出乙個復位報文段。

到不存在的埠的請求

當連線請求到達時,目的埠沒有程序正在聽。對於udp,當乙個資料報到達目的埠時,該埠沒有在使用,它將產生乙個icmp埠不可達的資訊。而tcp使用rst復位。

異常終止乙個連線

終止乙個連線的正常方式是一方傳送fin。有時也稱為有序釋放,因為在所有排隊資料都已經傳送後才傳送fin,正常情況下沒有任何資料丟失。但是也有可能傳送乙個復位報文段而不是fin來中途釋放乙個連線,有時稱這為異常釋放。

異常終止乙個連線對應用程式來說有兩個優點:(1)丟棄任何待發資料並立即傳送復位報文段;(2)rst的接收方會區分另一端執行的時異常關閉還是正常關閉。應用程式使用的api必須提供產生異常關閉而不是正常關閉的手段。

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收端傳送的資料位元組。當建立乙個...