Transmission Control Protocol

TCP は、インターネット・ホスト相互間においてデータの高信頼性ストリーム伝送の送達を提供します。

UDP と同様に、TCP は、基礎となるプロトコルのインターネット・プロトコルを使用してデータグラムを転送し、プロセス・ポート相互間における連続したデータグラム・ストリームのブロック送信をサポートします。 UDP とは異なって、TCP のメッセージ送達には信頼性があります。 TCP はデータの損傷、損失、重複、および受信側プロセスへの無秩序な送達が起こらないことを保証します。 このように転送の信頼性が保証されているので、アプリケーション・プログラマーはソフトウェアの中に通信保護機能を組み込む必要がありません。

TCP の動作特性を次に示します。

項目 説明
基本データ転送 TCP は、8 ビットからなるオクテットの連続ストリームをユーザー間の各方向へ転送できます。その際、いくつかのバイトがセグメントにパックされ、インターネット・システムを通じて送信されます。 TCP をインプリメントすると、1024 バイト以上のセグメント・サイズを使用できます。 一般に、TCP は自己の都合に合わせて、パケットをブロック化する時期とパケットを転送する時期を決定します。
信頼性 TCP は、インターネットによって損傷したり、失われたり、重複したり、無秩序に送達されたデータを回復したりしなければなりません。 TCP は、この信頼性を達成するために、送信する各オクテットにシーケンス番号を割り当て、受信側 TCP に対して肯定応答 (ACK) を要求します。 タイムアウト・インターバル内に ACK が受信されなかった場合、データは再送されます。 TCP の再送タイムアウト値は、往復時間を基礎に個々の接続について動的に決定されます。 受信側では、無秩序に受信した可能性があるセグメントを、シーケンス番号を使用して正しく順序付け、重複がないようにします。 データの損傷に対処するため、送信される個々のセグメントにチェックサムが付加され、受信側はそのチェックサムを検査し、損傷があるセグメントを破棄します。
フロー制御 TCP は、送信されるデータの量を制御するために、1 回の ACK ごとにウィンドウを戻し、正常に受信された最後のセグメント以後の受け入れ可能なシーケンス番号の範囲を示します。 このウィンドウは、送信側が次の許可を受信する前に送信できるオクテットの数を示します。
多重化 TCP では、1 つのホスト内の多数のプロセスが同時に TCP 通信機能を使用できます。 TCP は、各ホスト内のポートのアドレス・セットを受信します。 TCP はこのポート番号をネットワーク・アドレスおよびホスト・アドレスと組み合わせて、各ソケットを固有に識別します。 1 対のソケットは、1 つの接続を固有に識別します。
接続 TCP は個々のデータ・ストリームについて、ある特定の状況情報を初期化し、保守しなければなりません。 この情報の組み合わせを、ソケット、シーケンス番号、ウィンドウ・サイズも含めて、接続と呼びます。 個々の接続は、2 つの側を識別する 1 対のソケットによって固有に指定されます。
優先順位とセキュリティー TCP のユーザーは、通信のセキュリティーと優先順位を指示できます。 これらの機能が必要ない場合は、デフォルト値が使用されます。

TCP パケット・ヘッダーの図は、上記の特性を表します。

図1: 伝送制御プロトコル (TCP) パケット・ヘッダー
伝送制御プロトコル (TCP) パケット・ヘッダー
この図は、TCP パケット・ヘッダーに含まれる情報を示します。 個々の説明については、以下を参照してください。