Transmission Control Protocol
Transmission Control Protocol(TCP)は、インターネットのコネクション指向型トランスポートプロトコルであり、2つのプロセス間で信頼性の高い、順序付けられた全二重バイトストリームを提供し、フロー制御と輻輳制御が組み込まれています。
Definition
Transmission Control Protocol(TCP)は、コネクション指向型トランスポート層プロトコルであり、接続の確立と切断、フロー制御、輻輳制御を備え、アプリケーションプロセス間で信頼性が高く、順序付けられ、エラーチェックされたバイトストリームの配信を提供します。
Scope
このトピックでは、TCPに特化して、そのセグメント構造、接続を確立するスリーウェイハンドシェイクとそれを終了する手順、シーケンス番号と確認応答番号、累積確認応答、適応型タイムアウト推定と高速再送による再送、および受信ウィンドウを介したフロー制御について説明します。TCPを信頼性の高いデータ転送の原則と接続管理の具体的な実現として位置づけています。その輻輳制御の動作はここで要約されていますが、輻輳制御のトピックで詳しく扱われています。
Core questions
- スリーウェイハンドシェイクは何を達成し、接続はどのように閉じられますか?
- TCPのシーケンス番号と確認応答番号は、バイトストリームをどのように追跡しますか?
- TCPはタイムアウトをどのように推定し、損失から回復するために高速再送をどのように使用しますか?
- 受信ウィンドウはフロー制御をどのように実装しますか?
- TCPは信頼性、フロー制御、輻輳制御を1つのプロトコルでどのように組み合わせていますか?
Key concepts
- コネクション指向サービス
- スリーウェイハンドシェイク
- TCPセグメント構造
- シーケンス番号と確認応答番号
- 累積確認応答
- 再送タイムアウト推定
- 高速再送
- フロー制御と受信ウィンドウ
- バイトストリーム抽象化
Key theories
- 接続管理
- TCPは、初期シーケンス番号を同期するスリーウェイハンドシェイクで接続を確立し、優雅な交換でそれを切断し、信頼性の高い全二重バイトストリームのための整合性のある状態を各エンドに提供します。
- 信頼性の高いバイトストリーム配信
- TCPはすべてのバイトに番号を付け、累積確認応答と適応型再送タイマーを使用し、重複ACKに対して高速再送を適用することで、個別のメッセージではなく、信頼性の高い順序付けられたストリームを配信します。
- 受信ウィンドウを介したフロー制御
- 受信側は、利用可能なバッファスペースの量を通知し、送信側はそのウィンドウに送信中のデータを制限することで、ネットワークの輻輳とは無関係に、高速な送信側が低速な受信側をオーバーランするのを防ぎます。
Clinical relevance
TCPは、ウェブ、電子メール、ファイル転送を含む、信頼性の高いインターネットトラフィックの大部分を伝送するため、その動作はこれらのアプリケーションのパフォーマンスに直接影響します。その接続設定は、新しいプロトコルが削減しようとしている遅延を追加し、そのフロー制御と輻輳制御はスループットを形成します。TCPを理解することは、パフォーマンスチューニング、ファイアウォールとNATの動作、および接続の停止または遅延の診断に不可欠です。
History
TCPは、1974年のCerf-Kahnによるインターネットワーキングプロトコルに由来し、当初は単一のプロトコルとして、後にTCPとIPに分割されました。RFC 793(1981年)で標準化され、適応型タイムアウト、高速再送と回復、ウィンドウのスケーリング、選択的確認応答など、数十年にわたって改良が加えられ、RFC 9293(2022年)で仕様が統合および更新されました。
Key figures
- Vinton Cerf
- Robert Kahn
- Van Jacobson
Related topics
Seminal works
- cerf1974
- rfc9293
- kurose2021
Frequently asked questions
- TCPスリーウェイハンドシェイクとは何ですか?
- これはTCP接続を開くための交換です。クライアントは初期シーケンス番号を含むSYNを送信し、サーバーはそれを確認応答し、自身のシーケンス番号を提供するSYN-ACKで応答し、クライアントは最終的なACKを送信します。これにより、両端は開始シーケンス番号に合意し、信頼性の高いデータ交換が可能になります。
- TCPはUDPとどう異なりますか?
- TCPはコネクション指向であり、セットアップの遅延とオーバーヘッドを犠牲にして、フロー制御と輻輳制御を備えた信頼性の高い順序付けられたバイトストリームを提供します。UDPはコネクションレスであり、これらの保証のいずれも持たない最小限のベストエフォート型データグラムサービスを提供するため、より軽量で低遅延ですが、信頼性はアプリケーションに委ねられます。