Broadband Watch logo
バックナンバー

その116「DLNAの仕組み」
[2007/03/26]
その115「ドメインとActive Directory」
[2007/03/19]
その114「ワークグループができること」
[2007/03/12]
その113「WPSの仕組み」
[2007/03/05]
その112「Gopherの生い立ちと現在」
[2007/02/26]
その111「Wikiの使われ方」
[2007/02/19]
その110「文字コードとは」
[2007/02/05]
その109「IISの生い立ち」
[2007/01/29]
その108「NASの登場と一般への普及」
[2007/01/22]
その107「HomePNAのいろいろ」
[2007/01/15]
その106「Ogg Vorbisの成り立ち」
[2006/12/25]
その105「MIDIの原理とSMFの構造」
[2006/12/18]
その104「AIFFの構造」
[2006/12/11]
その103「WAVの構造と現状」
[2006/12/04]
その102「WMAの歴史」
[2006/11/27]
その101「AACの特徴」
[2006/11/20]
その100「MP3/MPEG Audioの仕組み」
[2006/11/13]
その99「HSDPAの仕組み」
[2006/11/06]
その98「H.264・MPEG-4 AVCの特徴」
[2006/10/30]
その97「IEEE 802.16e(モバイルWiMAX)の特徴」
[2006/10/23]
その96「TIFFの特徴」
[2006/10/16]
その95「PNGの現状と今後」
[2006/10/02]
その94「GIFの構造」
[2006/09/25]
その93「10GBASEの種類(2)」
[2006/09/11]
その92「10GBASEの種類」
[2006/09/04]
その91「GbEのいろいろ」
[2006/08/28]
その90「JPEGの特徴」
[2006/08/21]
その89「DivXの広がり」
[2006/08/07]
その88「MPEGの仕組み」
[2006/07/31]
その87「WMVのこれまで」
[2006/07/24]
その86「AVIの生い立ちとそのコーデック」
[2006/07/10]
その85「QuickTimeの変遷」
[2006/07/03]
その84「Realのこれまでと今後」
[2006/06/26]
その83「ShareとWinny」
[2006/06/19]
その82「DOCSISの仕組み」
[2006/06/12]
その81「SQLインジェクションの流れ」
[2006/06/05]
その80「RSSの動作」
[2006/05/29]
その79「Skypeの仕組み」
[2006/05/22]
その78「BitTorrentの特徴と今後」
[2006/05/15]
その77「Winnyの仕組みと現状」
[2006/05/08]
その76「WinMXの特徴」
[2006/04/24]
その75「Gnutellaの歴史と構造」
[2006/04/17]
その74「Napsterの歴史」
[2006/04/10]
その73「P2Pのいろいろ」
[2006/04/03]
その72「IEEE 802.11nの動向」
[2006/03/27]
その71「ActiveX Scriptingの動作」
[2006/03/20]
その70「Ajaxの仕組み」
[2006/03/13]
その69「DHTMLの動作」
[2006/03/06]
その68「Scriptの定義」
[2006/02/27]
その67「JavaScriptの仕組み」
[2006/02/20]
その66「Javaの動作」
[2006/02/13]
その65「RFCのプロセス」
[2006/02/06]
その64「ActiveX DocumentとActiveX Controlの違いと共通点」
[2006/01/30]
その63「ActiveX Controlの機能」
[2006/01/23]
その62「ActiveXを構成するもの」
[2006/01/16]
その61「Cookieの仕組みと用途」
[2005/12/26]
その60「malwareとその分類」
[2005/12/19]
その59「rootkitの動作」
[2005/12/12]
その58「CSSの役割」
[2005/12/05]
その57「HTMLの変遷」
[2005/11/28]
その56「PONとその種類」
[2005/11/21]
その55「FWAの仕組み」
[2005/11/14]
その54「DoSとDDoS」
[2005/11/07]
その53「SNMPとMIBの動作」
[2005/10/03]
その52「Jumbo Frameとフレームサイズ」
[2005/09/12]
その51「WPA2の仕組み」
[2005/09/05]
その50「WPAとWPA-PSKの違い」
[2005/08/29]
その49「WPAの仕組み」
[2005/08/22]
その48「WebDAVの動作」
[2005/08/08]
その47「OFDMAの仕組みとOFDMとの違い」
[2005/08/01]
その46「OFDMの仕組み」
[2005/07/25]
その45「WiMAXの特徴」
[2005/07/11]
その44「Wi-Fiの役割」
[2005/07/04]
その43「FTPの目的と動作」
[2005/06/27]
その42「UPnPの動作」
[2005/06/20]
その41「ネットマスクの仕組み」
[2005/06/13]
その40「ARPの機能」
[2005/06/06]
その39「DNSの原理」
[2005/05/30]
その38「デフォルトゲートウェイの役割」
[2005/05/23]
その37「MACアドレスの仕組み」
[2005/05/16]
その36「スイッチとその進化」
[2005/05/09]
その35「ルータによるメリット」
[2005/04/25]
その34「ブリッジの原理」
[2005/04/18]
その33「リピータの機能」
[2005/04/11]
その32「IPアドレスのクラス」
[2005/04/04]
その31「ブロードキャスト/マルチキャスト/ユニキャスト」
[2005/03/28]
その30「SMTP AUTHと認証の種類」
[2005/03/14]
その29「Submissionポートとスパムメール対策」
[2005/03/07]
その28「Outbound Port25 Blockingとは」
[2005/02/28]
その27「PGPの仕組み」
[2005/02/21]
その26「PKIと認証局」
[2005/02/14]
その25「公開鍵暗号方式とは」
[2005/02/07]
その24「共通鍵暗号とは」
[2005/01/31]
その23「SSHの仕組みと応用」
[2005/01/24]
その22「SSLの役割」
[2005/01/17]
その21「POP3とIMAP4の違い」
[2004/12/27]
その20「POP3の役割と機能」
[2004/12/20]
その19「SMTPの機能と問題点」
[2004/12/13]
その18「SPIとパケットフィルタリング」
[2004/12/06]
その17「LANの概念とその広がり」
[2004/11/29]
その16「SIPの役割」
[2004/11/15]
その15「プロキシの利用」
[2004/11/08]
その14「VoIPの仕組み」
[2004/11/01]
その13「イーサネットとは」
[2004/10/25]
その12「IP/TCP/UDP/ICMPとは」
[2004/10/18]
その11「DHCPの役割」
[2004/10/04]
その10「MIMOとは」
[2004/09/27]
その9「DMZとその効果」
[2004/09/13]
その8「ファイアウォールとは」
[2004/09/06]
その7「NATとNAPTの違いとIPマスカレード」
[2004/08/30]
その6「VPNとVPNパススルーの仕組み」
[2004/08/23]
その5「無線LANの問題とWEP」
[2004/08/09]
その4「IEEE 802.11a/b/gって何を意味しているの?」
[2004/08/02]
その3「ダイナミックDNSって?」
[2004/07/26]
その2「グローバルIPアドレスとプライベートIPアドレス」
[2004/07/12]
その1「PPPoEって何だろう?」
[2004/07/05]

その42「UPnPの動作」


UPnPって何?

 UPnPとは「Universal Plug & Play」の略で、UPnP Forumという組織が制定しているものです。当初はMicrosoftが提唱、これにIntel、3Com、AT&T、Compaq Computer、Dell Computer、IBMなど20社以上が加わってUPnP Forumが結成され、ここでUPnPの標準化が行なわれました。現在は749を超える組織がこのUPnP Forumに加盟しています。

 UPnPの目的は、ネットワーク機器同士を簡単に接続して利用できるようにするというものです。これまで何回か説明してきましたが、例えばTCP/IPを利用して接続する場合、お互いの通信に必要なネットワークを決め、適切なIPアドレスを振り、その上で適切なプロトコルを使って通信するという面倒な手順になります。

 慣れれば簡単、と言えなくもないのですが、慣れるまでが非常に大変なのは経験のある方にはおわかりでしょう。ましてや、家庭内にネットワークを導入していこうという話をしているときに、この面倒さはちょっと致命的です。

 これを解決すべく、制定されたのがUPnPです。UPnPの大きな目的は以下の2つになります。

・ネットワーク機器を簡単に接続できるようにする。
・特定のネットワークに依存しない構造とする。


 まず1点目ですが、例えばルータを繋げば何も設定しなくてもインターネットに接続でき、ネットワークプリンタを繋げば何も設定しなくても、プリンタ一覧にそのネットワークプリンタが出現して、すぐにプリントを開始できるといった使い勝手を実現しようというものです。

 また、2点目は単にイーサネットのみならずIEEE 1394やBluetooth、あるいは今後主流になると思われるUWBやWi-Fi/WiMaxといった規格を幅広くサポートすることで、どんな形で接続されても同等の使い勝手を実現させようというものです。


さまざまなUPnP

 こうした使い勝手のよさを実現するために、UPnPではさまざまなスペックを定めています。例えば現在スペックが定められているものとしては、以下のようなものがあります。

・Basic Device
・Internet Gateway Device
・MediaServer and MediaRenderer
・Printer Device and Print Basic Service
・Printer Enhanced
・Scanner
・HVAC
・WLAN Access Point Device
・Device Security and Security Console
・Lighting Controls
・Remote UI Client and Server
・Quality of Service
・Digital Security Camera

 このうち、HVACというのはインテリジェンスエアコンで、まさしく家庭のさまざまなデバイスを接続することを考慮していることがわかります。

 一方、構造という面から見れば、UPnPは3つに分けられます。デバイス・サービス・コントロールポイントという分け方で、考え方としては以下のようになります。

・UPnPに対応した機器:デバイス
・デバイスを制御するための切り口:サービス
・サービス経由でデバイスを操作する主体:コントロールポイントです。例えばリモコンでTVを操作する場合
・デバイス:TVそのもの
・サービス:TVのリモコン
・コントロールポイント:リモコンを操作する人

 ちなみに動き方という面で言えば、ネットワーク上にIP割り当てや名前解決を行なってくれるサーバーがある場合(Configured)と、そうしたものが無い場合(AdHoc)で多少動き方が変わりますが、ユーザーから見る限り違いはわからないようになっています。


UPnPの例:Internet Gateway Device

図1:IGDでの接続例
 UPnPのスペックを全部説明しているときりがないので、代表例としてIGD(Internet Gateway Device)を取り上げて簡単に動作を説明したいと思います。IGDとは要するにUPnP対応のブロードバンドルータのことです。さて、これを図1のような構成で接続したとします。

 すると、まずIGDと各UPnPクライアントは、お互いにSSDP(Simple Service Discovery Protocol)と呼ばれるプロトコルを使い、各々の存在をLAN内に通知します。これを受けてお互いの存在を確認するとともに、必要ならばIPアドレスの割り当てをお互いに実施します。同時にIGDは、上位にあたるインターネットプロバイダーからWAN側のIPアドレスを取得します。これらの手順は原則として完全に自動です(図2)。


図2:IGDの動作その1

図3:IGDの動作その2
 一度設定が終ったら、あとはクライアントからのインターネットアクセスは、IGD内のNATの機能を使ってインターネットにアクセスできるようになります。このあたりは別に普通のブロードバンドルータと変わりありません(図3)。

 ただ、あとは完全に同じ、というわけではありません。アプリケーションの中には、グローバルIPアドレスを与えないと通信がうまくできないものがあります。ちょっと前のインスタントメッセンジャーがその代表例です。こういったソフトの場合、単にIPヘッダ部のアドレスをNATを使ってグローバルIPアドレスに変換するだけでは不十分で、アプリケーションデータの中にまでIPアドレスが含まれている関係で、各クライアントがグローバルIPアドレスを知っている必要があります。

 通常こうしたケースでは、手動でグローバルIPアドレスをアプリケーションに入力するとともに、ポートフォワーディングを使って対応するのが常でしたが、UPnPでは「NAT Traversal」という機能でこれに対応できます。これはIGDがグローバルIPアドレスを必要とするクライアントに、IGD自身のグローバルIPアドレスを連絡するという仕組みで、これを使ってアプリケーションは通信を行なうことができます。また、この際ポートフォワーディングはNATで代行されるので、手動であれこれと設定する必要がありません(図4)。


図4:IGDの動作その3

UPnPの今後

 2回目の最後でも少し触れましたが、このUPnPを使うことで、ネットワークの接続は随分楽になりました。Windows XPは標準でUPnPに対応しており、また最近のブロードバンドルータはほとんどがUPnP対応ということもあり、「買って来てケーブルを繋ぎ、電源を入れると即接続可能」という環境が現実のものになりつつあります。

 デジタル家電機器の相互接続性に関する規格を審議する「DLNA(Digital Living Network Alliance)」という団体がガイドラインをリリースしていますが、このガイドラインはUPnPを前提としたものになっています。また、これとは別にDLNAに著作権保護を加えたような機能を持つ「DTCP-IP」というプロトコルもあり、次世代のDLNAガイドラインとしての採用が有力視されていますが、これもUPnPが下敷きとなっています。

 そういうわけで、UPnPは今後も広く使われること自体は間違いないわけですが、逆にいえばUPnP単独ではそれほど広く使われることはない、という意味でもあります。こと狭義のコンピュータネットワークに限って言えば、複数ネットワークから構成される大規模な企業向けLANなどを正しく扱う機能は持ち合わせていませんし、すべてのクライアントがUPnPに必ずしも対応しているわけではないというあたりもちょっと厄介な点です。UPnPは引き続き家庭内でのネットワーク接続で活躍するでしょうが、今後は次第にDLNAやDTCP-IPなどに置き換わってゆくのかもしれません。





2005/06/20 10:57

槻ノ木 隆
 国内某メーカーのネットワーク関係「エンジニア」から「元エンジニア」に限りなく近いところに流れてきてしまった。ここ2年ほどは、企画とか教育、営業に近いことばかりやっており、まもなく肩書きは「退役エンジニア」になると思われる。(イラスト:Mikebow)
Broadband Watch ホームページ
Copyright (c) 2005 Impress Corporation, an Impress Group company. All rights reserved.