IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

<>
  • 特許-中継装置、制御方法、及び、プログラム 図1
  • 特許-中継装置、制御方法、及び、プログラム 図2
  • 特許-中継装置、制御方法、及び、プログラム 図3
  • 特許-中継装置、制御方法、及び、プログラム 図4
  • 特許-中継装置、制御方法、及び、プログラム 図5
  • 特許-中継装置、制御方法、及び、プログラム 図6
  • 特許-中継装置、制御方法、及び、プログラム 図7
  • 特許-中継装置、制御方法、及び、プログラム 図8
  • 特許-中継装置、制御方法、及び、プログラム 図9
  • 特許-中継装置、制御方法、及び、プログラム 図10
  • 特許-中継装置、制御方法、及び、プログラム 図11
  • 特許-中継装置、制御方法、及び、プログラム 図12
  • 特許-中継装置、制御方法、及び、プログラム 図13
  • 特許-中継装置、制御方法、及び、プログラム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-08
(45)【発行日】2022-12-16
(54)【発明の名称】中継装置、制御方法、及び、プログラム
(51)【国際特許分類】
   H04L 67/562 20220101AFI20221209BHJP
   H04L 67/565 20220101ALI20221209BHJP
   H04L 69/08 20220101ALI20221209BHJP
【FI】
H04L67/562
H04L67/565
H04L69/08
【請求項の数】 20
(21)【出願番号】P 2018144025
(22)【出願日】2018-07-31
(65)【公開番号】P2020021252
(43)【公開日】2020-02-06
【審査請求日】2021-07-12
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】和山 弘
(72)【発明者】
【氏名】村山 道平
【審査官】羽岡 さやか
(56)【参考文献】
【文献】特開2014-179017(JP,A)
【文献】特開2006-287564(JP,A)
【文献】特開2016-139218(JP,A)
【文献】特開2017-069755(JP,A)
【文献】特開平09-289531(JP,A)
【文献】国際公開第2017/035536(WO,A1)
【文献】特開2015-194885(JP,A)
【文献】特開2014-179021(JP,A)
【文献】特開2012-094088(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/00-69/40
(57)【特許請求の範囲】
【請求項1】
サービスを提供するサーバと当該サービスを受ける端末との通信を中継する中継装置であって、
第1の通信プロトコルに従って前記端末へ信号を送信する第1の通信手段と、
前記第1の通信プロトコルと異なる第2の通信プロトコルに従って前記端末から信号を受信すると共に、前記サーバと通信を行う第2の通信手段と、
を有し、
前記第2の通信手段により、前記端末から前記第2の通信プロトコルに従ったデータ取得要求を受信したことに基づいて、前記第1の通信手段が、前記第1の通信プロトコルに従って前記端末へデータを送信することを特徴とする中継装置。
【請求項2】
前記第1の通信手段を含む第1のサーバと、前記第2の通信手段を含むと共に前記第1のサーバと異なる第2のサーバとを含む、
ことを特徴とする請求項1に記載の中継装置。
【請求項3】
前記第2の通信手段は、前記サーバとの通信においても前記第2の通信プロトコルを使用する、
ことを特徴とする請求項1又は2に記載の中継装置。
【請求項4】
前記第1の通信手段は、前記第2の通信手段が前記サーバから前記端末へ宛てたデータを受信した場合に、前記端末からの要求を受け付けることなく、当該データを前記端末へ送信する、
ことを特徴とする請求項1から3のいずれか1項に記載の中継装置。
【請求項5】
前記第1の通信手段は、前記第2の通信手段が前記サーバから前記端末へ宛てたデータを受信した場合に、前記端末からの要求を受け付けたことに応じて、当該データを前記端末へ送信する、
ことを特徴とする請求項1から3のいずれか1項に記載の中継装置。
【請求項6】
前記第2の通信手段は、前記端末から前記サーバへ宛てたデータを受信した場合に、前記サーバからの要求を受け付けることなく、当該データを前記サーバへ送信する、
ことを特徴とする請求項1から5のいずれか1項に記載の中継装置。
【請求項7】
前記第2の通信手段は、前記端末から前記サーバへ宛てたデータを受信した場合に、前記サーバからの要求を受け付けたことに応じて、当該データを前記サーバへ送信する、
ことを特徴とする請求項1から5のいずれか1項に記載の中継装置。
【請求項8】
前記端末を示す情報を含んだ第1のテーブルと、前記サーバが提供するサービスを示す情報と当該サービスの提供を受ける前記端末を示す情報とを含んだ第2のテーブルと、前記第1のテーブルと前記第2のテーブルとを関連付ける第3のテーブルとを記憶する記憶手段をさらに有する、
ことを特徴とする請求項1から7のいずれか1項に記載の中継装置。
【請求項9】
前記記憶手段は、前記端末がサービスの提供を受ける前に、前記第1のテーブルに当該端末の情報を登録する、
ことを特徴とする請求項8に記載の中継装置。
【請求項10】
前記記憶手段は、前記サーバが前記端末にサービスを提供する前に、前記第2のテーブルに当該サービスの情報と、当該サービスの提供を受ける前記端末の情報とを登録する、
ことを特徴とする請求項8又は9に記載の中継装置。
【請求項11】
前記記憶手段は、前記端末がサービスの提供を受ける前に、前記第1のテーブルに登録される前記端末の情報が前記第2のテーブルに登録されている場合に、前記第2のテーブルにおいて当該端末の情報に対応するサービスの情報と、当該端末の情報とが対応付けられて前記第3のテーブルに登録する、
ことを特徴とする請求項8から10のいずれか1項に記載の中継装置。
【請求項12】
前記端末に情報を送信する際に、当該端末との間で前記第1の通信プロトコルによるセッションが確立されているか否かを確認する確認手段をさらに有し、
前記第1の通信手段は、前記端末との間で前記第1の通信プロトコルによるセッションが確立されていることが確認されてから、当該端末へ信号を送信する、
ことを特徴とする請求項1から11のいずれか1項に記載の中継装置。
【請求項13】
前記端末に対するユーザの操作に応じて、前記第1の通信プロトコルによるセッションが、前記中継装置と前記端末の間で確立される、
ことを特徴とする請求項12に記載の中継装置。
【請求項14】
前記第1の通信プロトコルおよび前記第2の通信プロトコルと異なる第3の通信プロトコルで前記端末へ信号を送信する第3の通信手段をさらに有し、
前記第1の通信手段の負荷と、送信される情報の特性との少なくともいずれかに基づいて、前記第1の通信手段と前記第3の通信手段とのいずれによって前記端末へ信号を送信するかを選択する、
ことを特徴とする請求項1から13のいずれか1項に記載の中継装置。
【請求項15】
前記第3の通信プロトコルは、MQTT(Message Queuing Telemetry Transport)プロトコルを含む、
ことを特徴とする請求項14に記載の中継装置。
【請求項16】
前記第1の通信プロトコルが、MQTT(Message Queuing Telemetry Transport)プロトコルを含む、
ことを特徴とする請求項1から14のいずれか1項に記載の中継装置。
【請求項17】
前記第1の通信プロトコルが、XMPP(Extensible Messageing and Presence Protocol)を含む、
ことを特徴とする請求項1から15のいずれか1項に記載の中継装置。
【請求項18】
前記第2の通信プロトコルが、HTTP(Hyper Text Transfer Protocol)を含む、
ことを特徴とする請求項1から17のいずれか1項に記載の中継装置。
【請求項19】
サービスを提供するサーバと当該サービスを受ける端末との通信を中継する中継装置が実行する制御手段であって、
第1の通信プロトコルに従って前記端末へ信号を送信するように第1の通信手段を制御する第1の工程と、
前記第1の通信プロトコルと異なる第2の通信プロトコルに従って前記端末から信号を受信すると共に、前記サーバと通信を行うように第2の通信手段を制御する第2の工程と、
を有し、
前記第2の工程において、前記第2の通信手段を介して前記端末から前記第2の通信プロトコルに従ったデータ取得要求を受信したことに基づいて、前記第1の工程において、前記第1の通信プロトコルに従って前記端末へデータを送信するように前記第1の通信手段を制御することを特徴とする制御方法。
【請求項20】
サービスを提供するサーバと当該サービスを受ける端末との通信を中継する中継装置に備えられたコンピュータに、
第1の通信プロトコルに従って前記端末へ信号を送信するように第1の通信手段を制御させ、
前記第1の通信プロトコルと異なる第2の通信プロトコルに従って前記端末から信号を受信すると共に、前記サーバと通信を行うように第2の通信手段を制御させる、
ためのプログラムであって、
前記第2の通信手段を介して前記端末から前記第2の通信プロトコルに従ったデータ取得要求を受信したことに基づいて、前記第1の通信プロトコルに従って前記端末へデータを送信するように前記第1の通信手段を制御させる、
ことを特徴とするプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、拡張性を向上させるための通信ネットワークの構成技術に関する。
【背景技術】
【0002】
近年、インターネット等のネットワークを通じて提供されるサービスが増加し、それに伴って、ネットワーク接続可能な端末(クライアント端末)も急激に増加している。サービスによっては、それらの端末を管理するための中継サーバが設置され、その中継サーバを通じてサービスが提供される。例えば、クライアント端末がインクジェット方式の印刷装置であり、ユーザがクラウドサービスによってネットワーク上に保存された写真等のデータを、そのクライアント端末を用いて印刷する場合について説明する。この場合、クラウドサービスにおけるサービス提供サーバから、中継サーバである管理サーバを通じて、印刷命令がクライアント端末に通知され、その印刷命令によってクライアント端末が印刷を実行する。
【0003】
このようなサービスをリアルタイムに実行するには、サービス提供サーバと、中継サーバと、クライアント端末とが、相互に通信可能な状態である必要がある。なお、クライアント端末と中継サーバとの間の通信には、XMPPやMQTT等のプロトコルが用いられる。なお、XMPPは、Extensible Messageing and Presence Protocolを表し、MQTTは、Message Queuing Telemetry Transportを表す。特許文献1には、XMPPを利用して、クライアント端末がインターネット上のサーバと通信する手順が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-062143号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
XMPPサーバには、拡張性が乏しいという課題がある。このため、上述のようなシステムにおいて、XMPPサーバへ接続される端末の急激な増加や、新たなサービスを提供するための新規サーバの既存システムへの追加が容易でないという課題があった。なお、XMPPに限らず、所定の通信プロトコルを用いたサービスにおいて、その通信プロトコルを用いる端末やサービスの増大に対して、拡張などの柔軟な運用ができることが重要である。
【0006】
本発明は、かかる課題に鑑みなされたものであり、通信を用いたシステムの柔軟な運用を可能とする技術を提供する。
【課題を解決するための手段】
【0007】
上述のような課題を解決するため、本発明の中継装置は、サービスを提供するサーバと当該サービスを受ける端末との通信を中継する中継装置であって、第1の通信プロトコルに従って前記端末へ信号を送信する第1の通信手段と、前記第1の通信プロトコルと異なる第2の通信プロトコルに従って前記端末から信号を受信すると共に、前記サーバと通信を行う第2の通信手段と、を有し、前記第2の通信手段により、前記端末から前記第2の通信プロトコルに従ったデータ取得要求を受信したことに基づいて、前記第1の通信手段が、前記第1の通信プロトコルに従って前記端末へデータを送信することを特徴とする
【発明の効果】
【0008】
本発明によれば、通信を用いたシステムの柔軟な運用が可能となる。
【図面の簡単な説明】
【0009】
図1】情報処理システムの構成例を示す図である。
図2】第1通信モジュールの構成例を示す図である。
図3】中継サーバを介するサービスサーバからクライアント端末への信号送信時の通信の流れの例を示すシーケンス図である。
図4図3の通信のプロトコルスタックを概略的に説明する図である。
図5】中継サーバを介するクライアント端末からサービスサーバへの信号送信時の通信の流れの例を示すシーケンス図である。
図6図5の通信のプロトコルスタックを概略的に説明する図である。
図7】中継サーバを介するサービスサーバからクライアント端末への信号送信時の通信の流れの例を示すシーケンス図である。
図8図7の通信のプロトコルスタックを概略的に説明する図である。
図9】中継サーバを介するクライアント端末からサービスサーバへの信号送信時の通信の流れの例を示すシーケンス図である。
図10図9の通信のプロトコルスタックを概略的に説明する図である。
図11】情報登録処理の流れの例を示すフローチャートである。
図12】登録される情報の例を示す図である。
図13】クライアント端末と中継サーバとの間の通信セッションが確立されてから通信を行う処理の流れの例を示すフローチャートである。
図14】情報処理システムの別の構成例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を参照しながら本発明の実施の形態について説明する。なお、以下の実施形態は、本発明の技術的特徴について例を通じて説明するものであり、説明する実施形態の内容に本発明を限定することは意図されていない。すなわち、説明される技術的に特徴の一部または全部が、同様の技術的特徴を実現可能な他の構成と置き換えられてもよい。例えば、複数の機能ブロックや方法のステップが1つの機能ブロックや1つの方法のステップとしてまとめられてもよいし、1つの機能ブロックや方法のステップが、複数の機能ブロックや複数の方法のステップに分割されてもよい。また、必要に応じて、機能ブロックや方法のステップの少なくとも一部が省略されてもよい。
【0011】
(システム構成)
本実施形態に係る情報処理システムの構成例を、図1に示す。本情報処理システムは、クライアント端末100、中継サーバ200、及びサービスサーバ300を含んで構成される。なお、図1では、クライアント端末100、中継サーバ200、及びサービスサーバ300がそれぞれ1台存在する場合について説明しているが、これらの装置はそれぞれ2台以上存在してもよい。また、複数のサービスサーバ300が存在する場合、これらのサービスサーバ300は、それぞれ異なるサービスを提供しうる。
【0012】
クライアント端末100は、ユーザが利用する端末であり、サービスサーバ300は、ユーザに対して、印刷対象の画像情報の提供やクライアント端末100によってスキャンされた画像の蓄積等の所定のサービスを提供するサーバである。また、中継サーバ200は、クライアント端末100とサービスサーバ300との間で、サービスに関する通信を中継する。すなわち、クライアント端末100が中継サーバ200と接続し、中継サーバ200がサービスサーバ300と接続して、中継サーバ200は、クライアント端末100とサービスサーバ300との間のサービスに関する通信を中継する。ユーザは、これにより、クライアント端末100を介して、サービスサーバ300からのサービスの提供を受けることができる。
【0013】
クライアント端末100と中継サーバ200、及び、中継サーバ200とサービスサーバ300は、それぞれ、ネットワーク400を介して(例えばインターネット上のルータを介して)接続される。なお、クライアント端末100と中継サーバ200との間のネットワークと、中継サーバ200とサービスサーバ300との間のネットワークとに対して同じ参照番号が付されているように共通のネットワークが使用されうるが、これに限られない。例えば、それぞれのネットワークが、別個のネットワークセグメントに属するなど、相異なる2つのネットワークが用いられてもよい。ただし、いずれの場合であっても、本実施形態では、クライアント端末100は、サービスサーバ300に直接接続するのではなく中継サーバ200と接続し、中継サーバ200を介してサービスサーバ300に接続するものとする。
【0014】
このようなシステムでは、上述のように、クライアント端末100と中継サーバ200との間の通信にXMPP(Extensible Messageing and Presence Protocol)が使用される。なお、XMPPに代えて、MQTT(Message Queuing Telemetry Transport)が使用されてもよい。中継サーバ200は、XMPPによる通信のためにXMPPサーバ機能を有し、1つ以上のクライアント端末100とXMPPによる通信をこのXMPPサーバ機能を用いて実行する。このとき、上述のように、XMPPサーバは、クライアント端末100の急激な増加や、新規サービスのためのサービスサーバ300の追加などの柔軟な運用が容易ではない場合がある。
【0015】
このため、本実施形態では、クライアント端末100が信号の送信側である場合と、クライアント端末100が信号の受信側である場合とで、異なるプロトコルスタックを用いて通信を行う。例えば、クライアント端末100が信号の送信側である場合にはHTTP(Hyper Text Transfer Protocol)等の処理負荷の小さい通信プロトコルを用い、クライアント端末100が信号の受信側である場合にはXMPPを用いる。これにより、中継サーバ200のXMPPサーバ機能が実行する処理を、クライアント端末100への信号送信に限定することで、そのXMPPサーバ機能の負荷を抑制する。一方で、クライアント端末100が信号の送信側である場合の通信や、サービスサーバ300との間の通信には、XMPPより処理負荷の低い通信プロトコル(例えばHTTP)を利用することで、中継サーバ200の負荷を低減する。これにより、クライアント端末100が急激に増加しても、XMPPサーバの負荷を低減することができる。さらに、中継サーバ200を、HTTP等の第1の通信プロトコルを利用するサーバと、XMPP等の第2の通信プロトコルを利用するサーバとを別個のサーバとすることにより、さらなる柔軟な運用が可能となる。すなわち、中継サーバ200は、例えばローカルエリアネットワーク(LAN)内に、例えば機能ごとに分離された、複数のサーバからなるサーバ群として構成されうる。機能ごとに別個のサーバを使用することによって、それらの別個のサーバごとにシステム運用により適した構成となるようなアップデート等を行うことで、より柔軟な運用が可能となる。なお、中継サーバ200は、物理的には複数のサーバからなるサーバ群によって構成されていても、論理的には、例えばクライアント端末100やサービスサーバ300から1つの中継装置として認識されうる。
【0016】
続いて、各装置の構成について説明する。
【0017】
クライアント端末100は、一例として、第1通信モジュール110、表示装置101、入力装置102、出力装置103、ROM104、制御プログラム105、RAM106、CPU107を含んで構成される。ROMはRead Only Memory(読み出し専用メモリ)の、RAMはRandom Access Memory(ランダムアクセスメモリ)の、CPUはCentral Processing Unit(中央演算処理装置)の、頭字語である。
【0018】
第1通信モジュール110は、クライアント端末100が外部の装置(例えば中継サーバ200)と通信を行うための機能部である。第1通信モジュール110は、例えば、HTTPを含んだプロトコルスタックで中継サーバ200へ信号を送信し、XMPPを含んだプロトコルスタックで中継サーバ200から信号を受信する。すなわち、第1通信モジュール110は、送信と受信とで異なるプロトコルスタックが使用されるように構成される。第1通信モジュール110の詳細については、図2を用いて後述する。
【0019】
表示装置101は、例えば発光パターンによって情報表示を行うランプや画面を用いて情報表示を行うディスプレイであり、ユーザがクライアント端末100に入力した結果の情報や、各種処理が実行された結果の情報等を表示する。なお、表示装置101は、視覚的出力に代えて又はこれに加えて、音声等の聴覚的出力や振動出力等の各種情報出力を行うように、スピーカや振動子を含んで構成されてもよい。
【0020】
入力装置102は、例えばキーボードやポインティングデバイス(マウス)、タッチパッド等によって構成され、ユーザ操作の受付を行い、そのユーザ操作を示す命令をクライアント端末100内に取り込む。なお、入力装置102は、ユーザ操作やユーザ指示を受付可能である限り、どのような装置構成を取ってもよい。例えば、入力装置102は、ユーザ指示を音声で取得するマイクや、ユーザの動きを撮像してその動きによってユーザ指示を受け付けるカメラや、クライアント端末100が振られたことを検出するセンサなどであってもよい。また、例えばタッチパネルを用いて、表示装置101と入力装置102とを1つの装置によって実現してもよい。
【0021】
出力装置103は、入力装置102によって入力された命令の成果物を出力する。出力装置103は、例えば印刷装置であり、記録媒体(例えば紙)上にインクを吐出し、インク像が形成された記録媒体を成果物として出力する。また、出力装置103は、例えば外部又は内部の記憶装置に接続するインタフェイスであり、成果物を記憶装置に出力して蓄積させる。また、出力装置103により、これら以外の出力が行われてもよい。
【0022】
ROM104は、不揮発性メモリであり、例えば、クライアント端末100が実行すべき(例えばバイナリ化された)プログラムコードを保存する。このプログラムコードの中には、制御プログラム105が含まれる。制御プログラム105は、例えば、クライアント端末100の全体(第1通信モジュール110、表示装置101、入力装置102、出力装置103、及びRAM106)を制御するためのプログラムである。例えば、制御プログラム105がCPU107によって実行されることにより、第1通信モジュール110が制御され、この制御の下で第1通信モジュール110における信号の送受信処理が実行される。RAM106は、揮発性メモリであり、一時的な情報を記憶する。CPU107は、クライアント端末100の全体の制御等、各種制御を実行する。CPU107は、例えばROM104から制御プログラム105を読み出して、RAM106にロードし、RAM106をワークスペースとして用いながら各種制御を実行する。なお、CPU107や、ROM104及びRAM106は、プロセッサとメモリの一例であり、これら以外のプロセッサ及びメモリ構成が用いられてもよい。また、例えば、少なくとも一部の処理が、ASIC(特定用途向け集積回路)や事前に所定の処理を実行するように設定されたFPGA(フィールドプログラマブルゲートアレイ)等の、専用のハードウェアを用いて実行されてもよい。
【0023】
上述の各装置は、一例において、すべて電気的な通信バス150によって相互に接続される。
【0024】
クライアント端末100では、例えばクライアント端末100がインクジェット方式の印刷装置である場合、表示装置101が、紙のサイズの設定やカラー印刷かモノクロ印刷かの設定等の情報をユーザに提示する。そして、ユーザは、入力装置102を用いて、クライアント端末100の印刷設定を行い、CPU107がROM104に保存されたプログラムを実行することによって出力装置103を制御して、出力装置103が印刷物を出力する。
【0025】
中継サーバ200は、第1サーバ210、第2サーバ220、制御サーバ230、及びデータベース240を含んで構成される。第1サーバ210、第2サーバ220、制御サーバ230、及びデータベース240は、例えばバス250等の回線によって、相互にかつ電気的に接続される。中継サーバ200は、外部からは論理的に1つの装置として扱われうるが、物理的には、図1に示すように複数のサーバを含んだサーバ群からなり、外部からアクセスできないローカルエリアネットワーク(LAN)等で相互に通信可能なように構成されうる。なお、中継サーバ200は、第1サーバ210、第2サーバ220、及び制御サーバ230を含んでいると説明したが、1台のサーバでこれらのサーバの機能の全てを実現してもよい。
【0026】
第1サーバ210は、例えば、第2通信モジュール211、ROM212、RAM213、CPU214、及び記憶装置215を含んで構成される。第2サーバ220も同様に、第3通信モジュール221、ROM222、RAM223、CPU224、及び記憶装置225を含んで構成される。なお、第2サーバ220は、例えば汎用のサーバを、第3通信モジュール221がXMPPを使用してクライアント端末100へ信号を送信するように構成したサーバとして実現される。また、第1サーバ210も、例えば汎用のサーバを、第2通信モジュール211がHTTP等を使用してクライアント端末100からの信号の受信やサービスサーバ300との通信を行うように構成したサーバとして実現される。制御サーバ230は、例えば汎用のサーバであり、ROM231、RAM232、CPU233、及び、記憶装置234を含んで構成される。なお、制御サーバ230の記憶装置234には、例えば、第1サーバ210及び第2サーバ220の制御プログラムと、データベース240の制御を行うプログラムとを含む、制御プログラム235が記憶される。ただし、第1サーバ210や第2サーバ220は、制御サーバ230の制御によらずに一定の通信処理を実行することが可能なように構成されうる。なお、CPUやRAM及びROM等のプロセッサ及びメモリ構成は、これらに限られず、各種処理を実行可能なプロセッサとメモリ(記憶装置)とによる任意の構成が用いられてもよい。データベース240は、第1サーバ210、第2サーバ220、および、制御サーバ230によって読み書きが行われる、ユーザの情報やサービスを提供するのに必要な情報を格納するデータベースである。
【0027】
サービスサーバ300は、第4通信モジュール310、ROM302、RAM303、CPU304、及び、記憶装置305を含んで構成される。記憶装置305にはサービスサーバ300全体を制御するプログラムが格納されている。なお、第4通信モジュール310、ROM302、RAM303、CPU304、及び、記憶装置305は、電気的な配線バス301によって相互に接続される。
【0028】
ネットワーク400は、例えば、インターネットやイントラネット、LANやWAN、電話回線、専用デジタル回線、ATMやフレームリレー回線、ケーブルテレビ回線、データ放送用無線回線等のいずれか、または、これらの組み合わせでありうる。なお、これらは一例であり、これら以外のネットワークが用いられてもよい。なお、ネットワーク400は、有線ネットワークと無線ネットワークのいずれであってもよく、また、例えば一部区間が有線ネットワークであり、他の区間が無線ネットワークであるように構成されてもよい。例えば、クライアント端末100と中継サーバ200との間で、クライアント端末100が無線LANルータに接続し、無線LANルータは、有線回線で中継サーバ200と接続しうる。
【0029】
なお、本実施形態では、上述のように中継サーバ200からクライアント端末100への通信はXMPPを含んだプロトコルスタックを用いて行われ、それ以外の通信がHTTP等のXMPP以外の通信プロトコルを含んだプロトコルスタックを用いて行われる。すなわち、サービスサーバ300から中継サーバ200への情報の送信時には、第4通信モジュール310から第2通信モジュール211へ、第1通信プロトコルスタックを利用して情報410が送信される。また、中継サーバ200からクライアント端末100への情報の送信時には、第3通信モジュール221から第1通信モジュール110へ、第2通信プロトコルスタックを用いて情報420が送信される。一方、クライアント端末100から中継サーバ200への情報の送信時には、第1通信モジュール110から第2通信モジュール211へ、第3通信プロトコルスタックを用いて情報430が転送される。また、中継サーバ200からサービスサーバ300への情報の送信時には、第2通信モジュール211から第4通信モジュール310へ、第4通信プロトコルを用いて情報440が送信される。このとき、クライアント端末100と中継サーバ200との間の通信で用いられる第2通信プロトコルスタックと第3通信プロトコルスタックは、異なる通信プロトコルにより構成される。例えば、第2通信プロトコルスタックはXMPPを含み、第3通信プロトコルスタックはXMPPを含まない。なお、本実施形態では、第1通信プロトコルスタック及び第4通信プロトコルスタックもXMPPを含まない。なお、第1通信プロトコルスタック、第3通信プロトコルスタック、及び第4通信プロトコルスタックは同じ通信プロトコルによって構成されるものとするが、これらは互いに異なる通信プロトコルを含んでもよい。
【0030】
以下では、インターネット・プロトコル・スイート(Internet Protcol Suite)で定められた通信プロトコルに従って説明する。第2通信プロトコルスタックと第3通信プロトコルスタックは、例えば、ネットワークインタフェイス層、ネットワーク層、及びトランスポート層は共通であり、それぞれ、イーサネット(登録商標)又はWi-Fi(登録商標)、IP、及びTCPでありうる。そして、アプリケーション層は、第2通信プロトコルスタックではXMPPが用いられ、第3通信プロトコルスタックではHTTPが用いられる。なお、TCPは、Transmission Control Protocolの、IPはInternet Protocolの、頭字語である。なお、本実施形態では、アプリケーション層のプロトコルとしてHTTPとXMPPとが用いられる例について説明するが、他のアプリケーション層のプロトコルが用いられてもよい。例えば、MQTTプロトコルが用いられてもよい。また、トランスポート層のプロトコルはTCPに限定されず、別のプロトコルが用いられてもよい。同様に、ネットワーク層のプロトコルはIPに限定されず、他のプロトコルが用いられてもよい。なお、本実施形態では、通信が暗号化されることが想定されるため、以下では、アプリケーション層の暗号化通信を明示的に示すために、HTTPをHTTP(S)、XMPPをXMPP(S)と記述する。
【0031】
図2は、クライアント端末100が有する第1通信モジュール110の構成例を示す図である。本実施形態では、第1通信モジュール110が無線通信用の通信モジュールであるものとするが、これに限られず、第1通信モジュール110は、有線通信モジュールであってもよい。第1通信モジュール110は、一般的な無線通信モジュールと同様に、受信部120、送信部130、送受信用のアンテナ111、送受信の切り替えスイッチ112、発振器113、及び、制御部114を含む。受信部120は、ADC(アナログ-デジタルコンバータ)121、復調器122、LNA(Low Noise Amplifier)123を含む。送信部130は、DAC(デジタル-アナログコンバータ)131、変調器132、PA(Power Amplifier)を含む。
【0032】
第3通信モジュール221から送信されてネットワーク400を経由して第1通信モジュール110に到来したセグメントは、無線信号としてアンテナ111によって受信される。なお、このセグメントは、アプリケーション層がXMPP(S)の第2通信プロトコルスタックのヘッダ情報を含んで構成される。この無線信号(セグメント)は、切り替えスイッチ112が受信部120とアンテナ111とを接続するように設定されることにより、受信部120へ伝達される。受信部120に伝達された無線周波数(RF)の信号は、LNAにより増幅されて、復調器122に入力される。復調器122は、発振器113で生成された周波数信号によってRFの信号を中間周波数やベースバンドの信号に変換する。そして、その信号は、ADC121によってデジタル信号に変換されて出力される。なお、ADC121は、例えば、中間周波数又はベースバンドのアナログ信号をデジタル化し、そのデジタル化されたベースバンド信号に対して、その信号の変調方式に基づく復調や誤り訂正復号等の各種処理を行いうる。出力されたデジタル信号は、通信バス150を介して、制御部114又はCPU107に入力される。そして、制御部114又はCPU107は、その信号のヘッダの解析を実行し、得られたデータをRAM106に保存する。
【0033】
セグメントを第2通信モジュール211に向けて送信する際には、CPU107又は制御部114が、アプリケーション層のHTTP(S)ヘッダやその他必要なヘッダをデータに付加したデジタル信号を生成し、そのデジタル信号をDAC131へ出力する。そして、DAC131は、入力されたデジタル信号をアナログ信号に変換し、変調器132は、発振器113で生成された周波数信号によりそのアナログ信号を偏重して無線周波数の信号を出力する。なお、DAC131は、ヘッダが付加されたデジタル信号に対して、誤り訂正符号化や送信フレームフォーマットに適合させるためのパディング、一次変調によるアナログベースバンド信号の生成等の処理を行いうる。その後、その無線周波数の信号は、PA133によって増幅されてアンテナ111を介してクライアント端末100の外部へ送出される。
【0034】
このようにして、クライアント端末100は、異なる通信プロトコルスタックを用いて、データの送受信を行うことができる。なお、図2の構成は一例であり、受信信号に基づいてヘッダ解析を行ってデータを取得することができ、また、データに各種プロトコルのヘッダを付加して送信信号を生成することができる構成であれば、これ以外の構成が用いられてもよい。
【0035】
(通信の流れ)
続いて、本実施形態の通信に関する処理の流れについて説明する。
【0036】
まず、図3を用いて、サービスサーバ300からクライアント端末100へデータが送信される場合の通信の流れの例について説明する。なお、ここで説明する処理は、サービスに関する様々な通信に適用されるものであり、その送受信されるデータについては特に限定されない。このため、図3においては、信号の流れのみを図示し、その送信されるデータの内容については図示していない。
【0037】
本処理は、例えば、ユーザがクライアント端末100とは異なる端末や別のコンピュータを用いてサービスサーバ300にアクセスし、サービスサーバ300がクライアント端末100を対象としてサービスを提供するように指示した場合に実行される。以下では、具体例として、クライアント端末100が印刷装置であり、サービスサーバ300がストレージサービスを提供するサーバであるものとする。そして、ユーザが、サービスサーバ300にアクセスして、そのサービスサーバ300に保存されている画像データを、クライアント端末100に印刷させる場合の例について説明する。なお、サービスサーバ300は、ユーザが有するパーソナルコンピュータの画面等を介して、画像選択画面や印刷実行のユーザインタフェイスを提供することができる。ユーザは、自身が有するこのユーザインタフェイスを介して、サービスサーバ300内に保存された画像と、出力先の印刷装置であるクライアント端末100とを選択して、クライアント端末100に画像の印刷を実行させる。
【0038】
本処理では、まず、サービスサーバ300のCPU304が、インターネット・プロトコル・スイートが定める形式に沿って、送信対象となる第1通信プロトコルスタックのヘッダ情報を有したセグメントを生成する。例えば、サービスサーバ300のCPU304は、ユーザからの印刷対象画像の選択と印刷実行指示とを受け付けると、その画像データが保存されているURL(Uniform Resource Locator)をデータとするセグメントを生成する。このときに、CPU304は、アプリケーション層をHTTP(S)、トランスポート層をTCP、インターネット層をIP、ネットワークインタフェイス層をイーサネットとするプロトコルスタックのヘッダ情報をデータに付加してセグメントを生成する。なお、CPU304は、IPのヘッダとして、送信先の第2通信モジュール211のIPアドレスを含める。また、CPU304は、このセグメントのデータ部に、ユーザの識別情報を含めてもよい。そして、CPU304は、生成したセグメントを第4通信モジュール310に転送する(S501)。その後、第4通信モジュール310は、ネットワーク400を介して、中継サーバ200内の第1サーバ210(第2通信モジュール211)へ、セグメントを送信する(S502)。
【0039】
第1サーバ210において、CPU214は、第2通信モジュール211がセグメントを受信したことに応じてそのセグメントを取得する(S503)。CPU214は、インターネット・プロトコル・スイートが定める形式に沿ってそのセグメントを解析して、送信されたデータのURLやユーザの識別情報、受信時間など必要な様々な情報を取得する。そして、CPU214は、その結果をデータベース240に書き込む(S504)。
【0040】
制御サーバ230のCPU233は、データベース240の状態を、所定の周期で監視する(S505)。CPU233は、S504において第1サーバ210のCPU214がデータをデータベース240に書き込むと、それを検出して、データベース240からデータを読み出す。そして、CPU233は、読み出したデータに対して、アプリケーション層がXMPP(S)、トランスポート層がTCP、インターネット層がIP、ネットワークインタフェイス層がイーサネットのヘッダ情報を付加して、セグメントを生成する。CPU233は、生成したセグメントを第2サーバ220のCPU224へ転送する(S506)。
【0041】
第2サーバ220のCPU224は、制御サーバ230のCPU233からセグメントを受け取ると、セグメントを第3通信モジュール221に転送する(S507)。なお、制御サーバ230のCPU233は、セグメントを生成せずに、データが書き込まれたことを第2サーバ220のCPU224へ通知してもよい。この場合、第2サーバ220のCPU224が、データベース240からデータを読み出し、そのデータを含んだセグメントを生成しうる。なお、CPU224は、第3通信モジュール221が第1通信モジュール110との間でXMPP通信を確立していることを確認した上で、セグメントを第3通信モジュール221へ転送しうる。すなわち、CPU224は、第3通信モジュール221が第1通信モジュール110との間でXMPP通信を確立していない場合は、セグメントの生成を保留し、又は、第3通信モジュール221に転送しないようにしうる。なお、セグメントの第3通信モジュール221への転送を保留する場合、生成されたセグメントは、RAM223に記憶されうる。そして、XMPP通信が確立され次第、そのセグメントがCPU224によって読み出され、第3通信モジュール221へ転送される。第3通信モジュール221は、ネットワーク400を介してクライアント端末100の第1通信モジュール110へ、セグメントを送信する(S508)。
【0042】
クライアント端末100のCPU107は、第1通信モジュール110がセグメントを受信したことを検出すると、そのセグメントを取得して(S509)、インターネット・プロトコル・スイートが定める形式に沿って解析を行う。そして、CPU107は、解析によって得られたデータの内容に基づいて処理を実行し、その処理の結果に応じて出力装置103を制御する(S510)。本処理例では、解析によって得られるデータには画像データのURLが含まれ、CPU107は、そのURLに基づいて画像データをダウンロードし、出力装置103を用いた印刷を実行する。
【0043】
図4は、図3に示す通信のプロトコルスタックを示す図である。図4のプロトコルスタックは、インターネット・プロトコル・スイートで定められているように、下位層から順に、ネットワークインタフェイス層、インターネット層、トランスポート層、アプリケーション層が示されている。図4に示すように、サービスサーバ300の第4通信モジュール310は、「イーサネット」、「IP」、「TCP」、「HTTP(S)」のプロトコルスタックを有する。そして、中継サーバ200の第2通信モジュール211も「イーサネット」、「IP」、「TCP」、「HTTP(S)」のプロトコルスタックを有する。一方、第3通信モジュール221は、「イーサネット」、「IP」、「TCP」、「XMPP(S)」のプロトコルスタックを有する。このように、中継サーバ200がサービスサーバ300から受信するセグメントと、中継サーバ200がクライアント端末100へ送信するセグメントとでは、アプリケーション層の通信プロトコルが異なる。なお、クライアント端末100の第1通信モジュール110は、「Wi-Fi」、「IP」、「TCP」、「XMPP(S)」のプロトコルスタックを有する。なお、図4では、クライアント端末100が受信するセグメントが「Wi-Fi」を含むプロトコルスタックで送信されているが、これに限られない。すなわち、図4の例では、クライアント端末100がWi-Fiで無線通信を行う場合を示しているが、クライアント端末100も「イーサネット」で有線通信を行うようにしてもよい。
【0044】
なお、図4は、クライアント端末100がWi-Fiのアクセスポイント等(不図示)からセグメントを受信することを想定して、プロトコルスタックが「Wi-Fi」を含んでいる。すなわち、第3通信モジュール221が送信したセグメントは、例えば、イーサネットを用いてWi-Fiのアクセスポイントまで転送される。そして、そのアクセスポイントは、受信したセグメントのネットワークインタフェイス層のプロトコルをイーサネットからWi-Fiへ変換して、クライアント端末100へそのセグメントを転送しうる。なお、クライアント端末100が中継サーバ200と直接接続する場合は、例えば中継サーバ200が、Wi-Fiの信号を受信して、イーサネットの信号へと変換する役割で動作しうる。すなわち、このような場合には、クライアント端末100と中継サーバ200との間で使用されるプロトコルスタックは当然に共通化される。
【0045】
続いて、図5を用いて、クライアント端末100からサービスサーバ300へデータが送信される場合の通信の流れの例について説明する。なお、ここで説明する処理も、サービスに関する様々な通信に適用されるものであり、その送受信されるデータについては特に限定されない。このため、図5においては、信号の流れのみを図示し、その送信されるデータの内容については図示していない。
【0046】
以下では、具体例として、クライアント端末100がスキャン装置であり、サービスサーバ300がストレージサービスを提供するサーバであるものとする。そして、ユーザが、クライアント端末100を用いて文書や写真などをスキャンし、クライアント端末100は、サービスサーバ300にアクセスして、そのサービスサーバ300にスキャンした文書や写真などを保存させる場合の例について説明する。図5の処理の開始前に、例えばユーザが読み取らせたい文書や写真等をクライアント端末100にセットし、クライアント端末100の入力装置102が、その文書や写真等をスキャンしてデジタル化したデータを生成する。そして、入力装置102は、CPU107の制御により、生成したデジタルデータをRAM106に一時的に保存する。この状態で、ユーザが、入力装置102を介して、保存されているデータのサービスサーバ300への格納をクライアント端末100に対して指示する操作を行うことにより、図5の処理が開始される。
【0047】
図5の処理では、CPU107は、RAM106に保存されているデータのサービスサーバ300への格納を指示するユーザ指示に応じて、RAM106からそのデータを読み出す(S601)。そして、CPU107は、インターネット・プロトコル・スイートに沿って、プロトコルスタックの各プロトコルに応じたヘッダ情報を付加することによって、読み出したデータから送信すべきセグメントを生成する。ここでは、アプリケーション層がHTTP(S)、トランスポート層がTCP、インターネット層がIP、ネットワークインタフェイス層がWi-Fiのプロトコルスタックのヘッダ情報を有するセグメントが生成される。なお、このセグメントでは、例えば、IP層において、第2通信モジュール211のIPアドレスがヘッダ情報としてデータに付加される。その後、CPU107は、生成したセグメントを第1通信モジュール110へ転送し(S602)、第1通信モジュール110は、そのセグメントを無線信号として送出する(S603)。このセグメントは、上述のように、IP層のヘッダ情報として第2通信モジュール211のIPアドレスが付加されているため、例えば無線信号を受信したアクセスポイント(不図示)を介して、第2通信モジュール211へ向けて転送される。
【0048】
第1サーバ210において、CPU214は、第2通信モジュール211がセグメントを受信したことに応じて、そのセグメントを取得して(S604)、解析することによって、クライアント端末100から送信されてきたデータを取得する。そして、CPU214は、サービスサーバ300の第4通信モジュール310へそのデータを送信するために、インターネット・プロトコル・スイートに沿って、プロトコルスタックの各プロトコルに応じた適切なヘッダ情報を付加して、セグメントを生成する。ここでのセグメントでは、例えば、IP層において、第4通信モジュール310のIPアドレスがヘッダ情報としてデータに付加される。CPU214は、生成したセグメントを第2通信モジュール211へ戻し(S605)、第2通信モジュール211は、このセグメントをネットワーク400へ送出する(S606)。セグメントは、ネットワーク400内のルータ等を介して第4通信モジュール310へ転送される。サービスサーバ300において、CPU304は、第4通信モジュール310がセグメントを受信したことに応じて、そのセグメントを取得する(S607)。そして、CPU304は、取得したセグメントを解析し、クライアント端末100によってスキャンされたデジタルデータを取得し、そのデジタルデータをRAM303又は記憶装置305に保存させる。
【0049】
図6は、図5に示す通信のプロトコルスタックを示す図である。図6のプロトコルスタックは、図4と同様に、インターネット・プロトコル・スイートで定められているように、下位層から順に、ネットワークインタフェイス層、インターネット層、トランスポート層、アプリケーション層が示されている。図6に示すように、クライアント端末100の第1通信モジュール110は、「Wi-Fi」、「IP」、「TCP」、「HTTP(S)」のプロトコルスタックを有する。中継サーバ200、サービスサーバ300は、共に、「イーサネット」、「IP」、「TCP」、「HTTP(S)」のプロトコルスタックを有する。図6のように、アプリケーション層に注目すると、クライアント端末100から中継サーバ200へのデータの送信と、中継サーバ200からサービスサーバ300へのデータの送信とにおいて、共にHTTP(S)が利用される。
【0050】
上述の実施形態では、クライアント端末100が印刷装置やスキャン装置である場合について説明したが、これに限られない。すなわち、クライアント端末100は、何らかのデータを、中継サーバ200を介して送信または受信するように構成される限り、印刷装置やスキャン装置である必要はない。同様に、サービスサーバ300も、ストレージサービス以外のサービスを提供することができる。また、中継サーバ200も上述のような構成及び動作に限定されない。
【0051】
本実施形態では、上述のように、クライアント端末100、中継サーバ200、サービスサーバ300の間の通信において、送信と受信とでインターネット・プロトコル・スイートによって定められるアプリケーション層が異なる通信プロトコルを利用する。これにより、例えば、HTTP(S)を利用して中継サーバ200に接続されるクライアント端末100が急激に増大したとしても、XMPPサーバ(第2サーバ220)の負荷を抑え、安定した通信を実現することができる。
【0052】
[変形例]
上述の通信の流れの例では、中継サーバ200が、クライアント端末100からデータを受信すると、サービスサーバ300からのデータ取得要求を受けることなくそのデータをサービスサーバ300へ送信する、プッシュ型通信を行う例について説明した。一方で、中継サーバ200は、サービスサーバ300からのデータ取得要求を受け付けたことに応じて、その要求の返答としてクライアント端末100から受信したデータを送信する、プル型通信を行うこともできる。本変形例では、このプル型通信が行われる場合の例について説明する。
【0053】
なお、このようなプル型通信は、例えば、中継サーバ200に保存されているデータが頻繁に変更される場合に有効である。すなわち、このような場合、中継サーバ200は、プッシュ型通信によれば、データの変更ごとにその変更されたデータをクライアント端末100又はサービスサーバ300へ送信することとなる。一方で、プル型通信によれば、中継サーバ200は、データが変更されても、クライアント端末100又はサービスサーバ300からのデータ取得要求がない限りはデータを送信しない。このため、プル型通信を行うことにより、中継サーバ200の処理負荷を低減することができる。また、中継サーバ200の処理負荷を低減することにより、クライアント端末100やサービスサーバ300が急激に増えた場合に対する中継サーバ200の耐久性を増すことができる。
【0054】
以下では、まず、中継サーバ200がサービスサーバ300からプッシュ型通信により情報を取得し、クライアント端末100へプル型通信を通じて情報を提供する例について説明する。図7は、この場合の通信の流れの例を示している。本処理では、中継サーバ200は、サービスサーバ300から受信したデータがデータベース240に保存されたことに応じて、クライアント端末100に対して、データが保存されたことをプッシュ型通信で通知する。その後、クライアント端末100は、例えばユーザが所定の操作を行ったことに応じて、中継サーバ200へデータ取得要求を送信する。そして、中継サーバ200は、このデータ取得要求に応じて、データベース240に保存されたデータをクライアント端末100へ送信する。
【0055】
なお、図7は、図3の場合と同様のユースケースで実行される処理であり、例えば、サービスサーバ300に保存された文書や写真等をクライアント端末100に印刷させる場合に、図7のような処理が実行される。なお、図7の処理が実行される場合の通信のプロトコルスタックを図8に示す。図8に示すように、利用されるアプリケーション層の通信プロトコルは、サービスサーバ300と中継サーバ200との間の通信のためにHTTPが用いられる。そして、中継サーバ200からクライアント端末100へのプッシュ通知にはXMPPが使用され、クライアント端末100から中継サーバ200への情報要求にはHTTPが使用される。すなわち、上述のように、クライアント端末100と中継サーバ200との間の通信においては、クライアント端末100が送信側である場合と受信側である場合とで、それぞれ異なる通信プロトコルが使用される。
【0056】
サービスサーバ300がデータを送信し、中継サーバ200内で制御サーバ230が、データベース240にデータが格納されたことを検出するまでの処理(S701~S705)は、図3のS501~S505の処理と同様であるため説明を省略する。制御サーバ230のCPU233は、クライアント端末100宛てのデータが格納されたことを検出すると、データが格納されたことをそのクライアント端末100へ通知するためのセグメントの生成を、第2サーバ220のCPU224に指示する(S706)。CPU224は、生成したセグメントを第3通信モジュール221へ転送し(S707)、第3通信モジュール221は、そのセグメントをクライアント端末100へ宛ててプッシュ送信する(S708)。ここで、XMPPプロトコルを用いたプッシュ通知は、クライアント端末100に対して、取得すべきデータが中継サーバ200内に存在することのみを通知すれば足りる。このため、ここでのプッシュ通知は、XMPPで必要なヘッダの他には、1バイト~10キロバイト程度の少量の情報を含む。
【0057】
クライアント端末100のCPU107は、第1通信モジュール110がセグメントを受信したことを検出すると、そのセグメントを取得し(S709)、内容を解析する。そして、CPU107は、そのセグメント内の情報によって、データベース240にクライアント端末100宛てのデータが格納されていることを認識し、そのデータを取得するか否かを判定する。例えば、CPU107は、ユーザに対して、印刷対象のデータが中継サーバ200内に存在することを通知し、ユーザが、そのデータを取得することを示す指示を受け付けたことに応じて、そのデータを取得すると判定する。CPU107は、データを取得すると判定した場合に、データ取得要求を含んだセグメントを生成し、そのセグメントを第1通信モジュール110へ転送する(S710)。第1通信モジュール110は、そのセグメントを第2通信モジュール211に宛てて送信する(S711)。第1サーバ210のCPU214は、第2通信モジュール211がセグメントを受信したことを検出すると、そのセグメントを取得して解析し、データ取得要求を受信したことを認識する(S712)。そして、CPU214は、データ取得要求があったことを、第2サーバ220のCPU224に通知する(S713)。CPU224は、この通知を受け取ると、例えばRAM223やデータベース240に記憶されている、クライアント端末100宛のデータを取り出し、クライアント端末100宛のセグメントを生成して、第3通信モジュール221に転送する(S714)。第3通信モジュール221は、受け取ったセグメントを、クライアント端末100へ送信する(S715)。クライアント端末100のCPU107は、第1通信モジュール110がセグメントを受信したことを検出すると、そのセグメントを取得して解析する(S716)。その後の処理(S717)は、図3のS510と同様である。
【0058】
このように、プッシュ型通信ではクライアント端末100宛のデータをすべてXMPPで送信する必要があるが、本変形例では、データが保存されていることの通知と、データ送信要求があったデータのみがXMPPプロトコルで送信される。このため、データベース240に保存されるデータが頻繁に更新される場合に、その一部のデータのみをクライアント端末100に取り込む場合などにおいて、XMPPで送信されるデータ量を大幅に削減し、XMPPサーバの負荷を顕著に低減することができる。
【0059】
続いて、中継サーバ200が、クライアント端末100からプッシュ型通信により情報を取得し、サービスサーバ300へプル型通信を通じて情報を提供する例について説明する。図9は、この場合の通信の流れの例を示している。本処理では、中継サーバ200は、クライアント端末100からデータを受信したことに応じて、サービスサーバ300に対して、データが保存されたことをプッシュ型通信で通知する。その後、中継サーバ200は、サービスサーバ300からデータ取得要求があった場合に、RAM213等に一時保存したデータをサービスサーバ300へ送信する。なお、サービスサーバ300は、例えば自装置の負荷や中継サーバ200との間の回線の負荷が所定値以下となったこと等に応じて、データ取得要求を、中継サーバ200へ送信しうる。
【0060】
なお、図9は、図5の場合と同様のユースケースで実行される処理であり、例えば、クライアント端末100がスキャンした画像を、サービスサーバ300に保存させる場合に、図9のような処理が実行される。なお、図9の処理が実行される場合の通信のプロトコルスタックを図10に示す。図10に示すように、利用されるアプリケーション層の通信プロトコルは、クライアント端末100から中継サーバ200への信号の送信と、中継サーバ200とサービスサーバ300との間の通信とのいずれにおいても、HTTPが用いられる。
【0061】
クライアント端末100がセグメントを送信し、第1サーバ210のCPU214がそのセグメントを受信して解析することによってデータを取得するまでの処理(S801~S804)は、図5のS601~S604の処理と同様であるため説明を省略する。CPU214は、解析によって得られたデータを、例えばRAM213に保存し、データが保存されていることを示す情報を含んだセグメントを生成し、第2通信モジュール211を介してサービスサーバ300へ送信する(S805、S806)。ここで、第2通信モジュール211から第4通信モジュール310へ向けて送信される情報はプッシュ通知である。このプッシュ通知は、サービスサーバ300に対して、クライアント端末100から送信された情報を中継サーバ200が保存していることのみを通知すれば足りる。このため、ここでのプッシュ通知は、HTTPで必要なヘッダの他には、1バイト~10キロバイト程度の少量の情報を含む。プッシュ通知は、サービスサーバ300のCPU304によって検出される(S807)。そして、CPU304は、このプッシュ通知に応じて、また、必要に応じて自装置の負荷等に基づいてデータを取得すべき状態であるか否かの判定に従って、中継サーバ200へのHTTPリクエストを生成する。そして、生成されたHTTPリクエストは、CPU304から第4通信モジュール310へ転送され(S808)、第4通信モジュール310から第2通信モジュール211へ送信される(S809)。サービスサーバ300は、そのHTTPリクエストを送信することにより、例えば第1サーバ210のRAM213に一時保存されたデータを、第2通信モジュール211を介して取得する(S810、S811)。これにより、サービスサーバ300は、クライアント端末100からの要求を取得及び処理することができる。
【0062】
本変形例では、中継サーバ200は、サービスサーバ300からの要求を受けると、それに連動して、クライアント端末100にプッシュ通知を行う例を示したが、これに限られない。例えば、中継サーバ200は、サービスサーバ300からの情報を受信した後にプッシュ通知を行わなくてもよい。この場合、クライアント端末100が、例えば周期的に又はユーザ操作に応じて、情報を取得するリクエストを中継サーバ200へ送信しうる。そして、中継サーバ200は、そのリクエストに応じて、自装置内にクライアント端末100宛の情報が保存されているか否かを判定し、その判定結果を示す情報をクライアント端末100へ送信してもよい。同様に、本変形例では、中継サーバ200は、クライアント端末100からの要求を受けると、それに連動して、サービスサーバ300にプッシュ通知を行う例を示したが、これに限られない。例えば、中継サーバ200は、クライアント端末100から情報を受信した後にプッシュ通知を行わなくてもよい。この場合、サービスサーバ300が例えば周期的に情報を取得するリクエストを中継サーバ200へ送信しうる。そして、中継サーバ200は、そのリクエストに応じて、自装置内にサービスサーバ300宛の情報が保存されているか否かを判定し、その判定結果を示す情報をサービスサーバ300へ送信しうる。
【0063】
本変形例のように、中継サーバ200にデータが保存されていることを示すだけのデータサイズの十分に小さい信号を送信するようにすることで、クライアント端末100やサービスサーバ300の増加に対する負荷の増加を低く抑えることができる。また、中継サーバ200が情報を保存していることのみを相手装置に通知するようにすることで、中継サーバ200の制御プログラムの更新を行わずに、新たなサービスを提供するサービスサーバや様々なクライアント端末100に対応することが可能となる。
【0064】
(クライアント端末とサービスとの関連付け処理)
以下では、クライアント端末100とサービスとの対応関係を中継サーバ200が記憶しておき、その関係に基づいて、サービスサーバ300がそのクライアント端末100にサービスを提供するか否かを決定する処理について説明する。本処理では、クライアント端末100は、中継サーバ200のデータベース240にクライアント端末100に固有の識別情報(端末ID)を登録し、クライアント端末100がサービスを受ける準備を完了させる。なお、端末IDは、例えば、クライアント端末100の製造過程で付与される固有のIDであるシリアルナンバーや、第1通信モジュール110に付与されるMACアドレス等でありうる。一方、サービスサーバ300は、自装置が提供するサービスに固有の識別情報(サービスID)とサービスを受ける端末IDとをデータベース240に登録する。そして、このような情報が登録された後に、クライアント端末100が、サービスサーバ300からサービスを受けることができるようにする。なお、本処理は、上述の通信処理に加えて又は上述の通信処理が用いられない場合であっても実行されうる。
【0065】
以下では、このような処理における、情報登録処理(クライアント端末100とサービスとの関連付け処理)について説明する。図11(A)は、クライアント端末100から、中継サーバ200のデータベース240にクライアント端末100の端末IDを登録し、クライアント端末100がサービスを受ける準備を完了させる処理の流れの例を示している。また、図11(B)は、サービスサーバ300から、サービス固有の識別情報(サービスID)とサービスを受ける端末IDとをデータベース240に登録し、クライアント端末100がサービスを受ける準備を完了させる処理の流れの例を示している。
【0066】
また、図12に、データベース240に記憶される、端末IDとサービスIDとを関連付ける情報の例を示す。この情報は、図12に示すように、サービスマスタテーブル1001とサービス登録テーブル1002、クライアント端末登録テーブル1003、及び、クライアント端末-サービス紐付けテーブル1004を含む。各テーブルは、一意キーとして、各レコードの登録時に作成されると共にほぼ重複する可能性がない固有の文字列(Universally Unique ID、UUID)を含む。サービスマスタテーブル1001は、一意キーであるUUIDに加えて、属性値として、サービスID、及び、サービスが登録された登録日時を含む。サービス登録テーブル1002は、UUIDに加えて、属性値として、サービスIDと端末ID、及び、登録日時を含む。クライアント端末登録テーブル1003は、UUIDに加えて、端末ID、端末の詳細な情報が記載された端末情報、及び、登録日時を含む。クライアント端末-サービス紐付けテーブル1004は、UUIDに加えて、端末ID、サービスID、登録日時を含む。
【0067】
図11(A)において、クライアント端末100は、入力装置102を介してユーザ操作を受け付け、クライアント端末登録テーブル1003に対する端末ID及び端末情報を登録するリクエストを、中継サーバ200へ送信する(S901)。ここで、クライアント端末100から中継サーバ200への通信は、上述のように、HTTPを用いて行ってもよいし、XMPPを用いて行ってもよい。また、クライアント端末100がデータ取得要求を受信することなく情報を中継サーバ200へ送信するプッシュ型通信が用いられてもよいし、中継サーバ200の要求に応じてクライアント端末100が情報を送信するプル型通信が用いられてもよい。中継サーバ200は、クライアント端末100からのリクエストを受信すると、UUIDを作成し、その値を一意キーとして、また、端末ID、端末情報、及び登録日時を属性値として、対応付けて登録する。なお、中継サーバ200は、クライアント端末登録テーブル1003にリクエストで通知された端末IDを含むレコードが作成済みであるか否かをチェックしうる。そして、中継サーバ200は、通知された端末IDがクライアント端末登録テーブル1003に登録済みであった場合は、その端末IDが登録済みであることを示す情報を、クライアント端末100へ送信しうる。その後、中継サーバ200は、サービス登録テーブル1002を走査して、その端末IDを属性値として含むレコードが存在するか否かを判定する(S902)。そして、中継サーバ200は、その端末IDを属性値として含むレコードが存在する場合(S902でYES)、クライアント端末-サービス紐付けテーブル1004に、そのレコードに含まれるサービスIDと端末IDを登録する(S903)。この関連付けにより、クライアント端末100は、サービスサーバ300が提供するサービスを受ける準備を完了する(S904)。なお、中継サーバ200は、その端末IDを属性値として含むレコードが存在しない場合(S902でNO)、図11(A)の処理を終了する。この場合、図11(B)に示される、サービスサーバ300からのサービスIDの登録処理が実行されるのを待つことになる。
【0068】
図11(B)の処理は、例えば、ユーザが不図示のパーソナルコンピュータ等による操作を行ったことに基づいて、サービスサーバ300が開始する。本処理が開始されると、サービスサーバ300は、サービス登録テーブル1002に登録したサービスと、そのサービスを受ける端末IDとを登録するように、中継サーバ200に対するリクエストを送信する(S921)。中継サーバ200は、そのリクエストを受信すると、まず、リクエストに含まれるサービスIDが、サービスマスタテーブル1001内に登録されているか否かを確認する(S922)。リクエストに含まれるサービスIDがサービスマスタテーブル1001に登録されている場合(S922でYES)、処理はS923へ進む。S923では、中継サーバ200は、リクエストで示される端末IDを含んだレコードがクライアント端末登録テーブル1003内に存在するか否かを確認する確認する(S923)。そのようなレコードがクライアント端末登録テーブル1003内に存在する場合(S923でYES)、中継サーバ200は、そのサービスIDと端末IDとをクライアント端末-サービス紐付けテーブル1004に登録する(S924)。この関連付けにより、クライアント端末100は、サービスサーバ300が提供するサービスを受ける準備を完了する(S925)。なお、サービスIDがサービスマスタテーブル1001に登録されていない場合(S922でNO)又は端末IDを含んだレコードがクライアント端末登録テーブル1003内に存在しない場合(S923でNO)、処理が終了する。この場合、図11(A)に示される、クライアント端末100からの端末IDの登録処理が実行されるのを待つことになる。
【0069】
これにより、クライアント端末100とサービスサーバ300が提供するサービスとの対応関係が登録され、登録されていないクライアント端末100にサービスが提供されるのを防ぐことができる。なお、クライアント端末100が他人に譲渡される場合等には、端末IDをクライアント端末登録テーブル1003から削除することもできる。この場合、クライアント端末-サービス紐付けテーブル1004からその端末IDを属性値として有するレコードが削除され、また、サービス登録テーブル1002からその端末IDを有するレコードが削除されることにより、関連付けがすべて解除される。また、サービスマスタテーブル1001からサービスが削除された場合は、サービス登録テーブル1002において、そのサービスに対応するサービスIDを属性値として有するレコードが削除されうる。また、クライアント端末-サービス紐付けテーブル1004からも、そのサービスIDを有するレコードが削除されうる。これにより、サービスIDが別のサービスに割り当てられた場合に、その別のサービスが、本来提供されるべきでないクライアント端末に対して提供されることを防ぐことができる。
【0070】
本処理では、中継サーバ200を中心として、クライアント端末100の登録とサービスの登録とを別個に行い、その関連付けを確認してサービスが提供される。この構成によれば、例えば、新規のサービスを追加するために新たなサービスサーバ300を既存のシステムに追加する場合、サービスマスタテーブル1001に新たなサービスが登録される。そして、その後に、新規サービスの提供を受けたい端末が、サービス登録テーブル1002に登録される。このように、新規サービスの追加が、サービスマスタテーブル1001によって管理されることにより、新規サービスを提供するサービスサーバの増設への対応が容易になり、また、中継サーバ200の処理の内容を大幅に変更する必要がなくなる。また、処理内容の大幅な変更がないため、中継サーバ200の負荷も大幅に増えることがなく、また、演算能力の向上のための構成変更が過剰となることを防ぐことができる。
【0071】
(セッション確立状態に基づく信号送信処理)
中継サーバ200がクライアント端末100へ情報を送信する際に、中継サーバ200が利用する通信プロトコルのセッションの有無を確認してから情報を送信する処理の例について説明する。また、その通信プロトコルのセッションが確立されておらず、中継サーバ200からクライアント端末100に情報が送信できない場合に、クライアント端末100からセッションを確立する処理の例について説明する。上述の例と同様に、中継サーバ200からクライアント端末100へ信号を送信する際に用いる通信プロトコルはXMPPであるものとする。なお、本処理は、上述の各処理に加えて又は上述の各処理が用いられない場合であっても実行されうる。
【0072】
図13は、図3において、S505からS508までの間の処理の流れの例を詳細に示した図である。中継サーバ200は、データベース240にジョブの通知があることを確認すると(S1101でYES)、ジョブの存在を第2サーバ220のCPU224に通知する(S1102)。その後、CPU224は、クライアント端末100との間でXMPPセッションが確立されているかを判定する(S1103)。そして、CPU224は、XMPPセッションが確立されていると判定した場合(S1103でYES)は、第3通信モジュール221を介して、クライアント端末100の第1通信モジュール110へ、情報を送信する(S1104、S1105)。一方、XMPPセッションが確立されていない場合(S1103でNO)は、中継サーバ200は、情報の送信を保留し、ジョブが存在していることを継続的に監視する。例えば、ジョブには有効期限が設定されており、この期限を経過するとジョブは削除されうる。ただし、この場合、CPU224が、ジョブの有効期限内においてデータベース240と常に接続することとなるため、データベース240の負荷が増大しうる。そこで、クライアント端末100を操作するユーザは、クライアント端末100が想定されたジョブを実行しない場合(S1121でNO)は、クライアント端末100に中継サーバ200とのXMPPセッションの確立処理を実行させうる(S1111)。例えば、ユーザは、予めクライアント端末100に設けられたXMPPセッション確立機能を有効にするようにクライアント端末100に対する操作を行うことにより、XMPPセッションの確立処理を実行させる。中継サーバ200は、XMPPセッションが確立されていないと判定した場合には、その後のジョブの確認を行わず、クライアント端末100との間でXMPPセッションを確立した時点で、有効期限内のジョブが存在しているか否かを判定してもよい。これにより、データベース240の負荷を低減することが可能となる。なお、XMPPセッション確立機能は、例えば、第2サーバ220が新規に設置された場合などに利用されうる。
【0073】
本処理のように、中継サーバ200からクライアント端末100へ情報を送信する際に、予めセッションの確立を確認することにより、セッションが確立されていないにも関わらずデータの送信のための処理が開始されてしまうことを防ぐことができる。また、クライアント端末100がセッション確立機能を有することにより、中継サーバ200内でのデータベース240への余計なアクセスの発生を防ぐことができる。また、クライアント端末100主導で早期にセッションが確立されることで、中継サーバ200にジョブが貯まることが少なくなる。このため、中継サーバ200の負荷を低減することができ、かつ、クライアント端末100が早期にジョブを実行することができる。
【0074】
(別の構成例)
中継サーバ200が、システムの状況を監視して、状況に応じた通信プロトコルの選択するようにしうる。中継サーバ200は、例えば、システム全体の通信トラフィック、プッシュ型通信とプル型通信とのいずれが用いられているか、さらに、各サーバの負荷の状況を監視し、その状況に応じて通信プロトコルを変化させうる。また、中継サーバ200は、各通信プロトコルの特性に応じて、利用する通信プロトコルを動的に選択しうる。
【0075】
本例では、図14に示すように、中継サーバ200が、通信プロトコルとしてXMPPを利用する第2サーバ220に加え、さらに、MQTTを通信プロコルとして利用する第3サーバ260を有する。第3サーバ260は、第2サーバ220と同様に、第5通信モジュール261、ROM262、RAM263、CPU264、及び記憶装置265を含んで構成される。中継サーバ200は、例えば、クライアント端末100へのプッシュ通知にXMPPサーバ(第2サーバ220)を利用している間、そのXMPPサーバの負荷を監視する。そして、中継サーバ200は、負荷が例えば所定値を超える程度に高い場合に、そのXMPPサーバの負荷低減のために、クライアント端末100へのプッシュ通知を、MQTTサーバ(第3サーバ260)を介したMQTT通信によって実行しうる。これにより、中継サーバ200は、負荷を分散し、安定したシステム運用を行うことが可能となる。このとき、通知のためのプッシュ通知は暗号化されてもよいし、暗号化されなくてもよい。
【0076】
また、中継サーバ200は、通信プロトコルの特性に応じて通信プロトコルを選択してもよい。例えば、一般的に、XMPPプロトコルは通信時のオーバーヘッドが大きく、送信容量が大きくなる傾向があり、MQTTではオーバーヘッドが小さ送信容量を抑えることが可能である。一方、XMPPはセキュリティが強い特性がある。このため、中継サーバ200は、秘匿性の少ないプッシュ通知のみを行う場合は暗号化せず、かつ、容量の小さいMQTTプロトコルを利用し、秘匿性の高い通信が必要な場合にはXMPPプロトコルを選択してもよい。このように、中継サーバ200は、送信対象データの特性(容量、秘匿性等)に基づいて、使用する通信プロトコルを選択することができる。
【0077】
このように、中継サーバ200は、状況に応じて、クライアント端末100へ情報を送信する際に用いる通信プロトコルを、柔軟かつ動的に変更することができる。これにより、情報処理システムが、クライアント端末100やサービスサーバ300の増加に柔軟に対応することが可能となり、かつ、情報セキュリティ技術を適切に適用することが可能となる。
【0078】
なお、上述の各実施形態では、第2通信モジュール211が、クライアント端末100からの信号の受信と、サービスサーバ300との間の通信とで、共通のHTTPを用いるとしたが、これに限られない。例えば、第2通信モジュール211は、クライアント端末100からの信号の受信のために第1のプロトコルを使用し、サービスサーバ300との間の通信のために第2の通信プロトコルを離床するようにしてもよい。また、サービスサーバ300への信号の送信とサービスサーバ300からの信号の受信とで、それぞれ異なる通信プロトコルを用いてもよい。
【0079】
(その他の実施形態)
本発明は、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワークまたは各種記憶媒体を介してシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータがプログラムを読み出して実行することでも実現される。この場合、そのプログラム、および該プログラムを記憶した記憶媒体は本発明を構成する。
【符号の説明】
【0080】
100:クライアント端末、110:第1通信モジュール、200:中継サーバ、210:第1サーバ、211:第2通信モジュール、220:第2サーバ、221:第3通信モジュール、300:サービスサーバ、310:第4通信モジュール
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14