TCP協議 傳輸控制協議TCP(1)

2021-10-04 10:48:37 字數 2441 閱讀 2141

tcp協議具有以下特點:

1)tcp協議是面向連線的,工作在運輸層。也就是說,tcp協議在傳輸資料之前需要先建立連線,傳輸結束後要釋放連線。

3)tcp連線是可靠的。通過tcp連線可以無差錯的傳輸資料,使資料不丟失、不重複且按序到達。

4)tcp提供全雙工的通訊。

5)面向位元組流。所謂的面向位元組流就是說:tcp把應用程序傳下來的資料僅僅看成一連串無結構的位元組流,並不知道位元組流的含義。

tcp報文段=首部+資料

(**於網路,侵刪)

由圖可知,tcp報文段包含在ip資料報中,ip工作在網路層(第三層),當資料從應用層向下傳輸時需要加上每一層的首部,封裝後進行傳輸,需要注意的是在資料鏈路層(第二層)不僅需要加首部,還要加上尾部,然後到達物理層通過物理**傳送出去(物理層不需要加首部資訊),然後再一步層層將控制資訊剝去,上交給更高一層,直到到達接收端的應用層為止。這是資料的基本傳輸流程。

接下來重點介紹一下tcp首部固定部分各字段的意義:

源埠和目的埠

各佔2個位元組,這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個tcp連線。有時乙個ip位址和乙個埠號也稱為socket(插口或套接字)。

序號(seq)

佔4個位元組,是本報文段所傳送的資料專案組第乙個位元組的序號。在tcp傳送的資料流中,每乙個位元組都有乙個序號。例如,一報文段的序號為300,而且資料共100位元組,下乙個位元組的序號是301,則下乙個報文段的序號就是400;序號是32bit的無符號數,序號到達2^32-1後從0開始。

確認序號(ack)

佔4位元組,是期望收到對方下次傳送的資料的第乙個位元組的序號,也就是期望收到的下乙個報文段的首部中的序號;確認序號應該是上次已成功收到資料位元組序號+1,如上,報文段的序號為300,則確認序號為399+1=400(399為第100個位元組的序號)。只有ack標誌為1時,確認序號才有效。

應當記住:確認序號為n,則說明到(n-1)為止的資料都已經正確收到了。

資料偏移

佔4位,表示資料開始的地方離tcp段的起始處有多遠。實際上就是tcp段首部的長度。由於首部長度不固定,因此資料偏移欄位是必要的。資料偏移以32位為長度單位,也就是4個位元組,因此tcp首部的最大長度是60個位元組。即偏移最大為15個長度單位=1532位=154位元組。

保留

6位,供以後應用,現在置為0。

6個標誌位位元

緊急urg:當urg=1時,註解此報文應盡快傳送,而不要按本來的列隊次序來傳送。與「緊急指標」字段共同應用,緊急指標指出在本報文段中的緊急資料的最後乙個位元組的序號,使接管方可以知道緊急資料共有多長。

確認ack:只有當ack=1時,確認序號欄位才有效;

推送psh:當psh=1時,接收方應該盡快將本報文段立即傳送給其應用層。

復位rst:當rst=1時,表示出現連線錯誤,必須釋放連線,然後再重建傳輸連線。復位位元還用來拒絕乙個不法的報文段或拒絕開啟乙個連線;

同步syn:在建立連線時用來同步序號,syn=1,ack=0時表示請求建立乙個連線,攜帶syn標誌的tcp報文段為同步報文段;

終止 fin:發端完成傳送任務。

視窗

tcp通過滑動視窗的概念來進行流量控制。

設想在傳送端傳送資料的速度很快而接收端接收速度卻很慢的情況下,為了保證資料不丟失,顯然需要進行流量控制, 協調好通訊雙方的工作節奏。

所謂滑動視窗,可以理解成接收端所能提供的緩衝區大小。tcp利用乙個滑動的視窗來告訴傳送端對它所傳送的資料能提供多大的緩 沖區。視窗大小為位元組數起始於確認序號字段指明的值(這個值是接收端正期望接收的位元組)。

視窗大小是乙個16bit欄位,因而視窗大小最大為65535位元組。

應當記住:視窗字段明確指出了現在允許對方傳送的資料量。視窗值經常動態變化。

檢驗和

佔2位元組,檢驗和覆蓋了整個tcp報文段:tcp首部和資料。這是乙個強制性的字段,一定是由發端計算和儲存,並由收端進行驗證。

緊急指標

只有當urg=1時緊急指標才有效。緊急指標是乙個正的偏移量,和序號欄位中的值相加表示緊急資料最後乙個位元組的序號,指出了本報文段中的緊急資料的位元組數(緊急資料之後就是普通資料)。

參考資料:

《計算機網路 第七版》謝希仁編著

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