UDP (User Datagram Protocol) とは何ですか?
UDPとは、ゲーム、動画ストリーミング、Domain Name System (DNS)の検索など、時間的制約のあるアプリケーション向けの通信プロトコルであるUser Datagram Protocolを指します。UDPは送信前に対象デバイスとの安定した接続を必要としないため、通信速度を大幅に向上させることができます。UDPは、従来のプロトコルにおける時間のかかる接続確立プロセスを省略することで、データ転送を高速化します。
しかし、UDPの速度上の利点には、いくつかの潜在的なリスクが伴います。UDPでは、データが送信元から宛先へ送信される際にパケット損失が発生する可能性があります。さらに、コネクションレスという性質のため、UDPはハッカーが分散型サービス拒否(DDoS)攻撃を仕掛けるための容易な標的となります。
一般に、Transmission Control Protocol (TCP)などのプロトコルでは、受信側はデータを受信するだけでなく、データ送信が開始される前に、受信準備が整っていることを確認する必要があります。しかし、UDPは送信を開始する前にこの確認応答を待たないため、データ送信上の問題が発生し、DDoS攻撃者に攻撃の機会を与える可能性があります。
UDPはどのように機能しますか?
他のネットワークプロトコルと比べると、UDPははるかに単純です。宛先のコンピューターを特定し、データパケット(「データグラム」とも呼ばれます)を送信するだけです。UDPは、パケットが順番どおりに到着することを保証せず、宛先に到達したかどうかの確認も行いません。
UDPは、データの整合性を確保するためにチェックサムを使用し、送信元と宛先でのデータ用途を区別するためにポート番号を使用しますが、強制的なハンドシェイク機構がないため、この単純さがいくつかの問題を引き起こします。UDPを使用するプログラムは、基盤となるネットワークの不安定さの影響を受けます。
その結果、データは正常に伝送される場合もあれば、失われる場合もあります。また、パケットが到着する順序は制御されないため、最終的な宛先で表示されるデータが途切れたり、順不同になったり、空白になったりすることがあります。
ただし、エラーの検出と訂正が必要でなければ、通常、これらの問題は軽微です。これが、UDPが動画アプリケーションでよく使用される理由の1つです。時折データの損失やエラーが発生しても、動画信号を宛先へ迅速に届けることが依然として最優先されます。
UDPとTCPの違い
データがある場所から別の場所へ送信される際、ヘッダーはデバイスにデータをどのように処理すべきかを指示します。UDPのヘッダーは単純で、固定の8 bytesですが、TCPのヘッダーははるかに複雑で、長さは20~60 bytesです。UDPのヘッダーには、16-bitの送信元ポート番号、16-bitの宛先ポート番号、16-bitの長さ、16-bitのチェックサムが含まれており、データグラムを宛先へ導きます。ヘッダーには、16-bitの送信元ポート番号、16-bitの宛先ポート番号、16-bitの長さ、16-bitのチェックサムが含まれており、データグラムを宛先へ導きます。データ送信時に、送信元ポートと宛先ポート間の接続を認証する必要はありません。
これに対して、TCPではデータを送信する前にハンドシェイクが必要であり、このプロセスによってTCPはUDPよりも高い信頼性を実現しています。TCP通信では、宛先と送信元の間に正式な接続が確立されて初めてデータを伝送できます。一方、UDPでは接続を確立する必要がないため、データを直ちに送信できます。
もう1つの違いは、TCPは送信前にパケットの順序を確認し、パケットが時間どおりに到着することを保証する点です。パケットが到着しなかった場合、TCPは自動的に再送を要求します。一方、UDPは確認応答、チェック、再送を一切行いません。
アプリケーションがUDPの使用を選択した場合、ユーザーは、エラーが発生する可能性、データが到着しない可能性、またはデータが再送される可能性があるというリスクを受け入れます。この選択による利点は、伝送速度が速くなることです。データ損失の原因が必ずしもUDPにあるとは限りません。そのヘッダー情報は、データを指定された場所に到達させるのに十分であり、データグラムが送信される順序も基本的に正しく保つことができます。
ただし、ほとんどのネットワークルーターはパケットの到着を確認したり順序付けしたりできないため、パケットの損失や重複が発生する可能性があります。TCPは、データが正しい順序で宛先に到達するようにすることで、これを補います。

UDPの応用
UDPは通常、速度が不可欠である一方、少量のデータ損失が許容される通信シナリオで使用されます。音声や動画などのリアルタイムストリーミングメディア伝送は、100パーセントの正確性よりも適時性が求められるため、代表的な用途です。たとえば、多くのVoice over Internet Protocol(VoIP)サービスでは、遅延を低減して通話をよりスムーズにできるため、音質が多少犠牲になる場合があってもUDPを使用しています。
同様に、UDPはオンラインゲームでも広く使用されています。ゲーマーにとっては、時折一部のデータが失われることよりも、応答の速さの方が重要です。さらに、このようなサービスが効果的に機能するには高速な応答が必要なため、DNSサーバーもクエリの速度と効率を高めるためにUDPを利用しています。
UDPはDDoS攻撃でどのように使用されますか?
UDP(User Datagram Protocol)は、高速なリアルタイムデータ転送が必要な場合に優れていますが、受信側がDDoS攻撃に対してより脆弱になります。
DDoS攻撃では、標的のウェブサイトに大量のパケットが送りつけられます。問題が発生するたびに、標的のサーバーは応答としてICMPパケットを送信しなければなりません。サーバーはこれほど多くのリクエストを処理できないため、最終的には詰まった下水道のように処理能力を超えてしまいます。その結果、正当なリクエストが通らなくなり、実際のユーザーや顧客がサイトに正常にアクセスできなくなります。
UDPはコネクションレスであるため、特にDDoS攻撃に対して脆弱です。送信元とターゲットの間でハンドシェイク接続を確立する必要がないため、攻撃者は妨げられることなく大量のパケットをターゲットサーバーに送信できます。
ただし、組織はICMPパケットの応答レートを制限することで、この攻撃リスクを軽減できます。UDPトラフィックにデータセンターネットワークを利用することで、偽装されたリクエストによって個々のサーバーが過負荷になるのを防ぐことができます。





