TCPとUDPの仕組みを図解で説明
〜2つの違いと使い分け〜

「TCP」と「UDP」の違いを説明できますか?

TCPは信頼性が高くて、UDPは速い、くらいの理解の人も多いと思います。

TCPとUDPの仕組みと使い分けについて、図を使って説明していきます。

TCPとUDPとは?

TCPとUDPは、データをアプリまで届けるためのプロトコルです。

TCP/IPの階層では、トランスポート層にあたります。

IPは、宛先のコンピュータまでデータを届ける役割を持っています。

その上でTCPとUDPは、ポート番号を使って、コンピュータの中のどのアプリに届けるかを決めます。

2つの大きな違いは、信頼性を重視するか、速さを重視するかです。

TCPの仕組み

TCP(Transmission Control Protocol)は、相手に確実にデータを届けるためのプロトコルです。

通信を始める前に、相手と接続を確立します。このような方式を「コネクション型」といいます。

3ウェイハンドシェイク

TCPは、通信を始める前に①〜③のやり取りで接続を確立します。

①クライアントが接続を要求(SYN)

②サーバが要求を受け付けて、クライアントにも接続を要求(SYN+ACK)

③クライアントが受け付けたことを返信(ACK)

3ウェイハンドシェイクの図。クライアントがSYN、サーバがSYN+ACK、クライアントがACKを送る

3回のやり取りを行うので、「3ウェイハンドシェイク」といいます。

ACKは「受け取りました」という確認の合図です。

電話でいうと、「もしもし」「はい、聞こえます」「お願いします」と確認してから話し始めるイメージです。

データを確実に届ける仕組み

TCPは、接続した後も確実にデータを届けるための仕組みを持っています。

  • 確認応答:相手がデータを受け取ったらACKを返す
  • 再送制御:ACKが返ってこない場合は、データを送り直す
  • 順序制御:番号を付けて、データを正しい順番に並べ直す
  • フロー制御:相手の処理に合わせて、送る量を調整する

これらの仕組みがあるので、途中でデータが失われても受け取る側には正しいデータが届きます。

再送制御の図。データ2が途中で失われるとACKが返らないので、送信側がデータ2を送り直す

その分、やり取りが増えて処理の負担は大きくなります。

UDPの仕組み

UDP(User Datagram Protocol)は、接続の確立をせずにデータを送るプロトコルです。

このような方式を「コネクションレス型」といいます。

相手が受け取ったかどうかの確認も、再送も行いません。

手紙をポストに入れるイメージです。出した後に届いたかどうかは、UDPでは分かりません。

TCPとUDPの比較の図。TCPはデータごとにACKで確認し、UDPは確認せずに送り続ける

データが途中で失われることもありますが、やり取りが少ないので、処理が軽く遅延が小さいことが特徴です。

確認が必要な場合は、アプリ側で行います。

TCPとUDPの違い

2つの違いを簡単に説明すると、

・TCPは、接続を確立して確実に届ける。信頼性が高い

・UDPは、接続を確立せずに送る。処理が軽く、遅延が小さい

になります。

TCPとUDPの使い分け

TCPとUDPの比較表。接続の確立、届いたかの確認、再送、向いている通信を比べている

データが欠けると困る通信には、TCPが使われます。

  • Webの閲覧(HTTP、HTTPS)
  • メール(SMTP、IMAP、POP3)
  • ファイル転送(FTP)

少しくらいデータが欠けても、遅れないことが大切な通信には、UDPが使われます。

  • 音声通話やビデオ通話
  • オンラインゲーム
  • ライブ配信の一部

また、短いやり取りで済む通信にも、UDPが使われます。

  • DNS(名前解決、状況によってTCPも使う)

DHCP(IPアドレスの自動割り当て)もUDPを使います。まだIPアドレスを持っていない機器がブロードキャストで問い合わせるので、相手と接続を確立するTCPは使えません。

最近では、Webの通信でも新しいHTTP/3ではUDPの上に作られたQUICという仕組みを使っています。信頼性の確保や暗号化はQUIC側で行います。パケットが失われた時の影響を小さくしたり、接続を速く始めたりできることが利点です。

ポート番号の変換については、NATの仕組みを図解で説明でも説明しています。

まとめ

今回はTCPとUDPの仕組みと違いについて説明しました。

TCPは接続を確立して確実にデータを届けるプロトコルで、UDPは確認を行わず軽く速く送るプロトコルです。

どちらが優れているということではなく、通信の目的に合わせて使い分けられています。

基本情報技術者試験では、3ウェイハンドシェイクや再送制御などのTCPの仕組みと、どのプロトコルがTCPやUDPを使うのかを押さえておきましょう。

普段使っているWebやビデオ通話がどちらを使っているのかを考えてみると、理解が深まると思います。

TCPとUDPがどの階層の技術なのかは、OSI参照モデルの仕組みを図解で説明の記事で説明しています。