目次
UDP(User Datagram Protocol)とは
UDPは単純にアプリケーションへのデータを振り分けるためにだけに利用するプロトコルです。TCPのような確認などはいっさい行いません。UDPでアプリケーションのデータを送受信するには、UDPヘッダを付加します。UDPヘッダとアプリケーションのデータを合わせてUDPデータグラムと呼ぶことがあります。
相手のアプリケーションが動作しているかどうかの確認などせずに、いきなりUDPデータグラムを送りつけて、アプリケーションのデータを送信します。TCPに比べると、余計な処理をしないので、データの転送効率がよいというメリットがあります。その反面、信頼性が高くないというデメリットがあります。UDPの場合は、送信したUDPデータグラムが相手のアプリケーションまできちんと届くかどうかはわかりません。また、データのサイズが大きいときには、アプリケーション側で適切なサイズに分割する必要があります。
UDPを利用する典型的なアプリケーションはIP電話です。IP電話の音声データは、IP電話で細かく分割します。IP電話の設定によって異なりますが、1秒間の音声データは50個に分割されるような設定が一般的です。IP電話で細かく分割した音声データにUDPヘッダを付加して転送します。
UDPヘッダフォーマット
UDPによるアプリケーション間のデータ転送を行うときに付加するUDPヘッダのフォーマットは次の図のようになります。
TCPに比べて、UDPヘッダのフォーマットはとてもシンプルで、ポート番号の情報のみと言っていいぐらいです。
TCP or UDP ?
アプリケーション間でデータを送受信するために、TCP/IPではトランスポート層のプロトコルにTCPとUDPの2種類用意しています。どちらも一番の目的は、適切なアプリケーションにデータを振り分けることです。
この共通した機能以外に、信頼性を確保する必要があればTCPを利用します。信頼性はあまり重視せずにアプリケーションのデータ転送の効率だけ求めるのであればUDPを利用します。アプリケーションごとにどのようにデータの転送をしたいかによって、TCPかUDPを使い分けています。
TCPを利用するようなアプリケーションは、送受信するデータのサイズが大きいアプリケーションです。データサイズが大きいと、分割しなければいけません。分割されたデータの一部が失われると、宛先でデータを組み立てることができないので信頼性が必要です。TCPを利用すれば、アプリケーション間のデータ転送において信頼性を確保することができます。
一方、UDPを利用するようなアプリケーションは、扱うデータのサイズが小さくて分割の必要がないものです。また、IP電話のようなリアルタイムのデータの転送が必要だったり、同じデータを一度の複数の宛先に送信する(ブロードキャストまたはマルチキャスト)ようなアプリケーションもUDPを利用することが多くなっています。
以下の表にTCPとUDPの特徴をまとめています。
プロトコル |
TCP |
UDP |
信頼性 |
高い |
高くない |
転送効率 |
よくない |
よい |
主な機能 |
アプリケーションへのデータの振り分け データの分割/組み立て 再送制御 フロー制御 |
アプリケーションへのデータの振り分け |
用途 |
データのサイズが大きく信頼性が必要なアプリケーションのデータの転送 |
リアルタイムのデータの転送 ブロードキャスト、マルチキャスト データのサイズが小さいアプリケーションのデータ転送 |
なお、大部分のアプリケーションはTCPを利用しています。私たちが現在利用するようなアプリケーションのデータのサイズは比較的大きく、分割することになるためTCPでの信頼性の確保が必要になるからです。また、TCPかUDPのどちらかだけではなく、両方組み合わせていることもあります。
以下の表に主なアプリケーションプロトコルがTCP/UDPのどちらを利用しているかをまとめています。
TCP |
HTTP(80)、HTTPS(443)、FTP(20/21)、SMTP(25)、SMTPs(465)、POP3(110)、POP3s(995)、IMAP4(143)、IMAP4s(993)、DNS(53) |
UDP |
TFTP(69)、DNS(53)、DHCP(67/68)、SNMP(161/162)、Syslog(514)、NTP(123) |
TCP/IP
- TCP/IPの階層
- IP(Internet Protocol) ~データを送り届ける~
- ICMP ~きちんとIPで転送できますか?~
- Ping ~きちんとデータは届きますか?~
- Windows OSのPingコマンド
- トレースルート ~データはどのルータを通っていますか?~
- tracertコマンド(Windows OS)
- ICMPリダイレクト
- トラブルはどこ? ~Pingとトレースルート~
- ARP ~IPアドレスとMACアドレスを対応付け~
- ARPフォーマット
- Gratuitous ARP(GARP)
- ポート番号 ~どのアプリケーションのデータなの?
- TCPの概要
- TCPの動作
- UDPの概要
- アプリケーションのデータが届くまでのまとめ
- DNS ~宛先IPアドレスを求める~
- nslookupコマンド ~DNSの名前解決の確認~
- DHCP ~IPアドレスを自動割り当て~
- Cisco IOS DHCPサーバの設定と確認コマンド
- Ciscoルータ DHCPサーバの設定例
- DHCPリレーエージェント
- DHCPリレーエージェントの設定例[Cisco]
- DHCPサーバ配置のまとめ
- TCP/IPの設定のまとめ
- ipconfigコマンド ~Windows OSのTCP/IP設定を確認~
- Linux(Ubuntu)でのTCP/IP設定の確認コマンド
- Webサイト
- HTMLとCSS ~Webページを作る~
- URL ~Webサイト(Webページ)のアドレス~
- HTTP ~HTMLファイルを転送する~
- Webアプリケーション ~Webブラウザだけあればいい~
- HTTP Cookie
- Webアプリケーションのセッション管理
- Webプロキシサーバ ~Webアクセスを代わりに~
- Webアクセスのまとめ
- 電子メール
- SMTP ~電子メール送信用プロトコル~
- POP3 ~メール受信用プロトコル~
- IMAP4 ~メールサーバ上でメールを管理~
- 電子メールのまとめ
- FTP ~代表的なファイル転送プロトコル~
- TFTP ~簡易的なファイル転送プロトコル~
- Windows10/11のTFTPクライアント
- ネットワークのトラブルの切り分け手順