A. 滑动窗口协议的工作机制
TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。为此TCP在进行数据传输时使用了滑动窗口机制。
TCP滑动窗口用来暂存两台计算机间要传送的数据分组。每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。发送端待发数据分组在缓冲区排队等待送出。被滑动窗口框入的分组,是可以在未收到接收确认的情况下多送出的部分。滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。随着新的确认到来,窗口不断向右滑动。
TCP协议软件依靠滑动窗口机制解决传输效率和流量控制问题。它可以在收到确认信息之前发送多个数据分组。这种机制使得网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。在实际运行中,TCP滑动窗口的大小是可以随时调整的。收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高数据传输效率的同时,防止拥塞的发生。称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。
当窗口右边沿向右移动时将允许发送更多的数据,称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。
当右边沿向左移动时,称为窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但TCP必须能够在某一端产生这种情况时进行处理。
如果左边沿到达右边沿,则称其为一个零窗口。 (1)发送方不必发送一个全窗口大小的数据。
(2)来自接收方的一个报文段确认数据并把窗口向右边滑动,这是因为窗口的大小是相对于确认序号的。
(3)窗口的大小可以减小,但是窗口的右边沿却不能够向左移动。
(4)接收方在发送一个ACK前不必等待窗口被填满。
B. 瀵筎CP 锛孏BN锛孲R镄勪竴镣圭悊瑙f荤粨
娣卞叆鎺㈣═CP銆丢BN涓岙R锛氶珮鏁堟暟鎹浼犺緭镄勪笁澶фā鍨
鍦ㄦ繁鍏ョ爷绌躲婅$畻链虹绣缁滆嚜椤跺悜涓嬫柟娉曘嬫椂锛屾垜浠涓嶉毦鍙戠幇TCP銆丢BN鍜孲R杩欎笁涓鍗忚鍦ㄥ彲闱犳暟鎹浼犺緭涓镓婕旂潃閲嶈佽掕壊銆傚畠浠钖勮嚜镄勭壒镣瑰拰绛栫暐锛屽侴BN镄勬祦閲忔带鍒跺拰SR镄勯珮鏁堥吨浼狅纴涓烘垜浠鐞呜В缃戠粶阃氢俊镄勬牳蹇冩満鍒舵彁渚涗简鍏抽敭瑙呜掋备笅闱锛岃╂垜浠阃愪竴鍓栨瀽杩欎笁涓妯″瀷锛岄嗙暐瀹冧滑镄勫阀濡欎箣澶勚
GBN锛氭祦閲忔带鍒朵笌锲为N姝ユ満鍒
GBN鍗忚镄勬牳蹇冨湪浜庨檺鍒舵湭纭璁ゅ垎缁勭殑鏁伴噺锛岄氲繃婊戝姩绐楀彛锛堢獥鍙i暱搴N锛夊疄鐜版祦閲忔带鍒躲傚彂阃佹柟鍦ㄥ彂阃佹暟鎹镞朵细妫镆ョ獥鍙g姸镐侊纴绐楀彛婊″垯𨱌傚仠鍙戦侊纴钖﹀垯鎸夊簭鍙戦佸苟镟存柊銆傛敹鍒痨CK钖庯纴鍙戦佹柟绱璁$‘璁ゅ苟鍙鑳介吨浼犺秴镞剁殑鍒嗙粍銆傛帴鏀舵柟鍒欎弗镙兼寜搴忓勭悊锛屼涪寮冨け搴忓垎缁勶纴鍙璁板綍链夊簭鎺ユ敹镄勫簭鍒楀彿銆
SR锛氶夋嫨镐ч吨浼犱笌鎺ユ敹绐楀彛绠$悊
SR鍗忚鏄瀵笹BN镄勪紭鍖栵纴瀹冨皢鎺ユ敹绐楀彛涓庡彂阃佺獥鍙e悓姝ワ纴浠呴吨浼犵枒浼间涪澶辩殑鍒嗙粍锛屼粠钥岄伩鍏崭笉蹇呰佺殑閲崭紶銆係R阃氲繃涓烘疮涓鍒嗙粍璁剧疆镫绔嬭℃椂鍣锛屽綋鏀跺埌ACK镞讹纴浠呯‘璁ゅ凡鎺ユ敹镄勫崟涓鍒嗙粍锛岃岄潪绱绉纭璁ゃ傝繖浣垮缑鎺ユ敹鏂瑰彲浠ョ紦瀛桦け搴忓垎缁勶纴鍙鍦ㄩ渶瑕佹椂杩涜岄吨浼犮
鍙戦佷笌鎺ユ敹鏂规搷浣灭殑绮惧欎簰锷
鍙戦佹柟鍦ㄦ帴鏀跺埌涓婂眰鏁版嵁钖庯纴浼氶夋嫨涓涓搴忓彿骞跺彂阃侊纴ACK镄勫搷搴斾细镟存柊绐楀彛骞跺彲鑳借Е鍙戦吨浼犮傛帴鏀舵柟鍒欑‘淇濇帴鏀剁殑鍒嗙粍搴忓彿鍦ㄩ勮捐寖锲村唴锛岄氲繃ACK锻婄煡鍙戦佹柟鍝浜涘垎缁勫凡鎴愬姛鎺ユ敹銆傚煎缑娉ㄦ剰镄勬槸锛屽彂阃佸拰鎺ユ敹绐楀彛鍙鑳戒笉涓镊达纴杩椤氨瑕佹眰鍗忚璁捐¤呯簿蹇冨勭悊銆
绐楀彛闀垮害涓庡簭鍙风┖闂寸殑璋ㄦ厧璁捐
涓轰简阆垮厤鏁版嵁娣蜂贡锛岀獥鍙i暱搴﹂渶灏忎簬鎴栫瓑浜庡簭鍙风┖闂寸殑涓鍗娿傚悓镞讹纴鍒嗙粍閲嶆柊鎺掑簭鏄蹇呰佺殑锛岀‘淇濈洿鍒扮‘璁ゆ墍链夋棫鍒嗙粍涓嶅湪缃戠粶涓锛屽簭鍙峰簭鍒楃殑姝g‘镐с
GBN涓嶵CP/SR镄勬瘆杈
GBN镄勭壒镣规槸鎶ユ枃娈甸敊璇镞朵细閲崭紶鏁翠釜搴忓垪锛屽苟阃氲繃绱璁ACK纭璁ゆ帴鏀惰寖锲淬傜浉姣斾箣涓嬶纴TCP閲囩敤绱璁″簲绛旀満鍒讹纴鎺ユ敹绔缂揿瓨澶卞簭鍒嗙粍骞朵娇鐢ㄥ揩阃熼吨浼犮係R鍒椤湪鎺ユ敹鏂圭紦瀛桦け搴忕殑钖屾椂锛屽瑰崟涓鍒嗙粍杩涜岃℃椂閲嶅彂锛屽噺灏戜笉蹇呰佺殑閲崭紶銆
瀛︿範璧勬簮涓庢墿灞曢槄璇
娣卞叆鐞呜В杩欎簺鍗忚镄勬渶浣抽斿缎鏄瑙傜湅璇︾粏镄勫姩鐢绘紨绀猴纴濡GBN/SR锷ㄧ敾鏁欑▼銆傛ゅ栵纴鎴戠殑鍗氩kai123wen.github.io涔熸彁渚涗简镟村氱浉鍏宠祫婧愬拰瑙i喷锛屽府锷╀綘杩涗竴姝ユ帉鎻¤繖浜涘嶆潅镄勭绣缁滈氢俊妯″瀷銆
阃氲繃杩欐垫敼鍐欙纴鎴戜滑镟寸洿瑙傚湴灞旷ず浜员CP銆丢BN鍜孲R鍦ㄦ暟鎹浼犺緭涓镄勫叧阌鐗规т笌镎崭綔锛屽府锷╄昏呮洿濂藉湴鐞呜В杩欎簺鍗忚鍦ㄥ疄闄呯绣缁滈氢俊涓镄勫簲鐢ㄣ
C. 滚动预测和滑动窗口有区别吗
有区别
在计算机网络中,滑动窗口协议是一种在网络上传输数据的方法。滑动窗口协议应用于OSI模型的数据链路层。在数据链路层,数据采用帧的形式。在联网中,窗口仅表示具有需要传输的数据帧的缓冲区。
滚动预测不同于传统预测,因为滚动预测是连续的,不考虑每年的财政年度结束期间。滚动预测包含的期间基于为滚动预测预定义的窗口滚动。这些期间通常是按月或季度定义的。