7月21日(木)1コマ目
今日、やったこと
- [確認テスト]シーケンス番号、確認応答番号
- スライディングウィンドウ
今日のホワイトボード
TCPでの基本送受信パターン
データを送る=>受信応答を受け取る=>次のデータを送信する のように、受信応答をもらって、データを送るが基本パターンです。
![]() |
| 図 TCPの基本送受信パターン |
この方法は確実ですが、効率は悪いです。
まとめて送信する
そこでTCPは受信応答を待たずに、連続して送信する仕組みも用意しています。
受信パケットは一旦バッファに保存され、順に処理されていきます。よって、このバッファサイズまでなら受信できるはずです。
そこで、バッファサイズをTCPヘッダの”ウィンドウサイズ”で、「このサイズまでなら連続送信可能です」と伝えます。
送信側は相手のウィンドウサイズまでは受信応答を待たずに連続して送信します。
![]() |
| 図 バッファサイズまで連続送信可能 |
どこからどこまで送信可能?
連続して送信には、どこからどこまで送信できるかを簡単に管理できると便利です。
そこで、TCPではスライディングウィンドウと呼ばれる仕組みを用意しています。
- 送信したいデータには送信可能な部分に窓(ウィンドウ)が開いてある。
- 受信応答をもらうと窓は移動(スライド)する。
- 窓は受信応答の確認応答番号からウィンドウサイズ分の位置に移動する。
- 窓のなかのデータのうち、未送信のデータが送信される。
![]() |
| 図 スライディングウィンドウ |
結局、TCPは
- コネクション確立で相手が受信可能か確認
- シーケンス番号で分割送信可能
- 確認応答番号で受信データの確認可能
- スライディングウィンドウで連続送信可能
と、大きなサイズのデータを確実かつ効率よく送信する仕組みを提供しています。
TCPは人間が直接扱うデータ(ホームページやメールなど)の送受信を支えるプロトコルです。


