(第一実施形態)
ネットワーク上にプロトコルAをサポートするデバイスがx台、およびプロトコルA,Bの双方をサポートするデバイスがy台、それぞれ稼動している状態において(x,yともに1以上の整数)、プロトコルAをプロトコルBに変換するプロキシが稼動した場合、プロキシはプロトコルA,Bの双方をサポートするデバイスに対して、プロトコルAを使用してプロトコルBへの変換を実施してしまう。そのため、該プロキシの介在により、プロトコルBを使用するネットワーククライアントに対し、プロトコルB対応のデバイスがx+2y台稼動、即ち、プロトコルA,Bの双方をサポートするデバイスに関して、全く同一のデバイスでありながらネットワーク上には実際の2倍の台数が稼動しているように処理される可能性があり、それを使用するユーザーに対し混乱を招く要因となりうる問題を抱えている。
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されているプロトコル、ヴァージョン、アドレス、その他の数値等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
本発明に係るサービス提供システムの一実施形態としてのプロトコル変換システムについて説明する。図1は本発明の一実施形態としてのプリントシステムの構成を示すブロック図である。
クライアント100は、Microsoft社のWindows(登録商標)、Apple社のMac OS等の汎用オペレーティングシステム、およびその上で実行可能な汎用アプリケーションがインストールされており、本実施例で示したWindows(登録商標) OS 1の場合、eXtensible Markup Language (XML)/Simple Object Access Protocol (SOAP)を利用したUniversal Plug and Play(UPnP)プロトコル2を使用して、ネットワーク上のデバイスのディスカバリ、制御、ステータスの取得等を実現しており、例えばアプリケーションソフトであるワードプロセッサ4で作成されたドキュメントは、UPnP Protocol 2が検索発見したUPnPプロトコル対応プリンタに対し、Print Driver 3で印字可能なデータに変換された後、UPnPプロトコル 2を使用してプリントジョブの発行を実行する。
一方、ネットワーク対応デバイス、本実施の形態ではネットワーク対応型プリンタ200は、通信機能としてTCP/UDP/IPプロトコルスタック5を備え、そのプロトコルスタック上にSimple Network Management Protocol(SNMP)処理部6を備え、また、プロトコルスタック5上にはプリントプロトコル処理部7が実装され、クライアントから発行されるプリント要求を解析し、プリンタコントローラ8に対し、そのプリント要求を送出する機能を備える。
該プリンタはUPnPプロトコル処理部を備えておらず、該プリンタ単独では、クライアント100から発行されるUPnPプロトコルを使用したデバイス検索要求、およびUPnP印刷ジョブ要求に対し応じることはできない。
もうひとつのネットワーク対応型デバイス、本実施の形態ではネットワーク対応型プリンタ400は、通信機能としてTCP/UDP/IPプロトコルスタック17を備え、そのプロトコルスタック上にHTTP19を備え、HTTPリクエストの解析、およびレスポンス処理を行う。
プロトコルスタック19上には、ネットワークプリンタ200同様、Simple Network Management Protocol(SNMP)18処理部を備える。
HTTP 19の上位層にはSimple Object Access Protocol(SOAP)処理部20を備え、UPnPプロトコル処理部21を備える。ネットワーク対応型プリンタ400はUPnP Forumで策定されたPrintBasicサービスを実装しており、UPnPプロトコル処理部は該サービスで定義されたプリントジョブ、および属性情報を解析し、プリンタコントローラ22に対し、そのプリント要求を送出する機能を備える。
プロキシサーバ300も同様に、通信機能としてTCP/UDP/IPプロトコルスタック9を備え、そのプロトコルスタック上にHTTP10を備え、HTTPリクエストの解析、およびレスポンス処理を行う。
プロトコルスタック9上にはSimple Network Management Protocol(SNMP)11処理部を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ200の検索、および情報の取得を該プロトコルにより実施する。
プロトコルスタック9上にはPrint Protocol処理部12を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ200に対し、プリントジョブの発行を該Print Protocol部12で実行する。
HTTP10の上位層にはSimple Object Access Protocol(SOAP)処理部13を備え、UPnPプロトコル処理部14、およびプロトコル変換処理部16がそれぞれ、該処理部13を介してそれぞれ、クライアント200、およびプロキシサーバが複数ネットワーク上に存在する場合、eXtensible Markup Language(XML)で記述されたデータの双方向通信を実現する。
プロトコル変換処理部16は、SNMP処理部11、SOAP処理部13、UPnP処理部14、プリントプロトコル処理部12、および記録装置制御部15の上位層にあり、SNMP処理部11を介して取得したネットワーク対応型プリンタの情報を、UPnPプロトコルで使用される各種XMLドキュメントを作成した上で、記録装置制御部15が制御する記録装置に記録、あるいはUPnPプロトコルから要求があった際に該当する管理テーブルに記録されたXMLドキュメントを記録制御装置部15を介して読み出し、UPnPプロトコル処理部14に送信するなどの処理を実行する。
またプロトコル変換処理部16は、UPnPプロトコルによるプリントジョブのリクエストを受信した場合、SOAP処理部14を介して、ジョブコマンド、ジョブ属性情報を取得し、その内容を出力指定されたプリンタがサポートするプリントプロトコルに変換したのち、プリントプロトコル制御部12を介して、指定プリンタにジョブを送信する。
また、プロトコル変換処理部16は、プロキシサーバー300が管理する管理テーブルを記録装置制御部15を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。また同様に、プロトコル変換処理部16は、ネットワーク上に存在する他のプロキシサーバーが管理する管理テーブルを取得した場合、記録装置制御部15を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。
以下に、これら本システムの制御の流れを図2フローチャートに従い説明する。
プロキシサーバー300のプロトコル変換処理部16は起動後、記録装置制御部15を介し、プロトコル変換処理を実施しているネットワークデバイス情報を記録する管理テーブルの内容をクリアするstep2−1。該管理テーブルの詳細に関しては以下のプロセスで説明する。
次にネットワークに参加しサービスを開始するにあたり、同ネットワーク上に存在するUPnP対応プリンタを検索する(step2−2)。以下、図3を用いて、STEP2−2を詳細に説明することにする。図3に示すフローチャートstep3−1に示すように、マルチキャストアドレス239.255.255.250、ポート番号1900に対し、Universal Plug and Play Device Architecture1.0に規定される図4に示すフォーマットのHTTP M−SEARCHパケットを発行する。
プロキシサーバー300のプロトコル変換処理部16は、M−SEARCHパケットを発行した後、予め規定された一定時間内、本実施例においては30秒以内に応答があった場合、その全ての応答に対しレスポンスパケットの解析を実行する。
図5は、ネットワークデバイスの一例としてのプリンタからのレスポンスパケットのフォーマットを示すものであり、プロキシサーバー300のプロトコル変換処理部16は、該パケットに記載されるネットワークプリンタのURLを、記録装置制御部15を介して、該制御部が制御する記録装置に対し記録する。該処理は受信した全レスポンスパケットに対して実施され、プロキシサーバー300は、ネットワーク上に存在する全てのUPnP対応プリンタのURLを記録する(step3−2)。
以上のプロセスが完了した場合、あるいは、ステップにおいて応答が無い場合step3−3、プロキシサーバー300のプロトコル変換処理部16は、UPnP検索処理を終了して、step2−3に進み、プリンタ情報の取得を開始する。
図5には、URLとして、123.123.123.123が記述されている。URLは、ネットワークデバイスの識別情報の好適な一例である。STは、サービスタイプを意味する。
フローチャート図6はプリンタ情報取得の制御の流れを示したものである。プロキシサーバー300の持つプロトコル変換処理部16はSNMP制御モジュール部11より、以下のMIBオブジェクトに対してSNMP Getリクエストをブロードキャストすることで、ネットワーク上に存在するプリンタ情報を取得する(step6−1)。
PrinterMakeAndModel:プリンタベンダ・製品名称
PrinterName:プリンタ名
PrinterLocation:プリンタ設置場所
IPAddress:プリンタ IP アドレス
MACAddress:プリンタMAC アドレス
SupportedPDL:サポートするページ記述言語
SupportedPrintProtocol:サポートするプリントプロトコル
該SNMP Getリクエストを受信したネットワーク対応プリンタ200、および400は、SNMP処理部6において、各オブジェクトに該当する情報を生成した後に、SNMPレスポンスとしてプロキシサーバ300に対し、ユニキャストで応答を送信する。
S6−1−1で、レスポンスを受信したかどうかを判定する。S6−1−1で,レスポンスがあった判定した場合、S6−2へ進む。レスポンスが無かったと判断した場合、S6−9へ進む。各ネットワーク対応プリンタからレスポンスを受け取ったプロキシサーバー300のプロトコル変換処理部16は、各レスポンス内容を記録装置に既に登録済みの管理テーブルの内容と比較し(step6−2)、既にプロトコル変換を実施しているプリンタか否かを判断する(step6−3)。
S6−3で、プロトコル変換を実施していないプリンタ、即ち、新規に発見されたプリンタと判断された場合、次にプロキシサーバー300のプロトコル変換処理部16は、該プリンタがUPnP対応つまり、SSDPに対応するプリンタであるか否を、先に記録装置に記録したUPnP対応プリンタのURLと比較することで判定処理を行なう(step6−4)。ネットワーク上に接続されたデバイスの発見と機能の把握は、SSDP(Simple Service Discover Protocol)を用いる。SSDPは、UPnPを構成するための基幹部分で、IETFから標準仕様が発行されている。
デバイスの発見も、名前解決と同じくIPブロードキャストを用いる。ブロードで問合せ送信すると、条件に合うデバイスが自主的に問い合わせ元に対してIPアドレスとホスト名を送信する。また、具体的にどのような機能を持っているかなど、機器固有の情報もこのときに交換する。
この場合、SNMP GETリクエストのレスポンスとして取得したプリンタIPアドレスと、記録装置に記録されたURLが一致する場合(STEP6−5)、新規に発見されたプリンタはUPnP対応プリンタであると判断し、該プリンタに対してはプロトコル変換を実施しない。
一方、step6−4において、UPnP対応プリンタでは無いと判断した場合、プロキシサーバー300のプロトコル変換処理部16は、SNMPGETリクエストのレスポンスとして取得した情報を管理テーブルに追加更新し、記録装置制御部15を介して記録装置に記録する(step6−6)。
次に、新規に管理テーブルに登録されたプリンタに関して、取得した情報を元にUniversal Plug and Play Device Architecture v1.0において規定されるDevice Description Documentを生成し、記録装置制御部15を介して記録装置に記録し(step6−7)、step6−8においてUniversal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、管理テーブルに記録された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを実行中であることを通知する。
プロキシサーバー300より発行されたSNMPGet要求に対し、何のレスポンスが得られなかった場合(step6−1−NO)、STEP6−9へ進む。STEP6−9で管理テーブルを検索し、登録済みプリンタを確認する。
プロキシサーバー300より発行されたSNMPGet要求に対し、レスポンスが得られた場合(step6−1−YES)、STEP6−2へ進み、プロキシサーバ300に登録されているプリンタデバイスと、応答のあったプリンタ情報を比較して、STEP6−1探索したプリンタが管理テーブルにあるかを、管理テーブルとSNMPパケットの発行対象であるプリンタのIPアドレスやURL情報などを比較して確認し、STEP6−3に進む。
既に自身の管理テーブルに登録ずみのプリンタがありながら、該プリンタからレスポンスが得られなかった場合(STEP6−9−1−YES)、プロキシサーバー300のプロトコル変換処理部16は管理テーブルより該プリンタ情報の削除更新し(step6−10)、続いてDevice Description Documentを削除する(step6−11)。
既に自身の管理テーブルに登録ずみのプリンタがありながら、該プリンタからレスポンスが得られた場合(STEP6−9−1−NO)、プリンタ情報取得処理を終了し、次の処理へ進む。
プロキシサーバー300のプロトコル変換処理部16は、記録装置制御部15を介して、更新された管理テーブルを記録装置に記録した後、プロトコル変換処理部は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、管理テーブルから削除された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知する(step6−12)。
なお、本発明において管理テーブルは図7に示すように、先に記述した取得したSNMPオブジェクトの内容をXMLで記述したテキストファイルの形式で管理される。上述のプリンタ情報所得のプロセスを完了すると、プロキシーサーバー300のプロトコル変換処理部16は、プロトコル変換処理(step2−4)を開始する。フローチャート図8はプロトコル変換処理の流れを示したものである。
プロキシサーバー300のプロトコル変換処理部は16、クライアントから発行されるUniversal Plug and Play Device Architecture v1.0において規定されるデバイス検索プロトコル Simple Service Discovery Protocol(SSDP)パケットの受信通知をUPnPプロトコル処理部14から受けたどうかを判断し、受けたと判断した場合(step8−1―YES)、プロキシサーバー300 プロトコル変換処理部16が管理する管理テーブルを、記録装置制御部15を介して検索し、SSDPパケットの検索条件に該当するプリンタのDevice Description Documentが記録されているURLをSSDPレスポンスとしてUPnPプロトコル処理部14を介して返送する(step8−2)。そして、STEP8−3へ進む。
また、該URLを取得したクライアントデバイスから、HTTP GETリクエストによりDevice Description Documentの取得要求をUPnPプロトコル処理部14から受けたどうかを判断し場合受けたと判断した場合(step8−3―YES)、プロキシサーバー300 プロトコル変換処理部16が管理する管理テーブルを、記録装置制御部15を介して検索し、指定URLに記録されたDevice Description Documentを読み出した後、UPnPプロトコル処理部14を介して返送する(step8−4)。
また、該Device Description Documentを取得したクライアントデバイスから、Universal Plug and Play Device Architecture v1.0において規定される制御手段に基づき、プリントジョブが発行された場合、この場合、ジョブコマンド、およびジョブ属性はXMLの形式で記述されており、プロキシサーバー300のプロトコル変換処理部16は、UPnPプロトコル処理部14を介して該プリントジョブを受信した場合(step8−5―YES)、プロトコル変換処理部16はSOAP処理部において該コマンド、およびジョブ属性を解析し、次に記録装置制御部15を介して出力指定されたプリンタに該当する管理テーブル情報のうち、サポートするプリントプロトコル、およびIPアドレスを取得し、受信したコマンド、属性情報を該プリントプロトコルに変換したのち(step8−6)、出力指定されたプリンタのIPアドレスに対し変換後の情報を送信する(step8−7)。
プリントジョブを発行したクライアントは引き続きUniversal Plug and Play Device Architecture v1.0において規定される制御手段に基づきジョブデータ、この場合PDLをHTTP POSTコマンドを使用してプロキシサーバー300に対し送信する。該ジョブデータを受信したプロキシサーバー300のプロトコル変換処理部16は先のステップ同様に受信したジョブデータを指定されたプリンタがサポートするプリントプロトコルに変換し(step8−8)、先に取得したプリンタIPアドレスに対しジョブデータを送信する(step8−9)。
UPnPジョブデータを受信したか否かの判定処理を行う(Step8−8−1)
なお、規定時間内、本実施例においては30秒以内にクライアントからジョブデータの受信が開始しないかどうかを判定し、開始しないと判定した場合(STEP8−8−2−YES)、ジョブは破棄される(step8−10)。開始した場合は、ジョブは破棄されないで、またS8−8−1で受信待ちになる(STEP8−8−2−NO)。
ジョブコマンド、ジョブ属性、およびジョブデータを受信したプリンタは、プリント制御部においてジョブコマンド、ジョブ属性を解析した後、プリンタコントローラに対しプリントジョブを送信しプリントを実行する。
本発明におけるプロキシサーバー300は以上のプロセスstep2−2からstep2−4を繰り返し実行することで、定期的にネットワークプリンタの稼動状況を更新し、その更新情報に従いプロトコル変換処理を実行する。
step2−5において、パワーオフによりプロキシサーバー300のプロトコル変換処理部16がプロトコル変換処理を停止する場合は、プロトコル変換処理部16は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、記録装置制御部15を介して全ての管理テーブルを読み出し、管理テーブルに記録された全てのプリンタに関するNotifyパケットをUPnPプロトコル処理部14を介して発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知する(step2−6)。STEP2−5で、プロトコル変換処理を停止しない場合は、STEP2−2へ戻る。
以上説明したように、複数のプロトコルを使用しているデバイスを対象にプロトコル変換制御を行う制御装置の一例であるプロキシサーバ300において、第一のプロトコルの一例であるUPnPのSSDPを使用しているデバイスを探索する探索手段(図3の3−1乃至3−2)と、第二のプロトコルの一例であるSNMPの探索パケットを、SSDPに従ってデバイスを通信させるべくプロトコル変換を行う変換手段(例えば2−4及び図8の処理)と、前記探索手段が探索したデバイスがSSDPに対応しているか否かを認識する認識手段と(STEP6−3)、前記探索手段が探索したデバイスがSSDPに対応しているとは前記認識手段が認識したデバイスに対しては、SSDPへのプロトコルの変換は行わないよう前記変換手段を制御する制御手段(STEP6−4)を備えることを特徴とする制御装置。
前述の実施形態ではプリンタをネットワークデバイスとした実施の形態を示しているが、ネットワーク対応型デバイスとしてはハードディスク等のストレージデバイス、スキャナ、複写機、およびそれら複合機能を備えるデバイスであって、通信機能を介してプロキシサーバーと属性情報の交換、ジョブの送受信が可能な装置であればいずれの場合においても実現可能である。また、この場合プロキシサーバーとネットワーク対応型デバイス間の通信プロトコルは標準化された、あるいは汎用プロトコルであっても、ベンダ固有のプロトコルであっても同様に実現可能である。
また本実施形態においてはネットワーク対応型デバイスを例とした実施の形態を示しているが、デバイスとプロキシサーバー間は、USB、IEEE1394、パラレルなどのローカル接続による通信によっても実現可能である。
また本実施形態では、独立した形態でプロキシサーバーがネットワーク上に存在していたが、該プロキシサーバー機能は、ネットワーク対応型デバイスの内部に物理的に、あるいは論理的に組み込まれている場合においても実現可能である。
本実施形態において、プロキシが提供するプロトコル変換の組み合わせとしてMicrosoftが主体となって策定しているUniversal Plug and Playと、ネットワーク対応型プリンタが実装するSNMP、およびプリントプロトコルとの例を示しているが、Appleの提案するRendezvous、JBMIAが提案するBMLinkSなどのプロトコルに対しても実現可能であり、また、これらデバイスの検索、デバイスの制御が統合化されたプロトコルのみならず、Service Location Protocol (SLP) 、Multicast DNS Service Discovery等のデバイスが提供するサービスを検索するためのプロトコルへの利用、およびWeb ServiceのようにXML/SOAPをベースとしたRemote Procedure Call(RPC)形式によるデバイスの制御を、従来の制御プロトコルに変換するために利用することも可能である。
本実施形態においてプロキシサーバー間の情報通知プロトコルとしてHTTP/TCP/UDP/IPプロトコルを使用した例を示しているが、本発明はトランスポート手段に依存するものではなく、双方向の通信が可能であれば他の汎用プロトコル、あるいは独自プロトコルを使用した場合でも実現可能である。
(第二実施形態)
本実施形態が解決すべき別の側面として、ネットワーク上に同一のプロトコル対応、例えばプロトコルAをプロトコルBに変換するプロキシがN台稼動した場合、ひとつのネットワークデバイスがこれらN台のプロキシによって、それぞれ代行制御されてしまうため、プロトコルBを使用するネットワーククライアントに対して、同一のネットワークデバイスでありながら、ネットワーク上に異なるネットワークデバイスがN台稼動しているかのように処理される可能性があり、それを使用するユーザーに対し混乱を招く要因となりうる問題を抱えている。
また、通常プロキシがプロトコルの代行処理が可能な処理台数には限度があり、例えばプロトコルAをプロトコルBに変換するプロキシ1、およびプロキシ2の2台がネットワーク上に稼動している状態において、プロキシ1のプロトコル変換処理可能台数がM、プロキシ1のプロトコル変換処理可能台数がN(M>N)である場合、プロキシ1およびプロキシ2が互いに同一ネットワークデバイスに対しプロトコル変換処理を実施してしまう可能性があり、2台のプロキシによりM+N台のネットワークデバイスのプロトコル変換処理が可能であるにも関わらず、M台までの処理しか実施できない場合がありうる。この場合、N台のネットワークデバイスに対し、2台のプロキシが重複処理を実施することになり、しかも前述のとおり、この重複処理分に関しては、あたかも2xN台分の異なるネットワークデバイスが存在するかのごとく処理されてしまうことになる。
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されているプロトコル、ヴァージョン、アドレス、その他の数値等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではない。
本発明に係るサービス提供システムの一実施形態としてのプロトコル変換システムについて説明する。図9は本発明の一実施形態としてのプリントシステムの構成を示すブロック図である。
クライアント100は、Microsoft社のWindows(登録商標)、Apple社のMac OS(登録商標)等の汎用オペレーティングシステム、およびその上で実行可能な汎用アプリケーションがインストールされており、本実施例で示したOS901の場合、eXtensible Markup Language (XML)/Simple Object Access Protocol(SOAP)を利用したUniversal Plug and Play(UPnP)プロトコル2を使用して、ネットワーク上のデバイスのディスカバリ、制御、ステータスの取得等を実現しており、例えばアプリケーションソフトであるワードプロセッサ4で作成されたドキュメンは、UPnP Protocol902(登録商標)が検索発見したUPnPプロトコル対応プリンタに対し、Print Driver903で印字可能なデータに変換された後、UPnPプロトコル902を使用してプリントジョブの発行を実行する。
一方、ネットワーク対応デバイス、本実施の形態ではネットワーク対応型プリンタ9200は、通信機能としてTCP/UDP/IPプロトコルスタック5を備え、そのプロトコルスタック上にSimple Network Management Protocol(SNMP)処理部906を備え、また、プロトコルスタック905上にはプリントプロトコル処理部907が実装され、クライアントから発行されるプリント要求を解析し、プリンタコントローラ908に対し、そのプリント要求を送出する機能を備える。
該プリンタはUPnPプロトコル処理部を備えておらず、該プリンタ単独では、クライアント9100から発行されるUPnPプロトコルを使用したデバイス検索要求、およびUPnP印刷ジョブ要求に対し応じることはできない。
プロキシサーバ9300も同様に、通信機能としてTCP/UDP/IPプロトコルスタック909を備え、そのプロトコルスタック上にHTTP10を備え、HTTPリクエストの解析、およびレスポンス処理を行う。
プロトコルスタック909上にはSimple Network Management Protocol(SNMP)11処理部を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ200の検索、および情報の取得を該プロトコルにより実施する。
プロトコルスタック909上にはPrint Protocol処理部9012を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ200に対し、プリントジョブの発行を該Print Protocol部9012で実行する。
HTTP10の上位層にはSimple Object Access Protocol(SOAP)処理部13を備え、UPnPプロトコル処理部14、およびプロトコル変換処理部16がそれぞれ、該処理部9013を介してそれぞれ、クライアント9200、およびプロキシサーバが複数ネットワーク上に存在する場合、eXtensible Markup Language(XML)で記述されたデータの双方向通信を実現する。
プロトコル変換処理部9016は、SNMP処理部9011、SOAP処理部9013、UPnP処理部9014、プリントプロトコル処理部9012、および記録装置制御部9015の上位層にあり、SNMP処理部11を介して取得したネットワーク対応型プリンタの情報を、UPnPプロトコルで使用される各種XMLドキュメントを作成した上で、記録装置制御部9015が制御する記録装置に記録、あるいはUPnPプロトコルから要求があった際に該当する管理テーブルに記録されたXMLドキュメントを記録制御装置部9015を介して読み出し、UPnPプロトコル処理部9014に送信するなどの処理を実行する。
またプロトコル変換処理部9016は、UPnPプロトコルによるプリントジョブのリクエストを受信した場合、SOAP処理部9014を介して、ジョブコマンド、ジョブ属性情報を取得し、その内容を出力指定されたプリンタがサポートするプリントプロトコルに変換したのち、プリントプロトコル制御部9012を介して、指定プリンタにジョブを送信する。
また、プロトコル変換処理部9016はSOAP処理部9013を介して他のプロキシサーバーから発行されたNotifyリクエストの詳細内容を取得し、その内容に応じた処理を実行する。
また、プロトコル変換処理部9016は、プロキシサーバー9300が管理する管理テーブルを記録装置制御部9015を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。
また同様に、プロトコル変換処理部9016は、ネットワーク上に存在する他のプロキシサーバーが管理する管理テーブルを取得した場合、記録装置制御部9015を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。
以下に、これら本システムの制御の流れを図10のフローチャートに従い説明する。図10は、プロトコル変換を行うためのプロキシサーバの調停処理のフローチャートを示す図である。図13は、既に起動しているプロキシサーバが、起動直後のプロキシサーバからのNotifyパケットを受信した場合の処理を示すフローチャートである。各図の処理により、ネットワーク上ではWORKING状態のプロキシサーバが一台となることを保証するよう、各プロキシサーバが制御される。本実施例では、WORKING状態のプロキシサーバだけが、新たに追加されるデバイスのプロトコル処理を新たに受け付けるようにしている。これにより、複数のプロキシサーバがネットワーク上に乱立して、無秩序にプロトコル変換処理を行ってしまうことを防止できる。
図10の処理は、プロキシサーバが、起動されるとスタートする。この処理では、新たに起動したプロキシサーバ9300が、ネットワーク上に他に既にプロキシサーバ(図示省略)が起動していないか否かを判断する処理である。
プロキシサーバー9300のプロトコル変換処理部9016は起動後、記録装置制御部9015を制御し、プロトコル変換処理を実施しているネットワークデバイス情報を記録する管理テーブルの内容をクリアして初期化する(step10−1)。該管理テーブルの詳細に関しては以下のプロセスで説明する。次にネットワークに参加しサービスを開始するにあたり、同ネットワーク上に存在する他のプロキシサーバーに対しNotifyパケットを発行する(step10−2)。
この際、マルチキャストアドレス239.255.255.250 ポート番号1900に対し図14に示すフォーマットのHTTP NotifyリクエストをHTTPパケットとして発行する。
本実施形態においては、HTTP Notifyリクエストのエンティティボディに、プロキシサーバーのステータス情報、該プロキシサーバーがサポートしているプロトコル変換処理名称、および該プロキシサーバーのURL、物理アドレス、および管理テーブルの格納先URLをXML形式で記述し通知する。
ここで
<status>はプロキシサーバーの動作ステータスを示すものであり、起動時はWakeUPを記述する。
<protocol>はプロキシサーバーが変換可能なプロトコルを示すものであり、UPnP、BMLinkS、Rendezvousなどプロトコル名称を記述する。本実施例ではMicrosoftが主体となって提案するUPnPを例として記述する。
<ProxyURL>は、プロキシサーバーのIPアドレスをURL形式で記述する。
<ProxyMAC>は、プロキシサーバーの物理アドレス(MAC)を記述する。
<TableURL>は、プロキシサーバーが管理する管理テーブルの格納アドレスをURL形式で記述する。
フローチャート図13は、ネットワーク上に既に存在する他のプロキシサーバーが、プロキシサーバ9300から該Notifyパケットを受信した場合の制御フローを示すものであり、ネットワーク上にプロキシサーバー9300以外のプロキシサーバーが存在し、これらプロキシサーバーがプロトコル変換処理を実行している場合、HTTP9010においてHTTP Notifyリクエスト300を受信した後、STEP13−1では、SOAP処理部9013においてそのリクエストのエンティティボディ301の解析を実行して、Notifyパケットの送信元のプロキシサーバが変換対象としているプロトコルと、Notifyパケットを受け取ったプロキシサーバが変換対象としているプロトコルとが一致するかどうかを判断する。
STEP13−1で、SOAP処理部9013が、<protocol>内容をチェックし対応プロトコルの名称が、自身が提供するプロトコル変換処理と一致しないと判定した場合は、SOAP処理部9013は、Notifyリクエストを無視する。
STEP13−1で、自身が提供するプロトコル変換処理と一致すると判定した場合、STEP13−3に進む。STEP13−3では、SOAP処理部9013は、<status>タグの内容をチェックし、その要素がWakeUPであるか否かを判定する。
STEP13−3で要素がWAKEUPであると判定した場合、STEP13−4に進み、プロトコル変換処理部16は記録装置制御部13を介して、管理テーブルを読み出し、現在自身が実行しているプロトコル変換処理の状況が、プロトコル変換処理可能なデバイス数=プロトコル変換処理実行中のデバイス数であるかどうかを判定する。STEP13−4で、これ以上、新規にプロトコル変換処理を提供できない状態にあると判定した場合、step13−9に進み、図15に示すフォーマットのHTTPレスポンス400をHTTP Notifyリクエストを発行したプロキシサーバー9200に対しユニキャストで発行する。その際、HTTPレスポンス400のエンティティボディとして以下の情報をXML形式のデータをSOAP処理部9013が生成し、プロキシサーバの9300のTCP/UDP/IPプロトコルスタックを介して不図示のネットワークインタフェースを制御して通知するものとする。ここで、FULLとは、プロキシサーバの管理テーブルが一杯になっており、プロキシサーバにおけるプロトコル変換処理の台数が最大値に達したことを示す。
ここで、図15の各ラベルについて説明する。<status>はプロキシサーバーの動作ステータスを示すラベル(タグ・記述子、識別可能な情報であればなんでもよい)であり、この場合、FULL即ちこれ以上変換処理を提供できない状態であることを通知するためのものである。<protocol>はプロキシサーバーが変換可能なプロトコルを示すものであり、UPnP、BMLinkS、Rendezvousなどプロトコル名称を記述する。本実施例ではMicrosoftが主体となって提案するUPnPを例として記述する。<ProxyURL>は、プロキシサーバーのIPアドレスをURL形式で記述する。<ProxyMAC>は、プロキシサーバーの物理アドレス(MAC)を記述する。<TableURL>は、プロキシサーバーが管理する管理テーブルの格納アドレスをURL形式で記述する。
一方、現在自身が実行しているプロトコル変換処理の状況が、プロトコル変換処理可能なデバイス数がプロトコル変換処理実行中のデバイス数より大きい場合、即ち、新規にプロトコル変換処理が提供可能な状態にある場合、step13−5に進み、図23に示すフォーマットのHTTPレスポンス400をHTTP Notifyリクエストを発行したプロキシサーバー9200に対しユニキャストで発行する。その際、HTTPレスポンス400のエンティティボディとして以下の情報をXML形式で記述し通知する。ここで、<status>はプロキシサーバーの動作ステータスを示すものであり、この場合、WORKING、即ち他のプロトコル変換プロキシサーバーが稼動する必要が無いことを通知する。<protocol>はプロキシサーバーが変換可能なプロトコルを示すものであり、UPnP、BMLinkS、Rendezvousなどプロトコル名称を記述する。本実施例ではMicrosoftが主体となって提案するUPnPを例として記述する。<ProxyURL>は、プロキシサーバーのIPアドレスをURL形式で記述する。<ProxyMAC>は、プロキシサーバーの物理アドレス(MAC)を記述する。<TableURL>は、プロキシサーバーが管理する管理テーブルの格納アドレスをURL形式で記述する。
また、STEP13−3で要素がWAKEUPでないと判定した場合、STEP13−6に進み、プロキシサーバがシャントダウンすることを示すNOTIFYパケットがBYEBYEパケットであるかいなかを判定する。STEP13−3で、BYEBYEパケットでない場合には、処理を終了する。BYEBYEパケットであると判定した場合は、S13−7に進む。S13−7、BYEBYEパケットの送信元のプロキシサーバから取得済みであるかどうかを判定する。取得済みである場合は、当該管理テーブルを削除して処理を終了する。取得済みでない場合は、処理をそのまま終了する。
さて、フローチャート図10に戻り、新たに起動したプロキシサーバー9300側の処理を説明する。プロトコル変換処理部9016は、Notifyパケットを発行した後、予め規定された一定時間内、本実施例においては30秒以内に応答があった場合step10−3、その全ての応答に対しレスポンスパケットのエンティティボディの解析を実行する。
SOAP処理部9013における解析処理の結果、エンティティボディのうち<status>タグの要素の記述が、一台でもWORKINGのステータスの応答が返信されているか否かを判定(step10−4)する。
ここで既に図13を用いて説明したように外部のプロキシサーバからっ受信されるNOTIFYパケットは、STATUS=FULLか、又はSTATUS=WORKINGのいずれかである。
STEP10−4の判定がYESであった場合、つまり、STATUS=WORKINGである場合は、サーバー9300自身がサービスを開始しなくても、既にネットワーク上で稼動状態にあるプロキシにより処理が可能であると判断される。この場合、プロキシーサーバ9300のプロトコル変換処理部はスリープ状態に移行し(step10−5)、他のプロキシからNotifyメッセージを受け取るまでスリープ状態となって待ち状態となる(STEP10−6)。STEP10−6でNOTIFYパケットを受信した場合、この後は、プロトコル変換処理は実施せず、乱数を発生させてその乱数に応じた時間経過後(STEP10−7)、WAKEUPパケットを他のプロキシサーバに対して再度発行する(STEP10―2)。
SOAP処理部9014における解析処理の結果、STEP10−3で受信した外部のプロキシーサーバからの応答のエンティティボディのうち<status>タグの要素の記述が、全てFULLのステータスであるか、又は、WORKINGの応答が一つも無かったとSOAP処理部9014が判定した場合は、現在稼動中のプロキシがネットワーク上に存在するが、これ以上、稼動中プロキシでは新規サービスの提供が不可能であるとSOAP処理部9014は、判定することになる。つまり、STEP10―4で、ひとつでもWORKINGのステータスの他のプロキシーサーバからの応答から返却されていると判定された場合は、STATUS=FULLであることになる。
この場合、プロキシサーバー9300のプロトコル変換処理部9016は、<status>=FULLのレスポンスを送信してきた全プロキシより管理テーブルを取得要求を行う(step10−8)。即ち、<TableURL>に記述されたURLに対しHTTP GETリクエストをHTTP処理部9010より発行し、FULLステータスにあるプロキシから管理テーブルを取得する。
続いてSTEP10−10で取得許可がなされるか否かを判断し、取得許可がなされた場合には、STEP10−5に進む。取得許可ななされない場合には、STEP10−9に進む。続いて、取得した管理テーブルは記録装置制御部9015を介してプロキシサーバ9300の記録装置に記録される(step10−9)。
なお、図示しないが、外部のプロキシ―サーバから全く応答が無かった場合には、プロキシ―が存在しない旨のエラー処理に移行してもよい。
取得した管理テーブルに記録されたプリンタデバイスは、FULLステータスの状態にあるプロキシによりプロトコル変換処理を実施中である。従って該テーブルに記録されたプリンタデバイスに対し、プロキシサーバー9300内のCPUはプロトコル変換処理を実行しないようプロトコル変換処理部9016を実行する。
したがって、この発明により同一のネットワーク対応デバイス、本発明においてはネットワーク対応プリンタに対し複数のプロキシサーバーが重複してプロトコル変換処理を実施することを回避することが可能となる。
一方、ネットワーク上のFULLステータスの状態にある、取得許可を受け取った他のプロキシサーバーは、この管理テーブル取得要求に対し、すなわちWakeUPステータスに移行した自身が管理する管理テーブルを、1回のみ送信するように実装される。また、プロキシーが複数存在する場合、そのうち1台にのみ送信する。一度、管理テーブルの送信を実行したプロキシサーバー内のCPUは、それ以降、管理テーブルの取得要求には応じないよう制御する。この処理は図12にて説明する。
すなわちこの発明により、WakeUPステータスからプロトコル変換処理に移行が可能なプロキシサーバーは1台に限定され、同時にWakeUPステータスにあった複数のプロキシサーバーが稼動することを回避する。
すなわち、フローチャート図12のstep12−14において、WakeUpステータスに移行したプロキシサーバーから管理テーブル送信要求を受信した場合、プロキシサーバー9300のプロトコル変換処理部9016は該テーブルがロック中か否かを判断し、ロック中でなければ管理テーブル送信要求に応じ管理テーブルを送信し(step12−15、)以降管理テーブルをロックする(step12−16)。
このように、アクティブにテーブルを配布できるロックされていないプロキシサーバは、デバイス一台について、プロキシサーバ一台のみになるように制御される。
再びフローチャート図10において、管理テーブルの取得ができなかった場合(step10−10)、プロキシサーバー9300のプロトコル変換処理部9016スリープ状態に移行しstep10−5、他のプロキシからNotifyメッセージを受け取るまでスリープ状態を継続し、プロトコル変換処理は実施しない(step10−6)。
STEP10−10で管理テーブルの取得が許可され取得完了した場合、プロキシサーバー9300のプロトコル変換処理部9016は、STEP10−12でプリンタ情報の取得を開始する(step10−12)。
ところで、Step10−3で、予め設定された一定時間、例えば、本実施形態においては30sec以内に、応答が無い場合は、プロキシサーバー9300のプロトコル変換処理部9016は、step10−9に進む。
図11はプロキシサーバ9300におけるプリンタ情報取得の制御の流れを示したものである。プロキシサーバー9300 プロトコル変換処理部9016はSNMP制御モジュール部9011より、以下のMIBオブジェクトに対してSNMP Getリクエストをパケット形式でブロードキャストすることで、ネットワーク上に存在するプリンタ情報を取得する(step11−1)。
PrinterMakeAndModel:プリンタベンダ・製品名称
PrinterName:プリンタ名
PrinterLocation:プリンタ設置場所
IPAddress:プリンタ IP アドレス
MACAddress:プリンタMAC アドレス
SupportedPDL:サポートするページ記述言語
SupportedPrintProtocol:サポートするプリントプロトコル
該SNMP Getリクエストを受信したネットワーク対応プリンタ9200は、SNMP処理部906において、各オブジェクトに該当する情報を生成した後に、SNMPレスポンスとしてプロキシサーバ9300に対し、ユニキャストで応答を送信する。
step11−2で、各ネットワーク対応プリンタからレスポンスを受け取った場合、プロキシサーバー9300のプロトコル変換処理部9016は、各レスポンス内容を記録装置に既に登録済みの管理テーブルの内容と比較する(step11−3)。STEP11−2でレスポンスを受信しない場合は処理を終了する。
ここで、プロキシサーバには、管理テーブルがFULLとなった場合に、状態が二種類あることに注意されたい。第一が、デバイスから新たにレスポンスがあった場合、その時点でそのデバイスを含めて管理テーブルがはじめてFULLになる状態であり、第二が、管理テーブルがFULLに既になっており、さらに、もう一台デバイスからのレスポンスを認識した状態がある。本実施形態では、この第二のプロキシサーバのFULL状態をSTATUS=FULLモード状態として区別する。
また、図10の前述のstep10−9においてstatus=FULL状態にあるプロキシから管理テーブルを取得した取得済みの全管理テーブルの内容と比較することにより、既にプロトコル変換を実施しているプリンタがあるか否かを判定する(step11−4)。
プロトコル変換処理を実施していないネットワークプリンタがあると判定した場合、プロトコル変換処理をしていないプリンタを検出して、STEP11−8に進む。
STEP11−8で、プロキシサーバー300が管理する管理テーブルがフルの状態、すなわちプロキシーサーバー9300のプロトコル変換処理部16においてプロトコル変換処理が可能なプリンタデバイス数に到達している、又は、既に到達していたと判定した場合、STEP11−7へ進む。
次に、先のSTEP11−4において検出されたデバイスのステータスがFULLモードに設定されているか否かを判定する(STEP11−7)。STEP11−7で、検出されたデバイスがフルモードではないと判定された場合、プロキシサーバー9300のプロトコル変換処理部9016はステータスをFULLモードに移行設定する(step 11−5)。その後、図24に示すフォーマットのHTTP Notifyリクエストをマルチキャストアドレス239.255.255.250 ポート番号1900に対し発行する step11−6。その際、HTTPリクエストのエンティティボディとして、前述の図7に示す情報を通知する。このNotifyパケットにより、ネットワーク上に存在するプロキシサーバ9300以外のプロキシサーバーに対しプロキシサーバー300がFULLステータスに移行したことを通知する。すなわちプロトコル変換処理部9016が稼動を始めて、初めて管理テーブルがフルになった場合にのみ、Notifyパケットが発行される。
STEP11−8で、プロキシサーバー9300のプロトコル変換処理部9016が、現在プロトコル変換処理をしているデバイスの数が、プロトコル変換処理が可能なプリンタデバイス数に満たないと判定、つまり、新規に検出されたプリンタに対しプロトコル変換処理の実行が可能であるか否かを判定する。
STEP11−8で、プリンタに対しプロトコル変換処理の実行が可能であると判定した場合には、STEP11−7に進み、既にSTATUSがFULLモードであるかどうかを判定する。FULLモードであると判定した場合には、プロキシサーバが扱ったことがない、新規デバイスであるかどうかを判定する(STEP11−15)。
新規デバイスであると判定した場合には、STEP11−11に進む。新規デバイスでないと判定した場合には、過去にプロキシサーバが扱ったデバイスが、スタンバイモード、ディープスリープモード、スリープモード又はオフライン、停止状態などから復帰して再度プロトコル変換処理が必要になったことを示しているので、STEP11−9に進む。STEP11−9では、プロキシサーバー9300のプロトコル変換処理部9016は、記録装置制御部15を介して、更新された管理テーブルを記録装置に記録した後、新規に管理テーブルに登録されたプリンタに関して、取得した情報を元にUniversal Plug and Play Device Architecture v1.0において規定されるDevice Description Documentを生成し、記録装置制御部9015を介して記録装置に記録する(step11−9)。続いて、step11−10においてUniversal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、管理テーブルに記録された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを実行中であることを通知する。
step11−9で、プロトコル変換を停止していたネットワークプリンタを検出した場合も、S11−9に進み、Universal Plug and Play Device Architecture v1.0において規定されるDevice Description Documentを生成し、記録装置制御部9015を介して記録装置に記録する。続いて、step11−10においてUniversal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部9014より、管理テーブルに記録された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを実行中であることをネットワーク上のデバイスに通知する。
以上の各処理に続いて、STEP11−11で、プロキシサーバー9300より発行されたSNMP Get要求に対し、何のレスポンスが得られなかった場合で、既に自身の管理テーブルに登録ずみのプリンタでありながら、該プリンタからレスポンスが得られるかどうかを判定する。step11−11で、応答が得られなかった場合、SUATUSがFULLモードかどうかを判定する(STEP11−14)。STEP11−14で、STATUSがFULLモードでないと判定した場合は、プロキシサーバー9300のプロトコル変換処理部9016は管理テーブルより該プリンタ情報、およびDevice Description Documentを削除する(step11−12)そして、STEP11−13に進む。
そして、STEP11−13で、プロキシサーバー9300のプロトコル変換処理部9016は、記録装置制御部9015を介して、更新された管理テーブルを記録装置に記録した後、プロトコル変換処理部は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、管理テーブルから削除された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知する。
ただし、STEP11−14で、プロキシサーバー9300のプロトコル変換処理部16がFULLステータスに移行していると判定した場合、 管理テーブルから該当するプリンタ情報の削除は実行しないで、プロキシサーバー9300のプロトコル変換処理部16は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、応答の無くなった全てのネットワークプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知し(step11−13)、処理を終了する。
なお、本発明において管理テーブルは図25に示すように、先に記述した取得したSNMPオブジェクトの内容をXMLで記述したテキストファイルの形式で管理される。図25には、プリンタのテーブルが定義されている。プリンタタグ<Printer></Printer>で挟まれた間には、各プリンタが定義されている。図では、タグの間に記述されているように、プリンタ名、設置場所、IPアドレス、MACアドレス、対応する言語、サポートする印刷プロトコルなどが定義されている。***マークの場所には、同様に複数のプリンタから情報が取得された場合、複数プリンタの情報が書き込まれ管理可能である。
プリンタ情報所得のプロセスを完了すると、プロキシサーバー9300のプロトコル変換処理部9016は、プロトコル変換処理step10−13を開始する。
フローチャート図12はプロトコル変換処理の流れを示したものである。
プロキシサーバー300のプロトコル変換処理部は9016、クライアントから発行されるUniversal Plug and Play Device Architecture v1.0において規定されるデバイス検索プロトコル Simple Service Discovery Protocol(SSDP)パケットの受信通知をUPnPプロトコル処理部9014から受けた場合step12−1、プロキシサーバー9300 プロトコル変換処理部9016が管理する管理テーブルを、記録装置制御部15を介して検索し、SSDPパケットの検索条件に該当するプリンタのDevice Description Documentが記録されているURLをSSDPレスポンスとしてUPnPプロトコル処理部9014を介して返送する step12−2。
また、該URLを取得したクライアントデバイスから、HTTP GETリクエストによりDevice Description Documentの取得要求をUPnPプロトコル処理部9014から受けた場合 step12−3、プロキシサーバー9300 プロトコル変換処理部16が管理する管理テーブルを、記録装置制御部9015を介して検索し、指定URLに記録されたDevice Description Documentを読み出した後、UPnPプロトコル処理部9014を介して返送する step12−4。
また、該Device Description Documentを取得したクライアントデバイスから、Universal Plug and Play Device Architecture v1.0において規定される制御手段に基づき、プリントジョブが発行された場合、この場合、ジョブコマンド、およびジョブ属性はXMLの形式で記述されており、プロキシサーバー300のプロトコル変換処理部9016は、UPnPプロトコル処理部14を介して該プリントジョブを受信した場合step12−5、プロトコル変換処理部16はSOAP処理部において該コマンド、およびジョブ属性を解析し、次に記録装置制御部15を介して出力指定されたプリンタに該当する管理テーブル情報のうち、サポートするプリントプロトコル、およびIPアドレスを取得し、受信したコマンド、属性情報を該プリントプロトコルに変換したのちstep12−6、出力指定されたプリンタのIPアドレスに対し変換後の情報を送信するstep12−7。プリントジョブを発行したクライアントは引き続きUniversal Plug and Play Device Architecture v1.0において規定される制御手段に基づきジョブデータ、この場合PDLをHTTP POSTコマンドを使用してプロキシサーバー9300に対し送信する。該ジョブデータを受信したプロキシサーバー9300のプロトコル変換処理部16は先のステップ同様に受信したジョブデータを指定されたプリンタがサポートするプリントプロトコルに変換しstep12−8、先に取得したプリンタIPアドレスに対しジョブデータを送信するstep12−9。
なお、規定時間内、本実施例においては30秒以内にクライアントからジョブデータの受信が開始しなかった場合、ジョブは破棄されるstep12−10。
ジョブコマンド、ジョブ属性、およびジョブデータを受信したプリンタは、プリント制御部においてジョブコマンド、ジョブ属性を解析した後、プリンタコントローラに対しプリントジョブを送信しプリントを実行する。
本発明におけるプロキシサーバー9300は以上のプロセスを繰り返し実行することで、定期的にネットワークプリンタの稼動状況を更新し、その更新情報に従いプロトコル変換処理を実行する。
step10−14において、パワーオフによりプロキシサーバー9300のプロトコル変換処理部9016がプロトコル変換処理を停止する場合は、プロトコル変換処理部16は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、記録装置制御部9015を介して全ての管理テーブルを読み出し、管理テーブルに記録された全てのプリンタに関するNotifyパケットをUPnPプロトコル処理部14を介して発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知するstep10−15。UPnPプロトコルによるNotify処理を実行した後、プロトコル変換処理部9016は、図11に示すフォーマットでHTTP Notifyリクエストをマルチキャストアドレス239.255.255.250 ポート番号1900に対し発行するstep10−16。その際、HTTPリクエストのエンティティボディとして以下の情報をXML形式で記述し通知する。
ここで、
<status>はプロキシサーバーの動作ステータスを示すものであり、この場合、ByeBye即ち、プロトコル変換処理の停止を通知する。
<protocol>はプロキシサーバーが変換可能なプロトコルを示すものであり、UPnP、BMLinkS、Rendezvousなどプロトコル名称を記述する。本実施例ではMicrosoftが主体となって提案するUPnPを例として記述する。
<ProxyURL>は、プロキシサーバーのIPアドレスをURL形式で記述する。
<ProxyMAC>は、プロキシサーバーの物理アドレス(MAC)を記述する。
<TableURL>は、プロキシサーバーが管理する管理テーブルの格納アドレスをURL形式で記述する。
以上のプロセスを実施することで、プロキシサーバ300は、ネットワーク上で稼動する他のプロキシサーバーに対しプロトコル変換処理を停止したことを通知する。
なお、フローチャート図13のstep13−6においてプロキシーサーバ9300のプロトコル変換処理部9016が、ネットワーク上で稼動していた他のプロキシサーバーからプ該プロトコル変換処理停止のNotifyパケットを受信した際、SOAP処理部13において、該パケットのエンティティボディを解析し、Notifyパケットを発行したプロキシサーバーから管理テーブルを取得したか否かをチェックし、管理テーブルを取得している場合step13−7、この管理テーブルを記録装置制御部15を介して削除するstep13−8。
すなわち、ByeByeを発行したプロキシサーバがプロトコル変換処理を提供していたプリンタの変換処理は、現在Working状態にあるプロキシサーバ300により変換処理が受け継がれることになる。
フローチャート図10のstep10−5においてSLEEP状態に移行したプロキシサーバ9300のプロトコル変換処理部9016は、他のプロキシサーバーから発行されるNotifyパケットの監視を行う。SOAP処理部13を介して受信したNotifyパケットのエンティティボディのうち<status>の要素がByeBye、あるいはFULLであるパケットが1パケットでも存在した場合、プロトコル変換処理部16はあらかじめ規定されたアルゴリズムに従い1−30の整数の乱数を生成したのち、生成した乱数の値と等価な秒数だけウエイトした後にstep10−7、step10−2のNotify発行プロセスを実行する。
以上述べたように、複数種類のプロトコルが混在するネットワークシステムにおいてプロトコル変換処理を行なう制御装置の一例であるプロキシサーバ9300において、ネットワーク上に他のプロキシサーバ(図示省略)が存在しないか否かを、探索要求をネットワークにマルチキャストを行い起動時に探索し(図10のSTEP10−3,10−4にように、プロキシサーバ9300内のCPUがメモリに記憶された制御プログラムを実行して実現する機能)、前記探索手段によって、ネットワーク上に他のプロトコル変換装置が探索された場合に、前記探索されたプロトコル変換装置が、プロトコル変換処理を行うことが可能か、又は、プロトコル変換処理を行っているかどうかを判定する判定手段と(STEP10−4)、前記判定手段が前記探索されたプロトコル変換装置がプロトコル変換処理を可能ではない、又は、プロトコル変換処理を行っていないと判定した場合に、プロトコル変換処理の一例である図10のSTEP10―13を起動する起動手段(一例として図9の9014そのものが起動実行してもよいし、又は、不図示の探索アプリケーションプログラムやOSから起動してもよい。)とを備えている。
本実施例ではプリンタをネットワークデバイスとした実施の形態を示しているが、ネットワーク対応型デバイスとしてはハードディスク当のストレージデバイス、スキャナ、複写機、およびそれら複合機能を備えるデバイスであって、通信機能を介してプロキシサーバーと属性情報の交換、ジョブの送受信が可能な装置であればいずれの場合においても実現可能である。
また、この場合プロキシサーバーとネットワーク対応型デバイス間の通信プロトコルは標準化された、あるいは汎用プロトコルであっても、ベンダ固有のプロトコルであっても同様に実現可能である。
また本実施例においてはネットワーク対応型デバイスを例とした実施の形態を示しているが、デバイスとプロキシサーバー間は、USB、IEEE1394、パラレルなどのローカル接続による通信によっても実現可能である。
また本実施例では、独立した形態でプロキシサーバーがネットワーク上に存在していたが、該プロキシサーバー機能は、ネットワーク対応型デバイスの内部に物理的に、あるいは論理的に組み込まれている場合においても実現可能である。
本実施例において、プロキシが提供するプロトコル変換の組み合わせとしてMicrosoftが主体となって策定しているUniversal Plug and Playと、ネットワーク対応型プリンタが実装するSNMP、およびプリントプロトコルとの例を示しているが、Appleの提案するRendezvous、JBMIAが提案するBMLinkSなどのプロトコルに対しても実現可能であり、また、これらデバイスの検索、デバイスの制御が統合化されたプロトコルのみならず、Service Location Protocol(SLP)、Multicast DNS Service Discovery等のデバイスが提供するサービスを検索するためのプロトコルへの利用、およびWeb ServiceのようにXML/SOAPをベースとしたRemote Procedure Call(RPC)形式によるデバイスの制御を、従来の制御プロトコルに変換するために利用することも可能である。
本実施例において、HTTPによるNotifyパケット発行の際に、該パケットのエンティティにXMLの形式で付加情報を記述して送信しているが、該エンティティの記述にはバイナリデータを利用した記述によっても実現可能である。また、新規にHTTPヘッダを定義し、該ヘッダを使用する形態での通知手段を用いても実現可能である。
本実施例においてプロキシサーバー間の情報通知プロトコルとしてHTTP/TCP/UDP/IPプロトコルを使用した例を示しているが、本発明はトランスポート手段に依存するものではなく、双方向の通信が可能であれば他の汎用プロトコル、あるいは独自プロトコルを使用した場合でも実現可能である。
以上説明したように、本実施形態の一つの側面によれば、同一のプロトコル変換機能を備えたプロトコル変換装が同一通信回線上で稼動状態にある場合、プロトコル変換処理装置が自動的に他のプロトコル変換処理装置のステータスを取得し、プロトコル変換処理の実行、待機を判断することが可能となり、またプロトコル変換処理を実行する際、既に同一プロトコル変換処理を実行しているプロトコル変換処理装置からプロトコル変換を実施している情報処理装置情報を取得し、これら情報処理装置に対してはプロトコル変換を実施しない機能をそなえるため、同一プロトコル変換処理を提供するプロトコル変換処理装置の間で同一の情報処理装置に対して、重複してプロトコル変換処理を実施することを回避することが可能となる。
さらに、本実施形態他の別の側面によれば、これら処理は本発明を適用したプロトコル変換処理装置が自動的に処理するものであり、ネットワーク管理者を含むネットワーク上の情報処理装置を使用するユーザーが特別な設定、制御等関与することなく、プロトコル変換処理装置が備える変換能力を最大限利用することが可能となる。
(第三実施形態)
以下に、図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。ただし、この実施の形態に記載されているプロトコル、ヴァージョン、アドレス、その他の数値等は、特に特定的な記載がない限りは、この発明の範囲をそれらのみに限定する趣旨のものではないことはこれまでと同様である。
本発明に係るサービス提供システムの一実施形態としてのプロトコル変換システムについて説明する。図16は本発明の一実施形態としてのプリントシステムの構成を示すブロック図である。
クライアント16100は、Microsoft社のWindows(登録商標)、Apple社のMac OS(登録商標)等の汎用オペレーティングシステム、およびその上で実行可能な汎用Webブラウザ、アプリケーションソフトなどがインストールされている。
本実施例で示したWindows(登録商標) OS 161の場合、eXtensible Markup Language (XML) / Simple Object Access Protocol (SOAP)を利用したUniversal Plug and Play(UPnP)プロトコル162を使用して、ネットワーク上のデバイスのディスカバリ、制御、ステータスの取得等を実現しており、UPnP対応デバイスから取得したHTMLで記述されたプレゼンテーションドキュメントをWebブラウザ163で表示し、該Webブラウザに組み込まれたスクリプト等を利用することで、例えばアプリケーションソフトであるワードプロセッサ4で作成したドキュメントを、プレゼンテーションドキュメントを送信したUPnPプロトコル対応プリンタに対して、プリント属性情報と共に送信する。
一方、ネットワーク対応デバイス、本実施の形態ではネットワーク対応型プリンタ16200は、通信機能としてTCP/UDP/IPプロトコルスタック165を備え、そのプロトコルスタック上にSimple Network Management Protocol(SNMP)処理部166を備え、また、プロトコルスタック5上にはプリントプロトコル処理部167が実装され、クライアントから発行されるプリント要求を解析し、プリンタコントローラ168に対し、そのプリント要求を送出する機能を備える。
該プリンタはUPnPプロトコル処理部を備えておらず、該プリンタ単独では、クライアント16100から発行されるUPnPプロトコルを使用したデバイス検索要求、およびUPnP印刷ジョブ要求に対し応じることはできない。
プロキシサーバ16300も同様に、通信機能としてTCP/UDP/IPプロトコルスタック169を備え、そのプロトコルスタック上にHTTP10を備え、HTTPリクエストの解析、およびレスポンス処理を行う。
プロトコルスタック169上にはSimple Network Management Protocol(SNMP)1611処理部を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ200の検索、および情報の取得を該プロトコルにより実施する。
プロトコルスタック9上にはPrint Protocol処理部1612を備え、UPnPプロトコル処理部を備えていないネットワーク対応型プリンタ16200に対し、プリントジョブの発行を該Print Protocol部1612で実行する。
HTTP1610の上位層にはSimple Object Access Protocol(SOAP)処理部1613を備え、UPnPプロトコル処理部1614、およびプロトコル変換処理部1616がそれぞれ、該処理部1613を介してそれぞれ、クライアント16200、およびプロキシサーバが複数ネットワーク上に存在する場合、eXtensible Markup Language(XML)で記述されたデータの双方向通信を実現する。
プロトコル変換処理部1616は、SNMP処理部1611、SOAP処理部1613、UPnP処理部1614、プリントプロトコル処理部1612、記録装置制御部1615、XML生成部1617、HTML生成部1618およびファイル変換処理部1619の上位層にあり、SNMP処理部1611を介して取得したネットワーク対応型プリンタの情報を、UPnPプロトコルで使用される各種XMLドキュメントをXML生成部1617で作成し、UPnPプロトコルで使用されるプレゼンテーションドキュメントをHTML生成部18で生成した上で、記録装置制御部1615が制御する記録装置に記録、あるいはUPnPプロトコルから要求があった際に該当する管理テーブルに記録されたXMLドキュメント、プレゼンテーションドキュメントを記録制御装置部15を介して読み出し、UPnPプロトコル処理部14に送信するなどの処理を実行する。
またプロトコル変換処理部1616は、UPnPプロトコルによるプリントジョブのリクエストを受信した場合、SOAP処理部1614を介して、ジョブコマンド、ジョブ属性情報を取得し、その内容を出力指定されたプリンタがサポートするプリントプロトコルに変換したのち、プリントプロトコル制御部1612を介して、指定プリンタにジョブを送信する。この際にジョブ属性を解析し、受信したジョブデータが指定プリンタでサポートされていないデータタイプである場合、ファイル変換処理部1619で、指定プリンタがサポートしている印字可能データに変換した後にプリントプロトコル制御部1612を介して、指定プリンタにジョブを送信する。
また、プロトコル変換処理部1616は、プロキシサーバー16300が管理する管理テーブルを記録装置制御部1615を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。
また同様に、プロトコル変換処理部1616は、ネットワーク上に存在する他のプロキシサーバーが管理する管理テーブルを取得した場合、記録装置制御部1615を介して、該制御部が制御する記録装置に対し書き込み、読み出し処理を行なう。
以下に、これら本システムの制御の流れを図17のフローチャートに従い説明する。
プロキシサーバー300のプロトコル変換処理部1616は起動後、記録装置制御部15を介し、プロトコル変換処理を実施しているネットワークデバイス情報を記録する管理テーブルの内容をクリアするstep17−1。該管理テーブルの詳細に関しては以下のプロセスで説明する。
次にネットワークに参加しサービスを開始するにあたり、同ネットワーク上に存在するネットワーク対応プリンタを検索するためstep17−2に進みプリンタ情報の取得を開始する。
フローチャート図18はプリンタ情報取得の制御の流れを示したものである。
プロキシサーバー16300 プロトコル変換処理部1616はSNMP制御モジュール部1611より、ネットワーク上に存在するプリンタ情報を取得するため、以下のMIBオブジェクトに対してSNMP Getリクエストをブロードキャストする(step18−1)。STEP18−1−2で、レスポンスを受信したかどうかを判定する、STEP18−1−2でレスポンスを受信した場合には、STEP18−2に進む。STEP18−1−2でレスポンスを受信していない場合には、STEP18−8へ進む。
PrinterMakeAndModel:プリンタベンダ・製品名称
PrinterName:プリンタ名
PrinterLocation:プリンタ設置場所
IPAddress:プリンタ IP アドレス
MACAddress:プリンタMAC アドレス
SupportedPDL:サポートするページ記述言語
SupportedPrintProtocol:サポートするプリントプロトコル
STEP18−1において、プロキシサーバで発行された該SNMP Getリクエストを受信したネットワーク対応プリンタ16200は、SNMP処理部166において、各オブジェクトに該当する情報を生成した後に、SNMPレスポンスとしてプロキシサーバ16300に対し、ユニキャストで応答を送信する。
S18−1−2で各ネットワーク対応プリンタからレスポンスを受け取ったプロキシサーバー16300のプロトコル変換処理部1616は、各レスポンス内容を記録装置に既に登録済みの管理テーブルの内容と比較する(step18−2)。続いて、プロトコル変換処理部1616は、既にプロトコル変換を実施しているプリンタか否かを判断する(step18−3)。STEP18−3で、プロトコル変換処理しているプリンタであると判断した場合は、処理を終了する。
STEP18−3で、プロトコル変換を実施していないプリンタ、即ち、新規に発見されたプリンタと判断した場合、プロキシサーバー16300のプロトコル変換処理部1616は、SNMP GETリクエストのレスポンスとして取得した情報を管理テーブルに追加更新し、記録装置制御部1615を介して記録装置に記録する(step18−4)。
次に、新規に管理テーブルに登録されたプリンタに関して、取得した情報を元にUniversal Plug and Play Device Architecture v1.0において規定されるDevice Description DocumentをXML生成部17を介して生成し、生成した該ドキュメントを、記録装置制御部1615を介して記録装置に記録しstep18−5、さらにHTML生成部1618においてHTMLで記述されたプレゼンテーションドキュメントを生成する。該プレゼンテーション作成に必要なアイコン、イメージデータ類は記録装置に記録されており、HTML生成部1618は記録制御装置1615を介して必要な情報を取得する。HTML生成部1618により生成されたプレゼンテーションドキュメントは、記録装置制御部15を介して記録装置に記録するstep18−6。
Step18−7においてUniversal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部1614より、管理テーブルに記録された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを実行中であることを通知する。
プロキシサーバー16300より発行されたSNMP Get要求に対し、何のレスポンスが得られなかった場合はstep18−8に進む、STEP18−8では、既に自身の管理テーブルに登録ずみのプリンタがあるかどうかを調べる。S18−8−1では、既に登録ずみのプリンタであるかどうかを判断する。S18−1−1で、登録済みのプリンタがあると判断した場合、プロキシサーバー16300のプロトコル変換処理部1616は管理テーブルより該プリンタ情報の削除更新を行う(STEP18−9)。次に、Device Description Documentの削除(step18−10)、およびプレゼンテーションドキュメントの削除(step18−11)を実行する。
プロキシサーバー16300のプロトコル変換処理部1616は、記録装置制御部1615を介して、更新された管理テーブルを記録装置に記録した後、プロトコル変換処理部は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、UPnPプロトコル処理部14より、管理テーブルから削除された全てのプリンタに関するNotifyパケットを発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知する step18−12。
なお、本発明において管理テーブルは図26に示すように、先に記述した取得したSNMPオブジェクトの内容をXMLで記述したテキストファイルの形式で管理される。
以上図18で説明した処理が、図17のプリンタ情報取得処理である。図17に話を戻す。プリンタ情報所得のプロセスを完了すると、プロキシサーバー16300のプロトコル変換処理部1616は、プロトコル変換処理 step17−3を開始する。
以下、図20を用いて詳細処理を示す。フローチャート図20はプロトコル変換処理の流れを示したものである。プロキシサーバー16300のプロトコル変換処理部1616は、クライアントから発行されるUniversal Plug and Play Device Architecture v1.0において規定されるデバイス検索プロトコル Simple Service Discovery Protocol(SSDP)パケットの受信通知をUPnPプロトコル処理部1614から受けたどうかを判定する(step20−1)。S20−1で受信したと判定した場合、S20−2へ進む。受信していないと判断した場合、S20−3に進む。
S20−2では、プロキシサーバー16300 プロトコル変換処理部1616が管理する管理テーブルを、記録装置制御部1615を介して検索し、SSDPパケットの検索条件に該当するプリンタのDevice Description Documentが記録されているURLをSSDPレスポンスとしてUPnPプロトコル処理部1614を介して返送する(step20−2)。
また、該URLを取得したクライアントデバイスから、HTTP GETリクエストによりDevice Description Documentの取得要求をUPnPプロトコル処理部1614から受けたかどうかを判定する(step20−3)。S20−3で、取得要求を受けたと判断した場合、プロキシサーバー16300 プロトコル変換処理部1616が管理する管理テーブルを、記録装置制御部1615を介して検索し、指定URLに記録されたDevice Description Documentを読み出した後、UPnPプロトコル処理部1614を介して返送する(step20−4)。そして、S20−5へ進む。S20−3で、該取得要求を受信していないと判断した場合、S20−5へ進む。
該Device Description Documentには、ステップにおいて作成されたプレゼンテーションドキュメントの格納先がURLで記録されており、クライアントデバイスから、HTTP GETリクエストによりプレゼンテーションドキュメントの取得要求をUPnPプロトコル処理部1614から受けたかどうかを判断する(step20−5)。プレゼンテーションドキュメントの取得要求を受信したと判断した場合、S20−6へ進む。S20−6では、プロキシサーバー16300 プロトコル変換処理部1616が管理する管理テーブルを記録装置制御部1615を介して検索し、指定URLに記録されたプレゼンテーションドキュメントを読み出した後、UPnPプロトコル処理部1614を介して返送する。プレゼンテーションドキュメントの取得要求を受信していないと判断した場合は、そのままS20−7に進む。
本実施例で示したクライアント16100の場合、オペレーティングシステムがUPnPプロトコル対応しており、step20−6によりプロキシサーバー300からプレゼンテーションドキュメントの受信が完了すると、Webブラウザを自動的に起動し受信したプレゼンテーションドキュメントを表示する。
図21はクライアント100のディスプレイ上に表示されたプレゼンテーション内容であり、この表示によりクライアント100を使用しているユーザーは、該表示内容を介してネットワーク対応プリンタ200に関するデバイス名称、モデル名、IPアドレス、オプションの装着状態等の情報を視覚的に確認できる。
ここで、該表示における“Print Document”をクリックすると、図22に示すページに切り替わり、ここでネットワーク対応プリンタ200に対し、出力すべきファイルの指定:Print File、および、出力部数:Copy、出力用紙サイズ:Media Size、ページレイアウト:N−Up、両面・片面印刷指定:Two−sided Printing、印字品位:Print Quality、オリエンテーション:Orientation等のジョブ属性の指定が可能となる。これら属性情報の設定が完了した後に、Printボタンを押下すると、プレゼンテーションドキュメントに記述されたスクリプトがUniversal Plug and Play Device Architecture v1.0において規定されるスキーマに従いSOAPエンベロープを生成した後、プロキシ300に対しHTTP POSTリクエストを発行する。
プロキシサーバー16300のプロトコル変換処理部16は、UPnPプロトコル処理部1614を介して該リクエストを受信した場合step20−7、プロトコル変換処理部1616はSOAP処理部において該コマンド、およびジョブ属性を解析し、次に記録装置制御部1615を介して出力指定されたプリンタに該当する管理テーブル情報のうち、サポートするプリントプロトコル、およびIPアドレスを取得し、受信したコマンド、属性情報を該プリントプロトコルに変換したのち(step20−8)、出力指定されたプリンタのIPアドレスに対し変換後の情報を送信する(step20−9)。
プリントジョブを発行したクライアントは引き続きUniversal Plug and Play Device Architecture v1.0において規定される制御手段に基づきジョブデータをHTTP POSTコマンドを使用してプロキシサーバー16300に対し送信する。該ジョブデータを受信したプロキシサーバー16300のプロトコル変換処理部1616は、受信データのデータタイプを解析し、該データタイプがstep18−4で取得した管理情報に記録されるSupportedPDL:サポートするページ記述言語と一致している場合、先のステップ同様に受信したジョブデータを指定されたプリンタがサポートするプリントプロトコルに変換しstep20−10、先に取得したプリンタIPアドレスに対しジョブデータを送信する step20−11。
S20−9−1で、UPnPジョブデータを受信したかどうかを判定する。S20―9−1でUPNPジョブデータを受信したと判定した場合、S20−9−2へ進む。S20−9−2では、受信データのデータタイプを解析した結果、step18−4の処理で取得した管理情報に記録されるSupportedPDL:サポートするページ記述言語と一致ないと判定した場合、プロトコル変換処理部1616は受信したデータをファイル変換処理部1619において、step20−12で、取得したプリンタPDLデータに変換した後、指定されたプリンタがサポートするプリントプロトコルに変換する(step20−10)。続いて、先に取得したプリンタIPアドレスに対し変換後のジョブデータを送信する(step20−11)そして、処理を終了する。
S20−9−2で、受信データのデータタイプを解析した結果、step18−4の処理で取得した管理情報に記録されるSupportedPDL:サポートするページ記述言語と一致すると判定した場合、S20−10に進んで同様にS20−11の処理へ抜け、処理を終了する。
S20−9−1で、ジョブデータが、受信されず、S20−11−1で規定時間経過したと判断された場合、本実施例においては30秒以内にクライアントからジョブデータの受信が開始しなかった場合、ジョブは破棄される(step20−13)。
ジョブコマンド、ジョブ属性、およびジョブデータを受信したプリンタは、プリント制御部においてジョブコマンド、ジョブ属性を解析した後、プリンタコントローラに対しプリントジョブを送信しプリントを実行する。
本発明におけるプロキシサーバー16300は以上のプロセスstep17−2からstep17−3を繰り返し実行することで、定期的にネットワークプリンタの稼動状況を更新し、その更新情報に従いプロトコル変換処理を実行する。
step17−4において、パワーオフによりプロキシサーバー300のプロトコル変換処理部16がプロトコル変換処理を停止するかどうかを判定する。S17−4で、停止すると判定した場合、プロトコル変換処理部16は、Universal Plug and Play Device Architecture v1.0において規定されるNotification手段に基づき、記録装置制御部15を介して全ての管理テーブルを読み出し、管理テーブルに記録された全てのプリンタに関するNotifyパケットをUPnPプロトコル処理部14を介して発行し、これらプリンタがネットワーク上でのサービスを停止したことを通知する step17−5。
S17−4で停止しないと判定した場合は、プリンタ情報取得処理(S17−2)へ戻る。
本実施例ではプリンタをネットワークデバイスとした実施の形態を示しているが、ネットワーク対応型デバイスとしてはハードディスク等のストレージデバイス、複写機、および複合機能を備えるデバイスであって、通信機能を介してプロキシサーバーと属性情報の交換、ジョブの送受信が可能な装置であればいずれの場合においても実現可能である。
また、この場合プロキシサーバーとネットワーク対応型デバイス間の通信プロトコルは標準化された、あるいは汎用プロトコルであっても、ベンダ固有のプロトコルであっても同様に実現可能である。
また本実施例においてはネットワーク対応型デバイスを例とした実施の形態を示しているが、デバイスとプロキシサーバー間は、USB、IEEE1394、パラレルなどのローカル接続による通信によっても実現可能である。
また本実施例では、独立した形態でプロキシサーバーがネットワーク上に存在していたが、該プロキシサーバー機能は、ネットワーク対応型デバイスの内部に物理的に、あるいは論理的に組み込まれている場合においても実現可能である。また同様にネットワーククライアントデバイスの内部に物理的に、あるいは論理的に組み込まれている場合においても実現可能である。
本実施例において、プロキシが提供するプロトコル変換の組み合わせとしてMicrosoftが主体となって策定しているUniversal Plug and Playと、ネットワーク対応型プリンタが実装するSNMP、およびプリントプロトコルとの例を示しているが、Appleの提案するRendezvous、JBMIAが提案するBMLinkSなどのプロトコルに対しても実現可能であり、また、これらデバイスの検索、デバイスの制御が統合化されたプロトコルのみならず、Service Location Protocol(SLP)、Multicast DNS Service Discovery等のデバイスが提供するサービスを検索するためのプロトコルへの利用、およびWeb ServiceのようにXML/SOAPをベースとしたRemote Procedure Call(RPC)形式によるデバイスの制御を、従来の制御プロトコルに変換するために利用することも可能である。
本実施例においてプロキシサーバー間の情報通知プロトコルとしてHTTP/TCP/UDP/IPプロトコルを使用した例を示しているが、本発明はトランスポート手段に依存するものではなく、双方向の通信が可能であれば他の汎用プロトコル、あるいは独自プロトコルを使用した場合でも実現可能である。
(他の実施形態)
本実施形態における各図に示す処理が、外部からインストールされるプログラムによって、クライアント、プロキシサーバ、プリンタが備えるCPU(中央制御装置)により、それぞれ遂行される。そして、その場合、CD−ROMやフラッシュメモリやFD等の記憶媒体により、あるいはネットワークを介して外部の記憶媒体から、プログラムを含む情報群をホストコンピュータに供給される場合でも本発明は適用されるものである。
以上のように、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、又は、外部サーバ(図示省略)からダウンロードすることで、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が本発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、たとえば、フロッピィーディスク、ハードディスク、光ディスク、光磁気ディスク、DVD、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM、EEPROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
(他の発明の実施態様)
(実施態様1)
ネットワークデバイスの変換に対応可能なプロトコル管理装置。
(実施態様2)
プロトコル変換処理装置であって、通信回線上に存在し稼動状態にある情報処理装置に対し、プロトコル変換処理装置が変換処理を実行する被変換通信プロトコルを該情報処理装置が利用しているか否か判断する手段と、プロトコル変換処理装置が変換処理を実行する通信プロトコルを該情報処理装置が使用しているか否かを判断する手段を備え、該情報処理装置が被変換通信プロトコルおよび通信プロトコルの双方を使用している場合は、プロトコル変換処理が不要であると判断し、プロトコル変換処理を実行しない機能を有するプロトコル変換処理装置。
(実施態様3)
実施態様1のプロトコル変換処理装置であって、通信回線上に存在し稼動状態にある情報処理装置に対し、プロトコル変換処理装置が変換処理を実行する被変換通信プロトコルを該情報処理装置が利用しているか否か判断する手段と、プロトコル変換処理装置が変換処理を実行する通信プロトコルを該情報処理装置が使用しているか否かを判断する手段を備え、該情報処理装置が被変換通信プロトコルを使用している場合は、プロトコル変換処理が必要であると判断し、プロトコル変換処理を実行する機能を有するプロトコル変換処理装置。
(実施態様4)
実施態様1のプロトコル変換処理装置であって、被変換通信プロトコルで規定されるディスカバリリクエストを発行する手段と、該発行に対し応答した情報処理装置に付加された識別情報を取得し記憶する手段と、変換通信プロトコルで規定されるディスカバリリクエストを発行する手段、該発行に対し応答した情報処理装置に付加された識別情報を取得、記憶する手段とを備え、双方の記憶手段に記憶された内容を比較する手段を備え、双方の記憶手段に同一の識別情報を発見した場合、該識別情報が付加された情報処理装置に対してはプロトコル変換処理が不要であると判断し、プロトコル変換処理を実行しない機能を有するプロトコル変換処理装置。
(実施態様5)
実施態様1のプロトコル変換処理装置であって、被変換通信プロトコルで規定されるディスカバリリクエストを発行する手段と、該発行に対し応答した情報処理装置に付加された識別情報を取得し記憶する手段と、変換通信プロトコルで規定されるディスカバリリクエストを発行する手段、該発行に対し応答した情報処理装置に付加された識別情報を取得、記憶する手段とを備え、双方の記憶手段に記憶された内容を比較する手段を備え、前者の記憶手段には記憶されながら、後者の記憶手段には記憶されていない識別情報を発見した場合、該識別情報が付加された情報処理装置に対してはプロトコル変換処理が必要であると判断し、プロトコル変換処理を実行する機能を有するプロトコル変換処理装置。
(実施態様6)
互換性の無い通信プロトコルを使用する情報処理装置が複数稼動する通信回線において、情報処理装置に代行して通信プロトコルを他の通信プロトコルに変換することで、異なる通信プロトコルを使用する情報処理装置間の通信を可能ならしめる機能を有するプロトコル変換処理装置であって、
通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置を発見し、発見したプロトコル変換処理装置から、該変換処理装置のステータス情報を取得し、該ステータス情報に応じて自動的にプロトコル変換処理を開始、あるいは待機する機能を有するプロトコル変換処理装置。
(実施態様7)
実施態様1のプロトコル変換処理装置であって、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置から通知されるステータス情報を取得し、該ステータス情報に応じて自動的にプロトコル変換処理を開始、あるいは待機する機能を有するプロトコル変換処理装置。
(実施態様8)
実施態様1のプロトコル変換装置であって、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置を発見し、発見したプロトコル変換処理装置から該変換処理装置の管理情報を取得し、該管理情報に記録された情報処理装置に対しては、プロトコル変換処理を実施しない機能を有するプロトコル変換処理装置。
(実施態様9)
実施態様1のプロトコル変換処理装置であって、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置から通知される装置情報を取得し、該装置情報に記載されたアドレスから管理情報を取得する手段を有し、該管理情報に記録された情報処理装置に対しては、プロトコル変換処理を実施しない機能を有するプロトコル変換処理装置。
(実施態様10)
実施態様1のプロトコル変換処理装置であって、プロトコル変換処理の実行状態を管理する手段を有し、通信回線上に存在する他のプロトコル変換装置から発行された要求に応じて実行状態を通知する機能を有するプロトコル変換装置。
(実施態様11)
実施態様1のプロトコル変換処理装置であって、プロトコル変換処理の実行状態を管理する手段を有し、該実行状態が変化した場合、通信回線上に存在する他のプロトコル変換装置に対し実行状態を通知する機能を有するプロトコル変換装置。
(実施態様12)
実施態様1のプロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の情報を管理情報として記録する手段を有するプロトコル変換装置。
(実施態様13)
実施態様1のプロトコル変換装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n<mが成立する場合と、n=mが成立する場合とで異なるステータスとなる機能を有するプロトコル変換処理装置。
(実施態様14)
実施態様1のプロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n=mが成立した時点において、通信回線上に存在する他のプロトコル変換装置に対しステータスが変化したことを知する機能を有するプロトコル変換装置。
(実施態様15)
プロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n=mが成立した時点において、管理情報に登録された情報処理装置に対してのみプロトコル変換処理を実施する機能を有するプロトコル変換処理装置。
(実施態様16)
プロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n=mが成立した場合、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置からの管理情報取得要求に応じる機能を有するプロトコル変換処理装置。
(実施態様17)
プロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n=mが成立した場合、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置からの管理情報取得要求のうち、最初に受信した取得要求にのみ応じる機能と、それ以降受信した管理情報取得要求に対しては応じない機能を有するプロトコル変換処理装置。
(実施態様18)
実施態様8のプロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n<mが成立する場合、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置からのステータス取得要求に応じる機能を有するプロトコル変換処理装置。
(実施態様19)
プロトコル変換処理装置であって、代行してプロトコル変換を実施している情報処理装置の総数nと、代行してプロトコル変換することが可能な総情報処理装置数mとを比較する機能を有し、n<mが成立する場合、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置からのステータス取得要求に応じる機能を有するプロトコル変換処理装置。
(実施態様20)
プロトコル変換処理装置であって、通信回線上に存在する同じプロトコル変換機能を有する他のプロトコル変換処理装置から取得したステータスがn<mであるプロトコル変換処理装置を発見した場合、プロトコル変換処理を待機する機能を有するプロトコル変換処理装置。
(実施態様21)
プロトコル変換処理装置であって、該プロトコル変換処理装置によって生成されるスクリプトは、通信回線上に存在し稼動状態にある情報処理装置が保持するデータを選択する制御手段と、該データを加工するための属性情報を指示する制御手段、および該データおよびデータを加工するための属性情報をプロトコル変換処理装置に対し送信する機能を有し、該スクリプトは請求項2のプロトコル変換処理装置によって生成されるハイパーテキストにより、その起動手順が記述されることを特徴とするプロトコル変換処理装置。
(実施態様22)
プロトコル変換処理装置であって、該プロトコル変換処理装置によって生成されるハイパーテキストにプロファイル情報を記述した情報処理装置が処理可能なデータ情報を取得する手段を有し、該情報をスクリプトを実行した情報処理装置から送信されたデータと比較する手段を備え、処理可能なデータと判断した場合、スクリプトを実行した情報処理装置から送信されたデータを、ハイパーテキストにプロファイル情報を記述した情報処理装置に対し送信する機能を備え、
処理不能なデータと判断した場合、スクリプトを実行した情報処理装置から送信されたデータを、該プロトコル変換処理装置で処理可能なデータに変換した後に、ハイパーテキストにプロファイル情報を記述した情報処理装置に対し送信する機能を備えたプロトコル変換処理装置。
(実施態様23)
プロトコル変換処理装置であって、該プロトコル変換処理装置によって生成されるスクリプトは汎用Webブラウザで実行可能なスクリプトであり、該プロトコル変換処理装置によって生成されるハイパーテキストは汎用Webブラウザで表示可能なハイパーテキストであることを特徴とするプロトコル変換処理装置。
以上説明したように、本発明によればプロトコル変換処理装置が、通信回線上に存在し稼動状態にある情報処理装置に対し、該情報処理装置が使用する通信プロトコルを他の通信プロトコルへの変換処理が必要であるか否かを判断する手段を備え、必要であると判断した場合には該情報処理装置に対し、プロトコル変換処理を実行する機能を備えることで、プロトコル変換処理装置が提供する通信プロトコルに対応している情報処理装置に対してプロトコル変換処理を実施することを回避することが可能となる。
また、これら処理は本発明を適用したプロトコル変換処理装置が自動的に処理するものであり、ネットワーク管理者を含むネットワーク上の情報処理装置を使用するユーザーが特別な設定、制御等関与することなく、プロトコル変換処理装置が備える変換能力を最大限利用することが可能となる。