滑動窗口協議


 

  為了完成流量控制,TCP使用滑動窗口協議,使用這種方法的時候,發送方和接收方向外通信各使用一個窗口。這個窗口覆蓋了緩存的一部分,在緩存中的字節是從應用進程傳送來的,在這個窗口中的字節就是可以發送而不必考慮確認的。這個想象的窗口有兩個邊沿:一個在左,一個在右。這個窗口叫做滑動窗口,因為左沿和右沿都可以滑動。

                           SWS(發送窗口大小):Send Window Size

                      LAR(最近接收到的確認幀):Last Acknowledegement Received

                            LFS(最近發送的幀):Last Frame Sent

LFS-LAR≤SWS

    窗口大小取決於下面兩個數中的較小值:接收窗口(rwnd)和擁塞窗口(cwnd)。接收窗口是由對方發送的包含確認的報文段中所給出的值,這是另一端在緩存溢出和數據被丟失之前所能接受的字節數。擁塞窗口是由網絡為避免擁塞而確定的值。

    

  右沿窗口向右移動表示展開窗口,說明允許從緩存中發送更多新的字節;

  左沿窗口向右移動表示合攏窗口,說明某些字節已經被確認了,發送端不必再擔心它們。

 

1. TCP協議的兩端分別為發送者A和接收者B,由於是全雙工協議,因此A和B應該分別維護着一個獨立的發送緩沖區和接收緩沖區,由於對等性(A發B收和B發A收),我們以A發送B接收的情況作為例子;
2. 發送窗口是發送緩存中的一部分,是可以被TCP協議發送的那部分,其實應用層需要發送的所有數據都被放進了發送者的發送緩沖區;
3. 發送窗口中相關的有四個概念:已發送並收到確認的數據(不再發送窗口和發送緩沖區之內)、已發送但未收到確認的數據(位於發送窗口之中)、允許發送但尚未發送的數據以及發送窗口外發送緩沖區內暫時不允許發送的數據;
4. 每次成功發送數據之后,發送窗口就會在發送緩沖區中按順序移動,將新的數據包含到窗口中准備發送。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM