UDP(User Datagram Protocol)は、接続確立を行わずにデータを送る接続レス型のトランスポート層プロトコルです。TCPのような到達保証や順序保証は持たない一方、通信開始までの手順が少なく、遅延を抑えやすいという特徴があります。そのため、リアルタイム通信や短い問い合わせなど、「多少の欠落より応答の早さを優先したい場面」で広く使われています。

UDPは、インターネットプロトコルスイートのトランスポート層に属するプロトコルです。TCPと同じ層で動作しますが、TCPのような接続確立(ハンドシェイク)を前提としません。送信側は宛先に向けてデータを送るだけで、受信側がそれを受け取れたかどうか、途中で欠落がなかったかどうかを、UDP自身は保証しません。
この性質から、UDPは「確実さ」よりも「速さ」や「シンプルさ」を優先したい場面で使われます。たとえば、音声や映像のように、多少の欠落よりも遅延の小ささが体感に直結するケースでは、UDPの設計が合いやすくなります。
UDPの代表的な特徴は、接続レス(connectionless)であることです。送信者と受信者の間でTCPのような接続確立を行わずにデータを送れるため、通信開始までの待ち時間を抑えられます。また、ヘッダーが比較的簡素で、プロトコルとしてのオーバーヘッドが小さい点も特徴です。
一方で、UDPはしばしば「信頼性が低い」と言われます。ただし、これは「危険だから使えない」という意味ではありません。到達保証・順序保証・再送制御などをUDP自身が提供しないという設計上の性質を指しています。そのため、ネットワーク状況によっては、パケットが失われたり、順番が入れ替わったり、重複して届いたりする可能性があります。
UDPを選ぶときに見るべきなのは、「信頼性が不要か」ではなく、信頼性をどこで担保するかです。用途によっては、アプリケーション側で再送や順序制御を実装する、上位プロトコルを利用する、あるいは「多少欠けても問題ない設計」にする、といった考え方が必要になります。
UDPは軽いプロトコルですが、配送のために必要な最小限の仕組みは備えています。ここでは、UDPがどのような情報を持って送受信されるのかを、TCPとの違いとあわせて見ていきます。
UDPヘッダーは、UDPデータグラム(UDPのパケット)の先頭に付与され、送受信に必要な情報を含みます。ヘッダーは8バイトの固定長で、主なフィールドは次の4つです。
チェックサムは、配送途中でデータが破損していないかを検出するための仕組みです。破損が検出された場合、受信側OSはデータグラムを破棄するのが一般的です。ただし、UDP自体はTCPのような再送制御を行いません。欠落時の扱いは、アプリケーションや上位プロトコルの設計に委ねられます。
なお、チェックサムの扱いはIPのバージョンによって異なります。IPv4では送信時にゼロを設定して省略する運用が可能ですが、IPv6では原則として必須です。ただし、特定のトンネル用途では例外が定義されています。
UDPとTCPはいずれもトランスポート層の代表的なプロトコルですが、設計思想は大きく異なります。違いの中心にあるのは、通信の確実性をプロトコル自身が担保するかどうかです。
| 観点 | UDP | TCP |
|---|---|---|
| 接続 | 接続レス(事前の接続確立なし) | 接続指向(ハンドシェイクで接続確立) |
| 到達保証 | なし(届かない可能性がある) | あり(再送・確認応答で担保) |
| 順序保証 | なし(順番が入れ替わる可能性) | あり(受信側で順序を整える) |
| オーバーヘッド | 小さい | 大きい |
| 向いている用途 | 遅延を抑えたい、軽量に送りたい | 確実に届けたい、順序通りに扱いたい |
「UDPは高速」「TCPは遅い」と単純化されがちですが、実際にはどの品質を優先するかによる選択です。欠けると困る用途ではTCPが基本となり、多少の欠落を許容できる場面ではUDPが合理的な選択になります。
UDPが採用されるのは、単に「速いから」ではありません。通信開始の軽さや制御の少なさが用途設計と合うときに、実際のシステムで選ばれます。
UDPが向くのは、多少の欠落があっても次のデータで追いつける通信や、短いメッセージを素早くやり取りしたい通信です。たとえば、音声・映像・ゲームの更新情報、DNSの問い合わせのように、遅延の小ささが重要になる場面では選択肢になります。
一方で、欠落や順序の乱れをそのままでは許容できない通信では、TCPを選ぶか、UDPの上で再送や順序制御を補う設計が必要です。重要なのは「UDPは軽い」ではなく、どの品質を捨て、どこで補うかを先に決めることです。
UDPの利点としてよく挙げられるのが、通信開始時の手順が少ないことによる低遅延です。接続確立のための往復が不要で、短いデータを素早く送る用途に向いています。
ただし、「高速」とは常に転送量が最大になるという意味ではありません。パケットロスが多い環境では、再送を行わないUDPはデータ欠落が増え、体験品質が下がることもあります。UDPの強みは、遅延を抑えやすい点にあります。
UDPは、リアルタイム性が求められる通信で多く使われます。VoIPやビデオ会議、ライブ配信などでは、多少の欠落よりも遅延の増加が体験を大きく損ねる場合があります。UDPは再送による遅延増加を避けやすいため、こうした用途と相性が良いとされています。
また、UDPを用いてブロードキャストやマルチキャストアドレス宛に送信する構成も一般的です。一度に多数の端末へ同じデータを配信する設計と相性が良い一方で、可否や挙動はネットワーク構成に依存するため、設計段階での検討が欠かせません。
UDPはリアルタイム系に限らず、インターネットの基盤に近い領域でも利用されています。
オンラインゲームでは、操作や位置情報が短い周期で更新されます。多少の欠落があっても次の更新で追いつける設計にすることで、遅延を抑えるためにUDPが採用されることがあります。
音声や映像の分野でも、リアルタイム性が重視される場合はUDPが選ばれやすくなります。近年は、UDP上で信頼性や暗号化などを補う設計も一般化しており、UDPはあくまで基盤として位置づけられています。
UDPは、DNSやDHCPといった基盤サービスでも利用されます。DNSでは通常UDPで問い合わせますが、応答が大きい場合や切り詰めが起きた場合などにはTCPも使われます。DHCPはUDPを使ってクライアントとサーバーが設定情報をやり取りします。
UDPは軽量なぶん、通信品質やセキュリティをどこで補うかを、上位層も含めて設計する前提があります。
UDPはチェックサムによってデータ破損を検出しますが、再送制御は行いません。整合性を保証したい場合は、アプリケーション側で再送や順序制御などの仕組みを用意する必要があります。
UDPでは、パケットロスや順序の入れ替わり、重複といった事象が起こり得ます。これらに対しては、シーケンス番号の付与やタイムアウト設計など、要件に応じた対策が必要です。
また、通信元の偽装や反射・増幅攻撃への対策として、アクセス制御やレート制限、監視を含めた運用設計が求められます。
UDPは、低遅延と軽量さを重視したトランスポート層のプロトコルです。一方で、到達保証や順序保証は提供しないため、欠落を前提とした設計や上位層での補完が欠かせません。用途要件に応じてTCPと使い分け、どの層で品質と安全性を担保するかを先に決めておく必要があります。
UDPはトランスポート層のプロトコルで、接続確立を行わずにデータを送受信する仕組みです。
接続確立の手順がなく、制御情報が少ないため、通信開始時の遅延を抑えやすいからです。
到達保証や再送制御をUDP自身が行わないという意味で、用途によっては注意が必要です。
UDPは接続確立なしで軽く送れる一方、TCPは接続を確立したうえで到達や順序を保証します。
音声通話、動画配信、オンラインゲームなど、遅延を抑えたい用途で使われるほか、DNSやDHCPのような基盤サービスでも利用されます。
使います。送信元ポート番号と宛先ポート番号によって、どのアプリケーションに届けるかを識別します。
使われます。短い問い合わせや設定情報のやり取りを軽量に行いやすいため、基盤サービスでも広く使われています。
UDP自体は暗号化や相手認証を提供しないため、必要に応じて上位プロトコルやアプリケーション側で補う必要があります。
UDP自身は提供しませんが、アプリケーションや上位プロトコル側で実装することは可能です。
常に高速とは限りません。接続確立や再送による遅延を減らしたい場面で有利になりやすい、という理解が適切です。