IT用語集

TCPとは? わかりやすく10分で解説

水色の背景に六角形が2つあるイラスト 水色の背景に六角形が2つあるイラスト
アイキャッチ
目次

TCPの概要

TCP(Transmission Control Protocol)は、インターネットで広く使われているトランスポート層のプロトコルで、アプリケーションに信頼できる順序付きのバイトストリームを提供します。アプリケーションが送ったデータを受信側アプリケーションに届けるまでの間に、欠落や順序入れ替えが起きても再送並べ替えで整え、受信側からの確認応答(ACK)などを手掛かりに通信を進めます(ただし、経路断や相手ホスト停止などでは通信自体が成立しないことがあります)。Webサイトの閲覧(HTTP/1.1・HTTP/2のHTTPS)やファイル転送、メール送受信など、「届かなければ困る」通信の多くはTCPを前提に設計されています(なお、HTTP/3はTCPではなく、UDP上のQUICを使用します)。

ただし、TCPそのものが通信内容の安全性を保証するわけではありません。TCPは主に欠落や順序入れ替えを吸収して「正しく届ける」ための仕組みであり、盗聴・改ざん対策や相手認証は、TLS(Transport Layer Security)など暗号化・認証の仕組みと組み合わせて実現します。

TCPの概念図(送受信の信頼性を確保するイメージ)

インターネットとの関連性

インターネットは、世界中のネットワーク同士が相互に接続された巨大な仕組みです。この上で通信を成立させるには、役割の異なる複数のプロトコルが層(レイヤー)として組み合わさって動作します。

TCPはトランスポート層の代表的なプロトコルで、IP(Internet Protocol)と併せて説明されることが多い仕組みです。IPは宛先(IPアドレス)に向けてデータグラム(IPパケット)を転送しますが、設計としてはベストエフォートであり、到達・順序・重複なしを保証しません。そこでTCPが、再送や順序制御などの機能によって、アプリケーションが期待する形にデータを整えて渡します。

つまり、端的に言えばIPが配送TCPが再送や順序整列によって扱いやすい形に整える役割を担い、両者が連携することでインターネット上の通信が実用に耐える形で成立します(ただし、TCPが到達そのものを無条件に保証するわけではありません)。

TCPの主な役割と特徴

TCPの中心的な役割は、信頼性のあるデータ転送を提供することです。通信途中でパケットが失われたり、遅延の影響で順序が入れ替わったり、重複して届いたりすることは実際に起こり得ます。TCPはこうした状況を前提に、受信側で重複の排除順序の組み直しを行い、受信側はACK(必要に応じてSACKなど)で受信状況を知らせます。送信側はそれらとタイムアウトなどを根拠に、失われた可能性があるデータを再送します。

代表的な機能は次のとおりです。

  • 順序制御:番号(シーケンス番号)を使って、受信側で正しい並びに整える
  • 再送制御:ACKが進まない、タイムアウトする、重複ACKが増えるといった兆候から損失を疑い、該当データを送り直す
  • フロー制御:受信側の処理能力を超えないように送信量を調整する(受信ウィンドウ)
  • 輻輳制御:ネットワークが混雑しているときに送信量を抑え、状況の悪化を防ぐ

これらは高速化のためだけでなく、通信が破綻しないようにするための調整機構でもあります。その結果、TCPは一定のオーバーヘッドを伴いながらも、アプリケーションが扱いやすい通信の土台を提供します。

TCPの仕組み

TCPを理解するうえでは、単に「確実に送る」だけでなく、どのように確実性を成立させているかを押さえることが重要です。ここでは、データの扱い方と、信頼性を支える基本的な仕組みを解説します。

コネクションの確立(3ウェイハンドシェイク)

TCPは、通信を始める前にコネクションを確立します。これは、送信側と受信側が「これからTCPで通信する」ことに合意し、初期状態(番号など)を揃えるための手続きです。

一般的に、TCPの接続開始は3ウェイハンドシェイクと呼ばれる流れで行われます。代表的には、クライアントがSYNを送り、サーバがSYN-ACKで応答し、最後にクライアントがACKを返して確立します。

この仕組みにより、双方が通信開始を認識しやすくなり、以後の再送・順序制御・フロー制御などを行うための前提が整います。TLS(HTTPS)を利用する場合は、この後段でTLSハンドシェイクが行われるため、接続確立に伴う往復回数が増えることがあります。

データの分割と再構築

TCPは、アプリケーションが扱う大きなデータを、ネットワークで運びやすい単位に分割して送信します。この単位は一般に「パケット」と呼ばれがちですが、厳密にはTCPが扱うのはTCPセグメントであり、それがIPのデータグラム(IPパケット)として運ばれます。

送信側はデータをTCPセグメントに分割し、受信側はシーケンス番号を使って正しい順序に並べ直します。欠けている部分があれば再送を待ちながら、最終的に元のデータとしてアプリケーションへ渡します。

たとえば、大きなファイルをダウンロードする場合、途中で一部のセグメントが失われても、TCPは不足分を再送させ、受信側で欠落を補ったうえでファイルとして再構築します。このため、ユーザーは不完全なファイルを受け取らずに済みます。

エラーハンドリングと信頼性の確保

TCPは、受信側が受信状況を知らせるACK(確認応答:Acknowledgment)を使って、通信の確実性を高めます。ACKが返ってこない場合、送信側は「届いていない可能性が高い」と判断し、該当データを再送します。

また、順序が入れ替わって届いた場合でも、受信側は番号をもとに並べ直せます。重複して届いた場合も、番号を参照して取り除けます。こうした仕組みにより、TCPはアプリケーションが期待する正しいデータ列を提供しやすくしています。

一方で、再送や確認の仕組みがある以上、ネットワーク状況によっては遅延が増えることがあります。TCPは、信頼性と引き換えに一定のオーバーヘッドを伴うプロトコルだと理解しておくのが現実的です。

TCPとIPの連携

インターネット通信は、単一のプロトコルだけで成立しているわけではありません。TCPとIPは、それぞれの役割分担によって、アプリケーションから見て利用可能な通信を実現しています。

インターネットの基本ルール

IPは、宛先(IPアドレス)に向けてデータを運ぶ仕組みですが、途中の経路で損失が起きたり、複数経路で順序が入れ替わったりすることがあります。IPの設計思想は「できる範囲で届ける」というベストエフォートに近く、必達や順序保証は原則として上位層に委ねる考え方です。

TCPは、その上位で「順序どおりに、抜けなく、重複なく」アプリケーションへ届けるための機能を担当します。両者が連携することで、Webやメールのような欠けると困る通信が成立します。

運用時のトラブルシュートでは、IPレベルでの到達性(疎通)と、TCPレベルでの成立性(コネクション確立、再送過多など)を分けて考えると、原因を切り分けやすくなります。

データの送受信(IPパケットとTCPセグメント)

アプリケーションのデータは、TCPでセグメント化され、IPでパケットとして運ばれます。受信側ではIPがパケットを受け取り、TCPがそれを並べ替え、必要に応じて再送を要求し、最終的にアプリケーションへ渡します。

この連携により、ネットワーク途中で経路が変わったり、一部のパケットが失われたりしても、アプリケーション側は「すべて届いたデータ」として扱えます。一方で、損失が多い環境ではTCPの再送が増え、結果としてスループットが低下することがあります。

TCPの利点と欠点

TCPはインターネットの基盤となるプロトコルの一つですが、すべての用途に適しているわけではありません。ここでは、利点と欠点を整理します。

信頼性とエラーチェック

TCPの大きな利点は、欠落や順序入れ替え、重複といった問題が起きても補正できる信頼性です。業務システムでのデータ連携やファイル転送、メール配送など、欠けると業務に影響する通信では、この性質が重要です。

一方で、接続確立やACK、再送といった手続きがあるため、遅延が増える可能性があります。特に、損失が多い回線や往復遅延(RTT)が大きい環境では、体感速度が低下することがあります。

ネットワークの速度と効率性

TCPにはフロー制御や輻輳制御があり、ネットワークを破綻させずに通信を続けるための仕組みが備わっています。ただし、輻輳が疑われると送信量を抑えるため、「回線はつながっているが遅い」状態に見えることもあります。

運用上は、回線品質、経路、装置のバッファ、暗号化の有無、サーバ負荷などが組み合わさって影響する点を意識しておくと、原因の誤認を防ぎやすくなります。

TCPと他のプロトコルとの比較

トランスポート層では、TCPのほかにUDP(User Datagram Protocol)も広く利用されています。両者は優劣ではなく、用途に応じた使い分けが重要です。

TCP vs. UDP

TCPは接続確立や再送、順序制御を通じて信頼性を高めます。一方、UDPは接続確立を行わず、再送や順序制御を標準では備えていません。その分オーバーヘッドが小さく、遅延を抑えやすい特徴があります。

なお、UDPは暗号化できないという意味ではありません。UDP上でもDTLS(Datagram Transport Layer Security)を組み合わせることで、暗号化や相手認証を実現できます。

各プロトコルの適用シーン

TCPが向くのは、データの完全性が重要な通信です。Web、ファイル転送、メールなどが代表例です。

UDPが向くのは、リアルタイム性が重視される通信です。音声・映像配信やオンラインゲーム、DNSなどで使われます。

TCPのセキュリティ

TCPは通信の信頼性を提供しますが、盗聴や改ざん、なりすましを直接防ぐ機能は標準では備えていません。安全性は暗号化や認証、運用対策との組み合わせで確保します。

セキュリティの課題

  • 盗聴:平文通信が経路上で見られる可能性
  • 改ざん:通信内容が途中で書き換えられる可能性
  • なりすまし:正規の相手を装った接続
  • DoS/DDoS:大量通信による資源枯渇

セキュリティ対策

  • TLSによる暗号化と相手認証
  • ファイアウォールによる通信制御
  • IDS/IPS/WAFによる検知・防御
  • ログ監視による異常把握

まとめ

TCPは、欠落や順序の乱れを吸収し、信頼性のあるデータ通信を実現するためのプロトコルです。IPと連携することで、多くのインターネットサービスが成立しています。

一方で、TCP自体は暗号化や認証を担いません。用途に応じてTLSなどを組み合わせ、現実的な設計と運用を行うことが重要です。

Q.TCPとは何のためのプロトコルですか?

欠落や順序入れ替えが起きても再送や並べ替えで整え、受信側の確認応答(ACK)をもとに、扱いやすい形で届けるためのプロトコルです。

Q.TCPは通信内容を暗号化しますか?

暗号化は行いません。暗号化はTLSなど別の仕組みで実現します。

Q.TCPとIPはどう違いますか?

IPは宛先へ運ぶ役割、TCPは再送や順序制御でデータを整える役割です。

Q.TCPはなぜ信頼性が高いと言われますか?

ACKと再送、順序制御によって欠落や順序乱れを補正できるためです。

Q.TCPの3ウェイハンドシェイクとは何ですか?

SYN、SYN-ACK、ACKの3段階で接続を確立する手続きです。

Q.TCPのフロー制御とは何ですか?

受信側の処理能力を超えないよう、送信量を調整する仕組みです。

Q.TCPの輻輳制御は何を目的にしていますか?

ネットワーク混雑を悪化させないよう、送信量を抑えることを目的としています。

Q.TCPとUDPはどう使い分けますか?

欠落が困る通信はTCP、遅延が困る通信はUDPが選ばれます。

Q.TCPが遅く感じるのはどんなときですか?

損失や遅延が大きい環境で再送や輻輳制御が増えると、遅く感じやすくなります。

Q.TCP通信の安全性を高める基本は何ですか?

TLSによる暗号化と認証に加え、境界防御や監視を組み合わせることです。

記事を書いた人

ソリトンシステムズ・マーケティングチーム