UDP【User Datagram Protocol】
概要
トランスポート層とは
インターネットなどでは「IP」(Internet Protocol)というプロトコル(通信規約)を用いて通信を行う。IPはプロトコルの役割分担を定めたTCP/IP階層モデルではインターネット層に位置し、上位のトランスポート層、さらに上位のアプリケーション層のプロトコルを併用する。
UDPはトランスポート層のプロトコルの一つで、インターネット層のIPと、HTTPなど用途ごとに規定されたアプリケーション層の橋渡しをする。有力なトランスポート層のプロトコルには「TCP」(Transmission Control Protocol)もあり、IP上のほとんどの通信にUDPかTCPのいずれかが用いられる。
UDPデータグラム
UDPでは上位のアプリケーション層のプロトコルから伝送を依頼されたデータを「UDPデータグラム」という送信単位に格納し、下位のIPに伝送を依頼する。データグラムの先頭は制御情報を記した「UDPヘッダ」で、続いて伝送データ本体(ペイロード)が格納される。
ヘッダはわずか8バイトで、先頭から2バイトずつ、送信元ポート番号、宛先ポート番号、(データグラム全体の)データ長、チェックサム(誤り検出符号)となっている。チェックサムによって受信側でペイロードが破損していないか確かめることができる。IPv4ではチェックサムは任意であるため省略(全ビット0とする)できるが、IPv6では省略できない。
UDPの特徴
TCPと共通の仕様として、「ポート番号」(port number)という識別番号をヘッダ領域に書き込むことができる。各データグラムが運んでいるデータがどのアプリケーション層プロトコルのものであるかを指定する番号で、受信側で担当のソフトウェアに振り分けることができる。
UDPは通信相手との間に仮想的な伝送路の確立(ハンドシェイク)を行わないコネクションレス型のプロトコルである。相手方が確実にデータを受領したかを確認したり、データの欠落を検知して再送したり、受信データを送信順に組み立て直すといった制御を行わず、データを「送りっぱなし」にする。
UDPの用途
UDP自体はデータの配達に関して特に信頼性を保証しないが、このような制御を行わない分だけ転送効率が高く、遅延や中断が発生しにくい。音声通話や動画配信のように、データに多少の損失が生じても高速性や即時性(リアルタイム性)を重視する用途で伝統的に用いられている。
また、TCPが提供しているような信頼性を確保するメカニズムはアプリケーション側で独自に用意するため、余計なことはせずシンプルにデータ伝送だけしてほしい場合にも採用される。TFTPやQUIC、オンラインゲームの固有プロトコルなどは、UDP上で欠落データの再送やコネクション確立などの制御を行っている。
標準化されインターネット上で広く利用されているアプリケーション層プロトコルはHTTPやSSHのようにTCPを利用するものが多いが、著名な標準プロトコルの中ではDNSやSNMP、DHCP、NTPなどがUDPを利用することでよく知られる。DNSのようにUDPとTCPの両対応とするプロトコルもある。
DTLSによる暗号化
TCPではコネクション確立時に暗号鍵の交換などを行ってアプリケーション層の通信を丸ごと暗号化する「TLS」(Transport Layer Security)という追加仕様が用意されており、Web通信の暗号化(HTTPS)などで広く利用されている。UDPでも同じようにアプリケーション層を丸ごと暗号化する「DTLS」(Datagram Transport Layer Security)が考案され、2006年に標準化された。
継続的な暗号化のためには通信の相手方との間に安定的な伝送路を用意する必要があるため、DTLSによる追加仕様として、TCPのようなコネクション確立の仕組みが導入された。DTLSによる接続後、UDPアプリケーションはコネクションを意識することなく通常のUDPと同じ「送りっぱなし」型の通信を行うことができる。
「UDP」の関連用語
他の用語辞典による「UDP」の解説 (外部サイト)
- ウィキペディア「UDP」
- 総務省 国民のためのサイバーセキュリティサイト 用語集「UDP」
- imidas 時事用語事典「UDP」
- 日経 xTECH Tech-On!用語「UDP」
- JPNIC インターネット用語1分解説「UDP」
- @IT ネットワーク用語辞典「UDP」
- JPRS 用語辞典「UDP」
- Insider's Computer Dictionary「UDP」
- ネットワークエンジニアとして「UDP」
- JavaA2Z「UDP」
