名前解決や時刻同期など即時性(リアルタイム性)が要求されるアプリケーションで使用される。接続交渉や確認応答を省略し、一方的にデータを送信し続けることによって即時性の向上を図っている。
図:UDPはパケットを送ったら送りっぱなし
表:UDPとTCPの比較
IPヘッダーのプロトコル番号は「17」
上位層から受け取ったアプリケーションデータを「UDPペイロード」とし、「UDPヘッダー」をくっつけることによって「UDPデータグラム」にする。
UDPのパケットフォーマット
即時性(リアルタイム性)に重きを置いているため、パケットフォーマットはシンプルそのもの。構成されるヘッダーフィールドはたったの4つ、ヘッダーの長さも8バイトしかない。クライアント(送信元端末)はUDPデータグラムを作り、通信相手のことを気にせずにどんどん送るだけ。
図:UDPのパケットフォーマット
送信元/宛先ポート番号
「ポート番号」はアプリケーション(プロセス)の識別に使われる2バイトの値。
クライアント(送信元端末)はコネクションを作るとき、OSが決められた範囲からランダムに割り当てた値を「送信元ポート番号」に、アプリケーションごとに定義されている値を「宛先ポート番号」にセットしてサーバーに送信する。
UDPデータグラム長
UDPヘッダーとUDPペイロードを合わせたサイズ
バイト単位の値
最小値はヘッダーのみで構成された場合の「8」、最大値は理論上「65535」
チェックサム
受け取ったUDPデータグラムが壊れていないか、整合性のチェックに使用される
IPヘッダーのチェックサムと同じ「1の補数演算」が採用されている。
ポート番号
トランスポート層のプロトコルにおいて最も重要なフィールド
UDPもTCPもまずポート番号ありき。
IPヘッダーさえあれば世界中どの宛先端末までもIPパケットを届けることができる。しかしIPパケットを受け取った端末は、そのIPパケットをどのアプリケーションで処理すればよいかわからない。そこでポート番号を使用する。ポート番号とアプリケーションは一意に紐づいていて、ポート番号さえ見ればどのアプリケーションに渡せばよいかわかるようになっている。
図:ポート番号でデータを渡すアプリケーションを識別する
ポート番号はアプリケーション層で動作するアプリケーションを識別する2バイトの数字。0~65535番までが「System Ports(Well-Known Ports)」「User Ports(Registerd Ports)」「Dynamic Ports(Private Ports)」の3種類に分類される。このうちSystem PortsとUser Portsは主にサーバーアプリケーションを識別するポートとして、宛先ポート番号に使用される。Dynamic Portsは主にクライアントアプリケーションを識別するポート番号として、送信元ポート番号に使用される。
| ポート番号の範囲 | 名称 | 用途 |
|---|---|---|
| 0 ~ 1023 | System Ports(Well-Known Ports) | 一般的なアプリケーションで使用 |
| 1024 ~ 49151 | User Ports(Registerd Ports) | メーカーの独自アプリケーションで使用 |
| 49152 ~ 65535 | Dynamic Ports(Private Ports) | クライアント側でランダムに割り当てて使用 |
System Ports
0 ~ 1023
一般的には「ウェルノウンポート(Well-known Ports)」として知られている。IANAによって管理されており、一般的なサーバーアプリケーションに一意に紐づいている。
| ポート番号 | UDP | TCP |
|---|---|---|
| 20 | – | FTP(データ) |
| 21 | – | FTP(制御) |
| 22 | – | SSH |
| 23 | – | Telnet |
| 25 | – | SMTP |
| 53 | DNS(名前解決) | DNS(名前解決、ゾーン転送) |
| 69 | TFTP | – |
| 80 | – | HTTP |
| 110 | – | POP3 |
| 123 | NTP | – |
| 443 | HTTPS(QUIC) | HTTPS |
| 587 | – | サブミッションポート |
User Ports
1024~49151
「Registerd Ports」とも呼ばれている。System Portsと同じようにIANAによって管理されており、主にメーカーが開発した独自のアプリケーションに一意に紐づいている。
| ポート番号 | UDP | TCP |
|---|---|---|
| 1433 | – | Microsoft SQL Server |
| 1521 | – | Oracle Database |
| 1985 | Cisco HSRP | – |
| 3306 | – | MySQL |
| 3389 | Microsoft Remote Desktop Service | Microsoft Remote Desktop Service |
| 8080 | – | Apache Tomcat |
| 10050 | – | Zabbix Agent |
| 10051 | – | Zabbix Trapper |
Dynamic Ports
49152~65535
「Private Ports」とも呼ばれている。IANAによって管理されておらず、主にクライアントアプリケーションがサーバーアプリケーションに接続するときに、送信元ポート番号としてランダムに割り当てる。
これによりどのクライアントアプリケーションにリプライパケット(応答)を渡せばよいかがわかる。