2022.09.20
まとめ
ブログ
2022.09.20
インターネットの仕組みを調べるなかで、「TCP/IP」や「UDP」と呼ばれる通信プロトコルの名前を目にしたことがある方もいらっしゃるでしょう。
これらのプロトコルは、インターネット通信において標準的に採用されているものです。
本記事ではインターネットを支えるプロトコルの一つである「UDP」について、その特徴や代表的な利用用途を初心者の方にも分かりやすく解説します。
「UDP(User Datagram Protocol)」は、インターネット上で標準的に利用されている通信プロトコルの一種です。リアルタイム性が重視される音声通話や動画配信などで利用されています。
プロトコルとは、通信をおこなうコンピュータ同士の間で定められた「通信規格」のことです。コンピュータ同士が通信をおこなうためには、さまざまなプロトコルが必要になります。
たとえば通信をおこなうコンピュータ同士は、企業内ネットワークなど、通信をする回線に決められた方法で接続しなければなりません。またデータの送受信をおこなう際にも、通信相手の情報を正しく指定して、決められた形式でデータをまとめ、決められた方法で送信する必要があります。
UDPの通信では、まずデータを送信する側のコンピューターが、相手のコンピューターの状態にかかわらず一方的にデータを送り始めます。受信する側のコンピューターが正しくデータを受け取れたか確認する機能もないため、UDPは「コネクションレス型」のプロトコルと呼ばれています。
UDPは通信結果の確認をおこなわない、信頼性が低いプロトコルです。しかしこの確認のフェーズを持たないことで、データ送信時にかかる工数が削減され、効率的かつ高速にデータを送り出せるというメリットもあります。
このためUDPは、多少のデータ欠損があっても問題がない、かつデータをリアルタイムで送り続ける必要がある、動画配信やVoIPによる通話システムなどで広く利用されています。
なおデータを受信した側のコンピューターは、受信したデータに含まれている「チェックサム」と呼ばれる情報を用いて、データの欠損や改ざんの有無をチェックします。そして届けられたデータが正しいことを確認したのち、アプリケーションに引き渡して処理をおこないます。
IPネットワーク上で通信をおこなう場合、データは「IPパケット」と呼ばれる小さなデータに分割して送られます。IPパケットにはUDPの通信で必要となる、UDPヘッダと呼ばれる「届けられたIPパケットの基本情報」が付与されています。
UDPヘッダには、次の4つのデータが含まれます。
送信元ポートと宛先ポートは、届けられたデータを利用するアプリケーションの判定に利用されます。またデータ長は送られてきたデータの長さを知るためのものです。
そしてチェックサムは届けられたデータが欠損していたり、不正に書き換えられたりしていないことをチェックするために利用されます。
データを受け取ったコンピュータは、チェックサムを用いてデータを正しく受け取れたかを確認し、データを処理するアプリケーションに引き渡すのです。
UDPの通信はプロトコルの特性から、通信用途の向き・不向きがはっきりと分かれます。
ここでは、UDPがどのような通信に利用されているか解説します。
UDPは動画配信や音声通話など、リアルタイムにデータを送る必要のある通信に利用されています。
リアルタイム性が求められる通信の場合、信頼性よりもデータ転送の速度が必要になります。動画や音声の場合、転送するデータの一部を失うと音声が途切れたり動画が乱れたりするなどの影響が出ますが、そうした映像・音声の乱れよりもデータを送り続けることの方が重要なのです。
動画配信や音声通話では、失ったデータを再送して正しく再生するよりも、そのデータを諦めて最新のデータを送り続けることに重点を置いているため、UDPがメリットを発揮します。
コンピュータの名前をIPアドレスに変換する「DNS」や、ネットワークの中から自動的にIPアドレスを割り当てる「DHCP」などは、送受信されるデータが小さいため一度のデータ通信で送信を完了できます。
こうしたデータをやり取りする際、毎回データが通信相手まで届けられたことまで確認していると、データ転送の効率が悪くなります。そこで、一度に送るデータ量が小さい通信でも、即応答が欲しいことからUDPが利用されているのです。
またIPを持つさまざまな機器の作動に問題がないか監視するプロトコル「SNMP」でも、一度に監視する機器が多くなって通信の負担がかかることを防ぐためにUDPが使用されています。
UDPでは、一度に複数の相手にデータを送信する「マルチキャスト通信」や「ブロードキャスト通信」をおこなえます。
これらの通信の場合、個々の通信相手に対する送信状況をいちいち確認していると、他の通信相手とのデータ送受信に影響が出かねません。信頼性は低くとも、相手の状態を確認せず多くの通信相手にデータを送り続けられることから、UDPが向いています。
UDPは、同じようにインターネット通信で標準的に使われている「TCP」と比較されることが多いです。この2つのプロトコルは、共に通信を制御するためのプロトコルであり、その特徴が対照的な設計になっています。
TCPとUDPの大きな違いは、TCPがコネクション型の通信であるのに対し、UDPはコネクションレス型の通信であるという点です。コネクションとは、データを送信する前に、コンピュータ同士が通信をおこなって「データを送り合う準備をする」ことを意味します。
具体的には、コンピュータ同士がお互いにコネクションの確立要求を出し合い、データ送受信の準備をおこないます。以下の例は、通信を開始したいコンピュータAから、通信相手であるコンピュータBに対して、コネクションを確立する場合の流れです。
要するに、TCPの通信では正確性を重視して「データの送受信について逐一確認しあう」のに対し、UDPの通信では速度を重視して「相手の状況を確認しない」といった違いが挙げられるのです。
UDPやTCPの通信では、ポートと呼ばれる、アプリケーションごとに用意された窓口のような識別子が用意されています。ポートにはそれぞれ番号が振られており、アプリケーションが通信するために重要な役割を持っています。
ポート番号は、0から65535までの数字で表される番号です。中でも0から1023までのポート番号は「ウェルノウンポート」と呼ばれており、IANAという管理団体によって管理されています。
「ウェルノウン」という名前の通り、IPネットワーク上の通信でよく知られる、代表的なプロトコルが使用するために予約されています。
ウェルノウンポート自体は、必ず守らなければならない規則ではありません。セキュリティ上の問題など、システムの都合によって変更も可能です。
しかしウェルノウンポートを利用すれば、システムがどのような機能を持っているか予測できたり、特別な設定なしでアプリケーションを動作させたりできます。そのため、一般的にはウェルノウンポートが使われています。
以下の表に、UDPプロトコルが利用されているサービスのうち、代表的なウェルノウンポートをまとめました。
ポート番号 |
サービス名 |
利用用途 |
43 |
WHOIS |
ドメインの所有者に関する情報を参照する |
53 |
DNS |
ホームページのURLなどに含まれるホスト名から、IPアドレスを検索する |
67,68 |
DHCP |
コンピュータのIPアドレスを設定するために利用する |
123 |
NTP |
コンピュータが時刻合わせのためにタイムサーバーに接続する際に利用する |
「Twilio(トゥイリオ)」は世の中にあるさまざまなコミュニケーションチャネルを、WEB・モバイルアプリケーションと繋ぐクラウドコミュニケーションAPIです。
電話機能やビデオ機能を自社で一から開発するのには多大な工数がかかります。通信の暗号化といったセキュリティ対策など、考慮せねばならない点も多く、そのために実装を諦めてしまう企業も少なくありません。
しかしTwilioと連携すれば、それらの工数をすべてTwilio側が担ってくれます。開発者はただ数行のコードを自社プログラムに書き加えるだけで、さまざまなコミュニケーション機能を簡単に実装できるのです。
まとめ
こちらの記事では、インターネットで標準的に利用されているUDPプロトコルについて、その特徴と通信の仕組み、利用されている具体的な通信を紹介しました。
VoIPによる音声通話や動画配信などの大容量データの転送サービスの増加に伴い、UDP通信は今後さらに利用される機会が増えていく可能性を持っています。
UDP通信の仕組みを正しく理解して、適切な用途で利用できるようにしましょう。
KDDIウェブコミュニケーションズは、常に「開発者目線」を大切にしており、ブログ記事がお役に立てれば幸いでございます。
2022.04.18
2022.05.18
2022.07.01
2022.02.17
2022.10.11
2022.09.20
2022.08.23
2022.10.11
2022.09.20
2022.08.23
2022.07.15