TCP(Transmission Control Protocol)とは?TCP/IPの役割・仕組みと特徴を解説

TCP(Transmission Control Protocol)の役割・仕組み・特徴を分かりやすく解説。データの信頼性・順序保証・混雑制御の仕組みと実践例を初心者向けに紹介。

著者: Leandro Alegsa

TCP(Transmission Control Protocol)は、インターネットプロトコルスイートの主要プロトコルの1つです。TCP は、インターネットで使用されている一般的な「TCP/IP」の組み合わせの一部であり、インターネットプロトコル(IP)と協調して動作します。IP がデータをネットワーク上の正しい場所へ運ぶ役割を担うのに対し、TCP はデータが欠損せず、正しい順序で届くことを保証し、さらにネットワークの混雑を抑える機能も持ちます。これらのプロトコルは、コンピュータ同士が共通の「言語」で通信するために設計されており、どんなプログラム(ウェブブラウザや電子メールクライアントなど)でも利用できます。

TCPの役割(何をするか)

TCPは主に次の機能を提供します。

  • 信頼性の確保:データが欠落したり重複したりしないように、送受信の確認(ACK)と再送を行います。
  • 順序制御:受信側でデータを元の送信順に並べ直します(シーケンス番号による管理)。
  • フロー制御:送信側が受信側の処理能力に合わせて送信速度を調整します(ウィンドウ制御)。
  • 輻輳制御(コングestion制御):ネットワーク全体の混雑状況に応じて送信速度を制御し、過負荷を防ぎます(スロースタート、輻輳回避など)。
  • コネクション管理:接続の開始と終了を行い、状態を保持することで状態的(ステートフル)な通信を実現します。

基本的な仕組み(3ウェイハンドシェイクと終了)

TCPは通信を始める際に「3ウェイハンドシェイク」と呼ばれる手順を使って接続を確立します。簡単に言うと次の3段階です:

  • SYN:クライアントがサーバへ接続要求(SYNパケット)を送る。
  • SYN-ACK:サーバが要求を受け取り了承(SYN+ACK)を返す。
  • ACK:クライアントが受信確認(ACK)を返し、接続が確立する。

通信終了時はFINやRSTフラグを使って接続を終了します(4ウェイでの正常終了など)。

TCPセグメント(ヘッダ)の主な項目

TCPは「セグメント」と呼ばれる単位でデータを送ります。代表的なヘッダフィールドは次の通りです:

  • 送信ポート・宛先ポート:どのアプリケーションに届けるかを示す。
  • シーケンス番号:データの位置(順序)を識別する。
  • 確認応答番号(ACK):次に期待するシーケンス番号を示す。
  • フラグ(SYN, ACK, FIN, RST, PSH, URGなど):制御情報を示す。
  • ウィンドウサイズ:フロー制御のための受信側が許容するバイト数。
  • チェックサム:データとヘッダの誤り検出。
  • オプション(MSS, ウィンドウスケーリング, タイムスタンプなど):性能向上や機能拡張に使用。

信頼性を支える仕組み

TCPの信頼性は以下のメカニズムによって支えられています。

  • シーケンスとACK:送信したデータに番号を付け、受信側が受け取った番号をACKで返すことで欠落を検出する。
  • 再送:ACKが一定時間内に返ってこないと送信データを再送する(RTO:再送タイマ)。
  • 重複ACKと高速再送:同じACKが複数回届くと、その区間での損失を推測して再送を速める。
  • チェックサム:セグメント単位で誤り検出を行い、破損したセグメントは破棄され再送される。

フロー制御と輻輳制御

フロー制御は受信側の処理能力に合わせて送信を抑える仕組み(ウィンドウ制御)で、受信ウィンドウ値によって送信可能な未確認データ量が決まります。一方、輻輳制御はネットワーク全体の混雑を避けるための仕組みで、代表的なアルゴリズムに次があります:

  • スロースタート:接続開始時に送信量を指数的に増やして帯域を探る。
  • 輻輳回避:輻輳の兆候が出たら増加速度を抑え線形に増やす。
  • 高速再送/高速回復:重複ACKなどで損失を検出した際に迅速に対応し、回復を図る。

TCPとUDPの違い(簡潔に)

  • TCP:コネクション型、信頼性あり、順序保証、フロー・輻輳制御。ウェブ(HTTP/HTTPS)、電子メール(SMTP/IMAP)、ファイル転送(FTP)などに適する。
  • UDP:コネクションレス、信頼性なし(アプリ側で処理する)、低レイテンシやマルチキャストに有利。音声・映像のストリーミング、DNS、ゲームなどで使われる。

利用例と用途

TCPは信頼性が求められる多くのアプリケーションで使われます。具体例:

  • ウェブページの表示(HTTP/HTTPS)
  • メール送受信(SMTP、POP3、IMAP)
  • ファイル転送(FTP、SFTP)
  • リモート端末操作(SSH、Telnet)

長所と短所

  • 長所:データの信頼性と順序性を保証し、ネットワーク混雑に対して適切に振る舞う点で安定した通信が可能。
  • 短所:オーバーヘッドがあり、遅延が増える場合がある。リアルタイム性を最優先する用途には不向き。

補足:歴史と仕様

TCPは1970年代から設計され、その仕様はRFC 793などで定義されています。現在では多くの拡張(ウィンドウ拡張、セレクティブACK、タイムスタンプなど)が加えられ、現代のインターネットに不可欠なプロトコルとなっています。

以上がTCPの概要と主要な仕組み・特徴です。用途やトラブルシューティングを行う際は、ヘッダ情報(ポート、フラグ、ウィンドウサイズ、シーケンス番号など)や再送/輻輳の挙動を確認すると原因把握がしやすくなります。

TCPの重要性

TCPは、コンピュータ・プログラム同士の通信を容易にするもので、通常はコンピュータ・ネットワーク上で使用されます。プログラムが大量のデータを送信する場合、TCPはデータを分割し、ネットワークを通して送信し、別のコンピュータで正しく組み立てる役割を担います。その過程でIPは、すべてのデータを最速で送るために、どの配線と「交差点」を使うかを選択します。これはパケットを使って行われます。

多くの人がネットワークを利用すると、ネットワークに負荷がかかることがあります。また、時には天候や停電などの問題で、通信が困難になることもあります。インターネット上のルーターは、負荷分散という方法を用いて、これらの問題の一部を解決しようとします。しかしそれでも、情報が順番通りに届かなかったり、紛失したり、重複してしまったりすることがあるのです。TCPはこのような問題をすべて察知し、解決しようとするように設計されています。このため、インターネットが遅く感じられることがあるのです。TCP受信機は、送信されたデータの完全なコピーを再構築した後、そのデータを要求したコンピュータプログラムに渡します。このように、プログラムはネットワークについて知る必要がなく、TCPはプログラムのデータについて知る必要がありません。



百科事典を検索する
AlegsaOnline.com - 2020 / 2025 - License CC3