このページの本文へ

前へ 1 2 次へ

ネットワークの常識・非常識 第5回

トランスポート層のプロトコルを理解しよう

UDPのパケットは、途中で紛失してしまうことがある?

2009年09月28日 06時00分更新

文● 花澤 秀幸/東陽テクニカ

  • この記事をはてなブックマークに追加
  • 本文印刷

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 メッセージの再送

 フレーム#1で「INVITE」を表示されているメッセージが送信されているが、これはSIPサーバに転送されて両側のLANをつなぐ「ネットワーククラウド」に入る(フレーム#2)が、ここで消滅して右側の電話機には届いていない。このメッセージに対する応答が返ってこないので、左側の電話機は再送している(フレーム#3)。

 次にフレーム#9に着目していただきたい。右側の電話機は「180 Ringing」と表示されるメッセージを送信しているが、これも途中の「ネットワーククラウド1」で消滅している。しかし、このメッセージは再送されていない。相手に確実に受信されることが必要とされないメッセージなのだ。

 UDPはデータが相手に確実に届くことを保証しないプロトコルなので、データが途中で消失することが起こりうる。そして、SIPでも信頼性が必要とされるメッセージに対し、それを保証していることが確認できただろう。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事