Transmission Control Protocol
TCPは高速さよりも正確さに最適化されている(高信頼ストリーム配送サービス)。ゆえにパケットの到達が保証され、データを正しく並べかえることができる。その反面、メッセージの順序がばらばらだったり、喪失したメッセージの再送を待ったりすることがあると、秒のオーダーの比較的長い遅延が生じることがある。これはリアルタイム性を求められるVoIPなどのアプリケーションには向いていない。そのような用途には一般に User Datagram Protocol (UDP) 上の Real-time Transport Protocol (RTP) などのプロトコルが推奨される。
be/publications/improving-datacenter-performance-and-robustness-multipath-tcp.
↑ MultiPath TCP - Linux Kernel implementation
↑ Barre; Paasch; Bonaventure (2011). “MultiPath TCP: From Theory to Practice”. IFIP Networking. http://inl.info.ucl.ac.be/publications/multipath-tcp-theory-practice.
1 2 “TCP performance over CDMA2000 RLP”. 2010年8月30日閲覧。
↑ Muhammad Adeel & Ahmad Ali Iqbal (2004). “TCP Congestion Window Optimization for CDMA2000 Packet Data Networks”. International Conference on Information Technology (ITNG'07): 31-35. doi:10.1109/ITNG.2007.190. ISBN 978-0-7695-2776-5. http://www.computer.org/portal/web/csdl/doi/10.1109/ITNG.2007.190.
TCPはエンドツーエンドのフロー制御プロトコルを使い、送信ペースが受信側にとって速すぎる状態になるのを防いでいる。様々な性能の機器が接続されたネットワークでは、フロー制御は欠かせない機構である。例えば、PCから性能の劣るPDAにデータを送る場合、PDAの性能に合わせて送信ペースを調整する必要がある。
TCPはスライディングウィンドウによるフロー制御を採用している。各TCPセグメントについて、受信側は「ウィンドウサイズ」フィールドで、そのコネクション用のバッファの空き容量に相当する今後受信可能なデータの量(バイト単位)を示す。送信側は確認応答を待ち合わせるまでに、そのフィールドで指定された量までのデータを送り、新たな確認応答でウィンドウサイズ・フィールドを確認してさらに送信できるデータ量を更新する。
受信側がウィンドウサイズを0としたとき、送信側は送信を停止してタイマ (persist timer) を起動する。