以下、本発明の実施形態について図面を参照して詳細に説明する。尚、すべての図面において、同等の構成要素には同じ符号を付し、適宜説明を省略する。
(第1の実施形態)
本実施形態における構成について説明する。
図1は、本実施形態のポートマッピング装置150の構成の一例を示すブロック図である。
本実施形態のポートマッピング装置150は、外部の一般的なルーター100に含まれる。
ルーター100は、ポートマッピング装置150と、LANインターフェース120と、WANインターフェース130と、LANインターフェース120とWANインターフェース130との間でルーティングを行うルーティング手段140とを含む。
LANインターフェース120は、外部のLAN800に接続される。LAN800には、外部のウェブサーバー300、400が接続される。ウェブサーバー300、400上では、それぞれ、ウェブサイト310、410が動作する。
WANインターフェース130は、外部のインターネット900に接続される。インターネット900には、外部の端末700が接続される。端末700上では、ウェブブラウザー710が動作する。
ポートマッピング装置150は、ポートマッピング拡張手段160を含む。
ポートマッピング拡張手段160は、WAN側からウェブサイト310、410を指定するためのWAN側URLのそれぞれを、LAN側からウェブサイト310、410を指定するためのLAN側URLに対応付けるように拡張された、ポートマッピングを行う。なお、WAN側URLはポート番号を含まず、LAN側URLはポート番号を含む。
また、ポートマッピング拡張手段160は、ポートマッピングに必要な設定情報を保持する。
設定情報には、ポート番号を含むLAN側URLの情報と、ポート番号を含まないWAN側URLの情報とが含まれる。
LAN側URLは、例えば、「PresentationURL」である。「PresentationURL」は、UPnPにおけるデバイスの詳細情報の1つで、ルーター100のLAN側のネットワーク800において、デバイスにアクセスするためのURLを値に持つ情報である。
WAN側URLは、例えば、UPnPにおけるデバイスの別の詳細情報である、「friendlyName」、「modelName」等の値がパス名として含む。「friendlyName」は、UPnPにおいて、デバイスを区別するための名前を値に持つ情報である。modelNameは、UPnPにおいて、デバイスのモデルに与えられた名前を値に持つ情報である。
ウェブサーバー300、400等のデバイスには、デバイス毎のLAN側URLと対応するWAN側URLの設定情報が与えられる。
ポートマッピング装置150は、ポートマッピング拡張手段160により保持されるポートマッピングの設定情報に基づき、ルーティング手段140に対して、ポートマッピング動作を指示する。
次に、本実施形態における動作について説明する。
図2は、本実施形態のポートマッピング装置150の動作を説明するためのフローチャートである。
ポートマッピング装置150は、ルーター100がWANインターフェース130から受信したパケットがHTTP(Hypertext Transfer Protocol) GET要求であるか否かを確認する(ステップS101)。
受信したパケットがHTTP GET要求でない場合には(ステップS101:No)、ポートマッピング装置150は、ステップS101の処理を繰り返す。
受信したパケットがHTTP GET要求である場合には(ステップS101:Yes)、ポートマッピング装置150は、受信したHTTP GET要求中の第1パラメータ(Request-URI)が、ポートマッピング拡張手段160により保持されるWAN側URL中のパス名のいずれかと一致するか否かを確認する(ステップS102)。
一致しない場合には(ステップS102:No)、ポートマッピング装置150は、受信したHTTP GET要求を処理せず(ステップS107)、処理を終了する。
一致する場合には(ステップS102:Yes)、ポートマッピング装置150は、受信したHTTP GET要求中のRequest-URIを、WAN側URL中のパス名が一致したLAN側URL中のパス名に置き換える。続いて、ポートマッピング装置150は、受信したHTTP GET要求中の第3パラメータ(Host)の値を、通信用URI(Universal Resource Identifier)が一致したLAN側URL中のIPアドレスに置き換える(ステップS103)。
次に、ポートマッピング装置150は、変換されたHTTP GET要求を、WAN側URLに対応するLAN側URL中のIPアドレス宛に送信する(ステップS104)。
続いて、ポートマッピング装置150は、ルーター100がWANインターフェース130から受信したパケットがHTTP 200応答であるか否かを確認する(ステップS105)。
受信したパケットがHTTP 200応答でない場合には(ステップS105:No)、ポートマッピング装置150は、ステップS105の処理を繰り返す。
受信したパケットがHTTP 200応答である場合には(ステップS105:Yes)、ポートマッピング装置150は、受信したHTTP 200応答を、HTTP GET要求元である端末700に送信して(ステップS106)、処理を終了する。
次に、本実施形態における処理手順の具体例について説明する。
図3は、本実施形態のポートマッピング装置150の処理手順の具体例を説明するための図である。
本具体例では、LAN側URLがpresentationURLであり、WAN側URL中のパス名がfriendlyNameの値である場合について、説明する。
例えば、ウェブサーバー300の、LAN側URLの値は「http://private-ip-address1:port1/path1」、friendlyNameは“server1”とする。
また、例えば、ウェブサーバー400の、LAN側URLの値は「http://private-ip-address2:port2/path2」、friendlyNameは“server2”とする。
なお、“private-ip-address1”、“private-ip-address2”は、ルーターのLAN側のネットワークにおける、デバイスのプライベートIPアドレスである。また、“port1”、“port2”は、TCP(Transport Control Protocol)またはUDP(User Datagram Protocol)のポート番号を示す“0”から“65535”の整数である。また、“server1”、“server2”は、名称を示す任意の文字列である。
上記の場合、ポートマッピングの設定情報は、ポートマッピング拡張手段160により、例えば、図3のように保持される。
ルーター100のWAN側のネットワークであるインターネット900における端末700上のウェブブラウザー710が、HTTPを利用して、ルーター100のLAN側のネットワーク800におけるウェブサーバー300、400にアクセスする動作について説明する。なお、HTTPのバージョンが1.1である場合を例に説明する。
端末700は、HTTP GET要求をウェブサーバー300に送信する。端末700は、例えば、「GET server1 HTTP/1.1 Host: global-ip-address」で始まるHTTP GET要求を、ルーター100のWANインターフェース130のポート番号port1宛に送信する。
なお、“global-ip-address”は、ルーター100のWAN側のネットワーク900における、デバイスのグローバルIPアドレスである。
ポートマッピング装置150は、受信したパケットがHTTP GET要求であるので(ステップS101:Yes)、受信したHTTP GET要求中の第1パラメーター“server1”が、ポートマッピング拡張手段160により保持されるWAN側URL中のパス名のいずれかと一致するか否かを確認する(ステップS102)。
“server1”が設定情報の1行目のWAN側URL中のパス名“server1”と一致するので(ステップS102:Yes)、ポートマッピング装置150は、受信したHTTP GET要求中の“server1”を、WAN側URL中のパス名が一致したLAN側URL中のパス“path1”に置き換える。続いて、ポートマッピング装置150は、受信したHTTP GET要求中の第3パラメータ(Host)の値を、WAN側URL中のパス名が一致したLAN側URL中のIPアドレス“private-ip-address1”に置き換える(ステップS103)。
次に、ポートマッピング装置150は、変換されたHTTP GET要求「GET path1 HTTP/1.1 Host: private-ip-address1」を、WAN側URL中のパス名が一致したLAN側URL中のIPアドレス“private-ip-address1”宛に送信する(ステップS104)。
続いて、ポートマッピング装置150は、ルーター100のWANインターフェース130からHTTP 200応答を受信し(ステップS105)、受信したHTTP 200応答を、HTTP GET要求元である端末700に送信する(ステップS106)。
端末700は、HTTP GET要求をウェブサーバー400に送信する。端末700は、例えば、「GET server2 HTTP/1.1 Host: global-ip-address」で始まるHTTP GET要求を、ルーター100のWANインターフェース130のポート番号port2宛に送信する。
ポートマッピング装置150は、受信したパケットがHTTP GET要求であるので(ステップS101:Yes)、受信したHTTP GET要求中の第1パラメーター“server2”が、ポートマッピング拡張手段160により保持されるWAN側URL中のパス名のいずれかと一致するか否かを確認する(ステップS102)。
“server2”が設定情報の2行目のWAN側URL中のパス名“server2”と一致するので(ステップS102:Yes)、ポートマッピング装置150は、受信したHTTP GET要求中の“server2”を、WAN側URL中のパス名が一致したLAN側URL中のパス“path2”に置き換える。続いて、ポートマッピング装置150は、受信したHTTP GET要求中の第3パラメータ(Host)の値を、WAN側URL中のパス名が一致したLAN側URL中のIPアドレス“private-ip-address2”に置き換える(ステップS103)。
次に、ポートマッピング装置150は、変換されたHTTP GET要求「GET path2 HTTP/1.1 Host: private-ip-address2」を、WAN側URL中のパス名が一致したLAN側URL中のIPアドレス“private-ip-address2”宛に送信する(ステップS104)。
続いて、ポートマッピング装置150は、ルーター100のWANインターフェース130からHTTP 200応答を受信し(ステップS105)、受信したHTTP 200応答を、HTTP GET要求元である端末700に送信する(ステップS106)。
以上説明したように、本実施形態のポートマッピング装置150は、HTTP GET要求「GET server1 HTTP/1.1 Host: global-ip-address」を受信すると、「GET path1 HTTP/1.1 Host: private-ip-address1」を、IPアドレス“private-ip-address1”、ポート番号“port1”宛に送信する。また、ポートマッピング装置150は、HTTP GET要求「GET server2 HTTP/1.1 Host: global-ip-address」を受信すると、「GET path2 HTTP/1.1 Host: private-ip-address2」を、IPアドレス“private-ip-address2”、ポート番号“port2”宛に送信する。
つまり、ルーターのWAN側IPアドレスとパス名とを含むURLにより、ポート番号が使用されることなく、ルーターのLAN側の個々のウェブサーバーが識別される。従って、本実施形態のポートマッピング装置150では、ポートマッピングの利便性が向上されるという効果がある。
なお、本実施形態では、端末700上のウェブブラウザー710が、ウェブサーバー300、400それぞれの上のウェブサイト310、410にアクセスする場合について説明した。しかしながら、本実施形態のアプリケーションは、必ずしもウェブに限定されない。すなわち、本実施形態のアプリケーションは、サーバ上のアプリケーションが所定のポート番号でサービスを提供する任意のアプリケーションであってもよい。このとき、ルーターのLAN側、WAN側のそれぞれにおいて、アプリケーションはURLで識別されればよい。
(第2の実施形態)
本発明のポートマッピング装置の例として、ポートマッピング装置を含む、インターネット(Internet)に接続されたNAT(Network Address Translation)およびUPnP IGD(Universal Plug and Play Internet Gateway Device)機能付きルーターの例を第2の実施形態として示す。
本実施形態における構成について説明する。
図4は、本実施形態におけるルーター105の構成の一例を示すブロック図である。ルーター105は、LANインターフェース120と、WANインターフェース130と、ルーティング手段140と、ポートマッピング手段155と、記憶手段190とを含むルーターである。
ポートマッピング手段155は、ポートマッピング拡張手段165と、UPnP IGD手段170と、UPnP CP(Control Point)手段180とを有する。
LANインターフェース120は、LANネットワーク800に接続される。LANネットワーク800には、ウェブサーバー305およびウェブサーバー405が接続される。
ウェブサーバー305、405は、それぞれウェブサイト315、415を有する。
WANインターフェース130は、コンピュータネットワーク、電話交換網、移動体通信網、企業内イントラネット(Intranet)などが相互に接続された通信網であるインターネット900に接続される。 ポートマッピング拡張手段165は、ポートマッピング情報の設定に関する機能を提供する。
UPnP IGD手段170は、UPnP対応ルーターの機能であるIGD機能を提供する。なお、UPnPのIGDは周知の技術であるので、ここでは詳細について説明しない。
UPnP CP手段180は、UPnP対応装置に対する制御機能であるCP機能を提供する。なお、UPnPのCPは周知の技術であるので、ここでは詳細について説明しない。
ルーター105が有するその他の機能については、図示を省略する。
LANインターフェース120およびWANインターフェース130は、それぞれ、1つ以上のイーサネット(登録商標)インターフェースを有する。
なお、LAN側ネットワーク800は、有線接続に限定されず、無線接続であってもよい。
また、WANインターフェース130とインターネット900との接続方法は限定されない。インターネット900には、ウェブブラウザー715を有するPC(Personal Computer)等の端末705が接続される。
LANインターフェース120は、LANネットワーク800から受信したパケットをルーティング手段140に送信し、ルーティング手段140から受信したパケットをLANネットワーク800に送信する。
WANインターフェース130は、インターネット900から受信したパケットをルーティング手段140に送信し、ルーティング手段140から受信パケットをインターネット900に送信する。
特定の条件(後述)において、ルーティング手段140は、ポートマッピング拡張手段165にパケットを送信する。そして、ポートマッピング拡張手段165は、受信したパケットに対して処理を行った後、パケットをルーティング手段140に送信する。
UPnP IGD手段170は、LAN側ネットワーク800から受信したUPnPパケットに対して処理を行う。
特定の条件(後述)において、ポートマッピング拡張手段165は、パケットを生成し、ルーティング手段140に送信する。
UPnP CP手段180は、UPnPパケットを生成し、LAN側ネットワーク800へ送信する。
ポートマッピング拡張手段165は、記憶手段190に対するポートマッピング設定情報の記憶及び削除、記憶手段190に記憶した情報の参照、並びに、受信したUPnPパケットに記述されたフィールドの確認及びファイルの取得を行う。
なお、端末705およびウェブブラウザー715は、周知の技術により実現されるものであり構成についての説明は行わない。また、ウェブサーバー305、405、およびそれぞれが有するウェブサイト315、415は、周知の技術により実現されるものであり構成についての説明は行わない。
また、UPnP IGD手段170のUPnPによるポートマッピングの動作(AddPortMappingを受信してのポートマッピングの登録、DeletePortMappingを受信してのポートマッピングの削除)は、周知の技術であるため詳細な説明は行わない。
また、UPnP CP手段180の動作(M-SEARCHの送信)は、周知の技術であるため詳細な説明は行わない。
また、ルーター105は、特に明記しない限り、AddPortMapping要求やDeletePortMapping要求に対してHTTP(Hypertext Transfer Protocol) 200レスポンスを送信し、UPnPによるポートマッピング動作を正常に行うものとする。
また、これらのUPnPによるポートマッピングの設定情報は、適宜記憶手段190に記憶、削除されるものとし、実施例の中での説明を省略する。
また、ポートマッピング情報の設定は、ウェブブラウザーを使用してルーター105が有する管理画面に接続することで行われるものとする。
その他の構成要素については、第1の実施形態と同じである。
次に、本実施形態における動作について説明する。
まず、ルーター105の動作の概要について説明する。
ルーター105には、WAN側から通信させたいLAN側のウェブサーバー(305、405等)の設定が行われる。
ルーター105は、LAN側のネットワーク800からのパケットを監視する。
ルーター105は、リクエストメソッドが“POST”であるHTTPパケット(以下、「HTTP POSTリクエスト」という)を受信すると、データがXML(Extensible Markup Language)フォーマットであり、Body部にAddPortMappingが記述されたパケット(以下、「AddPortMapping要求」という。)であるか否かを確認する。
AddPortMapping要求は、ルーター105に対してポートマッピングを要求するパケットである。AddPortMapping要求は、周知の技術であり、ウェブサーバー、は周知の技術に従いAddPortMapping要求を送信する。
ルーター105は、パケットの送信元がウェブサーバー(305、405等)であるか否かを確認するため、リクエストメソッドがM-SEARCHであるHTTPパケット(以下、「M-SEARCH」という。)をLAN側ネットワークにマルチキャスト送信する。
ウェブサーバー(305、405等)がM-SEARCHに対応している場合、ルーター105は、ウェブサーバー(305、405等)からステータスコードが“200”であるHTTPパケット(以下、「HTTP 200レスポンス」という)を受信する。
ルーター105は、受信したHTTP 200レスポンスのソースIPアドレスがウェブサーバーのIPアドレスと一致するか否かを確認する。
受信したHTTP 200レスポンスに「LOCATION」フィールドが含まれる場合、ルーター105は、「LOCATION」フィールドに記述されたファイルを取得するためウェブサーバー(305、405等)にリクエストメソッドがGETであるHTTPパケット(以下、「HTTP GETリクエスト」という)を送信する。
ルーター105は、ウェブサーバー(305、405等)からHTTP 200レスポンスを受信すると、データがXMLフォーマットであり、presentationURLが記述されているか否かを確認する。
presentationURLが記述されている場合、ルーター105は、ウェブサーバー(305、405等)がウェブサイト(315、415等)を有していると判断する。
presentationURLの他にfriendlyNameやmodelNameなどが記述されている場合、ルーター105は、friendlyNameやmodelNameなどの値を通信用URIとして採用する。例えば、friendlyNameが通信用URIとして採用される場合、friendlyNameが“myServer”であれば通信用URIが“/myServer/”であるものとする。
ルーター105は、通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パスを設定し、ルーター105の記憶手段に記憶する。
次にルーター105は、WAN側で受信するパケットを監視する。
WAN側の端末から受信したパケットが、HTTP GETリクエストである場合、ルーター105は、HTTP GETリクエストのRequest-URI(Uniform Resource Identifier)に記憶手段に記憶されている通信用URIが含まれるか否かを確認する。
通信用URIが含まれる場合、ルーター105は、HTTPリクエストの“Host”の値を記憶手段に記憶されるIPアドレスに、ポート番号をRequest-URIにおいて通信用URIと一致する部分を記憶手段に記憶されるパスに置き換えた上で、ウェブサーバー(305、405等)に送信する。
ルーター105は、ウェブサーバー(305、405等)からステータスコードが“200”であるHTTPパケット(以下、「HTTP 200レスポンス」という)を受信すると、HTTP 200レスポンスをWAN側の端末705に送信する。
これにより、ルーター105のWAN側に接続された端末705がルーター105のLAN側に接続されたウェブサーバー(305、405等)と通信する際に、ルーター105のWAN側IPアドレスとポート番号とを含むURLではなく、ルーター105のWAN側IPアドレスと“/myServer/”のようなパス名とを含むURLが使用される。これにより、端末705は、個々のウェブサーバー(305、405等)を識別できる。
つまり、ウェブサーバー(305、405等)とポート番号との紐付けが不要である。なお、使用者はウェブブラウザー715を使用してルーター105が有する管理画面に接続することで、ルーター105のWAN側IPアドレスとウェブサーバー305、405(ウェブサイト315、425)と通信するためのRequest-URIを確認することができる。
次に、ルーター105の動作の具体例を説明する。
図5から図11を使用して、ウェブサーバー305、ウェブサーバー405、ルーター105、端末705間の処理の動作をそれぞれ説明する。以降の文中の先頭文字「S」に続く3桁または4桁の数字は図5から図11中の処理のステップの番号を表す。
図5から図7において、ルーター105は、LANインターフェース120において、ウェブサーバー305またはウェブサーバー405とパケットの送受信を行う。図6、図8において、WANインターフェース130において、端末705とパケットの送受信を行う。
ルーティング手段140は、LANインターフェース120またはWANインターフェース130からパケットを受信した場合には、ポートマッピング手段155(ポートマッピング拡張手段165、UPnP IGD手段170、UPnP CP手段180)に受信したパケットを送信する。ルーティング手段140は、ポートマッピング手段155(ポートマッピング拡張手段165、UPnP IGD手段170、UPnP CP手段180)からパケットを受信した場合には、受信したパケットをLANインターフェース120またはWANインターフェース130に送信する。
図5から図8において、ウェブサーバー305およびウェブサーバー405とルーター105間に存在するLANネットワーク800、およびルーター105と端末705間に存在するインターネット900の記載は省略する。
ルーター105のLAN側、WAN側のIPアドレスは、それぞれ“192.168.100.1”、“172.16.1.5”とする。ルーター105のWAN側は、ポート番号“80”でHTTPパケットを待ち受けることとする。ウェブサーバー305およびウェブサーバー405のIPアドレスをそれぞれ“192.168.100.10”、“192.168.100.20”、ポート番号をそれぞれ“8080”、“10080”、ウェブサイト315およびウェブサイト415上に存在するファイルのURLをそれぞれ“http://192.168.100.10:8080/example.txt”、“http://192.168.100.20:10080/user/test.txt”とする。
図5は、本実施形態のルーター105、ウェブサーバー305、405のポートマッピング情報の設定動作例を示すシーケンス図である。
図9は、本実施形態のルーター105のポートマッピング手段155のポートマッピング情報の設定動作を示すフローチャートである。
図12は、本実施形態のルーター105のポートマッピング情報の具体例を説明するための図である。
図5、図9および図12を用いて、記憶手段190へのポートマッピング情報の設定動作について説明する。
ウェブサーバー305は、ルーター105に対して「AddPortMapping要求」を送信する(図5:ステップS201、S202)。「AddPortMapping要求」とは、ルーターに対するポートマッピングの設定要求である。AddPortMapping要求は、周知の技術である。ウェブサーバー305は、周知の技術に従いAddPortMapping要求を送信する。
ルーター105のポートマッピング手段155は、UPnP IGD手段170がウェブサーバー305からAddPortMapping要求を受信したか否かを確認する(図9:ステップS601)。
AddPortMapping要求を受信すると(図9:ステップS601:Yes)、ポートマッピング手段155は、UPnP CP手段180により「M-SEARCH」をLAN側ネットワーク800にマルチキャスト送信する(図9:ステップS602、図5:ステップS204、S205、S206)。なお、「M-SEARCH」は、ポートマッピングの対象装置(ウェブサーバー305、405)を検出するための手段である。
ルーター105のポートマッピング手段155は、UPnP CP手段180がHTTP 200レスポンスを受信したか否かを確認する(図9:ステップS603)。
HTTP 200レスポンスを受信すると(図9:ステップS603:Yes、図5:ステップS207、S208)、ポートマッピング手段155は、受信したHTTP 200レスポンスのソースIPアドレスがAddPortMapping要求したウェブサーバーと一致するか否かを確認する(図9:ステップS604、図5:ステップS209)。
一致する場合(図9:ステップS604:Yes)、ポートマッピング手段155は、「LOCATION」フィールドが含まれるか否かを確認する(図9:ステップS605、図5:ステップS210)。
「LOCATION」フィールドが含まれる場合(図9:ステップS605:Yes)、ポートマッピング手段155は、「LOCATION」フィールドに記述されているファイルの取得を行う(図9:ステップS606、図5:ステップS210、S211)。
ファイルが取得できた場合(図9:ステップS606:Yes)、ポートマッピング手段155は、取得したファイルにpresentationURLが記述されているか否かを確認する(図9:ステップS607、図5:ステップS212、S213)。
presentationURLが記述されている場合(図9:ステップS607:Yes)、ポートマッピング手段155は、ウェブサーバー305がウェブサイト315を有していると判断する(図9:ステップS608、S609、図5:ステップS214、S215)。ここではpresentationURLは、“http://192.168.100.10:8080/”であるものとする。このとき、パスは“/”である。
ポートマッピング手段155は、ステップS606で取得したファイルに記述された“friendlyName”や“modelName”などの値を通信用URIとして採用する(図9:ステップS608、図5:ステップS214)。ここでは“friendlyName”の値が“myServer”であるとし、“/myServer/”を通信用URIとして採用する。
ポートマッピング手段155は、通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パスを、記憶手段190に記憶する(図9:ステップS609、図5:ステップS215)。
図12は、記憶手段190に記憶されたポートマッピング情報である。No.1行はウェブサイト315に関する情報であり、通信用URI列は“/myServer/”、IPアドレスは“192.168.100.10”、ポート番号は“8080”である。No.2行はウェブサイト315と同様に設定されたウェブサイト415に関する情報である。ここではpresentationURLが“http://192.168.100.20:10080/user/”であるとする。このときパスは“/user/”である。“friendlyName”の値が“webServer”であるものとし、“/webServer/”が通信用URIとして採用される。通信用URI列は“/webServer/”、IPアドレスは“192.168.100.20”、ポート番号は“10080”である。
図6は、本実施形態のルーター105、ウェブサーバー305、405、端末705のポートマッピングの動作例を示すシーケンス図である。
図10は、本実施形態のルーター105のポートマッピング手段155のポートマッピングの動作を示すフローチャートである。
図6および図10を用いて、HTTP GETリクエストのRequest-URIに記憶手段190に記憶された通信用URIが含まれる場合のポートマッピングの動作について説明する。
端末705は、ウェブサイト315(アドレスは“192.168.100.10”)上のファイル(“example.txt”)を取得するために、HTTP GETリクエストを送信する(図6:ステップS301、S302)。ここで、HTTP GETリクエストの送信先IPアドレスは、ルーターのWAN側IPアドレスである“172.16.1.5”、ポート番号は“80”、Request-URIは“/myServer/”である。使用者は、ウェブブラウザーを使用してルーターが有する管理画面に接続することで、ルーターのWAN側IPアドレスとウェブサイト315と通信するためのRequest-URIを知るものとする。
ルーター105のポートマッピング手段155は、端末705からHTTP GETリクエストを受信したか否かを確認する(図10:ステップS701)。
HTTP GETリクエストを受信すると(図10:ステップS701:Yes)、ポートマッピング手段155は、HTTP GETリクエストのRequest-URIに記憶手段190に記憶された通信用URIが含まれるか否かを確認する(図10:ステップS702、図6:ステップS303)。
Request-URIに通信用URIが含まれる場合(図10:ステップS702:Yes)、ポートマッピング手段155は、HTTP GETリクエストの“Host”の値を記憶手段190に記憶されたIPアドレス、ポート番号に置き換える。次に、ポートマッピング手段155は、Request-URIの通信用URIと一致する部分を記憶手段190に記憶されたパスに置き換える(図10:ステップS703、図6:ステップS304)。続いて、ポートマッピング手段155は、HTTP GETリクエストをウェブサーバー305あてに送信する(図10:ステップS704、図6:ステップS305、S306)。
ポートマッピング手段155は、ウェブサーバー305からHTTP 200レスポンスを受信したか否かを確認する(図10:ステップS705)。
ウェブサーバー305からHTTP 200レスポンスを受信すると(図10:ステップS705:Yes、図6:ステップS307)、ポートマッピング手段155は、HTTP 200レスポンスを端末705に送信する(図10:ステップSS706、図6:ステップS308、S309)。
つまり、ルーター105のWAN側のネットワークに接続された端末705は、“http://172.16.1.5:80/myServer/example.txt”にアクセスすることにより、ルーター105のLAN側のネットワークに接続されたウェブサイト315上のファイル“http://192.168.100.10:8080/example.txt”を取得する。
次に、端末705は、ウェブサイト415(アドレスは“192.168.100.20”)上のファイル(“test.txt”)を取得するために、HTTP GETリクエストを送信する(図6:ステップS310、S311)。ここで、HTTP GETリクエストの送信先IPアドレスは、ルーターのWAN側IPアドレスである“172.16.1.5”、ポート番号は“80”、Request-URIは“/webServer/”である。使用者は、ウェブブラウザーを使用してルーターが有する管理画面に接続することで、ルーターのWAN側IPアドレスとウェブサイト415と通信するためのRequest-URIを知るものとする。
ルーター105のポートマッピング拡張手段165は、端末705からHTTP GETリクエストを受信したか否かを確認する(図10:ステップS701)。
HTTP GETリクエストを受信すると(図10:ステップS701:Yes)、ポートマッピング手段155は、HTTP GETリクエストのRequest-URIに記憶手段190に記憶された通信用URIが含まれるか否かを確認する(図10:ステップS702、図6:ステップS312)。
Request-URIに通信用URIが含まれる場合(図10:ステップS702:Yes)、ポートマッピング手段155は、HTTP GETリクエストの“Host”の値を記憶手段190に記憶されたIPアドレス、ポート番号に置き換える。次に、ポートマッピング手段155は、Request-URIの通信用URIと一致する部分を記憶手段190に記憶されたパスに置き換える(図10:ステップS703、図6:ステップS313)。続いて、ポートマッピング手段155は、HTTP GETリクエストをウェブサーバー405あてに送信する(図10:ステップS704、図6:ステップS314、S315)。
ポートマッピング手段155は、ウェブサーバー405からHTTP 200レスポンスを受信したか否かを確認する(図10:ステップS705)。
ウェブサーバー305からHTTP 200レスポンスを受信すると(図10:ステップS705:Yes、図6:ステップS316)、ポートマッピング手段155は、HTTP 200レスポンスを端末705に送信する(図10:ステップSS706、図6:ステップS317、S318)。
つまり、ルーター105のWAN側のネットワークに接続された端末705は、“http://172.16.1.5:80/webServer/test.txt”にアクセスすることにより、ルーター105のLAN側のネットワークに接続されたウェブサイト415上のファイル“http://192.168.100.20:10080/user/test.txt”を取得する。
図7は、本実施形態のルーター105、ウェブサーバー305、405のポートマッピング情報の削除動作例を示すシーケンス図である。
図11は、本実施形態のルーター105のポートマッピング手段155のポートマッピング情報の削除動作を示すフローチャートである。
図13は、本実施形態のルーター105のポートマッピング情報の具体例を説明するための図である。
図7、図11、図12および図13を用いて、記憶手段190からポートマッピング情報の設定を削除する動作について説明する。
ウェブサーバー305は、ルーター105に対して「DeletePortMapping要求」を送信する(図7:ステップS401、S402)。「DeletePortMapping要求」とは、ルーターに対するポートマッピングの削除要求である。DeletePortMapping要求は、周知の技術である。ウェブサーバー305は、周知の技術に従いDeletePortMapping要求を送信する。
ルーター105のポートマッピング手段155は、UPnP IGD手段170がウェブサーバー305からDeletePortMapping要求を受信したか否かを確認する(図11:ステップS801)。
DeletePortMapping要求を受信すると(図11:ステップS801:Yes、図7:ステップS402)、ポートマッピング手段155は、IPアドレス、ポート番号が記憶手段190に記憶されているか否かを確認する(図11:ステップS802)。
記憶されている場合(図11:ステップS802:Yes)、ポートマッピング手段155は、通信用URI 、IPアドレス、ポート番号、パスを記憶手段190から削除する(図11:ステップS803、図7:ステップS404)。
以上の動作の結果、記憶手段190に記憶されたポートマッピング情報は、図12に示した内容から図13に示すようにNo.1行が削除される。
図8は、本実施形態のルーター105、端末705のポートマッピングの動作例を示すシーケンス図である。
図8および図10を用いて、HTTP GETリクエストのRequest-URIが記憶手段190に通信用URIとして記憶されていない場合のポートマッピングの動作について説明する。
端末705は、ウェブサイト315(アドレスは“192.168.100.10”)上のファイル(“example.txt”)を取得するために、HTTP GETリクエストを送信する(図8:ステップS501、S502)。ここで、HTTP GETリクエストの送信先IPアドレスは、ルーターのWAN側IPアドレスである“172.16.1.5”、ポート番号は“80”、Request-URIは“/myServer/”である。
ルーター105のポートマッピング手段155は、端末705からHTTP GETリクエストを受信したか否かを確認する(図10:ステップS701)。
HTTP GETリクエストを受信すると(図10:ステップS701:Yes)、ポートマッピング手段155は、HTTP GETリクエストのRequest-URIに記憶手段190に記憶された通信用URIが含まれるか否かを確認する(図10:ステップS702、図8:ステップS503)。
Request-URIに記憶手段190に記憶された通信用URIが含まれない場合(図10:ステップS702:No)、ポートマッピング手段155は、端末705からのHTTP GETリクエストを破棄する(図10:ステップS707、図8:ステップS504)。
なお、前述の動作において、ウェブサーバー305とウェブサーバー405のfriendlyNameがともに“webServer”である等のように同一の場合がある。そのような場合には、後から採用される通信用URIにサフィックスを付与することや、friendlyNameではなくmodelNameなど他のパラメーターを採用することなどにより、通信用URIが重複しないようにする。
また、記憶手段190に記憶している通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パスはルーター105が有する管理画面で使用者が確認できるものとする。
以上説明したように、本実施形態のルーター155では、ルーターのWAN IPアドレスとパス名とを含むURLにより、ポート番号が使用されることなく、ルーターのLAN側の個々のウェブサーバーが識別される。従って、本実施形態のポートマッピング装置155では、ポートマッピングの利便性が向上されるという効果がある。
(第3の実施形態)
第2の実施形態のルーター105は、送信したM-SEARCHに対するウェブサーバー305からのHTTP 200レスポンス中の「LOCATION」フィールドに記述されるファイルから、通信用URIを取得する。
ところで、リクエストメソッドがNOTIFYである、ウェブサーバーからの通知のためのHTTPパケット(以下、「NOTIFY」という。)が存在する。
そこで、本発明のルーターの例として、M-SEARCHに対するウェブサーバーからのHTTP 200レスポンス中の「LOCATION」フィールドに記述されるファイルの代わりに、ウェブサーバーからのNOTIFY中の「LOCATION」フィールドに記述されるファイルから、通信用URIを取得するルーターの例を第3の実施形態として示す。
本実施形態における構成について説明する。
本実施形態のルーター106、ウェブサーバー306、406の構成は、それぞれ、第2の実施形態のルーター105、ウェブサーバー305、405の構成と同じである。
ただし、本実施形態のルーター106、ポートマッピング手段156、ウェブサーバー306、406は、第2の実施形態のルーター105、ポートマッピング手段155、ウェブサーバー305、405とは動作が異なる。
次に、本実施形態における動作について説明する。
図14は、本実施形態のルーター106、ウェブサーバー306、406のポートマッピング情報の設定動作例を示すシーケンス図である。
図15は、本実施形態のルーター106、ウェブサーバー306、406のポートマッピング情報の別の設定動作例を示すシーケンス図である。
図14、図15を使用して本実施形態のルーター106、ウェブサーバー306、406の動作を説明する。
ウェブサーバー306は、NOTIFYをLAN側ネットワークにマルチキャスト送信する(ステップS1101、S1102、S1103)。
NOTIFYは周知の技術である。ウェブサーバー306は、周知の技術に従いNOTIFYを送信する。
ルーター106は、NOTIFYを受信すると、NOTIFYに「LOCATION」フィールドが含まれるか否かを確認し、含まれる場合、NOTIFYを一時的に記憶する(ステップS1104)。
ルーター106のポートマッピング手段156は、ウェブサーバー306がAddPortMapping要求を受信しているか否かを確認する(ステップS1105)。
AddPortMapping要求を受信していない場合には、ポートマッピング手段156は、AddPortMapping要求の受信待ちを行う(ステップS1106)。なお、受信待ち時間は、NOTIFYの「CACHE-CONTROL」フィールドに記載されている値や、任意の時間(例えば180秒)を使用すればよい。
AddPortMapping要求を受信している場合には、ポートマッピング手段156は、ステップS1111以降の処理を行う。
ルーター106のポートマッピング手段156は、UPnP IGD手段170がAddPortMapping要求を受信すると(ステップS1107、S1108、S1109)、AddPortMapping要求を送信したウェブサーバー306が送信したNOTIFYが一時的に記憶されているか否かを確認する(ステップS1110)。
ウェブサーバー306が送信したNOTIFYが記憶されている場合、ポートマッピング手段156は、「LOCATION」フィールドに記述されるファイルの取得を行う(ステップS1111、S1112、S1113)。
ファイルが取得できた場合、ポートマッピング手段156は、取得したファイルにpresentationURLが記述されているか否かを確認する(ステップS1114)。
presentationURLが記述されている場合、ポートマッピング手段156は、ウェブサーバー306がウェブサイト315を有すると判断し、取得したファイルに記述されているfriendlyNameやmodelNameなどを通信用URIとして採用する(ステップS1115)。
続いて、ポートマッピング手段156は、通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パスをポートマッピング手段156に設定し、記憶手段190に記憶する(ステップS1116)。
なお、端末705がウェブサイト315または415上のファイルを取得する処理や、ルーター106がDeletePortMapping要求を受信した場合の処理は、第2の実施形態と同一であるため、説明を省略する。
ウェブサーバー306は、ルーター106に対してAddPortMapping要求を送信する(ステップS1201、S1202)。
ルーター106のポートマッピング手段156は、UPnP IGD手段170がAddPortMapping要求を受信すると(ステップS1202、S1203)、ウェブサーバー306が送信したNOTIFYが一時的に記憶されているか否かを確認する(ステップS1204)。
ウェブサーバー306が送信したNOTIFYが記憶されていない場合には、ポートマッピング手段156は、NOTIFYの受信待ちを行う(ステップS1205)。なお、受信待ち時間は任意の時間(例えば180秒)を使用すればよい。
ウェブサーバー306が送信したNOTIFYが記憶されている場合には、ポートマッピング手段156は、ステップ1209以降の処理を行う。
ルーター106は、NOTIFYを受信すると(ステップS1206、S1207)、受信したNOTIFYがAddPortMapping要求を要求しているウェブサーバーが送信したNOTIFYであるか否かを確認する(ステップS1209)。
受信したNOTIFYがAddPortMapping要求を要求しているウェブサーバーが送信したNOTIFYである場合、ポートマッピング手段156は、「LOCATION」フィールドに記述されるファイルの取得を行う(ステップS1210、S1211、S1212)。
ファイルが取得できた場合、ポートマッピング手段156は、取得したファイルにpresentationURLが記述されているか否かを確認する(ステップS1213)。
presentationURLが記述されている場合、ポートマッピング手段156は、ウェブサーバー306がウェブサイト315を有すると判断し、取得したファイルに記述されているfriendlyNameやmodelNameなどを通信用URIとして採用する(ステップS1214)。
続いて、ポートマッピング手段156は、通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パスをポートマッピング手段156に設定し、記憶手段190に記憶する(ステップS1215)。
なお、端末705がウェブサイト315または415上のファイルを取得する処理や、ルーター106がDeletePortMapping要求を受信した場合の処理は、第2の実施形態と同一であるため、説明を省略する。
また、記憶手段190に記憶される情報は、UPnPを使用して自動的に設定されるとは限らない。記憶手段190に記憶される情報は、使用者が手動で通信用URIおよびウェブサーバーのIPアドレス、ポート番号、パス等を設定することにより、設定されてもよい。
以上説明したように、本実施形態のルーター156は、ウェブサーバーからのNOTIFY中の「LOCATION」フィールドに記述されるファイルから、通信用URIを取得する。従って、本実施形態のルーター156では、NOTIFYから通信用URIが取得される場合にも、ルーターのWAN側IPアドレスとパス名とを含むURLにより、ポート番号が使用されることなく、ルーターのLAN側の個々のウェブサーバーが識別される。従って、本実施形態のポートマッピング装置155では、ポートマッピングの利便性が向上されるという効果がある。
尚、図9、10、11のルーターの各処理は、ソフトウェアによって実行されてもよい。すなわち、各処理を行うためのコンピュータプログラムが、ルーターが備えるCPUによって読み込まれ、実行されてもよい。プログラムを用いて各処理を行っても、上述の実施形態の処理と同内容の処理を行うことができる。そして、上記のプログラムは、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
あるいは、各処理は、個別の回路等の構成要素によって実行されてもよい。
尚、本願発明は、上述の実施形態に限定されるものではなく、本願発明の要旨を逸脱しない範囲で種々変更、変形して実施することができる。