UPnPとは何か

 LANにルーターをつないで使い始めるには,いろいろと手こずる。IPアドレスやサブネット・マスクといった設定は面倒だし,なかなか取っつきにくい。フィルタリングやアドレス変換まで設定するとなると,かなり骨が折れる。そこで出てきたのが,ユニバーサル・プラグ・アンド・プレイ(Universal Plug and PlayUPnP)という技術だ。UPnPに対応していれば面倒なネットワーク設定を自動化できるのである。最近では,UPnP対応のルーターやプリンタが登場し始めている。ほかの機器にも広がる気配だ。でも,UPnPの機能としくみをくわしく知らない読者もいるだろう。そこで,UPnPの正体に迫ってみよう。


 まず,UPnPとは何か,簡単に説明しておこう。UPnPは,パソコンに周辺機器を接続するときに動くプラグアンドプレイ(Plug and Play:PnP)をネットワークに拡張したもの。UPnP対応機器なら,新しくネットワークにつながったUPnP対応機器を検知し,使えるように自動でセットアップする。例えば,新しく買ったUPnP対応のネットワーク・プリンタをLANに接続すれば,LAN上のパソコンがそれを検知し,そのプリンタを使って印刷できるように自動的にパソコンをセットアップする。


 こうした説明を見ると,なんだかとても複雑な独自技術を使っていると思うかもしれない。しかし,UPnPは,インターネットやLANで日常使っているTCP/IPを基本とした技術なのである。


 まず最初は,UPnP対応機器がLANにつながったときにIPアドレスなどを自動で設定する。ここでは,DHCP(dynamic host configuration protocol)を使う。DHCPについては,パソコンのTCP/IP設定で知っている読者も多いだろう。DHCPIPアドレスが割り当てられると,次は,LAN上のほかの機器に自分がLANにつながったことを通知する。使うプロトコルUDP(user datagram protocol)だ。UDPも,インターネットのストリーミング放送やVoIP(voice over IP)などで使われるプロトコルである。UDPを使って,マルチキャストでLAN上のすべてのUPnP対応機器に,新しく機器がつながったというアナウンスを送りつけるのである。UPnPはポート番号1900番を使う。上位層のやりとりは,標準化団体であるUPnP Forumが決めた独自仕様のSSDP(simple service discovery protocol)というプロトコルを使う。


 その次は,新しくつながった機器とすでにつながっていた機器との間で細かな情報をやりとりするフェーズに入る。実は,このやりとりには,Webサーバーとブラウザの間の通信に使っているHTTP(hypertext transfer protocol)をそのまま利用している。ただし,メーカー名,機種名,機能,制御のためのコマンド一覧など,HTTPで送るデータのフォーマットは,HTML(hypertext markup language)ではなく,XML(extensible markup language)を使う。XMLは,HTMLの次世代版としてさまざまな用途で使われ始めている記述言語である。


 このほか,ネットワーク・プリンタで用紙がなくなったときなど,状態が変化したときのやりとりにはHTTPを拡張したGENA(general event notification architecture)というプロトコルを使い,機器を制御するときはXMLデータのやりとりに使われるSOAP(simple object access protocol)を利用する。


 このように見てくると,UPnPという新技術は既存技術の寄せ集めであるということがわかる。DHCP,HTTP,XMLなどはすでにどこかで名前を聞いたことがあるだろう。SSDP,GENA,SOAPなど,あまり聞き慣れない技術もあるが,これらも既存技術の延長である。


 既存の技術を組み合わせて新しい機能を提供する――。UPnPは,その顕著な一例といえるだろう。

(塗谷 隆弘)


引用元:「LANにつなげばすぐに使える」―― UPnPの正体ってなに? | 日経クロステック(xTECH)



関連:
UPnPとは?なぜすぐに無効にする必要があるのか | NordVPN