TCP/IP之TCP協議(3):流量控制(滑動視窗協議)

來源:互聯網
上載者:User
1、流量控制是管理兩端的流量,以免會產生髮送過塊導致收端溢出,或者因收端處理太快而浪費時間的狀態。用的是:滑動視窗,以位元組為單位

2、視窗有3種動作:展開(右邊向右),合攏(左邊向右),收縮(右邊向左)這三種動作受接收端的控制。

合攏:表示已經收到相應位元組的確認了

展開:表示允許緩衝發送更多的位元組

收縮(非常不希望出現的,某些實現是禁止的):表示本來可以發送的,現在不能發送;但是如果收縮的是那些已經發出的,就會有問題;為了避免,收端會等待到緩衝中有更多緩衝空間時才進行通訊。

發端視窗的大小取決於收端的視窗大小rwnd(TCP報文的視窗大小欄位)和擁塞視窗大小cwnd(見擁塞控制)

發端視窗大小 = min{ rwnd , cwnd };

3、關閉視窗:視窗縮回有個例外,就是發送rwnd=0表示暫時不願意接收資料。這種情況下,發端不是把視窗收縮,二是停止發送資料。(為了比避免死結,會用一些探測報定時發送試探,見定時器一節)

4、問題:某些時候,由於發端或收端的資料很慢,會引起大量的1位元組資料痛惜,浪費很多資源。

(1)、發端的進程產生資料很慢時候,時不時的來個1位元組資料,那麼TCP就會1位元組1位元組的發送,效率很低。

解決方案(Nagle演算法):

a、將第一塊資料發出去

b、然後等到發送緩衝有足夠多的資料(最大報文段長度),或者等到收端確認的ACK時再發送資料。

c、重複b的過程

(2)、收端進程由於消耗資料很慢,所以可能會有這麼一種情況,收端會發送其視窗大小為1的資訊,然後有是1位元組的傳輸

解決辦法(2種)

a、Clark方法:在接收緩衝的一半變空,或者有足夠空間放最大報文長度之前,宣告接收視窗大小為0

b、延遲確認:在對收到的報文段確認之前等待到足夠的接收緩衝,或者等待到一個時間段(現在一般定義500ms)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.