8月18日(水)1コマ目
今日、やったこと
TCPのスライディングウィンドウ
今日のホワイトボード
受信応答なしでデータを送信する
TCPは基本的に、
- データ送信
- 受信応答を受け取る
- データ送信
と、受信応答を受け取って次のデータを送信します。
が、これでは効率が悪い。そのため、受信応答を受け取らずに連続してデータを送信することができるようになっています。
![]() |
| 図 受信応答なしで連続データ送信可能 |
受信データを一時保存するバッファ
受信データはバッファに一時保存され、処理されるまで待ちます。
TCPはこのバッファがいっぱいになるまで連続してデータを送信します。
受信側は自分の空きバッファサイズを送信側に伝えるために、TCPヘッダのウィンドウサイズで空きバッファサイズを通知しています。
![]() |
| 図 TCPヘッダのウィンドウサイズで自分の空きバッファサイズを通知する |
バッファサイズは変わる
いきなり大量のデータを送信されても、処理できない可能性があるので、初めはバッファサイズを少なめに通知します。
![]() |
| 図 ウィンドウサイズははじめ少な目、徐々に増やす |
送信側の問題
相手の空きバッファサイズまでは連続してデータを送信できますが、これを簡単に実現する仕組みが用意されています。それがスライディングウィンドウです。
ウィンドウは窓です。送信データの上に窓があり、窓がある部分のデータを送信します。
ウィンドウは受信側から通知される確認応答番号、ウィンドウサイズで変化します。
ウィンドウは確認応答番号からウィンドウサイズ分になります。
受信応答を受け取ると、確認応答番号も変わるため、窓も移動していきます。データの上の窓が移動(スライディング)しながら、窓の部分のデータが送信されるイメージです。
このイメージからスライディングウィンドウと呼ばれています。
![]() |
| 図 TCPヘッダのウィンドウサイズ=空きバッファサイズ=相手のウィンドウの大きさ |




コメント