[[ネットワーク用語]] > ウィンドウサイズ

* ウィンドウサイズ [#ea1ebfe9]

ウィンドウサイズ = window size

[[「ウインドウ・サイズ」とは:ITpro>http://itpro.nikkeibp.co.jp/word/page/10007860/]]
>window size
[[送達確認>ACK]]なしに連続して送受信できるデータ量。
プロトコルのフロー制御で用いられる用語。
[[HDLC]]やLAP-D,[[TCP]]などの[[コネクション型プロトコル]]では,通信時に送信側が受信側の受信バッファの大きさに合わせてデータ送信の流量を制御([[フロー制御]])するように設計されているケースが多い。
 
受信側は連続して受信可能なデータ量を送信側に知らせ,送信側は連続して送信するデータ量を制御する。これをウインドウ制御という。
 
[[LAN]]間接続で不十分な容量の[[WAN]]回線を用いる場合や,帯域が保証されない[[インターネット]],伝送遅延時間が大きい衛星通信回線などでは,ウインドウ・サイズを大きくするとスループットが向上する。 

[[ウィンドウとは -- Key:雑学事典>http://www.7key.jp/nw/tcpip/tcp/window.html]]
>''バッファとは''
受信側にて&color(red){一時的にデータを蓄えておく場所};が必要となってきます。
その場所のことをバッファと呼びます。
バッファは処理する速さの異なる相手とデータをやり取りする場合に、一時的にデータを溜める貯水槽の役割を果たします。

>''ウィンドウとは''
ウィンドウとは、&color(red){バッファ内でデータの読み書きを行ったり、格納してあるデータの管理を行ったりする領域};のことです。
「バッファに開けられた作業用の窓」と言った感覚でしょうか。
ウィンドウの大きさのことを&color(red){ウィンドウサイズ};と呼びます。
受信側ホストは送信側ホストに、ウィンドウサイズを前もって教えておきます(ここで言うウィンドウサイズはあくまで初期値であり、通信の最中にこのサイズは変化します)。

CENTER:&ref(win3.gif);

>送信側ホストは最初の「[[SYN]]パケット」の際に、[[シーケンス番号]]や [[MSS]] と一緒に自分のウィンドウサイズを受信側ホストに通知します。
それを受け取った受信側ホストは、「[[SYN]]+[[ACK]]」パケットで返事をするのですが、その際に自分のウィンドウサイズも併せて送信側ホストに通知します。
このような手順でお互いのウィンドウサイズが分かるのです。
送信側ホストは受信側ホストのウィンドウサイズが分かれば、そのサイズまでのデータであれば確認応答(ACKパケット)を待つ必要がありません。
次から次へとセグメントを送信することができます。

CENTER:http://program.sagasite.info/wiki/index.php?plugin=attach&refer=TCP%E3%83%98%E3%83%83%E3%83%80&openfile=fig01.gif

[[TCP/UDP - TCPウインドウ制御 - ネットワークエンジニアを目指して>http://www.itbook.info/study/tcp9.html]]
** ウインドウ制御 [#pcc32fb9]
[[TCP]] ではデータを送信するたびに、[[ACK]] による確認応答が必要になるため、送信する[[パケット]]が多ければ通信性能が悪くなってしまいます。

これを解決するための機能がウインドウ制御という機能です。

ウインドウ制御とは「ウインドウ」といわれるバッファを用意して、大きな単位でデータを転送することで、効率化を実施します。

この「ウインドウ」の大きさを「ウインドウサイズ」といいます。
受信側ノードは送信側ノードに[[スリーウェイハンドシェイク>3ウェイハンドシェイク]]を実施した時にウインドウサイズを伝えます。

通信の最中にこのサイズは変化します。

CENTER:&ref(tcp8.jpg);

ウインドウ制御は送信側ノード、受信側ノードがそれぞれ用意した容量に納められるだけのデータをまとめて転送します。

受信側ノードでは、受信したデータを順次処理していき、受信できたセグメントの情報をまとめて ACK による確認応答を送信側ノードへ送信します。

送信側ノードでは、ACK を確認しながら、欠落したデータの再送を行います。

** スライディング・ウインドウ [#nd3cc51c]
ウインドウ制御でデータをまとめて転送し、[[ACK]] の返答があったら転送したセグメントをウインドウの外に出し、次に転送するセグメントをウインドウに入れていきます。 

CENTER:&ref(tcp9m.jpg);

このような動作を、ウインドウがスライドしていくように動作することから、「スライディング・ウインドウ」と呼びます。

[[スライディング・ウィンドウ(Sliding Window):RBB TODAY (ブロードバンド辞典)>http://dictionary.rbbtoday.com/Details/term357.html]]
>スライディング・ウィンドウ(Sliding Window)
 
[[TCP]]では、「確認応答([[ACK]])を受け取るまでに送出できるデータの範囲」を「ウィンドウ」と呼び、このウィンドウを次々にスライドさせながら通信を行います。
この方式を「スラインディング・ウィンドウ」と呼びます。
 
データを送信するTCPは、[[パケット]]を転送した後に、受信側から送られてくる確認応答を待ちます。
そして、確認応答がこない場合はパケットを再送し、確認応答が送られてきた場合は、次のパケットを転送します。
 
しかし、1つのパケットを転送し、確認応答がくるまで次のパケットの転送を待つのは、通信の効率があまり良くありません。
これに対して、確認応答を受け取るまでに例えば3つのパケットを転送し、3つのパケットの確認応答を待つ場合は、通信の効率が向上します。
TCPの通信は、この方式を取り入れて効率的に通信を行います。
ウィンドウ・サイズが大きければ大きいほど、確認応答が返ってくるまでに多くのデータを送出できるので、高速にデータ転送を行うことができます。

~
CENTER:&ref(tcpip10401.jpg);
>http://atnetwork.info/tcpip/tcpip104.html
''◆TCPの制御(スライディングウィンドウ)''
TCPにおける通信では、&color(red){ACK(確認応答)を受け取るまでに送出できるデータの範囲};であるウィンドウを徐々にスライドさせながら通信を行います。この方式ことを「スラインディングウィンドウ」と呼びます。

** リンク [#z9b14844]
[[フロー制御]]
[[シーケンス番号]]
[[MSS]]
[[MTU]]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS