UDP
接続の確立を行わずに、データグラム単位でアプリケーション間のデータを運ぶコネクションレス型のトランスポート層プロトコルである。再送や到着順序の保証を備えず、ヘッダーは8バイトである。
イマシルちゃんの解説
UDPは、アプリケーション間でデータを運ぶトランスポート層のプロトコルだよ。
相手との接続を確立する手続きを省き、ひとまとまりのデータをデータグラムとして送るんだ。
受信の確認や再送、順番の並べ替えはUDP自身では行わないよ。
たとえば音声通話では、古い音声の再送を待たずに新しい音声の処理へ進む作りにできるんだ。
必要なら再送などの機能をアプリケーション側で補うこともできるよ。
UDPを使えば必ず速くなるのではなく、用途に合わせて必要な通信の仕組みを選べるところが特徴なんだ。
この解説はわかりやすかったですか?
より深い解説
定義
UDP(User Datagram Protocol)は、RFC 768で定められたトランスポート層のプロトコルである。IPヘッダのプロトコル番号は17。コネクションレス型で、相手との接続を確立せずにデータ(データグラム)を送る。
TCPとの比較
| UDP | TCP | |
|---|---|---|
| 接続の確立 | しない | 3ウェイハンドシェイクで確立する |
| 再送・順序の保証 | しない | する |
| フロー制御・輻輳制御 | しない | する |
| ヘッダの長さ | 8バイト | 20バイト以上 |
| 向いている用途 | 速さや手軽さが大事なもの | 正確に届くことが大事なもの |
UDPが「何もしない」のは欠点ではなく、必要な機能だけをアプリケーション側で作れるという長所でもある。CoAPやQUICのように、UDPの上に独自の再送や暗号化の仕組みを載せるプロトコルも多い。
ヘッダの構造
UDPのヘッダは、次の4つのフィールド(各2バイト)だけからなる。
| フィールド | 長さ |
|---|---|
| 送信元ポート番号 | 2バイト |
| 宛先ポート番号 | 2バイト |
| 長さ(ヘッダ+データ) | 2バイト |
| チェックサム | 2バイト |
チェックサムは、IPv4では省略できる(0にすると「計算していない」の意味)が、IPv6では必須である。
UDPを使う主なプロトコル
| プロトコル | ポート番号 | UDPを使う理由 |
|---|---|---|
| DNS | 53 | 問合せと応答が1往復で済み、速さが大事 |
| DHCP | 67(サーバ)、68(クライアント) | まだIPアドレスがない段階で、ブロードキャストを使うため |
| SNMP | 161、162 | 監視の問合せを軽く行うため |
| NTP | 123 | 時刻合わせは遅れて届くと意味がないため |
| RIP | 520 | 経路情報を定期的に隣のルータへ送るため |
| syslog | 514 | ログを送りっぱなしにするため |
| TFTP | 69 | 簡易なファイル転送 |
| RTP | 可変 | 音声や映像。遅れたデータは再送しても使えないため |
| QUIC(HTTP/3) | 443 | TCPの制約を避け、自前で再送と暗号化を行うため |
DNSは、応答が大きい場合(ゾーン転送や、大きな応答を扱う場合)にはTCPも使う点に注意する。
実際の試験ではここに出る!全19問
ネットワークスペシャリスト
- 午前Ⅱ
- 午後Ⅰ
- 午後Ⅱ