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

2021-08-21 17:09:18 字數 2127 閱讀 1911

**:

tcp的滑動視窗機制 

tcp這個協議是網路中使用的比較廣泛,他是乙個面向連線的可靠的傳輸協議。既然是乙個可靠的傳輸協議就需要對資料進行確認。tcp協議裡視窗機制有2種:一種是固定的視窗大小;一種是滑動的視窗。這個視窗大小就是我們一次傳輸幾個資料。對所有資料幀按順序賦予編號,傳送方在傳送過程中始終保持著乙個傳送視窗,只有落在傳送視窗內的幀才允許被傳送;同時接收方也維持著乙個接收視窗,只有落在接收視窗內的幀才允許接收。這樣通過調整傳送方視窗和接收方視窗的大小可以實現流量控制。

tcp滑動窗**術通過動態改變視窗大小來調節兩台主機間資料傳輸。每個tcp/ip主機支援全雙工資料傳輸,因此tcp有兩個滑動視窗:乙個用於接收資料,另乙個用於傳送資料。tcp使用肯定確認技術,其確認號指的是下乙個所期待的位元組。假定傳送方裝置以每一次三個資料報的方式傳送資料,也就是說,視窗大小為3。傳送方傳送序列號為1、2、3的三個資料報,接收方裝置成功接收資料報,用序列號4確認。傳送方裝置收到確認,繼續以視窗大小3傳送資料。當接收方裝置要求降低或者增大網路流量時,可以對視窗大小進行減小或者增加,本例降低視窗大小為2,每一次傳送兩個資料報。當接收方裝置要求視窗大小為0,表明接收方已經接收了全部資料,或者接收方應用程式沒有時間讀取資料,要求暫停傳送。傳送方接收到攜帶視窗號為0的確認,停止這一方向的資料傳輸。

我們可以看下面一張圖來分析一下固定視窗大小有什麼問題。 

這裡我們可以看到假設視窗的大小是1,也是就每次只能傳送乙個資料只有接受方對這個資料進行確認了以後才能傳送第2個資料。我們可以看到傳送方每傳送乙個資料接受方就要給傳送方乙個ack對這個資料進行確認。只有接受到了這個確認資料以後傳送方才能傳輸下個資料。 這樣我們考慮一下如果說視窗過小,那麼當傳輸比較大的資料的時候需要不停的對資料進行確認,這個時候就會造成很大的延遲。如果說視窗的大小定義的過大。我們假設傳送方一次傳送100個資料。但是接收方只能處理50個資料。這樣每次都會只對這50個資料進行確認。傳送方下一次還是傳送100個資料,但是接受方還是只能處理50個資料。這樣就避免了不必要的資料來擁塞我們的鏈路。所以我們就引入了滑動視窗機制,視窗的大小並不是固定的而是根據我們之間的鏈路的頻寬的大小,這個時候鏈路是否擁護塞。接受方是否能處理這麼多資料了。  

我們看看滑動視窗是如何工作的。我們看下面幾張圖。 

首先是第一次傳送資料這個時候的視窗大小是根據鏈路頻寬的大小來決定的。我們假設這個時候視窗的大小是3。這個時候接受方收到資料以後會對資料進行確認告訴傳送方我下次希望手到的是資料是多少。這裡我們看到接收方傳送的ack=3(這是傳送方傳送序列2的回答確認,下一次接收方期望接收到的是3序列訊號)。這個時候傳送方收到這個資料以後就知道我第一次傳送的3個資料對方只收到了2個。就知道第3個資料對方沒有收到。下次在傳送的時候就從第3個資料開始發。這個時候視窗大小就變成了2。 

這個時候傳送方傳送2個資料。 

看到接收方傳送的ack是5就表示他下一次希望收到的資料是5,傳送方就知道我剛才傳送的2個資料對方收了這個時候開始傳送第5個資料。 

這就是滑動視窗的工作機制,當鏈路變好了或者變差了這個視窗還會發生變話,並不是第一次協商好了以後就永遠不變了。                 

滑動視窗協議 

滑動視窗協議,是tcp使用的一種流量控制方法。該協議允許傳送方在停止並等待確認前可以連續傳送多個分組。由於傳送方不必每發乙個分組就停下來等待確認,因此該協議可以加速資料的傳輸。 

只有在接收視窗向前滑動時(與此同時也傳送了確認),傳送視窗才有可能向前滑動。    

收發兩端的視窗按照以上規律不斷地向前滑動,因此這種協議又稱為滑動視窗協議。    

當傳送視窗和接收視窗的大小都等於1時,就是停止等待協議。

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

tcp的滑動視窗機制 tcp這個協議是網路中使用的比較廣泛,他是乙個面向連線的可靠的傳輸協議。既然是乙個可靠的傳輸協議就需要對資料進行確認。tcp協議裡視窗機制有2種 一種是固定的視窗大小 一種是滑動的視窗。這個視窗大小就是我們一次傳輸幾個資料。對所有資料幀按順序賦予編號,傳送方在傳送過程中始終保持...

滑動視窗 TCP流量控制

問題 如果傳送端傳送的速度較快,接收端接收到資料後處理的速度較慢,而接收緩衝區的大小是固定的,就會丟失資料。tcp協議通過 滑動視窗 sliding window 機制解決這一問題。看下圖的通訊過程 1.傳送端發起連線,宣告最大段尺寸是 1460 初始序號是 0,視窗大小是 4k,表示 我的接收緩衝...

TCP滑動視窗與流量控制

tcp採用可變滑動視窗來實現流量控制。tcp連線的兩端互動作用,互相提供資料流的相關資訊,包括報文段序列號 ack號和視窗大小 即接收端的可用空間 傳送端根據這些資訊動態調節視窗大小來控制傳送,以達到流量控制的目的。每個tcp頭部的視窗大小字段表明接收端可用快取空間的大小,以位元組為單位。該字段長度...