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

From Wikipedia, the free encyclopedia

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

この用語がTCPにおけるフロー制御のみを指すかのような説明が行われることがあるが[1]、以下に示すように、この用語の適用範囲は必ずしも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の肯定応答 ←
ABAの肯定応答が確認できればウィンドウに余裕ができるので、Dを送信開始
Bを受信したので、受信側はBの肯定応答を返す
6  → DE →
← Cの肯定応答 ←
ABCBの肯定応答が確認できればウィンドウに余裕ができるので、Eを送信開始
Cを受信したので、受信側はCの肯定応答を返す
7  → E →
← Dの肯定応答 ←
ABCDDを受信したので、受信側はDの肯定応答を返す
8  ← Eの肯定応答 ←ABCDEEを受信したので、受信側はEの肯定応答を返す

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

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

採用プロトコル

脚注

参考文献

関連項目

Related Articles

Wikiwand AI