UDP

読み:ゆーでぃーぴー / 英語表記:User Datagram Protocol

トランスポート層のプロトコルの1つ。接続の手続きも再送もせず、データを送りっぱなしにする代わりに、速くて軽い。

イマシルちゃんの解説

TCPが「届いたかどうか、ちゃんと確認しながら送る書留郵便」だとしたら、
UDPは「ポストに投げ込んだらおしまいの普通郵便」みたいなものなんだ。

届いたか確認しないなんて不安に思うかもしれないけど、そのぶんとっても速いんだよ!
音声通話みたいに「少し欠けても、遅れるよりはマシ」な通信では、UDPが大活躍するんだ。

より深い解説

定義

UDP(User Datagram Protocol)は、RFC 768で定められたトランスポート層のプロトコルである。IPヘッダのプロトコル番号は17。コネクションレス型で、相手との接続を確立せずにデータ(データグラム)を送る。

TCPとの比較

UDPTCP
接続の確立しない3ウェイハンドシェイクで確立する
再送・順序の保証しないする
フロー制御・輻輳制御しないする
ヘッダの長さ8バイト20バイト以上
向いている用途速さや手軽さが大事なもの正確に届くことが大事なもの

UDPが「何もしない」のは欠点ではなく、必要な機能だけをアプリケーション側で作れるという長所でもある。CoAPやQUICのように、UDPの上に独自の再送や暗号化の仕組みを載せるプロトコルも多い。

ヘッダの構造

UDPのヘッダは、次の4つのフィールド(各2バイト)だけからなる。

フィールド長さ
送信元ポート番号2バイト
宛先ポート番号2バイト
長さ(ヘッダ+データ)2バイト
チェックサム2バイト

チェックサムは、IPv4では省略できる(0にすると「計算していない」の意味)が、IPv6では必須である。

UDPを使う主なプロトコル

プロトコルポート番号UDPを使う理由
DNS53問合せと応答が1往復で済み、速さが大事
DHCP67(サーバ)、68(クライアント)まだIPアドレスがない段階で、ブロードキャストを使うため
SNMP161、162監視の問合せを軽く行うため
NTP123時刻合わせは遅れて届くと意味がないため
RIP520経路情報を定期的に隣のルータへ送るため
syslog514ログを送りっぱなしにするため
TFTP69簡易なファイル転送
RTP可変音声や映像。遅れたデータは再送しても使えないため
QUIC(HTTP/3)443TCPの制約を避け、自前で再送と暗号化を行うため

DNSは、応答が大きい場合(ゾーン転送や、大きな応答を扱う場合)にはTCPも使う点に注意する。

実際の試験ではここに出る!

この用語が出てくる記事

↑