TCP てぃーしーぴー
TCPTransmission Control Protocolコネクション型信頼性3ウェイハンドシェイクフロー制御
TCPについて教えて
簡単に言うとこんな感じ!
インターネットで「必ず届ける」を約束する配達員みたいなプロトコルだよ。荷物(データ)が届いたか確認して、届いてなければ再送してくれるんだ。Webブラウジングやファイル転送に使われてるんだよ!
TCPとは
TCP(Transmission Control Protocol)は、インターネットのトランスポート層で動作する、信頼性のある通信を保証するプロトコルです。1981年にRFC 793として標準化され、現在もWebブラウジング・電子メール・ファイル転送など、データが確実に届くことが重要なほぼすべての通信に使われています。
TCPの最大の特徴はコネクション型であることです。通信を始める前に送信側と受信側が「3ウェイハンドシェイク」と呼ばれる手順で接続を確立し、データが正しく届いたことを確認しながら通信を進めます。届かなかったデータは自動的に再送されるため、アプリケーション側は「データが届く」ことを前提に実装できます。
一方でこの信頼性保証の仕組みにはオーバーヘッド(余分な処理や通信)が伴います。確認応答や再送の待機時間が発生するため、リアルタイム性が求められる映像配信やゲームでは、より軽量なUDPが選ばれることもあります。
TCPの主な機能
| 機能 | 説明 |
|---|---|
| コネクション管理 | 3ウェイハンドシェイクで接続確立、4ウェイハンドシェイクで切断 |
| シーケンス番号 | データに番号を付けて順序を保証する |
| 確認応答(ACK) | 受信側が「届いた」をACKで通知する |
| 再送制御 | 一定時間ACKが来なければ自動再送する |
| フロー制御 | 受信側のバッファあふれを防ぐウィンドウ制御 |
| 輻輳制御 | ネットワーク混雑を検知してペースを下げる |
| チェックサム | データ破損を検出する誤り検出機能 |
歴史と背景
- 1974年:Vint CerfとBob KahnがTCP/IPの概念を論文で発表
- 1981年:RFC 793でTCPが正式標準化。現在も基本仕様は変わっていない
- 1988年:Van Jacobsonが輻輳制御アルゴリズムを追加(RFC 1122)
- 2001年:SACK(選択的確認応答)が広く実装される(RFC 2018)
- 2016年:GoogleがBBRアルゴリズムを発表し輻輳制御が進化
- 2020年代:QUIC(HTTP/3の基盤)がTCPの後継として普及が進む
TCPのセグメント構造
TCPヘッダは最小20バイト(オプションなし)。SYN・ACK・FIN・RSTなどのフラグビットが通信の状態を制御します。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 793 | TCP の基本仕様 |
| RFC 1122 | インターネットホスト通信層要件(輻輳制御含む) |
| RFC 2018 | TCP選択的確認応答(SACK) |
| RFC 7323 | TCP拡張オプション(タイムスタンプ・ウィンドウスケール) |
| RFC 9293 | TCPの最新統合仕様(2022年) |
関連用語
- UDP — 軽量・高速な非コネクション型プロトコル
- 3ウェイハンドシェイク — TCPの接続確立手順
- TCPウィンドウ制御 — フロー制御の仕組み
- 輻輳制御 — ネットワーク混雑を防ぐ仕組み
- 再送制御 — パケットロス時の自動再送
- ポート番号 — TCPが使うアドレスの一部