我目前正在嘗試實現單向TCP,我只是想澄清一下TCP發送者/接收者窗口和接收緩衝區的行爲。TCP窗口和緩衝區 - 檢查我的理解?
我的加窗過程的理解如下:
窗口大小表示該發送方可以一次發送未確認的字節的最大數目。
此尺寸在連接期間達成一致。
TCP發送方應該記錄下較低序號的ACK,並且在接收到ACK時將數據包標記爲ACK。如果最低序列號(它正在跟蹤)與當前窗口中的第一個字節匹配,請將窗口向右滑動。現在
,我接收緩衝區的理解...
這當一個數據包到達不按順序使用。數據被放入緩衝區,接收方不會對其進行確認,而是繼續在最早的無序數據包之前確認它收到的最後一個數據包。這會使發送者在重複的ACK號碼之後「快速」重新發送下一個數據包。
這是對這兩個概念的正確理解,如果不是,請澄清。
謝謝!
關於接收緩衝區。 AFAIK,當有序數據到達時,它被放入緩衝區,發送一個ACK作爲響應,並且RCV.NXT指針被更新,預期接下來會接收到第一個字節。當應用程序可用時,它會讀取數據直到RCV.NXT - 1,但它如何知道哪個是要檢索的第一個字節?應該有另一個變量/指針來控制它,對吧? – rutex