TL;DR
信頼性の高い通信ができるプロトコルである。Transmission Control Protocol の略。
仕組み
ここでいう信頼性の高い通信とはパケットの順序を保証し、パケットが正しく送受信されたことを確かめる通信である。パケットの再送やフロー制御などの機能によって、ネットワークの状況によらず一貫したデータの送受信ができる。
RFC 9293 によると、TCP はアプリケーションに、信頼性があり順序の保たれたバイトストリームを提供する。データを送る前に接続を確立するコネクション型のプロトコルで、接続は SYN と ACK をやりとりするスリーウェイハンドシェイクで確立する。
送るデータの各バイトにはシーケンス番号が付き、受信側はこれで重複を見つけ、順序を並べ直す。受け取ったことは累積的な確認応答で知らせ、確認応答のないセグメントは再送する。壊れたセグメントはチェックサムで見つける。フロー制御では、受信側が受け取れるデータ量をウィンドウで伝え、送信側はそれを超えて送らない。データは双方向に流せる。ポート番号で、ホスト間の通信を複数のアプリケーションの流れに多重化する。