(二十)運輸層--TCP概述

傳輸控制協議TCP概述

TCP最主要的特點

(1)TCP是面向連接的運輸層協議
應用程序在使用TCP協議之前,必須先建立TCP連接。在傳送數據完畢後,必須釋放已經建立的TCP連接。

(2)每一條TCP連接只能有兩個端點
每一條TCP連接只能是點對點的。

(3)TCP提供可靠交付的服務
通過TCP連接傳送的數據,無差錯、不丟失、不重複,並且按序到達。

(4)TCP提供全雙工通信
TCP允許通信雙方的應用進程在任何時候都能發送數據。TCP連接的兩端都設有發送緩存和接收緩存,用來臨時存放雙向通信的數據。在發送時,應用程序在把數據傳送給TCP的緩存後,就可以做自己的事了,而TCP在合適的時候把數據發送出去。在接收時,TCP把收到的數據放入緩存,上層的應用進程在合適的時候讀取緩存中的數據。

(5)面向字節流
TCP中的“流”指的是流入到進程或從進程流出的字節序列。“面向字節流”的含義是:雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序交下來的數據僅僅看成是一連串的無結構的字節流。TCP並不知道所傳送的字節流的含義。TCP不保證接收方應用程序所收到的數據塊和發送方應用程序所發出的數據塊具有對應大小的關係。例如,發送方應用程序交給發送方的TCP共10個數據塊,但接收方的TCP可能只用了4個數據塊就把收到的字節流交付上層的應用程序。但接收方應用程序收到的字節流必須和發送方應用程序發出的字節流完全一樣。TCP並不關心應用進程一次把多長的報文發送到TCP的緩存中,而是根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP發送的報文長度是應用進程給出的)。如果應用進程傳送到TCP緩存的數據塊太長,TCP就可以把它劃分短一些再傳送。如果應用進程一次只發來一個字節,TCP也可以等待積累有足夠多的字節後再構成報文段發送出去。

TCP的連接

TCP把連接作爲最基本的抽象。每一條TCP連接有兩個端點,這個端點叫做套接字(socket)或插口。根據RFC 793的定義:端口號拼接IP地址即構成了套接字。例如,IP地址是192.3.4.5,端口號是80,那麼得到的套接字就是(192.3.4.5:80)。每一條TCP連接唯一的被通信兩端的兩個端點(兩個套接字)所確定。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章