傳輸控制協(xié)議TCP概述
發(fā)布時間:2014/9/5 20:44:48 訪問次數(shù):989
由于TCP協(xié)議比較復雜,OPA4344因此本節(jié)先對TCP協(xié)議進行一般的介紹,然后再逐步深入討論TCP的可靠傳輸、流量控制和擁塞控制等問題。
TCP最主要的特點
TCP是TCP/IP體系中非常復雜的一個協(xié)議。下面介紹TCP最主要的特點。
(1) TCP是面向連接的運輸層協(xié)議。這就是說,應用程序在使用TCP協(xié)議之前,必須先建立TCP連接。在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的TCP連接。也就是說,應用進程之間的通信好像在“打電話”:通話前要先撥號建立連接,通話結束后要掛機釋放連接。
(2)每一條TCP連接只能有兩個端點(endpoint),每一條TCP連接只能是點對點的(一對一)。這個問題后面還要進一步討論。
(3) TCP提供可靠交付的服務。通過TCP連接傳送的數(shù)據(jù),無差錯、不丟失、不重復、并且按序到達。
(4) TCP提供全雙工通信。TCP允許通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù)。TCP連接的兩端都設有發(fā)送緩存和接收緩存,用來臨時存放雙向通信的數(shù)據(jù)。在發(fā)送時,應用程序在把數(shù)據(jù)傳送給TCP的緩存后,就可以做自己的事,而TCP在合適的時候把數(shù)據(jù)發(fā)送出去。在接收時,TCP把收到的數(shù)據(jù)放入緩存,上層的應用進程在合適的時候讀取緩存中的數(shù)據(jù)。
(5)面向字節(jié)流。TCP中的“流”(stream)指的是流入到進程或從進程流出的字節(jié)序列。“面向字節(jié)流”的含義是:雖然應用程序和TCP的交互是一次一個數(shù)據(jù)塊(大小不等),但TCP把應用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結構的字節(jié)流。TCP并不知道所傳送的字節(jié)流的含義。TCP不保證接收方應用程序所收到的數(shù)據(jù)塊和發(fā)送方應用程序所發(fā)出的數(shù)據(jù)塊具有對應大小的關系(例如,發(fā)送方應用程序交給發(fā)送方的TCP共10個數(shù)據(jù)塊,但接收方的TCP可能只用了4個數(shù)據(jù)塊就把收到的字節(jié)流交付上層的應用程序)。但接收方應用程序收到的字節(jié)流必須和發(fā)送方應用裎序發(fā)出的字節(jié)流完全一樣。當然,接收方的應用程序必須有能力識別收到的字節(jié)流,把它還原成有意義的應用層數(shù)據(jù)。圖5-8是上述概念的示
意圖。
為了突出示意圖的要點,我們只畫出了一個方向的數(shù)據(jù)流。但請注意,在實際的網(wǎng)絡中,一個TCP報文段包含上千個字節(jié)是很常見的,而圖中的各部分都只畫出了幾個字節(jié),這僅僅是為了更方便地說明“面向字節(jié)流”的概念。另一點很重要的是:圖5-8中的TCP連接是一條虛連接(也就是邏輯連接)而不是一條真正的物理連接。TCP報文段先要傳送到IP層,加上IP首部后,再傳送到數(shù)據(jù)鏈路層。再加上數(shù)據(jù)鏈路層的首部和尾部后,才離開主機發(fā)送到物理鏈路。
圖5-8指出,TCP和UDP在發(fā)送報文時所采用的方式完全不同。TCP并不關心應用進程一次把多長的報文發(fā)送到TCP的緩存中,而是根據(jù)對方給出的窗口值和當前網(wǎng)絡擁塞的程度來決定一個報文段應包含多少個字節(jié)(UDP發(fā)送的報文長度是應用進程給出的)。如果應用進程傳送到TCP緩存的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。如果應用進程一次只發(fā)來一個字節(jié),TCP也可以等待積累有足夠多的字節(jié)后再構成報文段發(fā)送出去。關于TCP報文段的長度問題,在后面還要進行討論。
由于TCP協(xié)議比較復雜,OPA4344因此本節(jié)先對TCP協(xié)議進行一般的介紹,然后再逐步深入討論TCP的可靠傳輸、流量控制和擁塞控制等問題。
TCP最主要的特點
TCP是TCP/IP體系中非常復雜的一個協(xié)議。下面介紹TCP最主要的特點。
(1) TCP是面向連接的運輸層協(xié)議。這就是說,應用程序在使用TCP協(xié)議之前,必須先建立TCP連接。在傳送數(shù)據(jù)完畢后,必須釋放已經(jīng)建立的TCP連接。也就是說,應用進程之間的通信好像在“打電話”:通話前要先撥號建立連接,通話結束后要掛機釋放連接。
(2)每一條TCP連接只能有兩個端點(endpoint),每一條TCP連接只能是點對點的(一對一)。這個問題后面還要進一步討論。
(3) TCP提供可靠交付的服務。通過TCP連接傳送的數(shù)據(jù),無差錯、不丟失、不重復、并且按序到達。
(4) TCP提供全雙工通信。TCP允許通信雙方的應用進程在任何時候都能發(fā)送數(shù)據(jù)。TCP連接的兩端都設有發(fā)送緩存和接收緩存,用來臨時存放雙向通信的數(shù)據(jù)。在發(fā)送時,應用程序在把數(shù)據(jù)傳送給TCP的緩存后,就可以做自己的事,而TCP在合適的時候把數(shù)據(jù)發(fā)送出去。在接收時,TCP把收到的數(shù)據(jù)放入緩存,上層的應用進程在合適的時候讀取緩存中的數(shù)據(jù)。
(5)面向字節(jié)流。TCP中的“流”(stream)指的是流入到進程或從進程流出的字節(jié)序列。“面向字節(jié)流”的含義是:雖然應用程序和TCP的交互是一次一個數(shù)據(jù)塊(大小不等),但TCP把應用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結構的字節(jié)流。TCP并不知道所傳送的字節(jié)流的含義。TCP不保證接收方應用程序所收到的數(shù)據(jù)塊和發(fā)送方應用程序所發(fā)出的數(shù)據(jù)塊具有對應大小的關系(例如,發(fā)送方應用程序交給發(fā)送方的TCP共10個數(shù)據(jù)塊,但接收方的TCP可能只用了4個數(shù)據(jù)塊就把收到的字節(jié)流交付上層的應用程序)。但接收方應用程序收到的字節(jié)流必須和發(fā)送方應用裎序發(fā)出的字節(jié)流完全一樣。當然,接收方的應用程序必須有能力識別收到的字節(jié)流,把它還原成有意義的應用層數(shù)據(jù)。圖5-8是上述概念的示
意圖。
為了突出示意圖的要點,我們只畫出了一個方向的數(shù)據(jù)流。但請注意,在實際的網(wǎng)絡中,一個TCP報文段包含上千個字節(jié)是很常見的,而圖中的各部分都只畫出了幾個字節(jié),這僅僅是為了更方便地說明“面向字節(jié)流”的概念。另一點很重要的是:圖5-8中的TCP連接是一條虛連接(也就是邏輯連接)而不是一條真正的物理連接。TCP報文段先要傳送到IP層,加上IP首部后,再傳送到數(shù)據(jù)鏈路層。再加上數(shù)據(jù)鏈路層的首部和尾部后,才離開主機發(fā)送到物理鏈路。
圖5-8指出,TCP和UDP在發(fā)送報文時所采用的方式完全不同。TCP并不關心應用進程一次把多長的報文發(fā)送到TCP的緩存中,而是根據(jù)對方給出的窗口值和當前網(wǎng)絡擁塞的程度來決定一個報文段應包含多少個字節(jié)(UDP發(fā)送的報文長度是應用進程給出的)。如果應用進程傳送到TCP緩存的數(shù)據(jù)塊太長,TCP就可以把它劃分短一些再傳送。如果應用進程一次只發(fā)來一個字節(jié),TCP也可以等待積累有足夠多的字節(jié)后再構成報文段發(fā)送出去。關于TCP報文段的長度問題,在后面還要進行討論。
上一篇:計算UDP檢驗和的例予
上一篇:TCP的連接
熱門點擊
- 以下地址中的哪一個和86.32/12匹配
- 因特網(wǎng)交換點IXP在全球的分布
- 以太網(wǎng)及其優(yōu)勢
- 微分控制
- OSI失敗的原因可歸納
- FCS體系結構
- MF47型指針式萬用表的工作原理
- 為什么A在TIME-WAIT狀態(tài)必須等待2M
- 常用的絞合線的類別、帶寬和典型應用
- 在物理層擴展以太網(wǎng)
推薦技術資料
- 自制智能型ICL7135
- 表頭使ff11CL7135作為ADC,ICL7135是... [詳細]