連載第9回
TCP/IPアレルギー撲滅ドリル【下位レイヤ編】

データの過保護を
お望みでないならUDPで

福永勇二
インタラクティブリサーチ
2005/1/29


素朴な疑問
確実だけれど……
1 確かなTCPのどこがいけないのでしょうか?
シンプル&きびきびを求めて
2 TCPが犠牲にしたものとは?
3 TCP以外にはどんな方法がありますか?
UDPという選択肢
4 UDPを使うのはどんなアプリですか?
5 じゃあUDPとIPにはどんな違いがあるの?
6 ちなみにUDPパケットはどんな構造?
UDPの弱みを知っておく
7 UDPならではの注意点はありますか?
 UDPという選択肢

UDPを使うのはどんなアプリですか?

 UDPを利用する代表的アプリケーションの1つは、音楽や動画のストリーミング配信です。こういったアプリケーションはリアルタイムにデータを受け取らなければならないので、通信処理の途中でデータをため込んでしまうTCPとはあまり相性が良くありません。その点、UDPは余計なことをせずに、どんどんデータを渡してくれますので、リアルタイムに音楽や動画を再生しやすいのです。

 ではデータが抜けたり誤りがあった場合はどうするのでしょうか? 音楽や動画の場合、まず、音や映像がどんどん進んでゆくため、多少抜けたり誤りがあっても人間には気付きにくいという特性があります。さらに正常に受け取れなかったデータは、その前後のデータを基にそれらしいデータを予測して作り出し、不自然ではないようにつなぐこともできるので、そんなに大きな影響は出ません。こうしてみると、通信の正確性に欠けるというUDPの弱点は、ストリーミング配信では大きな問題にはならないことが分かると思います。

 もう1つUDPを使う代表的なプログラムにDNS(参照:覗いてみればディープな世界 DNS)があります。DNSサーバはたくさんの問い合わせを処理する必要があるため、通信処理はなるべくシンプルであることが求められます。通信開始や終了の手続きが不要で、また再送処理を行わないUDPはこの目的にかなっています。こんな理由から、DNSの問い合わせには原則としてUDPを使います。なお状況によっては問い合わせにTCPを使用することもあります。

じゃあUDPとIPにはどんな違いがあるの?

 なかなかスルドイ質問です。UDPとIPの間には、実はあまり差がありません。IPの通信機能をプログラムから直接利用しようと思うと面倒が多いので、ちょっと工夫を凝らして使いやすくしたものがUDPといってもいいくらいです。具体的には、IPにはないポート番号という考え方がUDPには加わっています。そのほかの通信の信頼性などはIPのそれと同等です。そのためUDPを使うときには、それが本当にUDPに向いているか、十分に注意する必要があります。

ちなみにUDPパケットはどんな構造?

 UDPのパケットは図1のようにとてもシンプルです。ここまでシンプルなのは、先にも出たとおり、多くはIPの機能をそのまま使っているからです。

図1 UDPパケットの構造。とてもシンプル

 図のピンク色の部分は、通信をコントロールするための情報、いわゆるヘッダです。またブルーの部分が実際に送ろうとするデータが入ります。IPにあったオプションはありません。

 ヘッダには4つのフィールドがあり、それぞれ2バイトの長さがあります。またデータの長さは任意で、不要ならばなくても構いません。

 UDPの弱みを知っておく

UDPならではの注意点はありますか?

 UDPには通信を始める手続きがないため、どっちが先に通信を始めようとしたのかをはっきり見定めるのがとても難しいプロトコルです。

 通信を監視して外部からの攻撃を防ぐファイアウォールという装置では、例えばTCPなら「外部から通信を開始した(=外部から接続しようとした)ときは接続を許可しない」といったルールを決めて内部を守ります。こうしておけば、外部からの接続(侵入)は防ぐけど、内部の人が外部につなぐことは許可できるからです。

 しかしUDPはどちらから通信を始めたか分からないため、このスタイルでルールを決めることができません。そのため普通は「どっちが通信を始めたかを問わず一切禁止」といった形のルールを決めることになります。

 こういった事情から、会社などではネットワークの管理方針として、UDPを使った通信を許可していない場合が少なからずあります。このようにUDPにはTCPと違っていろんな制約がある可能性が高いことも知っておくとよいでしょう。

確実だけど……

TCP/IPアレルギー撲滅ドリル【下位レイヤ編】(9)目次
1  確実だけど……
2  UDPという選択肢

関連リンク
  連載:TCP/IPアレルギー撲滅ドリル【超実践編】(上位レイヤ編)
連載:インターネット・プロトコル詳説

連載:ルータの仕組みを学ぼう
ホストのネット接続は正しく行われているか? 〜netstatによるネットワーク設定の確認〜


「Master of IP Network総合インデックス」


Master of IP Network フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Master of IP Network 記事ランキング

本日 月間