UDPの特徴は?
UDPはコネクションレス型のプロトコルである。また、UDPとその上のデータを移動させてくれるIPもコネクションレス型のプロトコルである。そのため、たとえばルータがふくそう状態になるなどして、パケットが廃棄されるようなことが起こっても、IPやその上のUDPはその保証を行なわない。つまりUDP上で運ばれているデータは、失われる可能性があるのだ。
信頼性を確保しないというのが、UDPの特徴といえるだろう。この特徴は一見よくないように見えるが、必ずしもそうともいい切れない。
まず、TCPは多くの機能を持っているので、それなりにリソースを消費するが、UDPは軽い。リソースの少ないデバイスがファイル転送を行なう際、TFTP(Trivial File Transfer Protocol)を用いることがあるが、これはトランスポート層にUDPを用いている。
また、TCPの持っている機能に余計なことをしてほしくない場合、UDPが用いられることもある。たとえば、音声や映像のデータは、すべてのデータが確実に送信されるより、少しでも早くデータが届くことが重要だ。TCPでは何らかの理由でパケットロスが発生したとすれば、再送処理が発生することは先ほど述べた通りだ。この再送処理にはある程度時間を要するので、再送されたデータが届いたときにはすでに不要なデータとなっている可能性がある。また、TCPの再送処理のためデータの送信が滞ることもある。
とはいえ、UDPは基本的に何もしてくれない。いい換えると、UDPを用いるアプリケーションは、ネットワーク上でのふるまいを決めることができる。もし、UDPパケットの上のデータが途中で失われたとしても、それは差し支えのないデータということだろう。また、差し支えのあるデータなら、アプリケーションがそれを保証すべきでもある。
図1をご覧いただきたい。これは図中左側の電話機から右側の電話機に電話をかけたとき、送受信されたデータの様子である。SIP(SessionInitiation Protocol)というUDP上のアプリケーションプロトコルが用いられている。
フレーム#1で「INVITE」を表示されているメッセージが送信されているが、これはSIPサーバに転送されて両側のLANをつなぐ「ネットワーククラウド」に入る(フレーム#2)が、ここで消滅して右側の電話機には届いていない。このメッセージに対する応答が返ってこないので、左側の電話機は再送している(フレーム#3)。
次にフレーム#9に着目していただきたい。右側の電話機は「180 Ringing」と表示されるメッセージを送信しているが、これも途中の「ネットワーククラウド1」で消滅している。しかし、このメッセージは再送されていない。相手に確実に受信されることが必要とされないメッセージなのだ。
UDPはデータが相手に確実に届くことを保証しないプロトコルなので、データが途中で消失することが起こりうる。そして、SIPでも信頼性が必要とされるメッセージに対し、それを保証していることが確認できただろう。
この連載の記事
-
第7回
ネットワーク
ドメイン名は第三者に詐称されるのですか? -
第6回
ネットワーク
WAN経由だとファイル共有が遅くなるって本当? -
第4回
ネットワーク
Webサーバは80番ポート以外使ってはいけないの? -
第3回
ネットワーク
ネットワークに流れるデータは見えますか? -
第2回
ネットワーク
同じIPアドレスは複数のPCで使えるの? -
第1回
ネットワーク
なぜネットワークはループを作ってはいけないの? -
ネットワーク
ネットワークの常識・非常識 - この連載の一覧へ