1. 程式人生 > >TCP 滑動視窗機制

TCP 滑動視窗機制

本文要解決的問題:

瞭解滑動視窗機制的原理和基本方法。

(1).視窗機制
    滑動視窗協議的基本原理就是在任意時刻,傳送方都維持了一個連續的允許傳送的幀的序號,稱為傳送視窗;同時,接收方也維持了一個連續的允許接收的幀的序號,稱為接收視窗。傳送視窗和接收視窗的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動視窗協議視窗大小一般不同。傳送方視窗內的序列號代表了那些已經被髮送,但是還沒有被確認的幀,或者是那些可以被髮送的幀。下面舉一個例子(假設傳送視窗尺寸為2,接收視窗尺寸為1):


   分析:①初始態,傳送方沒有幀發出,傳送視窗前後沿相重合。接收方0號視窗開啟,等待接收0號幀;②傳送方開啟0號視窗,表示已發出0幀但尚確認返回資訊。此時接收視窗狀態不變;③傳送方開啟0、1號視窗,表示0、1號幀均在等待確認之列。至此,傳送方開啟的視窗數已達規定限度,在未收到新的確認返回幀之前,傳送方將暫停傳送新的資料幀。接收視窗此時狀態仍未變;④接收方已收到0號幀,0號視窗關閉,1號視窗開啟,表示準備接收1號幀。此時傳送視窗狀態不變;⑤傳送方收到接收方發來的0號幀確認返回資訊,關閉0號視窗,表示從重發表中刪除0號幀。此時接收視窗狀態仍不變;⑥傳送方繼續傳送2號幀,2號視窗開啟,表示2號幀也納入待確認之列。至此,傳送方開啟的視窗又已達規定限度,在未收到新的確認返回幀之前,傳送方將暫停傳送新的資料幀,此時接收視窗狀態仍不變;⑦接收方已收到1號幀,1號視窗關閉,2號視窗開啟,表示準備接收2號幀。此時傳送視窗狀態不變;⑧傳送方收到接收方發來的1號幀收畢的確認資訊,關閉1號視窗,表示從重發表中刪除1號幀。此時接收視窗狀態仍不變。

    若從滑動視窗的觀點來統一看待1位元滑動視窗、後退n及選擇重傳三種協議,它們的差別僅在於各自視窗尺寸的大小不同而已。1位元滑動視窗協議:傳送視窗=1,接收視窗=1;後退n協議:發視窗>1,接收視窗>1;選擇重傳協議:傳送視窗>1,接收視窗>1。

(2).1位元滑動視窗協議

    當傳送視窗和接收視窗的大小固定為1時,滑動視窗協議退化為停等協議(stop-and-wait)。該協議規定傳送方每傳送一幀後就要停下來,等待接收方已正確接收的確認(acknowledgement)返回後才能繼續傳送下一幀。由於接收方需要判斷接收到的幀是新發的幀還是重新發送的幀,因此傳送方要為每一個幀加一個序號。由於停等協議規定只有一幀完全傳送成功後才能傳送新的幀,因而只用一位元來編號就夠了。其傳送方和接收方執行的流程圖如圖所示。

 

(3).後退n協議(GBN)

    由於停等協議要為每一個幀進行確認後才繼續傳送下一幀,大大降低了通道利用率,因此又提出了後退n協議。後退n協議中,傳送方在發完一個數據幀後,不停下來等待應答幀,而是連續傳送若干個資料幀,即使在連續傳送過程中收到了接收方發來的應答幀,也可以繼續傳送。且傳送方在每傳送完一個數據幀時都要設定超時定時器。只要在所設定的超時時間內仍收到確認幀,就要重發相應的資料幀。如:當傳送方傳送了N個幀後,若發現該N幀的前一個幀在計時器超時後仍未返回其確認資訊,則該幀被判為出錯或丟失,此時傳送方就不得不重新發送出錯幀及其後的N幀。

   從這裡不難看出,後退n協議一方面因連續傳送資料幀而提高了效率,但另一方面,在重傳時又必須把原來已正確傳送過的資料幀進行重傳(僅因這些資料幀之前有一個數據幀出了錯),這種做法又使傳送效率降低。由此可見,若傳輸通道的傳輸質量很差因而誤位元速率較大時,連續測協議不一定優於停止等待協議。此協議中的傳送視窗的大小為k,接收視窗仍是1。

(4).選擇重傳協議

    在後退n協議中,接收方若發現錯誤幀就不再接收後續的幀,即使是正確到達的幀,這顯然是一種浪費。另一種效率更高的策略是當接收方發現某幀出錯後,其後繼續送來的正確的幀雖然不能立即遞交給接收方的高層,但接收方仍可收下來,存放在一個緩衝區中,同時要求傳送方重新傳送出錯的那一幀。一旦收到重新傳來的幀後,就可以原已存於緩衝區中的其餘幀一併按正確的順序遞交高層。這種方法稱為選擇重發(SELECTICE REPEAT),其工作過程如圖所示。顯然,選擇重發減少了浪費,但要求接收方有足夠大的緩衝區空間。

相關推薦

TCP滑動視窗機制 流量控制 擁塞控制

轉自http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動視窗協議保證,而擁塞控制則由控制視窗結合一系列的控制演算法實現。 一、滑動視窗協議     &n

TCP 滑動視窗機制

本文要解決的問題: 瞭解滑動視窗機制的原理和基本方法。 (1).視窗機制    滑動視窗協議的基本原理就是在任意時刻,傳送方都維持了一個連續的允許傳送的幀的序號,稱為傳送視窗;同時,接收方也維

TCP滑動視窗機制

 (1).視窗機制 滑動視窗協議的基本原理就是在任意時刻,傳送方都維持了一個連續的允許傳送的幀的序號,稱為傳送視窗;同時,接收方也維持了一個連續的允許接收的幀的序號,稱為接收視窗。傳送視窗和接收視窗的序號的上下界不一定要一樣,甚至大小也可以不同。不同的滑動視窗協議視窗大

TCP滑動視窗機制 流量控制

TCP滑動視窗機制TCP滑動視窗機制分為兩種:固定大小視窗;滑動視窗(不固定大小)。由於TCP傳輸是支援全雙工的,因此傳送方和接收方各維護了兩個滑動視窗(接收視窗和傳送視窗)。滑動視窗會對資料幀進行編號,只有落在傳送視窗的資料才能被髮送,也只有落在接收視窗的資料才能被讀取。因

TCP協議滑動視窗機制

文章目錄 概述 滑動視窗引入 固定視窗 滑動視窗 滑動視窗原理 概述 從網路傳輸資料來講,TCP、UDP以及其他協議都可以完成資料的傳輸,而TCP協議與其他協議不同的一

TCP/IP詳解---滑動視窗機制及其三種協議

      在介紹滑動視窗之前先來簡單介紹一下TCP可靠傳輸原理中的停止等待協議,該協議就是傳送方每傳送一個報文段後就停止傳送,一直等收到接收方的確認後再發送下一個報文段。 TCP通訊是全雙工的,這裡為了方便理解,就以一個方向為例,假設A為傳送方,B為接收方。A會有一個

TCP滑動視窗/超時重傳/慢啟動機制

一. TCP的優勢從傳輸資料來講,TCP/UDP以及其他協議都可以完成資料的傳輸,從一端傳輸到另外一端,TCP比較出眾的一點就是提供一個可靠的,流控的資料傳輸,所以實現起來要比其他協議複雜的多,先來看下這兩個修飾詞的意義: 1. Reliability ,提供TCP的可靠性,

罪犯轉移(滑動視窗機制

C市現在要轉移一批罪犯到D市,C市有n名罪犯,按照入獄時間有順序,另外每個罪犯有一個罪行值,值越大罪越重。現在為了方便管理,市長決定轉移入獄時間連續的c名犯人,同時要求轉移犯人的罪行值之和不超過t,問有多少種選擇的方式(一組測試用例可能包含多組資料,請注意處理)? 這個題目可以先把連續的c

TCP滑動視窗控制流量的原理 TCP滑動視窗控制流量的原理

  TCP滑動視窗控制流量的原理   TCP的滑動視窗機制       TCP這個協議是網路中使用的比較廣泛,他是一個面向連線的可靠的傳輸協議。既然是一個可靠的傳輸協議就需要對資料進行確認。TCP協議裡視窗機制有2種:一種是固定的

TCP 滑動視窗 (流量控制)

首先明確: 1)TCP滑動視窗分為接受視窗,傳送視窗 滑動視窗協議是傳輸層進行流控的一種措施,接收方通過通告發送方自己的視窗大小,從而控制傳送方的傳送速度,從而達到防止傳送方傳送速度過快而導致自己被淹沒的目的。 對ACK的再認識,ack通常被理解為收到資料後給出的一個確認ACK,ACK包含兩個非常重要的資訊:

網路基本功(八):細說TCP滑動視窗

介紹 將TCP與UDP這樣的簡單傳輸協議區分開來的是它傳輸資料的質量。TCP對於傳送資料進行跟蹤,這種資料管理需要協議有以下兩大關鍵功能: 可靠性:保證資料確實到達目的地。如果未到達,能夠發現並重傳。 資料流控:管理資料的傳送速率,以使接收裝置不致於過載。 要完

TCP滑動視窗,流量控制,擁塞控制原理介紹

TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動視窗協議保證,而擁塞控制則由控制視窗結合一系列的控制演算法實現。一、滑動視窗協議     關於這部分自己不曉得怎麼敘述才好,因為理解的部分更多,下面就用自己的理解來介紹下TCP的精髓:滑動視窗協議。     所

TCP 滑動視窗(傳送視窗和接收視窗

   TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動視窗協議保證,而擁塞控制則由控制視窗結合一系列的控制演算法實現。一、滑動視窗協議     關於這部分自己不曉得怎麼敘述才好,因為理解的部分更多,下面就用自己的理解來介紹下TCP的精髓:滑動視窗協議。 

TCP滑動視窗協議及擁塞控制

TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動視窗協議保證,而擁塞控制則由控制視窗結合一系列的控制演算法實現。一、滑動視窗協議     關於這部分自己不曉得怎麼敘述才好,因為理解的部分更多,下面就用自己的理解來介紹下TCP的精髓:滑動視窗協議。   

流量控制、可靠傳輸與滑動視窗機制

流量控制涉及對鏈路上幀的傳送速率的控制,以使接收方有足夠的緩衝空間來接受每一個幀。例如,在面向幀的自動重傳請求系統中,當待確認幀的數量增加時,有可能超出緩衝儲存空間而造成過載。流量控制的基本方法是由接收方控制傳送方傳送資料的速率,常見的方式有兩種:停止-等待協議和滑動視窗協

TCP滑動視窗與回退N針協議

滑動視窗協議   1.傳送端和接收端分別設定傳送視窗和接收視窗。  2.三次握手的時候,客戶端把自己的緩衝區大小也就是視窗大小發送給伺服器,伺服器迴應是也將視窗大小發送給客戶端,伺服器客戶端都知道了彼此的視窗大小。  3.比如主機A的傳送視窗大小為5,主機A可以向主機B傳

TCP滑動視窗和socket緩衝區之間的關係(記錄)

一、TCP的滑動視窗大小實際上就是socket的接收緩衝區大小的位元組數 二、對於server端的socket一定要在listen之間設定緩衝區大小,因為,accept時新產生的socket會繼承監聽socket的緩衝區大小。對於client端的socket一定要在co

TCP 滑動視窗/TCP 接收和傳送緩衝區/核心sock接收和傳送緩衝區

一個socket在核心中有兩個緩衝區,分別為接收和傳送緩衝區。 struct sock { …… struct sk_buff_head sk_receive_queue;—-接收佇列 struct sk_buff_hea

TCP滑動視窗移動規則

一、TCP的滑動視窗大小實際上就是socket的接收緩衝區大小的位元組數 二、對於server端的socket一定要在listen之間設定緩衝區大小,因為,accept時新產生的socket會繼承監聽socket的緩衝區大小。對於client端的socket一定要在co

TCP 滑動視窗用以進行流量控制

滑動視窗協議原理是:對所有資料幀按順序賦予編號,傳送方在傳送過程中始終保持著一個傳送視窗,只有落在傳送視窗內的幀才允許被髮送;同時接收方也維持著一個接收視窗,只有落在接收視窗內的幀才允許接收。 通過調整發送方視窗和接收方視窗的大小可以實現流量控制,就象通過閥門控制水流速度