1. 程式人生 > >TCP原理 滑動視窗

TCP原理 滑動視窗

滑動視窗機制

滑動視窗協議是傳輸層進行流控的一種措施,接收方通過通告發送方自己的視窗大小,從而控制傳送方的傳送速度,從而達到防止傳送方傳送速度過快而導致自己被淹沒的目的,並且滑動視窗分為接收視窗和傳送視窗。

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

要了解滑動視窗機制必須回顧ACK的作用。我們知道如果接收方成功的接收到資料,那麼會回覆一個ACK資料,其中ACK中包含兩個非常重要的資訊:

  • 期望接收下一位元組的序號n。
  • 當前滑動視窗的大小m。

而ACK所攜帶的滑動視窗的大小m便是我們滑動視窗機制中的主角了,由它來負責機制的通訊。通訊過程下圖所示:

滑動視窗

滑動視窗基本原理

  • 對於TCP會話的傳送方,任何時候在其傳送快取內的資料都可以分為4類,“已經發送並得到對端ACK的”,“已經發送但還未收到對端ACK的”,“未傳送但對端允許傳送的”,“未傳送且對端不允許傳送”。“已經發送但還未收到對端ACK的”和“未傳送但對端允許傳送的”這兩部分資料稱之為傳送視窗。

    傳送方快取資料型別
    當收到接收方新的ACK對於傳送視窗中後續位元組的確認是,視窗滑動,滑動原理如下圖。
    滑動原理
    當收到ACK=36時視窗滑動。

  • 對於TCP的接收方,在某一時刻在它的接收快取記憶體在3種。“已接收”,“未接收準備接收”,“未接收並未準備接收”(由於ACK直接由TCP協議棧回覆,預設無應用延遲,不存在“已接收未回覆ACK”)。其中“未接收準備接收”稱之為接收視窗。傳送視窗與接收視窗關係TCP是雙工的協議,會話的雙方都可以同時接收、傳送資料。TCP會話的雙方都各自維護一個“傳送視窗”和一個“接收視窗”。其中各自的“接收視窗”大小取決於應用、系統、硬體的限制(TCP傳輸速率不能大於應用的資料處理速率)。各自的“傳送視窗”則要求取決於對端通告的“接收視窗”,要求相同。
    這裡寫圖片描述

滑動視窗實現面向流的可靠性

  • 最基本的傳輸可靠性來源於“確認重傳”機制。
  • TCP的滑動視窗的可靠性也是建立在“確認重傳”基礎上的。
  • 傳送視窗只有收到對端對於本段傳送視窗內位元組的ACK確認,才會移動傳送視窗的左邊界。
  • 接收視窗只有在前面所有的段都確認的情況下才會移動左邊界。當在前面還有位元組未接收但收到後面位元組的情況下,視窗不會移動,並不對後續位元組確認。以此確保對端會對這些資料重傳。
  • 應用程式在需要(如記憶體不足)時,通過API通知TCP協議棧縮小TCP的接收視窗。然後TCP協議棧在下個段傳送時包含新的視窗大小通知給對端,對端按通知的視窗來改變傳送視窗,以此達到減緩傳送速率的目的。

相關推薦

TCP原理 滑動視窗

滑動視窗機制 滑動視窗協議是傳輸層進行流控的一種措施,接收方通過通告發送方自己的視窗大小,從而控制傳送方的傳送速度,從而達到防止傳送方傳送速度過快而導致自己被淹沒的目的,並且滑動視窗分為接收視窗和傳送視窗。 滑動視窗協議的基本原理就是在任意時刻

TCP/IP詳解--TCP/IP可靠的原理 滑動視窗 擁塞視窗

TCP和UDP處在同一層---運輸層,但是TCP和UDP最不同的地方是,TCP提供了一種可靠的資料傳輸服務,TCP是面向連線的,也就是說,利用TCP通訊的兩臺主機首先要經歷一個“撥打電話”的過程,等到通訊準備結束才開始傳輸資料,最後結束通話。所以TCP要比UDP可靠的多,U

TCP協議滑動視窗機制

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

解析TCP滑動視窗(動畫演示)

概述 滑動視窗實現了TCP流控制。首先明確滑動視窗的範疇:TCP是雙工的協議,會話的雙方都可以同時接收和傳送資料。TCP會話的雙方都各自維護一個傳送視窗和一個接收視窗。各自的接收視窗大小取決於應用、系統、硬體的限制(TCP傳輸速率不能大於應用的資料處理速率)。

TCP協議滑動視窗協議以及擁塞控制演算法

http://blog.csdn.net/liuchen1206/article/details/8599542 什麼是滑動視窗協議?     一圖勝千言,看下面的圖。簡單解釋下,傳送和接受方都會維護一個數據幀的序列,這個序列被稱作視窗。傳送方的視窗大小由接受方確定,目

TCP協議-滑動視窗、拆包和粘包

TCP、UDP都可以完成從一端往另一端傳送資料,只是UDP只是負責從傳送端將資料傳送出去就完了,不再管資料是否傳送到接收端是否已經接收到了;而TCP不僅負責傳送資料,還確保資料是否送達,TCP是可靠的,而且它也是可以流控的,管理髮送的速度,不能超過裝置的承受能力。TCP特性1

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

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

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

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

TCP的工作原理,TCP的流量控制原理滑動視窗,擁塞視窗,ACK累計確認等

TCP是一個面向連線的協議,所以在連線雙方傳送資料之前,都需要首先建立一條連線。這和前面講到的協議完全不同。前面講的所有協議都只是傳送資料而已,大多數都不關心傳送的資料是不是送到,UDP尤其明顯,從程式設計的角度來說,UDP程式設計也要簡單的多----UDP都不用考慮資料分片。 書中用telnet登陸退出

TCP/IP詳解--舉例明白髮送/接收緩衝區 滑動視窗協議之間的關係

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

TCP/IP詳解--滑動視窗 擁塞視窗 慢啟動 Negle演算法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

TCP連續ARQ協議和滑動視窗協議

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

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

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

深入淺出圖解【計算機網路】 之 【TCP可靠傳輸的實現: 三次握手+滑動視窗

【前言】這個系列主要會介紹一些計算機網路體系中“看上去稍有些複雜”但“一旦理解了又會很容易”的內容,我會嘗試通過示意圖/動圖的方式對概念進行儘量直觀的詮釋,如果能夠對大家學習計算機網路有所啟發的話就最好了。 TCP(Transmission Control Protocol)是整個TCP/IP協議

Linux 網路程式設計 全解(三)--------TCP三次握手、資料傳輸、四次揮手、滑動視窗

寫在前面:今天中秋佳節,首先祝大家佳節快樂,身體健康,恭喜發財。吃也吃了,喝也喝了,玩也玩了,乾點正事吧。 說一下寫這個系列的目的,隨著對物聯網開發的深入,越來越覺得自己網路基礎知識的薄弱,雖然開發過程中不需要對網路基礎有很深入的瞭解照樣能進行,但有一些問題仍然是不知其因,

TCP-IP詳解:滑動視窗(Sliding Window)

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

TCP連線管理機制-確認應答,超時重傳,滑動視窗,擁塞控制,流量控制,延遲應答

TCP通過確認應答和超時重傳可以保證資料可靠傳輸 使用滑動視窗完成流量控制和擁塞控制 使用延遲應答來保證滑動視窗足夠大 接下來對這些機制進行詳細的介紹 確認應答(ACK)機制 TCP將每個位元組的資料都設定了序列號,每一個ACK都帶有對應的確認序列號,告訴傳送者

TCP協議詳解(TCP報文、三次握手、四次揮手、TIME_WAIT狀態、滑動視窗、擁塞控制、粘包問題、狀態轉換圖)

一、TCP報文 【重要的欄位】: 序號:Seq序號,佔32位,用來標識從TCP源端向目的端傳送的位元組流,發起方傳送資料時對此進行標記; 確認序號:Ack序號,佔32位,只有ACK標誌位為1時,確

TCP協議、三次握手以及滑動視窗等的介紹(計算機網路基礎知識)

TCP概述 1 TCP是面向連線的傳輸層協議2 每一條TCP連線都能有2個端點3 TCP提供可靠交付的交付的服務4 TCP提供全雙工通訊5 面向位元組流 滑動視窗 轉自 http://blog.chinaunix.net/uid-26275986-id-4109679.html 三次握手

TCP可靠傳輸——滑動視窗

*TCP協議保證可靠的資料傳輸。。使用哪些方法來保證呢。。?來瞧瞧滑動視窗。。→_→* 滑動視窗的定義 TCP滑動視窗以位元組為單位 傳送視窗表示,在沒有收到接收方的確認時,傳送方可以把視窗內的