このブログを検索

2011-08-27

UPnP(仮)

UPNPとは
ユニバーサルプラグ&プレイ(Universal Plug & Play)の略。Ethernetや無線LAN、IEEE1394(over IP)ネットワーク上にある様々な機器を「接続するだけで」ネットワーク上での利用を可能とする技術の総称。

基本的には以下の機能の総称である
IPアドレス割り当て
DHCP、およびプライベートアドレスの自動割り当て技術が用いられる
名前解決
DNS、およびIPブロードキャストによる。
デバイスの発見と機能の把握
SSDP(Simple Service Discover Protocol)と呼ばれるプロトコルを用い、IPブロードキャストでデバイス同士のマッチングを行う。またLDAPサーバがある場合は、それによりネットワーク上にある機器の管理を行うこともできる



UPnPのNAT越えの仕組み

Q.
通常、外部からルータに届いたパケットはNAT設定にしたがってプライベートIPへ変換されると理解しているのですが、UPnP対応ルータとWinXP使用環境下ではポート解放していなくても外部からのアクセスが可能と聞きます。
その仕組みがどうしても理解出来ません。
ルータに届くパケットには宛先としてグローバルIPとポート番号が記述されているのが普通と思いますが、ルータに複数のクライアントがぶら下がっているとして一体どうやって目的のプライベートIPアドレスを探し出してパケットを転送するのでしょうか?

A.
UPnP環境ではまず、ルーターがブロードキャストで、UPnP対応である自分の存在をネットワーク全体に知らせます。(TCP Monitor Plusあたりのソフトで見るとわかります。ルーターのアドレスから、頻繁にブロードキャストをしています。)

そして、そのパケットを受け取ったUPnP対応のOS(WinXP等)は、自分の上で動いている、外部からのアクセスを受ける必要のあるソフト(MSN Messenger等)を検出し、自分のLAN用IPアドレスとともにUPnPルーターに通知します。

こうすることで、ルーターはWANの特定ポート宛に入ってきたトラフィックを、LAN内の特定のマシンの特定ポートに転送する仕組みをつくり、外部からのアクセスがLAN内のマシンで受けられるようになります。
本来なら手動でするはずの“ポート開け”の作業を、PCのOSとルーターが協力して、自動的にできるようにした仕組みがUPnPです。




WindowsMessengerがルーターを介すと使えない理由
(古い情報?)
 Windows Messengerでは、IPアドレスやポート番号をパケットのヘッダーだけでなく、データ本体部分にも入れ、これを使って通信を行う。ルーターはヘッダー部分しかグローバルIPに変換しない。そのため、受け取った相手が返信しようとしても、返信先が(データ本体部分にある)プライベートIPなので、通信ができなくなってしまう。

 この問題を解決するのが、ユニバーサルプラグアンドプレイ(UPnP)。
ルーターがUPnPに対応していれば、アプリケーションからルーターのグローバルIPを問い合わせることができる。送信データ内にあらかじめこのIPを入れることで、Windows Messengerは通信できるようになる


0 件のコメント:

コメントを投稿