スライディングウィンドウ
スライディングウィンドウは、通信の高速化を図ったフロー制御の一つである。ウィンドウと呼ばれる概念を設け、そのウィンドウに空きがある限り、受信側からの応答を待たずに送信側が送信を行うというものである。
この用語が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 |
スライディングウィンドウを採用する場合、ウィンドウに余裕がある限り、受信側からの肯定応答を待たずに送信を行うという通信内容となる。これにより、送信と受信を並列的に行うことができるため、パケット配送効率が向上する。図で表すと、以下のようになる。
時間経過 | 送信側 | 通信内容 | 受信側 | 備考 |
---|---|---|---|---|
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
脚注
編集参考文献
編集- 竹下隆史、村山公保、荒井透、苅田幸雄『マスタリングTCP/IP 入門編 第4版』オーム社、2007年2月24日。ISBN 978-4274066771。 - 6.4.6 ウィンドウ制御で速度向上
関連項目
編集- 自動再送要求 - 「Go-Back-N ARQ」および「Selective Repeat ARQ」を参照。