TCPとUDPの違いを完全解説

同じトランスポート層のプロトコルであるTCPとUDPが、どのように異なる方式でデータをやり取りするのか順番に見ていきましょう。

  1. TCPとUDPとは何か

    TCP(Transmission Control Protocol)とUDP(User Datagram Protocol)は、インターネット上でデータを運ぶトランスポート層のプロトコルです。同じ階層で動作しますが、データのやり取りの方式はほぼ正反対です。

  2. コネクション型 vs コネクションレス型

    TCPはデータを送る前に、SYN → SYN/ACK → ACKの順で行われる3-wayハンドシェイクでまず接続を確立します。UDPはこうした事前の手続きなしに、そのままデータを送信するコネクションレス型です。

  3. 信頼性と順序保証

    TCPはデータが届いたかどうかを確認し、順序が入れ替わっていれば並べ直し、失われたパケットは再送します。UDPにはこうした確認・再送の仕組みが一切なく、パケットが失われたり順序が入れ替わったりしてもそのままです。

  4. ヘッダーのオーバーヘッドの違い

    TCPヘッダーは最低20バイトで、シーケンス番号や確認応答番号などの制御情報を多く含みます。UDPヘッダーはわずか8バイトと非常に軽量で、その分処理速度で有利です。

  5. フロー制御と輻輳制御

    TCPはスライディングウィンドウと輻輳制御アルゴリズムにより、ネットワークの状況に合わせて送信速度を自動的に調整します。UDPにはこうした自動調整機能がなく、必要であればアプリケーション側で速度を管理する必要があります。

  6. 実際にどこで使われているか

    正確な伝達が重要なWebブラウジング(HTTP・HTTPS)、メール(SMTP)、ファイル転送(FTP)はTCPを使用します。一方、速度が優先されるDNS検索、動画ストリーミング、オンラインゲーム、ビデオ通話(VoIP)は主にUDPを使用します。

  7. UDPの上に築かれた新しいプロトコル、QUIC

    近年ではUDPの速度の上に独自の信頼性保証と暗号化を組み合わせたQUICプロトコルが登場しました。HTTP/3の基盤技術として、Chrome、YouTubeなど多くのサービスがすでにQUICを活用しています。

ポート番号と合わせて理解するとさらに分かりやすい

TCPとUDPはいずれもポート番号でどのサービスかを区別します。よく使われるサービスごとのポート番号を知っておくと、TCPとUDPの違いも理解しやすくなります。

UDPベースのサービスの通話品質が気になるなら

インターネット電話(VoIP)は代表的なUDPベースのサービスの一つです。SIP・RTPプロトコルが実際にどのように動作するかを確認してみましょう。

よくある質問

DNS検索はTCPですか、UDPですか?

基本的にはUDPを使って高速に検索します。ただし応答データが大きすぎる場合や、ゾーン転送のように信頼性が重要な特殊な状況ではTCPに切り替わることもあります。

オンラインゲームはなぜ主にUDPを使うのですか?

リアルタイム性が何より重要だからです。パケットが1つ失われたからといって再送を待っていると、かえってキャラクターの動きが不自然になりかねません。多少の損失があっても、最新の状態を素早く更新できるUDP方式の方が適しています。