(メモ) UPnP(Universal Plug and Play)
2006年08月10日01:29
第21回 UPnP(Universal Plug and Play) 佐藤晃洋 2002/1/10
新年第1回目のテーマは『UPnP』。この言葉にはまだあまりなじみのない方も多いと思われるが、実はWindows XPが搭載する目玉機能の一つだったりする。昨年末には同機能の実装ミスに起因するセキュリティホールが発見され、スポーツ新聞などでも大きく報道されたことから、名前だけは聞いたことがあるものの、実際何をするものなのかはよくわからない、という人も多いのではないだろうか。そこで今回はこの『UPnP』とは何なのかについて探ってみたい。
■UPnP=PnPのネットワーク版
『UPnP』という字面を見てまず思いつくのは、Windowsではもはや当たり前の技術となっている『PnP(Plug and Play)』との類似性だ。PnPといえば、PCに新たに周辺機器をつないだ際にそれを自動認識し、すぐにOSレベルで使用可能にするための技術だが、実はUPnPは基本的にPnPをネットワークレベルに拡張したものとしてMicrosoftが提唱した概念なのだ。
UPnPは基本的にTCP/IPベースで運用され、UPnP対応の機器がLANに接続されるとその機器はDHCPにより自動的にIPアドレスを取得し(DHCPサーバがない場合は機器が自動的にIPアドレスを決定)、LAN上に接続されているすべての機器に対して、新たな機器が接続されたことやその機能内容をマルチキャストで通知し、その後も一定時間ごとに自らの存在をLANに通知することになっている。そして他のUPnP対応機器はそのメッセージを受け取るとそれを記憶し、もしその機器から何か他の機器をコントロールする必要が生じた場合は、その記憶しているリストを元にコントロールを行うことになっている。
またUPnPでは、それぞれの機器がどのような機能を持っているかといった情報や、ある機器が他の機器をコントロールするためのメッセージなどは原則としてXMLベースでやり取りされることになっている。その上、機器同士の通信は原則として全てHTTPプロトコルをベースに行うこととなっているので、非常に現在のInternetとの親和性が高く、また何かの特許に抵触したり、特定の言語に依存する心配がないという利点もある。
事実、UPnPに似た技術に、Sun Microsystemsが提唱した『Jini』があるが、こちらは基本的にJava言語をベースとした技術であり、またその利用にはSunとの間のライセンス契約などが必要になることから、家電メーカーなどから敬遠され、現在はあまりその話題を聞かなくなっている。
ちなみにUPnPはPCに限った技術ではなく、その対象には家電や冷暖房機器など広い範囲の製品が含まれている。だからMicrosoftが挙げている例には「インターネット接続の共有を自動的に設定する」「新しいプリンタをLANに接続するとすぐにすべてのPCからそのプリンタが利用できる」といったPC寄りの例だけでなく、「家の中のある時計の時刻を変更すると、家中の時計の時刻がそれに同期して変更される」「目覚まし時計の鳴る時刻を変更すると、それに合わせてエアコンのタイマー設定の時刻が自動的に調整される」などというPCを介さない形の例も挙げられている。
■UPnPとNATの微妙な関係
さて、UPnPの理想はわかったが、とりあえず現段階でUPnP対応の機器として登場が予定されているのは「UPnP対応のブロードバンドルータ」だ。いったいブロードバンドルータのどこにUPnPに対応する必要のある機能があるのだろうか。これには一般的なブロードバンドルータが必ずといっていいほど装備しているNAT機能や、ファイアウォール機能との関係がからんでくる。
上記でUPnPでは「XMLベースのメッセージ」を「HTTPベースのプロトコル」で通信する、ということを書いたが、これはUPnP機器同士が接続を開始する際の取り決めの話であって、実際に通信が確立した後にどのポート番号でどのような通信を行うかはそれぞれの機器によって異なる。また通信相手は必ずしもLAN内部の相手とは限らず、場合によってはファイアウォールを超えて外部の機器と通信をしなければならないことだってある。そこでUPnPでは、LAN内部の機器が必要に応じてルータやファイアウォールに対して、ポートの開閉や外部からの接続要求のマッピングなどを要求できるようにする手順を用意しており、この手順に対応したのが「UPnP対応のブロードバンドルータ」というわけだ。
もちろんWindows XPの「インターネット接続共有(ICS)」やファイアウォール機能はこのUPnPに対応しており、WinXP機をインターネット接続のゲートウェイとして使用している場合、LAN内部のPCはゲートウェイとなるWinXP機とUPnPを利用して通信を行うことでインターネット接続に必要な情報を入手することが出来るようになっている。
また、アプリケーションレベルでも実はこの機能を既にフル活用しているソフトがある。「Windows Messenger」がそれだ。Windows Messengerやその前身にあたるNetMeetingでは、ホワイトボードの共有やファイル転送機能、また音声や動画によるチャット機能など豊富な機能が利用可能だが、これらの機能の多くはこれまで、NATを利用したLAN内部のPCでは利用が難しく、どうしても利用しようとすると面倒な設定が必要な上、ファイアウォールの利用が困難になるなど、セキュリティ上の危険も存在した。
そこでWindows Messengerの最新版ではUPnPを活用し、NATルータに対して現在ルータが持っているグローバルIPアドレスを確認したり、動的にポートマッピングを設定するよう要求したりすることで、NAT内部の環境でもファイアウォールを利用しつつ面倒な設定なしにすべての機能を利用できるようにしたのだ。
しかしこのUPnPによるルータやファイアウォールのコントロール手順は、昨年11月に成立したばかりの規格であり、実際にUPnP対応のブロードバンドルータが登場してくるのはまだしばらく先の話。ましてUPnP対応の家電などが登場するのはもっと先ということで、せっかくの概念もメリットを享受できるようになるにはまだ時間がかかりそう。もちろんメーカーには早く対応製品を出すようにがんばって欲しいが、急ぎすぎるあまり、今回のようなセキュリティホール騒動が起きては意味がないわけで、ユーザーとしては頭が痛いところだ。
http://journal.mycom.co.jp/series/ityougo/021/
新年第1回目のテーマは『UPnP』。この言葉にはまだあまりなじみのない方も多いと思われるが、実はWindows XPが搭載する目玉機能の一つだったりする。昨年末には同機能の実装ミスに起因するセキュリティホールが発見され、スポーツ新聞などでも大きく報道されたことから、名前だけは聞いたことがあるものの、実際何をするものなのかはよくわからない、という人も多いのではないだろうか。そこで今回はこの『UPnP』とは何なのかについて探ってみたい。
■UPnP=PnPのネットワーク版
『UPnP』という字面を見てまず思いつくのは、Windowsではもはや当たり前の技術となっている『PnP(Plug and Play)』との類似性だ。PnPといえば、PCに新たに周辺機器をつないだ際にそれを自動認識し、すぐにOSレベルで使用可能にするための技術だが、実はUPnPは基本的にPnPをネットワークレベルに拡張したものとしてMicrosoftが提唱した概念なのだ。
UPnPは基本的にTCP/IPベースで運用され、UPnP対応の機器がLANに接続されるとその機器はDHCPにより自動的にIPアドレスを取得し(DHCPサーバがない場合は機器が自動的にIPアドレスを決定)、LAN上に接続されているすべての機器に対して、新たな機器が接続されたことやその機能内容をマルチキャストで通知し、その後も一定時間ごとに自らの存在をLANに通知することになっている。そして他のUPnP対応機器はそのメッセージを受け取るとそれを記憶し、もしその機器から何か他の機器をコントロールする必要が生じた場合は、その記憶しているリストを元にコントロールを行うことになっている。
またUPnPでは、それぞれの機器がどのような機能を持っているかといった情報や、ある機器が他の機器をコントロールするためのメッセージなどは原則としてXMLベースでやり取りされることになっている。その上、機器同士の通信は原則として全てHTTPプロトコルをベースに行うこととなっているので、非常に現在のInternetとの親和性が高く、また何かの特許に抵触したり、特定の言語に依存する心配がないという利点もある。
事実、UPnPに似た技術に、Sun Microsystemsが提唱した『Jini』があるが、こちらは基本的にJava言語をベースとした技術であり、またその利用にはSunとの間のライセンス契約などが必要になることから、家電メーカーなどから敬遠され、現在はあまりその話題を聞かなくなっている。
ちなみにUPnPはPCに限った技術ではなく、その対象には家電や冷暖房機器など広い範囲の製品が含まれている。だからMicrosoftが挙げている例には「インターネット接続の共有を自動的に設定する」「新しいプリンタをLANに接続するとすぐにすべてのPCからそのプリンタが利用できる」といったPC寄りの例だけでなく、「家の中のある時計の時刻を変更すると、家中の時計の時刻がそれに同期して変更される」「目覚まし時計の鳴る時刻を変更すると、それに合わせてエアコンのタイマー設定の時刻が自動的に調整される」などというPCを介さない形の例も挙げられている。
■UPnPとNATの微妙な関係
さて、UPnPの理想はわかったが、とりあえず現段階でUPnP対応の機器として登場が予定されているのは「UPnP対応のブロードバンドルータ」だ。いったいブロードバンドルータのどこにUPnPに対応する必要のある機能があるのだろうか。これには一般的なブロードバンドルータが必ずといっていいほど装備しているNAT機能や、ファイアウォール機能との関係がからんでくる。
上記でUPnPでは「XMLベースのメッセージ」を「HTTPベースのプロトコル」で通信する、ということを書いたが、これはUPnP機器同士が接続を開始する際の取り決めの話であって、実際に通信が確立した後にどのポート番号でどのような通信を行うかはそれぞれの機器によって異なる。また通信相手は必ずしもLAN内部の相手とは限らず、場合によってはファイアウォールを超えて外部の機器と通信をしなければならないことだってある。そこでUPnPでは、LAN内部の機器が必要に応じてルータやファイアウォールに対して、ポートの開閉や外部からの接続要求のマッピングなどを要求できるようにする手順を用意しており、この手順に対応したのが「UPnP対応のブロードバンドルータ」というわけだ。
もちろんWindows XPの「インターネット接続共有(ICS)」やファイアウォール機能はこのUPnPに対応しており、WinXP機をインターネット接続のゲートウェイとして使用している場合、LAN内部のPCはゲートウェイとなるWinXP機とUPnPを利用して通信を行うことでインターネット接続に必要な情報を入手することが出来るようになっている。
また、アプリケーションレベルでも実はこの機能を既にフル活用しているソフトがある。「Windows Messenger」がそれだ。Windows Messengerやその前身にあたるNetMeetingでは、ホワイトボードの共有やファイル転送機能、また音声や動画によるチャット機能など豊富な機能が利用可能だが、これらの機能の多くはこれまで、NATを利用したLAN内部のPCでは利用が難しく、どうしても利用しようとすると面倒な設定が必要な上、ファイアウォールの利用が困難になるなど、セキュリティ上の危険も存在した。
そこでWindows Messengerの最新版ではUPnPを活用し、NATルータに対して現在ルータが持っているグローバルIPアドレスを確認したり、動的にポートマッピングを設定するよう要求したりすることで、NAT内部の環境でもファイアウォールを利用しつつ面倒な設定なしにすべての機能を利用できるようにしたのだ。
しかしこのUPnPによるルータやファイアウォールのコントロール手順は、昨年11月に成立したばかりの規格であり、実際にUPnP対応のブロードバンドルータが登場してくるのはまだしばらく先の話。ましてUPnP対応の家電などが登場するのはもっと先ということで、せっかくの概念もメリットを享受できるようになるにはまだ時間がかかりそう。もちろんメーカーには早く対応製品を出すようにがんばって欲しいが、急ぎすぎるあまり、今回のようなセキュリティホール騒動が起きては意味がないわけで、ユーザーとしては頭が痛いところだ。
http://journal.mycom.co.jp/series/ityougo/021/
コメント一覧
おかあつ 2006年08月10日 02:05
(P2Pプログラミングに興味のない方には全くつまらない話ですが) ちょっとづつわかってきました。
・僕がやりたいのはNATの設定変更
・それは UPnP NAT Traversal という UPnPの機能の一部
・UPnP というのは ネットワーク上のデバイスの設定を一貫して行うプロトコル
要は、P2Pを利用したコーディングを行う場合あると非常に有利な技術なのです。 ちょっとづつ勉強します。
このUPnPは、殆ど耳にしない名前ですが、実は、MSN Messanger で頻繁に利用されているそうです。
・僕がやりたいのはNATの設定変更
・それは UPnP NAT Traversal という UPnPの機能の一部
・UPnP というのは ネットワーク上のデバイスの設定を一貫して行うプロトコル
要は、P2Pを利用したコーディングを行う場合あると非常に有利な技術なのです。 ちょっとづつ勉強します。
このUPnPは、殆ど耳にしない名前ですが、実は、MSN Messanger で頻繁に利用されているそうです。