スライディングウィンドウ

スライディングウィンドウは、通信の高速化を図ったフロー制御の一つである。ウィンドウと呼ばれる概念を設け、そのウィンドウに空きがある限り、受信側からの応答を待たずに送信側が送信を行うというものである。

この用語がTCPにおけるフロー制御のみを指すかのような説明が行われることがあるが本項作成の2009年2月11日時点で、デジタル用語辞典ではTCPにおけるもののみを説明している。、以下に示すように、この用語の適用範囲は必ずしもTCPにおけるフロー制御のみに限定されるものではない。

 原理 
到達性を保証する通信においては、受信側は正常に通信内容を受信したことを示す応答（以下、肯定応答）を送信側に通知することにより、正しく通信が受信側に到達したことを送信側が知るという手法を取ることが多い（なお、肯定応答自体の正当性には、チェックサムを用いる）。

スライディングウィンドウを採用しない場合、通信の最小単位となる1つのパケットを送信した後、送信側は受信側からの肯定応答を待ち、その後に次のパケットを送るという通信内容となる。図で表すと、以下のようになる。
+ スライディングウィンドウを採用しない場合 時間経過  送信側  通信内容  受信側  備考 1 ABCDE           2 BCDE   → A →       3 BCDE   ← Aの肯定応答 ←  A  受信側はAを受信しつつ肯定応答を返す 4 CDE   → B →  A  送信側がAの肯定応答を確認した後にBを送信開始 5 CDE   ← Bの肯定応答 ←  AB    6 DE   → C →  AB    7 DE   ← Cの肯定応答 ←  ABC    8 DE   → D →  ABC   

スライディングウィンドウを採用する場合、ウィンドウに余裕がある限り、受信側からの肯定応答を待たずに送信を行うという通信内容となる。これにより、送信と受信を並列的に行うことができるため、パケット配送効率が向上する。図で表すと、以下のようになる。
+ スライディングウィンドウを採用する場合（ウィンドウサイズを3パケットとした場合） 時間経過  送信側  通信内容  受信側  備考 1 ABCDE          2 BCDE   → A →       3 CDE   → AB →     ウィンドウに余裕があるのでBも送信開始 4 DE   → BC →  ← Aの肯定応答 ←  A  ウィンドウに余裕があるのでCも送信開始その間にAが到着し、受信側はAの肯定応答を返す 5 E   → CD →  ← Bの肯定応答 ←   AB  Aの肯定応答が確認できればウィンドウに余裕ができるので、Dを送信開始Bを受信したので、受信側はBの肯定応答を返す 6     → DE →  ← Cの肯定応答 ←  ABC  Bの肯定応答が確認できればウィンドウに余裕ができるので、Eを送信開始Cを受信したので、受信側はCの肯定応答を返す 7     → E →  ← Dの肯定応答 ←  ABCD  Dを受信したので、受信側はDの肯定応答を返す 8    ← Eの肯定応答 ←  ABCDE  Eを受信したので、受信側はEの肯定応答を返す

この例において、送信者は「ABCDE」という送信内容のうち、送信開始時点では「ABC」を送信バッファに収まる範囲であるウィンドウと考え、「A」の肯定応答を受信するとウィンドウを「BCD」とスライドさせる。これがスライディングウィンドウと呼ばれるゆえんである。

実際の通信においては、パケットの不到達に伴う再送、再送パケットに伴う二重到達、パケット到達順序の入れ違いなどもあり得るため、必ずしも上記のようなきれいな形になるとは限らない。しかし、正常に通信が行われている限りでは、上記のように「Aの肯定応答を待たずにBを送信可能」であり、配送効率の向上が見込まれる。

 採用プロトコル 
 Transmission Control Protocol - ウィンドウのスライディング管理には「シーケンス番号」と「確認応答番号（ACK番号）」を用いる。
 ZMODEM - XMODEMのパフォーマンス改善として作成したYMODEMのさらなる改善のため、スライディングウィンドウが採用されている。
 カーミットプロトコル
 X.25

 脚注 

 参考文献 
  - 6.4.6 ウィンドウ制御で速度向上

 関連項目 
 自動再送要求 - 「Go-Back-N ARQ」および「Selective Repeat ARQ」を参照。

Category:通信プロトコル