(実施形態1)
図1に、本実施形態に係る通信システムのネットワーク構成を示す。101は通信装置としてのデジタルカメラ(以下、カメラ)である。102はIEEE802.11シリーズで規定されたアドホックモードに準拠したネットワーク131を構築する携帯電話である。携帯電話102は、さらに公衆無線を用いて電話基地局104と接続し、電話基地局104を介してバックボーンネットワークであるインターネット133に接続することができる。なお、IEEEとはInstitute of Electrical and Electronic Engineersの略である。また、公衆無線とはLTE(Long Term Evolution)規格に準拠した無線通信である。しかし公衆無線はこれに限らず、IMT(International Multimedia Telecommunications)規格といった他の無線通信規格に準拠していてもよい。
103はIEEE802.11シリーズで規定されたインフラストラクチャモードに準拠したネットワーク132を構築するアクセスポイント(以下、AP)である。AP103は有線によりインターネット133と接続している。また、本実施形態のAP103は、家やオフィス等で限られたユーザにより利用されるAPである。このようなAP103が構築するネットワークをホームネットワークと呼ぶ。これに対して、不特定多数のユーザにより利用されるAPが構築するネットワークを公衆無線LANと呼ぶ。また、AP103はNAT/NAPT機能を有しており、AP103に接続した機器(ここでは、カメラ101)にプライベートアドレスを割り当てる。ここで、NATとはNetwork Address Translationの略であり、NAPTとはNetwork Address Port Translationの略である。なお、以下、NAT/NAPT機能のことを単にNAT機能と記す。また、本実施形態のホームネットワークおよび公衆無線LANではFirewall(ファイヤウォール)といったインターネット133との間のパケット制御は行っていないものとする。
NATは、ネットワーク132内でのみ用いられるIPアドレスであるプライベートアドレスをネットワーク132に参加している通信装置に割り当てる。また、NATは、割り当てたプライベートアドレスと外部のインターネット133で用いられるIPアドレスであるグローバルアドレスとを相互変換する。
カメラ101はネットワーク132に参加することで、AP103を介してインターネット133に接続することができる。また、カメラ101はネットワーク131に参加することでも、携帯電話102を介してインターネット133に接続することができる。
なお、本実施形態ではカメラ101と携帯電話102、および、カメラ101とAP103とはIEEE802.11シリーズに準拠した無線通信を行うが、無線通信方式はこれに限定されない。例えば、Bluetooth(商標)、UWB、MBOA(Multi Band OFDM Alliance)、ZigBeeといった他の無線通信方式を用いてもよい。なお、UWBとはUltra Wide Bandの略であり、ワイヤレスUSB、ワイヤレス1394、WINETなどが含まれる。
151はプリンタであり、携帯電話152が構築するアドホックモードに準拠したネットワーク171に参加することができる。また、プリンタ151はAP153が構築するインフラストラクチャモードに準拠したネットワーク172に参加することができる。また、携帯電話152は公衆無線を用いて電話基地局154と接続し、電話基地局154を介してインターネット133に接続することができる。また、AP153は有線によりインターネット133に接続している。従って、プリンタ151は携帯電話152またはAP153を介してインターネット133に接続することができる。
図2(a)にカメラ101のハードウェア構成を簡単に示す。なお、プリンタ151も同様のハードウェア構成を有する。
201は記憶部202に記憶されたコンピュータプログラム(以下、プログラム)を実行することによりカメラ101全体を制御する制御部であり、CPU、MPU等のコンピュータにより構成される。202は制御部201が実行するプログラムや、通信に必要な通信パラメータ、接続するAP103のMACアドレス(機器固有情報)等の各種情報を記憶する記憶部である。後述する各種動作は、記憶部202に記憶されたプログラムを制御部201が実行することにより行われる。なお、記憶部202はROM、RAM等のメモリ、又はフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、DVDなどを用いることができる。
203はカメラ101をユーザが操作するための操作部である。204はユーザに各種情報を告知する表示部である。なお、表示部204はLCDやLEDのように視覚で認知可能な情報の出力の他、スピーカなどの音出力が可能な機能を有する。205はカメラ101に電源を供給する電源部である。
206はIEEE802.11シリーズに準拠した無線通信を行うための無線LAN部である。無線LAN部206は、IEEE802.11シリーズに準拠した無線LAN通信の各種制御や無線LAN通信関連のプロトコル処理を行う。207は無線LAN部206により無線通信を行う際に用いるアンテナである。208はリモート接続モードによりプリントするためのリモートダイレクトプリントボタン(以下、プリントボタン)である。ここで、リモート接続とはカメラ101とプリンタ151とがインターネット133を介して接続する接続形態のことである。
図2(b)に携帯電話102のハードウェア構成を簡単に示す。なお、携帯電話152も同様のハードウェア構成を有する。
251は記憶部252に記憶されたプログラムを実行することにより携帯電話102全体を制御する制御部であり、CPU、MPU等のコンピュータにより構成される。252は制御部251が実行するプログラムや、通信に必要な通信パラメータ等の各種情報を記憶する記憶部である。後述する各種動作は、記憶部252に記憶されたプログラムを制御部251が実行することにより行われる。なお、記憶部252はROM、RAM等のメモリ、又はフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、DVDなどを用いることができる。
253は携帯電話102をユーザが操作するための操作部である。操作部253は、ユーザが通話を行うためのマイクを含む。254はユーザに各種情報を告知する表示部である。なお、表示部254はLCDやLEDのように視覚で認知可能な情報の出力の他、スピーカなどの音出力が可能な機能を有する。255は携帯電話102に電源を供給する電源部である。
256はIEEE802.11シリーズに準拠した無線通信を行うための無線LAN部である。無線LAN部256は、IEEE802.11シリーズに準拠した無線LAN通信の各種制御や無線LAN通信関連のプロトコル処理を行う。257は無線LAN部256により無線通信を行う際に用いる第1のアンテナである。258は後述するリモート接続モードによりプリントするためのリモートダイレクトプリントボタン(以下、プリントボタン)である。
259は公衆無線を行うための公衆無線部である。公衆無線部259は公衆無線のための各種制御やプロトコル処理を行う。260は公衆無線部259により無線通信を行う際に用いる第2のアンテナである。
図3(a)は、カメラ101の制御部201が記憶部202に記憶されているプログラムを読み出すことで実現されるソフトウェア機能ブロック図である。なお、ソフトウェア機能ブロックの一部をASIC等のハードウェアで構成してもよいし、複数の機能ブロックをまとめて1つの機能ブロックとして実現してもよい。また、カメラ101で稼動しているOSが実際の処理の一部または全部を行い、前述の機能を実現してもよい。OSとは、Operating Systemの略である。また、プリンタ151も同様のソフトウェア機能ブロックを有している。
301は、無線LAN部206およびアンテナ207を用いて周囲のネットワークを検出する検出部である。なお、検出部301はIEEE802.11シリーズに準拠したAdhoc(アドホック)モードにより構築されているネットワークを検出する。Adhocモードにより構築されたネットワークでは、ネットワークに参加している機器間で通信することができる。302は、検出部301が検出したネットワークに、無線LAN部206およびアンテナ207を用いてカメラ101が参加するための参加部である。
303は、無線LAN部206およびアンテナ207を用いて携帯電話に接続情報を要求し、携帯電話から第1の接続情報を取得する取得部である。第1の接続情報とは、インターネットを介して携帯電話に接続するために必要な情報であり、具体的には携帯電話のIPアドレス、暗号鍵、ポート番号等である。304は、参加部302によりカメラ101が参加したネットワークから離脱する離脱部である。
305は、無線LAN部206およびアンテナ207を用いてAPと接続する第1の接続部である。306は、取得部303により取得した接続情報を用いて携帯電話と接続する第2の接続部である。307は、カメラ101が属しているネットワークの環境を判定する環境判定部である。本実施形態では、ネットワーク環境は図4に示す4つに分類される。なお、図中「NW」とは、「ネットワーク」の略である。
ネットワーク環境aとは、ネットワーク内にNAT機能がない、もしくは、IGD機能により、カメラ101がデータをインターネット133に送信する際に用いるグローバルアドレスを、カメラ101が認識できるネットワーク環境である。具体的には、ネットワーク内にNATが存在しない、または、NATは存在するがUPnP(Universal Plug and Play)で規定されたIGD機能によりカメラ101がグローバルアドレスを認識できるネットワーク環境である。なお、IGDとはInternet Gateway Deviceの略であり、NATによって付与されるグローバルアドレスを、カメラ101に通知する機能である。IGD機能では、ネットワーク内に一のNATが存在する場合には、カメラ101にグローバルアドレスを通知することができる。しかしながら、IGD機能では、カメラ101が複数のNATを介してインターネット133に接続する場合(以下、多段NAT構成)には、カメラ101にグローバルアドレスを通知することができない。また、多段NAT構成ではない場合、IGD機能を用いることで、特定のグローバルアドレスおよびポート番号を指定したパケットを、インターネット133からカメラ101にAP103が中継するように設定することができる。ネットワーク環境aでは、インターネット133を介してカメラ101から通信相手に接続することも、通信相手からカメラ101に接続することも可能である。
ネットワーク環境bとは、多段NAT構成になっておりIGD機能では、カメラ101にグローバルアドレスを通知することができないネットワーク環境である。しかしながら、別の方法でカメラ101がグローバルアドレスを認識することができた場合には、UDP hole punching機能を用いることで、インターネット133を介して通信相手からカメラ101に接続することが可能なネットワーク環境である。また、カメラ101から通信相手に接続することも可能である。なお、UDP hole punching機能とは、NAT機能を有するAPを中継している場合であっても、機器同士が直接通信できるようにする機能である。具体的には、一方の機器Aが他方の機器Bに対して、グローバルアドレスとポート番号とを指定してUDP(User Datagram Protocol)パケットを送信する。すると、機器A側のAPは、機器Aから機器Bに対してパケットが送信されたことに応じて、機器Bから機器Aに対するパケットを中継するようになる。従って、機器Bは機器Aに対して接続することができるようになる。
ネットワーク環境cとは、外部のインターネット133からの接続要求を許可していないネットワーク環境である。一般に公衆無線LANでは、セキュリティの観点からインターネット133からの接続要求を許可していない場合が多い。ネットワーク環境cでは、インターネット133を介して通信相手からカメラ101に接続することはできないが、カメラ101は通信相手に接続することができる。そして、ネットワーク環境dとは、カメラ101がAPを介してインターネット133に接続できないネットワーク環境である。なお、本実施形態では、カメラ101は携帯電話102を介すことでインターネット133に必ず接続できるものとする。また、プリンタ151は携帯電話152を介すことでインターネット133に必ず接続できるものとする。
ソフトウェア機能ブロック図の説明に戻る。環境判定部307は、さらにブロック321〜324を有する。321は、カメラ101が接続したAPが公衆無線LANを構築しているかホームネットワークを構築しているかを判定するAP判定部である。322は、カメラ101が接続したネットワーク132内にNATが存在するか否かを判定するNAT判定部である。NAT判定部322は、さらに、ネットワーク132が多段NAT構成であるか否かも判定する。323は、ネットワーク132内にIGD機能を有する機器が存在するか否かを判定するIGD判定部である。324は、携帯電話102を用いてカメラ101のグローバルアドレスの取得が可能か否かを判定する取得判定部である。
308は、携帯電話102に対して、外部機器(ここではプリンタ151)がカメラ101に接続するためのリモート接続情報を転送するように要求する要求部である。309は、カメラ101と外部機器(ここではプリンタ151)とが、通信する際の接続形態を選択する選択部である。
図3(b)は、携帯電話102の制御部251が記憶部252に記憶されているプログラムを読み出すことで実現されるソフトウェア機能ブロック図である。なお、ソフトウェア機能ブロックの一部をASIC等のハードウェアで構成するようにしてもよいし、複数の機能ブロックをまとめて1つの機能ブロックとして実現するようにしてもよい。また、カメラ101で稼動しているOSが実際の処理の一部または全部を行い、前述の機能を実現してもよい。
351は、IEEE802.11シリーズに準拠したAdhocモードで通信するためのネットワーク131を無線LAN部256および第1のアンテナ257を用いて構築する構築部である。352は、公衆無線部259および第2のアンテナ260を用いて電話基地局に接続し、電話基地局を介してインターネットに接続する接続部である。353は、接続部352により接続したインターネット上のDHCPサーバから、携帯電話102のIPアドレスを取得する取得部である。DHCPとは、Dynamic Host Configuration Protocolの略である。
354は、取得部353により取得したIPアドレスを含む接続情報を、無線LAN部256および第1のアンテナ257を用いてカメラに通知する通知部である。なお、接続情報に含まれる暗号鍵は、携帯電話102が生成して通知する。しかしこれに限らず、携帯電話102が予め記憶している暗号鍵を通知するようにしてもよい。355は、構築部351により構築したネットワーク131からカメラが離脱したことを検知する検知部である。356は、電話基地局を介した公衆無線経由でのカメラからの接続を待ち受ける待受部である。待受部356は、さらに公衆無線経由でのカメラからのデータ受信要求も待ち受ける。
図5は、カメラ101とプリンタ151とがリモート接続する際のシーケンスチャートである。図6(a)は、カメラ101とプリンタ151とがリモート接続する際に、カメラ101の制御部201が記憶部202に記憶されたプログラムを読み出して実現されるフローチャートである。また、図6(b)は、携帯電話102の制御部251が記憶部252に記憶されたプログラムを読み出して実現されるフローチャートである。なお、本実施形態では、AP103がネットワーク132を予め構築しているものとする。
ユーザにより、携帯電話102のプリントボタン258が押下されると(S501、S651)、携帯電話102の構築部351はネットワーク131を構築する(S652)。さらにユーザにより、カメラ101のプリントボタン208が押下されると(S502、S601)、カメラ101の検出部301がネットワーク131を検出し、参加部302によりカメラ101は検出したネットワーク131に参加する(S503、S602)。これにより、カメラ101と携帯電話102とは直接通信可能となる。
なお、ユーザの指示(プリントボタンの押下)を待つことなく、カメラ101および携帯電話102において起動中のアプリケーションに連動して、携帯電話102がネットワーク131を構築し、カメラ101がネットワーク131に参加するようにしてもよい。また、カメラ101がネットワーク131を構築し、構築されたネットワーク131に携帯電話102が参加するようにしてもよい。
カメラ101がネットワーク131に参加すると、取得部303は公衆無線を介して携帯電話102に接続するための第1の接続情報(携帯電話のIPアドレス、暗号鍵等)を、ネットワーク131を介して携帯電話102に要求する(S504、S603)。携帯電話102の無線LAN部256がこの接続情報要求を受信すると(S653)、接続部352は電話基地局104を介してインターネット133に接続する(S505、S654)。さらに、取得部353がインターネット133上の不図示のDHCPサーバから携帯電話102のIPアドレスを取得する(S506、S655)。
IPアドレスを取得すると、通知部354は取得したIPアドレスを含む第1の接続情報をカメラ101に直接送信する(S507、S656)。なお、公衆無線を介して携帯電話102に接続するための暗号鍵は携帯電話102が予め保持しており、携帯電話102はカメラ101にこの暗号鍵を送信する。カメラ101の取得部303が携帯電話102から第1の接続情報を取得すると(S604)、離脱部304によりカメラ101はネットワーク131から離脱する(S508、S605)。カメラ101がネットワーク131から離脱したことを携帯電話102の検知部355が検知すると(S657)、待受部356は、インターネット133、電話基地局104を介した公衆無線経由でのカメラ101からの接続を待ち受ける(S658)。
カメラ101はネットワーク131から離脱すると、接続部305はAP103と接続する(S509、S606)。ここでは、カメラ101はAP103に対してアソシエーション(接続要求)を行うことで、AP103と接続する。カメラ101がAP103と接続すると、AP103はカメラ101にプライベートアドレスを割り当てる。
さらに、接続部305はステップS604で取得した第1の接続情報を用いて、公衆無線経由で携帯電話102に接続する(S510、S607)。次に、環境判定部307は公衆無線経由での携帯電話102への接続に成功したか否かを判定する(S608)。接続に成功していた場合にはステップS610に進み、失敗していた場合にはステップS609に進む。なお、公衆無線経由での接続に失敗する場合とは、例えばAP103によりカメラ101がインターネット133に接続することを拒否された場合である。
ここでは、AP103と、インターネット133と、電話基地局104とを順に介すことで、カメラ101と携帯電話102とが公衆無線経由での接続に成功する。公衆無線経由での接続に成功すると、携帯電話102の待受部356は公衆無線経由でのカメラ101からのデータ受信要求を待ち受ける。
ステップS609において、環境判定部307はネットワーク132のネットワーク環境をdと判定し、ステップS611に進む。一方、ステップS610では、カメラ101は接続しているネットワークの環境を判定するために、図7(a)に示す環境判定処理を行う(S511)。
まずAP判定部321は、接続したAP103により構築されたネットワーク132がホームネットワークであるか、公衆無線LANであるかを判定する(S701)。ここでは、AP判定部321はARP(Address Resolution Protocol)パケットを送信し、AP103のMACアドレスを取得する。さらに、AP判定部321は取得したMACアドレスと、記憶部202に予め記憶してあるMACアドレスとを比較する。比較の結果、取得したMACアドレスが予め記憶部202に記憶してあるMACアドレスと一致すれば、AP判定部321は、ネットワーク132がホームネットワークであると判定し、ステップS703に進む。一方、一致しなければ、AP判定部321はネットワーク132が公衆無線LANであると判定し、ステップS702に進む。ここでは、AP103はホームネットワークを構築していると判定され、ステップS703に進む。
ステップS702において、環境判定部307はネットワーク132のネットワーク環境をcと判定し、図7に示すフローチャートの処理を終了する。即ち、ネットワーク132が、インターネット133からの接続要求を許可されていないネットワークであると判定する。
ステップS703において、NAT判定部322はネットワーク132内にNATが存在するか否かを判定する。具体的には、NAT判定部322はカメラ101に付与されたIPアドレスがグローバルアドレスであるかプライベートアドレスであるかに基づいて判定する。そして、NAT判定部322は、付与されたIPアドレスがグローバルアドレスであればNATが存在しないと判定し、IPアドレスがプライベートアドレスであればNATが存在すると判定する。
ステップS703でNATが存在しないと判定された場合(S703でNo)、環境判定部307はネットワーク132のネットワーク環境をaと判定し(S704)、図7に示すフローチャートの処理を終了する。一方、ステップS703でNATが存在すると判定された場合(S703でYes)、ステップS705に進む。ここでは、ネットワーク132内にNATが存在すると判定され、ステップS705に進む。
ステップS705において、IGD判定部323はネットワーク132内にIGD機能を有する機器が存在するか否かを判定する。具体的には、UPnPで規定されたSSDPを用いてIGD機能を有する機器がネットワーク132内に存在するか否かを判定する。しかしこれに限らず、Bonjour(商標)等の他のプロトコルを用いて判定するようにしてもよい。IGD機能を有する機器が存在する場合にはステップS706に進み、IGD機能を有する機器が存在しない場合にはステップS707に進む。ここでは、AP103はIGD機能を有していないのでステップS707に進む。
ステップS706において、NAT判定部322はネットワーク132が多段NAT構成であるか否かを判定する。具体的には、tracert等のコマンドを用いて任意の外部サーバにIPパケットが到達するまでの経路を調査し、IPアドレスの変換回数をカウントすることで判定する。
多段NAT構成でない場合には(ステップS706でNo)、IGD機能を用いてAP103がパケットをインターネット133に送出する際に用いるグローバルアドレスを、カメラ101は認識することができる。従って、ステップS704に進み、環境判定部307はネットワーク132のネットワーク環境をaと判定する。
一方、多段NAT構成である場合には、IGD機能を用いてもAP103がパケットをインターネット133に送出する際に用いるグローバルアドレスを、カメラ101は認識することができない。この場合、ステップS707に進み、取得判定部324は携帯電話102を用いて、カメラ101に対応するグローバルアドレスを取得可能か否かを判定する。
ステップS707の処理について、図7(b)および(c)を用いて以下に詳細に説明する。なお、図7(b)は、カメラ101の制御部201が記憶部202に記憶されているプログラムを読み出すことで実現されるフローチャートである。また、図7(c)は、携帯電話102の制御部251が記憶部252に記憶されているプログラムを読み出すことで実現されるフローチャートである。
まず、取得判定部324は、AP103を介して携帯電話102にデータ受信要求を送信する(S751)。データ受信要求を受信した携帯電話102は(S771)、カメラ101に対してデータ受信準備完了を通知し、カメラ101からのデータ受信を待ち受ける(S772)。カメラ101はAP103を介して携帯電話102にグローバルアドレス取得要求を行う(S752)。その後、カメラ101は、AP103およびインターネット133を介して任意のデータを携帯電話102に送信する(S753)。カメラ101からインターネット133を介して携帯電話102に送信される全てのデータには、AP103によりカメラ101のグローバルアドレスが付与される。
この際、カメラ101はプリンタ151と通信で用いるポート番号を用いて、データを携帯電話102に送信する。これにより、携帯電話102は、カメラ101とプリンタ151とが通信した場合にAP103のNAT(NAPT)機能によりインターネット133側に割り当てられるポート番号を知ることができる。
そして、携帯電話102は、カメラ101からのデータを受信する(S773)。携帯電話102は、カメラ101からインターネット133を介して受信したデータを解析することで、カメラ101のグローバルアドレスを取得する(S774)。携帯電話102は、このようにして取得したカメラ101のグローバルアドレスをカメラ101に対して通知する(S775)。そして、カメラ101の環境判定部307は、カメラ101のグローバルアドレスを取得する(S754)。その後、カメラ101の環境判定部307は所定の時間毎にAP103を介して携帯電話102に任意のデータの送信を行い、グローバルアドレスを取得する。これにより、カメラ101のグローバルアドレスが変更された場合であっても、これをカメラ101は認識することができる。
上述のようにして、事前に外部サーバへの接続情報(グローバルアドレスやポート番号、暗号鍵等)を保持することなく、カメラ101がAP103により割り当てられた接続情報(グローバルアドレスやポート番号、暗号鍵等)を取得することができる。また、外部サーバへ、カメラ101の接続情報を送信しないので、外部サーバから接続情報が漏洩することがなく、高いセキュリティを提供することができる。
このようにして、カメラ101のグローバルアドレスを取得できた場合にはステップS708に進み(ステップS707でYes)、ネットワーク132のネットワーク環境をbと判定する。また、カメラ101のグローバルアドレスを取得できなかった場合には、ステップS702に進み、ネットワーク132のネットワーク環境をcと判定する。ここでは、携帯電話102を用いてカメラ101のグローバルアドレスを取得でき、ネットワーク環境がbと判定されたものとする。
なお、上述の環境判定処理は一例であり、異なる判定項目や順序を用いてもよい。例えば、携帯電話を用いた外部アドレス情報の取得が可能であるか否かの判定を先に行い、取得できない場合はNATがIGD機能をサポートしているか否かの判定を行うようにしてもよい。
また、ネットワークの環境判定処理中にエラー等のイベントが発生した場合には、再び、携帯電話102がネットワーク131を構築し、カメラ101がネットワーク131に参加する。これにより、携帯電話102はネットワーク131を介して発生したイベントをカメラ101に通知することができる。例えば、携帯電話102はカメラ101に対してカメラ101からの応答を要する信号を定期的に送信し、この信号に対する応答が無いことを判定することにより、カメラ101のグローバルアドレスが変更されたことを検出する。このようにして、カメラ101のグローバルアドレスが変更されたことを携帯電話102が検出した場合、携帯電話102は、グローバルアドレスが変更されたことをカメラ101に対してネットワーク131を介して通知する。なお、携帯電話102は、任意のデータをインターネット133経由で再度送信するようにカメラ101に要求するようにしてもよい。また、ステップS774においてカメラ101のグローバルアドレスの取得に失敗した場合には、携帯電話102は、グローバルアドレスの取得に失敗したことをネットワーク131を介してカメラ101に通知する。これらの通知を受信するとカメラ101は、再度、グローバルアドレス取得処理(図7(b)および(c)に示す処理)を実施する。
このようにして、カメラ101が属するネットワークの環境判定処理が完了すると、要求部308は、携帯電話102に対してカメラ101のリモート接続情報の転送を要求する(S512、S611)。ここで、リモート接続情報とは、プリンタ151がインターネット133を介してカメラ101に接続するための情報である。即ち、カメラ101のグローバルアドレス、ポート番号、暗号鍵およびカメラ101が属するネットワーク132のネットワーク環境情報である。携帯電話102は、この要求を受信すると(S659)、ユーザ操作によりリモート接続情報を含むSMS(Short Message Service)の送信先の指示を受付ける(S513、S660)。具体的には、ユーザが携帯電話102に表示される電話帳から希望の送信先電話番号を指定することで実施される。電話番号が指定されると、携帯電話102はSMSを作成し、SMSを送信する(S514、S661)。なお、SMSに代えてEMS(Enhanced Messaging Service)やMMS(Multimedia Messaging Service)、電子メールを利用するようにしてもよい。SMSの送信が完了すると、携帯電話102はカメラ101にリモート接続情報転送完了通知を送信する(S515、S662)。そして、要求部308は、リモート接続情報転送完了通知を受信する(S612)。ここでは、携帯電話102からSMSが送信され、携帯電話152において、このSMSが受信される。
図8に、携帯電話102からのSMSを携帯電話152が受信した後のシーケンスチャートを示す。携帯電話152は携帯電話基地局154を介してSMSを受信すると(S801)、リモート接続モードに移行する(S802)。なお、SMSを受信したことをユーザに通知し、ユーザの指示により携帯電話152がリモート接続モードに移行するようにしてもよい。リモート接続モードに移行すると、携帯電話152は、アドホックモードに準拠したネットワーク171を構築する(S803)。プリンタ151はネットワーク171を検出し、ネットワーク171に参加する(S804)。これにより、プリンタ151と携帯電話152とは直接通信可能となる。
そして、プリンタ151は携帯電話152に対して公衆無線通信経由での接続を行うための第2の接続情報(ここでは、IPアドレスと暗号鍵)を要求する(S805)。第2の接続情報を要求された携帯電話152は、電話基地局154を介してインターネット133に接続し(S806)、インターネット133上の不図示のDHCPサーバから携帯電話152のIPアドレスを取得する(S807)。そして、取得したIPアドレスを含む第2の接続情報をプリンタ151に対して通知する(S808)。
さらにプリンタ151は、携帯電話152に対してカメラ101のリモート接続情報を要求する(S809)。この要求に応じて携帯電話152は、SMSにより取得したカメラ101のリモート接続情報をプリンタ151に対して送信する(S810)。カメラ101のリモート接続情報を取得したプリンタ151は、ネットワーク171を離脱し(S811)、AP153と接続する(S812)。そして、インターネット133経由で携帯電話152と接続する(S813)。その後、プリンタ151は図7(a)に示す環境判定処理を行い、ネットワーク172の環境を判定する(S814)。
上述のようにして、カメラ101が属するネットワーク132とプリンタ151が属するネットワーク172の環境が判定されると、プリンタ151の選択部は図9に示すフローチャートを実行し、リモート接続形態選択を行う(S815)。なお、下記の説明においてカメラ101のネットワーク環境(図中では、「相手NW環境」と表記)とは、ネットワーク132の環境のことである。また、プリンタ151のネットワーク環境(図中では、「自NW環境」と表示)とは、ネットワーク172の環境のことである。
まず、プリンタ151はカメラ101のネットワーク環境がaであるか否かの判定を行う(S901)。aである場合はステップS902に進み、aでない場合はステップS903に進む。S902にて、プリンタ151自身のネットワーク環境がdであるか否かの判定を行う。dでない場合、プリンタ151からAP153、AP103をこの順に介してカメラ101へ接続するリモート接続形態(S908)を選択し、リモート接続形態選択処理を終了する。また、dである場合、プリンタ151から携帯電話152、電話基地局154、AP103をこの順に介してカメラ101に接続するリモート接続形態(S909)を選択し、リモート接続形態選択処理を終了する。このように、AP103を介した接続を優先的に選択することで、携帯電話102を介した接続を選択するよりも低コストとすることができる。即ち、携帯電話102を介した接続を選択するよりも、通信料金をより安くしたり、通信速度をより早くしたりすることができる。また、携帯電話102と電話基地局104との間の通信帯域を他の用途に使うことができるようになるため、利便性が向上する。
S903では、カメラ101のネットワーク環境がbまたはcであるか否かの判定を行う。bまたはcである場合はS905に進み、bでもcでもない場合はS904に進む。S904において、プリンタ151自身のネットワーク環境がaであるか否かの判定を行う。aである場合、プリンタ151は、カメラ101から携帯電話102、電話基地局104、AP153をこの順に介してプリンタ151に接続するリモート接続形態(S913)を選択し、リモート接続形態選択処理を終了する。また、aでない場合、プリンタ151は、プリンタ151から携帯電話152、電話基地局154、電話基地局104、携帯電話102カメラ101に接続するリモート接続形態(S914)を選択し、リモート接続形態選択処理を終了する。
ここでは、デジタルカメラ101から接続する際に、予めユーザ操作により携帯電話102および携帯電話152は、予めGateway機能(インターネット133に接続するためのアクセスポイントモードとしての機能)を開始しておくものとする。これにより、携帯電話を介してデジタルカメラ101とプリンタ151との間で接続することができる。
S905において、プリンタ151自身のネットワーク環境がaであるか否かの判定を行う。aである場合、プリンタ151は、カメラ101からAP103、AP153をこの順に介してプリンタ151に接続するリモート接続形態(S910)を選択し、リモート接続形態選択処理を終了する。
また、aでない場合はS906へ進み、プリンタ151自身のネットワーク環境がbであるか否かの判定を行う。bでない場合、プリンタ151はカメラ101からAP103、電話基地局154、携帯電話152をこの順に介してプリンタ151に接続するリモート接続形態(S911)を選択し、リモート接続形態選択処理を終了する。
また、bである場合はS907に進む。S907においてカメラ101のネットワーク環境がbであるか否かの判定を行う。bである場合、プリンタ151はUDP hole punchingを用いて接続を行うリモート接続形態(S912)を選択し、リモート接続形態選択処理を終了する。また、bでない場合、プリンタ151はカメラ101からAP103、電話基地局154、携帯電話152をこの順に介してプリンタ151に接続するリモート接続形態(S911)を選択し、リモート接続形態選択処理を終了する。
その後、プリンタ151は、プリンタ151の外部接続情報(グローバルアドレス)と接続選択部309が選択したリモート接続形態情報とを携帯電話152に通知する(S812)。携帯電話152は、プリンタ151から通知された外部接続情報とリモート接続形態情報とを含むSMSを作成し、携帯電話102に送信する。携帯電話102は、さらに、プリンタ151の外部接続情報とリモート接続形態情報とをカメラ101に通知する。そして、カメラ101とプリンタ151は、リモート接続携帯情報に従って接続を行う。この際、接続を受け付けた側で接続元の認証処理を行う。
このようにして、それぞれの機器のネットワーク環境に応じて機器同士の接続を自動的に行うので、ユーザは機器のネットワーク環境を意識することなく機器同士を接続させることができる。
(実施形態2)
第2の実施形態では、実施形態1よりも簡易な方法で、それぞれの機器のネットワーク環境を判定する。
本実施形態に係る通信システムのネットワーク構成は図1に示され、実施形態1と同じである。また、カメラ101、プリンタ151のハードウェア構成は図2(a)に示され、実施形態1と同じである。また、携帯電話102、携帯電話152のハードウェア構成は図2(b)に示され、実施形態1と同じである。また、カメラ101のソフトウェア機能ブロック図は図3(a)に示され、実施形態1と同じである。また、携帯電話102のソフトウェア機能ブロック図は図3(b)に示され、実施形態1と同じである。
図10に、カメラ101とプリンタ151とがリモート接続する際に、カメラ101およびプリンタ151が各々の記憶部に記憶されたプログラムを読み出して実現する環境判定処理を示す。なお、環境判定処理を行うまでの各装置の動作は実施形態1と同じである。以下では、カメラ101が行う動作について説明する。
ステップS1001において、カメラ101が接続しているAP103により構築されたネットワーク132がホームネットワークであるか、公衆無線LANであるかを判定する。ここで、公衆無線LANと判定された場合にはステップS1002に進み、AP判定部321はカメラ101のネットワーク環境を「c」と判定し、図10に示す環境判定処理を終了する。
一方、ステップS1001においてホームネットワークと判定された場合にはステップS1003に進み、NAT判定部322はネットワーク132内にNATが存在するか否かを判定する。NATが存在しない場合にはステップS1004に進み、AP判定部321はカメラ101のネットワーク環境を「a」と判定し、図10に示す環境判定処理を終了する。一方、NATが存在する場合にはステップS1005に進み、取得判定部324は携帯電話102を用いて、カメラ101に対応するグローバルアドレスを取得可能か否かを判定する。この判定の詳細は図7(b)および(c)に示され、実施形態1と同じなので、ここでは説明を省略する。取得可能であると判定された場合にはステップS1006に進み、AP判定部321はカメラ101のネットワーク環境を「b」と判定し、図10に示す環境判定処理を終了する。一方、取得できないと判定された場合にはステップS1002に進み、AP判定部321はカメラ101のネットワーク環境を「c」と判定し、図10に示す環境判定処理を終了する。
その他の各々の機器の動作は、実施形態1と同じなので、ここでは説明を省略する。このようにすることで、実施形態1よりも簡易な方法で、それぞれの機器のネットワーク環境を判定することができる。