UDP
UDP(User Datagram Protocol)とは, IP上位層であるトランスポート層で動作するプロトコルで, ネットワーク層のIPとセッション以上のプロトコル(例: DNS, NTP, DHCP)の橋渡しの役割を果たす.
UDPにおけるポート番号などの考え方はTCPと同様だが, TCPのように3ウェイハンドシェイク, 確認応答, 再送制御, ウィンドウ制御, フロー制御などの機能は無く, 殆ど何もしないプロトコルである.
UDPはTCPと比べて信頼性は必要無いが, 速さやリアルタイム性を求められる通信に使用されることが多い.
UDPヘッダのフォーマット
フィールド | ビット数 | 説明 |
---|---|---|
送信元ポート番号 | 16bit | 送信元のポート番号の値が入る. |
宛先ポート番号 | 16bit | 宛先ポート番号の値が入る. |
パケット長 | 16bit | UDPヘッダとデータ部分の長さを合計した値が入る. |
チェックサム | 16bit | UDPヘッダとデータ部分のエラーチェックを行うために使用される値が入る. |
UDPの特徴
UDPはコネクションレス型通信を実現するプロトコルであるため, TCPと比較すると信頼性がないものの, 高速にデータ転送を行うことが可能となる.
また, UDPヘッダのサイズが8byteと少ないため, 1つのパケットで多くのアプリケーションのデータを転送できる.
ただし, TCPとは違いパケットが到達する保証は無いため, パケットロスの場合にアプリケーション側で再送処理をして通信を成立させるか, パケットロスが容認できるアプリである必要がある.
UDPの用途
① 音声や映像などのリアルタイム性のあるデータを転送する場合
音声のデータを転送する場合, TCPのようにデータを転送するごとに確認応答をしていると, 音声が途切れたり, 聞き取れなくなるケースが発生する. このようなリアルタイム性が求められる場面では信頼性よりも高速なデータ転送が求められるため, 音声や映像のデータ転送ではUDPの方が品質が高まる.
② 複数の相手に同じデータに転送する場合
TCPの通信では, 通信相手と1対1でコネクションを確立する必要があるため, ユニキャストしかできない.
しかし, 1つのパケットを複数の宛先に送るマルチキャストやブロードキャストでは, TCPを使用することができない.
そのため, 1対多の通信を行うにはコネクションの確立の必要が無いUDPが適している.
③ 信頼性の必要がなく, 少量のデータを転送したい場合
例えばDNSサーバとクライアント間の通信は, クライアントからの1回の問い合わせとそれに対するDNSサーバからの1回の応答で終了する.
このようなやり取りにコネクションを確立させるために3回もやり取りをしていては効率が悪い.
そのため, 少量のデータ転送にはUDPが適している.
UDPにおける代表的なウェルノウンポート番号
UDPにおける代表的なウェルノウンポート番号は以下に示す通りである.
ポート番号 | サービス名 |
---|---|
TCPとUDPの比較
プロトコル | TCP | UDP |
---|---|---|
通信方式 | コネクション型通信 | コネクションレス型通信 |
信頼性 | 高い | 低い |
転送速度 | 低速 | 高速 |
上位層のプロトコル | HTTP, Telnet, FTP, POP, ... | DNS, NTP, DHCP, SNMP, ... |
主な用途 | Webサイトの閲覧, メールの送受信, ファイルの転送と共有 | 音声通話, ストリーミング, 1対多の通信, その他少量のテーダ転送 |