しかし、1つのデータを送る度に、3ウェイハンドシェイクによるコネクションの確立を行なっていては、大きなスループット(速い通信)は望めない。

そこで、TCPでは、スループットを向上させるために、一度に複数のデータセグメントを送信するようにしている。 確認応答を受信するまでに送信できるデータセグメントの量をウィンドウといい、これを大きくすれば、その分データ転送のスループットを向上させることができる。

しかし、いっぺんにたくさんのデータセグメントを送ってしまうと、受信側のコンピュータが受信しきれずに取りこぼしてしまう可能性がある。 この場合、データを受け取った通知である確認応答セグメントがいつまでも返ってこないため、送信元のコンピュータは何度も再送処理を行なってしまい、帯域の無駄遣いになってしまう。

能力の異なるコンピュータ同士の通信でも取りこぼしが起こらないようにするため、TCPでは、受信側のコンピュータは3ウェイハンドシェイクの段階で、データ受信用に準備しているバッファの大きさ(郵便ボックスの容量)をウィンドウサイズ(rcv.wnd)としてヘッダに記載し、宣言しておくようにしている。 このような制御をフロー制御or流量制御という。