ユーザーデータグラムプロトコルは、ハンス・クリスチャン・アンデルセンの『みにくいアヒルの子』のような存在です。長らく無視され嘲笑されていた地味なプロトコルも、インターネット速度の向上に伴い、華やかなオリジナルハイパーメディアアプリの伝達手段として驚くべき支持を得ました。迅速な情報伝達が求められるパッケージの定番設計として、伝送制御プロトコルに代わる存在となりました。
インターネットプロトコル (IP) は、グリッド上でUDPペイロードを送信する基盤として機能します。これにより、送信側と受信側の間で事前の多方向ハンドシェイクが不要となり、エンドツーエンドのリンクも必要ありません。
ネットワーク関連のオーバーヘッド、故障チェック、誤送データの再送信が排除されるため、情報の認証や修正を求めない即時性や高性能が重視されるアプリに適しています。必要に応じ、アプリレベルでの確認が可能です。
リモートプロシージャコール (RPC) アプリはUDPを利用することが多いですが、TCP上に構築することも可能です。自社の整合性を保つため、RPCアプリはユーザーデータグラムプロトコルの定義を採用している点に留意する必要があります。
UDPは、ネットワークシステム間でデータを送信する基本設計であり、TCPと異なり、間接的な接続設定を省略してパケット(正確にはペイロード)を送信先へ直接届けます。送信順序の指定や到着確認も行いません。
情報の完全性確認にはチェックサムが、データ用途の識別にはポート番号が利用され、送信前のハンドシェイクは不要です。
ただし、UDPでは受信時にデータの乱れや欠落が生じる可能性があるため、機密情報の送信には向きません。迅速な情報伝達が求められる場合に採用されます。
UDPヘッダは、ペイロードをカプセル化するために4つのフィールド、計8バイトで構成されます。
UDPヘッダの構成要素は以下の通りです:
送信装置側のポートを示します。送信側が応答する必要がない場合、値はゼロに設定されます。
データを受信する装置のポートを示し、UDPのポート番号は0から65535まで割り当てられます。
UDPヘッダとペイロードデータを構成するバイト数を示します。基礎となるIP規定により、長さフィールドの最大値が決定されます。
受信装置がパケットのヘッダとペイロードの整合性を確認するための機能です。IPv4では任意ですが、IPv6では必須となっています.
仕組みを理解した上で、UDPの活用事例を見ていきます.
低遅延の特性から、ゲーム、音声、映像などのネットワークアプリで大きな効果を発揮します。これらの用途では多少のデータ損失が目立ちにくいため、基本的にデータを欠落なく送信します。場合によっては、音声や映像の品質向上のため、順方向誤り訂正技術と併用されることもあります.
パケット交換機能により、UDPはマルチキャストにも適しています。『一対多』のアプリでは、個別の接続を確立せずに複数の受信装置へ同時送信が可能です。各データグラムは複製され、一つのマルチキャストアドレスに送られ、そのアドレス宛に全ての受信装置へ届けられます。この方式は通知の配信、システム状態の評価、遠隔学習などでの映像・音声伝送に有効です.
非常に信頼性の高いデータ転送が必要な場合に利用されます。欠落パケットの再送や、受信パケットの正しい並び替えを処理する仕組みをUDP上に構築することで、TCPよりも大容量ファイルの転送速度向上が期待できます.
UDPはOSI参照モデルの第4層(トランスポート層)に位置しており、TFTP、RTSP、SNMPなどの上位プロトコルと連携してデータ伝送機能を提供します.
信頼性よりも速度が重視される場面に適しており、迅速なデータ取得が求められ、多少のデータ欠落が許容される場合に利用されます.
信頼性のあるデータ転送が必要なアプリでも、UDPを利用し独自の対策を講じる場合があります。これにより、定型パケットに頼らず、誤った情報や乱れた情報に対する対応方法を利用側が選べるメリットがあります.
通常はTCPでデータ転送を行いますが、一部サービスではUDPを選択できる場合もあります。これは、VPNが高精細映像の配信に利用され、TCPの遅延問題への対策が必要となるためです.
ウェブブラウザにURLを入力すると、該当ドメインのIPアドレスが検索され、その後サーバへGETリクエストが送信されます。この処理が数ミリ秒以上かかると利用者が離れる可能性があるため、DNSインターフェースは迅速にウェブサイトを取得するために利用されます.
UDPには情報認証やネットワーク制御がないため、以下のような送信上の問題が生じることがあります:
伝送制御プロトコル (TCP) とユーザーデータグラムプロトコル (UDP) は、IPスイート内の主要なプロトコルの一つです.
パケットの断片化、配信信頼性、再構成などの面で優れていることから、TCPはインターネット接続の標準として広く採用されています。しかし、その分、データのオーバーヘッドや遅延が増加します.
TCPでは情報転送前に仮想回線の確立が必要ですが、UDPは接続レスのプロトコルです。パケット単位の通信により、帯域オーバーヘッドと遅延が大幅に削減され、送信者と受信者の間で複数経路を辿ることもあるため、パケットの順序が乱れる可能性があります.
UDPの特徴は以下の通りです:
TCPの特徴は以下の通りです:
検証機構やエンドツーエンドの接続がないため、UDPは様々なDDoS攻撃の標的となりやすいです。攻撃者は任意のIPアドレスを偽装したパケットを用いて、アプリに直接アクセスを試みることがあります.
これは、TCPでは送信前に受信側からの応答が必要である点と異なります.
UDPを狙ったDDoS攻撃の例は以下の通りです:
正当な送信元の確認ができないことを利用し、大量の偽装UDPパケットを1台のサーバの複数ポートへ送信します。サーバに過負荷がかかり、ICMP「宛先到達不能」応答で返答されます.
攻撃者は一般的なネットワーク層攻撃として、偽装UDPパケットを大量に送信しターゲットネットワークを圧迫する手法を頻繁に用います。ネットワークの動的な容量増加により、これらのDDoS攻撃に対抗する必要があります.
DNSアンプリフィケーション攻撃では、攻撃者が被害者のIPに対応する偽装IP情報を用い、被害者のDNSリゾルバにUDPパケットを送信します。DNSサーバはその応答を被害者に返し、リクエストに対して応答サイズが著しく大きくなるよう仕組まれています.
複数の利用者が異なるDNSリゾルバを利用することで、攻撃対象システムが圧倒される可能性があります。アンプリフィケーションにより、27GbpsのDDoS攻撃が300Gbpsに拡大する場合もあります.
サーバ上の開放ポートを確認するため、攻撃者はUDPパケットを送信します。サーバがICMP「宛先到達不能」応答を返す場合、そのポートは閉じていると判断され、応答がない場合は開放とみなされ攻撃が進められます.
UDP疑似ヘッダの詳細
アプリにUDPを導入する前に、最適な利用方法を検討する必要があります。ユニキャストUDPによるサービス提供の設計仕様は、UDP利用要求などの資料に記されています.
TCPのような機能豊富な伝送方式を利用し、様々なインターネット経路条件に耐えられる設計とする必要があります.
帯域幅、伝送遅延、パケット順序の入れ替わり、混雑レベル、損失率、対応可能なメッセージサイズは経路ごとに大きく異なり、同一経路でも時間と共に変化するため、特定の経路に依存しない設計が求められます.
そのため、各種経路条件下でも安定してパケットが届けられる手法を採用する必要があります。現在の通信経路を綿密に調査することで、持続的かつ公平な伝送動作が確立され、再度混雑が発生しても対応が容易となります.
UDP設定では伝送速度とトラフィック混雑の制御が不可欠です。混雑管理がない場合、UDPデータグラムは制御された速度で送信先に届けなければなりません.
全UDPトラフィックは送信先毎に適切に管理され、多数のワーカープロセスや複数ソケットを使用するシステムでは混雑状況に留意する必要があります.
大容量UDP転送では、TCPフレンドリーなレート制御 (TFRC) やその他の帯域活用技術を用いるべきです.
RTT毎に複数のUDPデータグラムを交信するアプリでは、TFRC、TCPのウィンドウ制御、または他の混雑管理対応ソフトを採用する必要があります.
TFRCの混雑制御と公平性はIETF準拠です。大容量転送アプリでは、TFRCやTCP型のウィンドウ制御による混雑管理が重要です.
パケット損失が許容範囲内に収まるよう監視し、同一経路でのTCPフローの平均スループットがUDPフローと大きく変わらない場合、許容損失条件が満たされると判断します.
また、混雑管理のない大容量転送アプリは、予約済みの経路容量を利用して送信する場合がありますが、これは限定的なネットワーク環境下でのみ安全です。未整備な経路にUDPトラフィックが流入すると他の通信に影響し、混雑崩壊を引き起こす恐れがあります.
大容量でないUDP設定では、RTTを測定しRTT毎に1つのデータグラムを送信するべきです。3秒に1つを上限とし、損失時には再送タイマーを調整します.
少量のUDPデータグラムを交信するアプリでTFRCなどの混雑制御を導入しても、得られる効果は限定的であり、これらの手法は主に長時間の伝送で効果を発揮します.
そのため、少数のデータグラムを送信するアプリは送信方法を制御し、RTTあたりの送信数を1未満に抑えることが望ましいです。各送信先ごとにRTTを推定してください.
UDPの導入には、ファイアウォール、侵入検知・防止システム、ネットワークアクセス制御、スパムフィルターなどのセキュリティ対策が必要です。ファイアウォールはネットワークを隔離し基本的防御を提供し、IDSは侵入者を検知して警告を発します。IPSはこれらの機能を併せ持ち侵入を防ぎますが、ITコストが増大する可能性もあります。NACは基準を満たす端末のみがアクセス可能となり、スパムフィルターはパターン分析やポリシーに基づき不要なメールを遮断します.
複数クラウドやクラウドネイティブ環境におけるAPIやウェブアプリ全体を、前述の攻撃から守るため、Wallarmは最高水準のAPI Security PlatformとWAAP(次世代WAF)を兼ね備えた唯一のソリューションです。以下のような攻撃対策が可能です:
Wallarmは、世界各地のスクラブセンターというクラウドベースのクラスターを通じ、不正なトラフィックを取り除くことで、UDPフラッドやDNSアンプリフィケーション攻撃を防ぎます。不正なリクエストは遮断し、正当なユーザートラフィックはそのまま通過させます.
Wallarmは、存在しないポートを狙うなどの有害なUDPトラフィックをサイト到達前に遮断します。また、訪問者識別技術により、人間、検索エンジン、ボット、さらには悪意あるアクセスを識別可能です.
QUIC (Quick UDP Internet Connections) - Google
Use UDP with network load balancers - Google
User Datagram Protocol - Github topics
最新情報を購読