TCP & UDPとは何か

TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)は、アプリケーションがネットワーク上の相手にデータを送るために使う代表的なトランスポート層の通信プロトコルです。 どちらも「送信元のアプリ」と「送信先のアプリ」を識別するためにポート番号を使い、データをパケット(IP上の単位)として運びます。 \n

仕組み:TCPは“信頼性のための制御”をする

TCPは、データを受け取った側が「受け取れた」ことを示す仕組み(確認応答)を用い、必要に応じて再送を行います。 その結果、送信した順序どおりにアプリへ渡すことを目指し、途中で欠けたデータの回復を図りやすくなります。 さらに、混雑や速度の変化に応じて送信量を調整する考え方もあり、通信全体として安定した振る舞いになりやすい一方、確認応答や再送により遅延が増える場合があります。 \n

仕組み:UDPは“最小限”で速く届けることを優先しやすい

UDPは、基本的にデータを送り出すことに重点を置きます。 確認応答や再送、順序制御は(少なくともプロトコル標準の範囲では)TCPほど強く前提になっていません。 そのため、アプリ側が必要なら、自前で順序付けや欠損対策を設計することになります。 一般に、余計な制御を待ちにくいため低遅延になりやすい一方、混雑や経路の影響で欠けたり順序が入れ替わったりしても、そのことをUDP自体が回復しきれない可能性があります。 \n

重要な違いと制限(例外が起きるポイント)

まず大枠として、TCPは到達性や順序を扱いやすい方向、UDPはそれらを保証しない方向です。 ただし、ここで注意したいのは「プロトコルの設計と、アプリの実装・ネットワーク状況は一致しないことがある」という点です。 \n

  • TCPの制限:確認応答や再送の待ち時間、混雑制御の影響で、瞬間的な遅延が増えることがあります。 さらに、アプリが求めるリアルタイム性が高い場合、設計上の工夫が必要になることがあります。