8月18日(水)1コマ目

今日、やったこと

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

今日のホワイトボード

受信応答なしでデータを送信する

TCPは基本的に、

  • データ送信
  • 受信応答を受け取る
  • データ送信

と、受信応答を受け取って次のデータを送信します。

が、これでは効率が悪い。そのため、受信応答を受け取らずに連続してデータを送信することができるようになっています。

図 受信応答なしで連続データ送信可能

受信データを一時保存するバッファ

受信データはバッファに一時保存され、処理されるまで待ちます。

TCPはこのバッファがいっぱいになるまで連続してデータを送信します

受信側は自分の空きバッファサイズを送信側に伝えるために、TCPヘッダのウィンドウサイズで空きバッファサイズを通知しています。

 

図 TCPヘッダのウィンドウサイズで自分の空きバッファサイズを通知する

バッファサイズは変わる

いきなり大量のデータを送信されても、処理できない可能性があるので、初めはバッファサイズを少なめに通知します。

図 ウィンドウサイズははじめ少な目、徐々に増やす

送信側の問題

相手の空きバッファサイズまでは連続してデータを送信できますが、これを簡単に実現する仕組みが用意されています。それがスライディングウィンドウです。

ウィンドウは窓です。送信データの上に窓があり、窓がある部分のデータを送信します。

ウィンドウは受信側から通知される確認応答番号、ウィンドウサイズで変化します。

ウィンドウは確認応答番号からウィンドウサイズ分になります。

受信応答を受け取ると、確認応答番号も変わるため、窓も移動していきます。データの上の窓が移動(スライディング)しながら、窓の部分のデータが送信されるイメージです。

このイメージからスライディングウィンドウと呼ばれています。

図 TCPヘッダのウィンドウサイズ=空きバッファサイズ=相手のウィンドウの大きさ


コメント

このブログの人気の投稿

6月7日(月)2コマ目

5月31日(月)2コマ目