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

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

この用語がTCPにおけるフロー制御のみを指すかのような説明が行われることがあるが、以下に示すように、この用語の適用範囲は必ずしもTCPにおけるフロー制御のみに限定されるものではない。

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

スライディングウィンドウを採用しない場合、通信の最小単位となる1つのパケットを送信した後、送信側は受信側からの肯定応答を待ち、その後に次のパケットを送るという通信内容となる。図で表すと、以下のようになる。

スライディングウィンドウを採用する場合、ウィンドウに余裕がある限り、受信側からの肯定応答を待たずに送信を行うという通信内容となる。これにより、送信と受信を並列的に行うことができるため、パケット配送効率が向上する。図で表すと、以下のようになる。

この例において、送信者は「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」を参照。

通信プロトコル