(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024039394
(43)【公開日】2024-03-22
(54)【発明の名称】情報処理装置、仮想サービス提供プログラムおよび通信方法
(51)【国際特許分類】
H04L 67/563 20220101AFI20240314BHJP
H04L 61/09 20220101ALI20240314BHJP
H04L 67/2885 20220101ALI20240314BHJP
H04L 67/564 20220101ALI20240314BHJP
H04L 67/562 20220101ALI20240314BHJP
【FI】
H04L67/563
H04L61/09
H04L67/2885
H04L67/564
H04L67/562
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022143917
(22)【出願日】2022-09-09
(71)【出願人】
【識別番号】521314127
【氏名又は名称】帝都 久利寿
(71)【出願人】
【識別番号】514318600
【氏名又は名称】コネクトフリー株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】帝都 久利寿
(57)【要約】
【課題】汎用性の高い方法で各種サービスを提供する技術を提供する。
【解決手段】情報処理装置は、少なくともトランスポート層を担当する通信プログラムと、通信プログラムから下位層に向けて出力されたデータを含むパケットを参照可能な仮想サービス提供プログラムとを含む。仮想サービス提供プログラムは、パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致する場合には、パケットに応じた仮想サービスを実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
少なくともトランスポート層を担当する通信プログラムと、
前記通信プログラムから下位層に向けて出力されたデータを含むパケットを参照可能な仮想サービス提供プログラムとを備え、
前記仮想サービス提供プログラムは、前記パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致する場合には、前記パケットに応じた仮想サービスを実行する、情報処理装置。
【請求項2】
前記仮想サービス提供プログラムは、仮想サービスの実行結果の少なくとも一部を情報として応答する、請求項1に記載の情報処理装置。
【請求項3】
前記仮想サービスは、前記情報処理装置の外部にデータを送信する処理を含む、請求項1に記載の情報処理装置。
【請求項4】
前記仮想サービス提供プログラムは、前記特定のネットワークアドレスを複数有している、請求項1に記載の情報処理装置。
【請求項5】
前記仮想サービス提供プログラムは、仮想サービスの実行の要求を受け付けるためのインターフェイスを複数有している、請求項1~3のいずれか1項に記載の情報処理装置。
【請求項6】
前記仮想サービスは、ユーザとの対話を行う処理を含む、請求項1~3のいずれか1項に記載の情報処理装置。
【請求項7】
仮想サービス提供プログラムであって、
少なくともトランスポート層を担当する通信プログラムから下位層に向けて出力されたデータを含むパケットを参照できるように構成されており、
前記仮想サービス提供プログラムはコンピュータに、
前記パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致するか否かを判断するステップと、
前記パケットの宛先アドレスが前記特定のネットワークアドレスと一致する場合には、前記パケットに応じた仮想サービスを実行するステップとを実行させる、仮想サービス提供プログラム。
【請求項8】
コンピュータが実行する通信方法であって、
少なくともトランスポート層を担当する通信プログラムから下位層に向けて出力されたデータを含むパケットを参照するステップと、
前記パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致するか否かを判断するステップと、
前記パケットの宛先アドレスが前記特定のネットワークアドレスと一致する場合には、前記パケットに応じた仮想サービスを実行するステップとを備える、通信方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理装置、仮想サービス提供プログラムおよび通信方法に関する。
【背景技術】
【0002】
一般的に、コンピュータにおいては、複数のプロセスが実行される。このようなプロセス間でのデータのやり取りは、例えば、プロセス間通信(IPC:InterProcess Communication)を用いて実現される。
【0003】
特開2006-186610号公報(特許文献1)は、通信ボードがプロセス間通信により別の通信ボードを監視する構成を開示する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
セキュリティの観点から、プロセス間通信による問合せが許可されない環境も存在する。本開示は、汎用性の高い方法で各種サービスを提供する技術を提供する。
【課題を解決するための手段】
【0006】
本開示のある実施の形態に従う情報処理装置は、少なくともトランスポート層を担当する通信プログラムと、通信プログラムから下位層に向けて出力されたデータを含むパケットを参照可能な仮想サービス提供プログラムとを含む。仮想サービス提供プログラムは、パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致する場合には、パケットに応じた仮想サービスを実行する。
【0007】
仮想サービス提供プログラムは、仮想サービスの実行結果の少なくとも一部を情報として応答するようにしてもよい。
【0008】
仮想サービスは、情報処理装置の外部にデータを送信する処理を含んでいてもよい。
仮想サービス提供プログラムは、特定のネットワークアドレスを複数有していてもよい。
【0009】
仮想サービス提供プログラムは、仮想サービスの実行の要求を受け付けるためのインターフェイスを複数有していてもよい。
【0010】
仮想サービスは、ユーザとの対話を行う処理を含んでいてもよい。
本開示の別の実施の形態に従う仮想サービス提供プログラムは、少なくともトランスポート層を担当する通信プログラムから下位層に向けて出力されたデータを含むパケットを参照できるように構成されている。仮想サービス提供プログラムはコンピュータに、パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致するか否かを判断するステップと、パケットの宛先アドレスが特定のネットワークアドレスと一致する場合には、パケットに応じた仮想サービスを実行するステップとを実行させる。
【0011】
本開示のさらに別の実施の形態に従うコンピュータが実行する通信方法は、少なくともトランスポート層を担当する通信プログラムから下位層に向けて出力されたデータを含むパケットを参照するステップと、パケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致するか否かを判断するステップと、パケットの宛先アドレスが特定のネットワークアドレスと一致する場合には、パケットに応じた仮想サービスを実行するステップとを含む。
【発明の効果】
【0012】
本開示によれば、汎用性の高い方法で各種サービスを提供する技術を提供できる。
【図面の簡単な説明】
【0013】
【
図1】本実施の形態に従うデバイスの機能構成例を示す模式図である。
【
図2】本実施の形態に従うデバイスの仮想サービス提供プログラムによる処理の一例を示すフローチャートである。
【
図3】本実施の形態に従うデバイスのハードウェア構成例を示す模式図である。
【
図4】本実施の形態に従うデバイスの仮想サービス提供プログラムの処理例を示す模式図である。
【
図5】本実施の形態に従うデバイスの仮想サービス提供プログラムの別の処理例を示す模式図である。
【
図6】本実施の形態に従うデバイスの仮想サービス提供プログラムのさらに別の処理例を示す模式図である。
【
図7】本実施の形態に従うデバイスの仮想サービス提供プログラムの仮想デバイス設定の一例を示す模式図である。
【
図8】本実施の形態に従うデバイスの仮想サービス提供プログラムのさらに別の処理例を示す模式図である。
【
図9】本実施の形態に従うデバイスの別の機能構成例を示す模式図である。
【発明を実施するための形態】
【0014】
本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0015】
<A.用語>
本明細書において、「デバイス」との用語は、通信処理が可能な任意の情報処理装置を包含する。デバイスは、例えば、(据置型および携帯型)パーソナルコンピュータ、スマートフォン、タブレット、スマートフォン、ユーザの身体(例えば、腕や頭など)に装着されるウェアラブルデバイス(例えば、スマートウォッチやARグラスなど)、スマート家電、コネクティッド自動車、工場などに設置された制御機器、IoTデバイスなどを含む。
【0016】
本明細書において、「ネットワークアドレス」は、ネットワークに存在するデバイスを特定するための識別情報を意味し、一般的に用いられているIP(Internet Protocol)アドレス(IPv4およびIPv6)に限られず、独自のアドレス体系(任意の長さのアドレス長を採用できる)であってもよい。
【0017】
本明細書において、「プログラム」は、コンピュータ読取可能なコード群(メディアに格納されている)を意味するとともに、プロセッサで実行されている状態をも意味する。すなわち、「プログラム」という用語は、メディアに格納されているコードに加えて、メモリ上に展開されたデータ、および、プロセッサで実行されることで実現される機能および処理を含み得る。但し、「プログラム」がプロセッサで実行されることで実現される機能および処理の一部または全部は、代替として、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)といったハードワイヤード回路を用いて実現されてもよい。
【0018】
本明細書において、「仮想サービス」は、デバイス内で実行される任意の処理を包含する。「仮想サービス」による処理結果(1次情報)の少なくとも一部、あるいは、処理結果に対して何らかの加工を行った結果(2次情報)の少なくとも一部は、送信元に応答されてもよい。
【0019】
<B.概要>
まず、本実施の形態に従うデバイス100の概要について説明する。
【0020】
図1は、本実施の形態に従うデバイス100の機能構成例を示す模式図である。
図1には、デバイス100で実行されるアプリケーション(例えば、OSI(Open Systems Interconnection)参照モデルのアプリケーション層(第7層)に相当する。)などがデータを送受信する処理の要部を示す。
【0021】
図1を参照して、デバイス100は、仮想サービス提供プログラム130と、上位層通信プログラム140と、下位層通信プログラム150とを含む。上位層通信プログラム140および下位層通信プログラム150は、OS(Operating System)の一部に含まれていてもよい。
【0022】
上位層通信プログラム140は、少なくとも、OSI参照モデルのトランスポート層(第4層)を担当する。上位層通信プログラム140は、OSI参照モデルのネットワーク層(第3層)をさらに担当してもよい。
【0023】
一例として、上位層通信プログラム140は、ソケット通信を担当するプログラムであってもよい。この場合、上位層通信プログラム140は、トランスポート層として機能する、TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)などのセッション管理と、ネットワークアドレス(例えば、IPアドレス)に基づくパケットの送受信管理とを担当する。
【0024】
上位層通信プログラム140は、ソケット通信のインターフェイスとして実装されてもよい。
【0025】
下位層通信プログラム150は、OSI参照モデルのデータリンク層(第2層)を担当する。一例として、下位層通信プログラム150は、データリンクドライバとして実装されてもよい。下位層通信プログラム150は、イーサネット(登録商標)インターフェイスであってもよい。なお、下位層通信プログラム150は、図示しない物理層のハードウェアインターフェイスを制御する。
【0026】
上位層通信プログラム140から下位層に向けて出力されるデータは、ネットワーク層(第3層)により「パケット」になるため、以下の説明においては、「パケット」とも称す。すなわち、本明細書において、「パケット」は、上位層通信プログラム140から下位層に向けて出力されるデータを含む。但し、実装によっては、完全なパケットにはなっていない場合もあるが、このような場合であっても、本発明の技術的範囲に含まれ得る。また、「パケット」との用語は、1または複数のパケットを包含する。
【0027】
ハイパーバイザ上に提供される仮想環境においては、データリンク層および物理層が仮想化されていることもあり、このような場合には、データリンク層が存在しないこともある。そのため、本発明の技術的範囲は、下位層通信プログラム150が存在しない構成も含み得る。但し、このような仮想環境においても、内部的にパケットが生成されてもよい。
【0028】
以下の説明においては、上位層通信プログラム140がネットワーク層(第3層)も担当する構成例を主として説明するが、仮想サービス提供プログラム130または別の通信プログラムがネットワーク層(第3層)を担当してもよい。
【0029】
仮想サービス提供プログラム130は、少なくとも、上位層通信プログラム140から下位層に向けて(内部的に)出力されたデータを含むパケットを参照可能になっている。なお、下位層から上位層通信プログラム140に送信あるいは出力される受信データ(受信パケット)については、仮想サービス提供プログラム130が参照可能であってもよいし、そうでなくてもよい。
【0030】
仮想サービス提供プログラム130は、上位層通信プログラム140から下位層通信プログラム150に転送されるパケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致する場合には、当該パケットに応じた仮想サービスを実行する。宛先アドレスが予め設定された特定のネットワークアドレスとは一致しないパケットは、そのまま下位層通信プログラム150に転送される。
【0031】
なお、
図1には、上位層通信プログラム140から下位層通信プログラム150に転送される経路上に仮想サービス提供プログラム130が配置されている構成例を示すが、上位層通信プログラム140から下位層通信プログラム150に転送される経路とは別に、上位層通信プログラム140から送信されるパケットのコピーが仮想サービス提供プログラム130に転送するための経路を用意してもよい。
【0032】
上位層通信プログラム140は、例えば、特定のネットワークアドレスを宛先アドレスとするパケットに応答して、当該パケットに対応する仮想サービスを実行する。上位層通信プログラム140は、必要に応じて、仮想サービスの実行結果(1次情報および/または2次情報)をパケットの送信元に応答する。
【0033】
一例として、上位層通信プログラム140は、アプリケーションなどの上位からの要求に応じて、パケット161を生成して送信する。パケット161の宛先アドレスが特定のネットワークアドレスであれば、仮想サービス提供プログラム130は、仮想サービスを実行し、応答パケット162に実行結果を含めて、上位層通信プログラム140に送信する。
【0034】
一方、上位層通信プログラム140が生成したパケット163の宛先アドレスが特定のネットワークアドレスに該当しなければ、パケット163は、そのまま下位層通信プログラム150に転送される。
【0035】
このように、上位層通信プログラム140は、転送されるパケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致する場合には、当該パケットに応じた仮想サービスを実行する。
【0036】
<C.処理概要>
次に、本実施の形態に従うデバイス100で実行される処理の概要について説明する。
【0037】
図2は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130による処理の一例を示すフローチャートである。
図2に示す各ステップは、例えば、デバイス100のプロセッサが仮想サービス提供プログラム130を実行することで実現されてもよい。
【0038】
図2を参照して、デバイス100は、上位からパケットを受信すると(ステップS100においてYES)、受信したパケットの宛先アドレスが予め設定された特定のネットワークアドレスと一致するか否かを判断する(ステップS102)。
【0039】
受信したパケットの宛先アドレスが特定のネットワークアドレスと一致すれば(ステップS102においてYES)、デバイス100は、パケットに応じた仮想サービスを実行する(ステップS104)。そして、処理は終了する。
【0040】
受信したパケットの宛先アドレスが特定のネットワークアドレスとは一致しなければ(ステップS102においてNO)、ステップS104の処理はスキップされる。
【0041】
<D.デバイス100のハードウェア構成例>
次に、本実施の形態に従うデバイス100のハードウェア構成例について説明する。
【0042】
図3は、本実施の形態に従うデバイス100のハードウェア構成例を示す模式図である。
図3には、一例として、パーソナルコンピュータであるデバイス100のハードウェア構成例を示す。
【0043】
図3を参照して、デバイス100は、ハードウェア構成として、1または複数のプロセッサ102と、メモリ104と、ストレージ106と、ディスプレイ108と、入力部110と、通信部112とを含む。
【0044】
プロセッサ102は、コンピュータ可読命令(computer-readable instructions)を順次読出して実行する演算回路である。プロセッサ102は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などで構成される。デバイス100は、複数のプロセッサ102を有していてもよいし、単一のプロセッサ102が複数のコアを有していてもよい。
【0045】
プロセッサ102は、狭義のプロセッサだけではなく、処理を実現するための回路が予め形成されているASIC、および、コンフィグレーションにより処理を実現するための構成が実現されているFPGAといったハードワイヤード回路を含み得る。さらに、本明細書において、プロセッサ102は、様々な処理要素を集積したSoC(System on Chip)も含み得る。そのため、プロセッサ102は、処理回路(processing circuitry)と言い換えることもできる。
【0046】
メモリ104は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置である。ストレージ106は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などの不揮発性記憶装置である。
【0047】
ストレージ106には、各種プログラムおよび各種データが格納されている。プロセッサ102は、ストレージ106に格納された各種プログラムのうち、指定されたプログラムをメモリ104上に展開して順次実行することで、後述するような各種処理を実現する。
【0048】
一例として、ストレージ106には、OS120と、1または複数のアプリケーション122と、仮想サービス提供プログラム130とが格納されている。OS120は、デバイス100で各種処理を実行するための環境を提供するプログラムである。アプリケーション122は、目的に応じて任意に作成されるプログラムであり、例えば、ウェブブラウザを提供するアプリケーションを含む。仮想サービス提供プログラム130は、後述するような各種処理を実現するためのプログラムである。
【0049】
ディスプレイ108は、プロセッサ102による処理結果などを外部へ提示する。ディスプレイ108は、例えば、LCD(Liquid Crystal Display)や有機EL(Electro-Luminescence)ディスプレイなどであってもよい。ディスプレイ108は、ユーザの頭部に装着されるヘッドマウントディスプレイであってもよいし、画像をスクリーン上に投影するプロジェクターであってもよい。ディスプレイ108は、デバイス100の筐体のいずれかの位置に配置されたインジケータであってもよい。
【0050】
入力部110は、デバイス100に対するユーザ操作などを受け付ける。入力部110は、例えば、キーボード、マウス、ディスプレイ108上に配置されたタッチパネル、デバイス100の筐体のいずれかの位置に配置されたスイッチなどであってもよい。
【0051】
通信部112は、他のデバイス100と通信を行うハードウェアを含む。通信部112は、デバイス100をネットワークに接続するためのネットワークインターフェイスである。例えば、通信部112は、イーサネット(登録商標)ポート、USB(Universal Serial Bus)ポート、IEEE1394などのシリアルポート、レガシーなパラレルポートといった有線接続端子を含む。あるいは、通信部112は、デバイス、ルータ、移動体基地局などと無線通信するための処理回路およびアンテナなどを含んでもよい。通信部112が対応する無線通信は、例えば、Wi-Fi(登録商標)、Bluetooth(登録商標)、ZigBee(登録商標)、LPWA(Low Power Wide Area)、GSM(登録商標)、W-CDMA、CDMA200、LTE(Long Term Evolution)、第5世代移動通信システム(5G)のいずれであってもよい。
【0052】
デバイス100は、各種プログラム(コンピュータ可読命令)および/または各種データが格納された非一過性(non-transitory)のメディアから各種プログラムおよび/または各種データを読み出すためのコンポーネントをさらに有していてもよい。メディアは、例えば、DVD(Digital Versatile Disc)などの光学メディア、USBメモリなどの半導体メディアなどであってもよい。
【0053】
メディアを介して各種プログラムおよび/または各種データをデバイス100にインストールするのではなく、ネットワーク上の配信サーバから必要なプログラムおよびデータをデバイス100にインストールするようにしてもよい。
【0054】
本実施の形態に従う機能および処理を実現するための構成は、
図3に示すハードウェア構成例に限られず、実現される時代に応じた任意のハードウェア構成を採用できる。
【0055】
<E.仮想サービス提供プログラム130>
次に、本実施の形態に従うデバイス100の仮想サービス提供プログラム130が提供する仮想サービスの一例について説明する。
【0056】
(e1:仮想サービスの一例)
本実施の形態に従うデバイス100の仮想サービス提供プログラム130は、1または複数の仮想サービスを提供できる。仮想サービスの内容は何ら限定されることはないが、例えば、通信処理に関する情報を提供および設定するための管理サービスや、アプリケーション122などからの要求に応じて各種処理を実行するproxyサービスなどが想定される。
【0057】
以下、仮想サービスのいくつかの例について説明する。
(e2:ネットワークアドレスの問合せ)
例えば、アプリケーション122が他のデバイス100と通信するにあたって、自デバイスのネットワークアドレスが必要な場合がある。このような場合において、アプリケーション122は、自デバイスのネットワークアドレスを仮想サービス提供プログラム130に問い合わせられるようにしてもよい。すなわち、管理サービスの一例として、自デバイスのネットワークアドレスを応答するようにしてもよい。
【0058】
図4は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130の処理例を示す模式図である。
【0059】
図4を参照して、仮想サービス提供プログラム130は、自デバイスのネットワークアドレスを応答する仮想サービスを提供するための特定のネットワークアドレスを予め設定している。
図4に示す例では、特定のネットワークアドレスは、"fc00::1"であるとする。
【0060】
自デバイスのネットワークアドレスを取得したい場面において、アプリケーション122は、宛先アドレスが"fc00::1"であるパケット161の生成および送信を上位層通信プログラム140に要求する。仮想サービス提供プログラム130は、生成されたパケット161の宛先アドレスが予め設定された特定のネットワークアドレスと一致していると判断すると、ネットワークアドレス"fc00::1"に対応する仮想サービス(この例では、自デバイスのネットワークアドレスの提供)を実行する。そして、仮想サービス提供プログラム130は、仮想サービスの実行により取得された自デバイスのネットワークアドレスを含む応答パケット162を、上位層通信プログラム140を介してアプリケーション122に応答する。
【0061】
これに対して、他のデバイス100へデータを送信したい場面において、アプリケーション122は、送信先の他のデバイス100のネットワークアドレス(例えば、"fc01:ef49:405f:e763:4a14:d899:8ca4:b65b")を宛先アドレスとするパケット163の生成および送信を上位層通信プログラム140に要求する。仮想サービス提供プログラム130は、生成されたパケット163の宛先アドレスが予め設定された特定のネットワークアドレスとは一致していないと判断すると、パケット163をそのまま通過させる。
【0062】
このように、仮想サービス提供プログラム130は、特定のネットワークアドレスが宛先アドレスとして設定されたパケットを一種のフィルタリングすることで、様々な仮想サービスを提供する。また、アプリケーション122などの上位側から見ると、仮想サービス提供プログラム130は、特定のネットワークアドレスをもつ仮想デバイスのように見える。なお、仮想サービス提供プログラム130は、1または複数の仮想デバイスを提供することもできる。
【0063】
そのため、仮想サービス提供プログラム130は、OSI参照モデルのネットワーク層(第3層)に相当し得る。仮想サービス提供プログラム130が、特定のネットワークアドレス(仮想ネットワークアドレス)をもつ仮想デバイスとして機能することで、アプリケーション122は、他のデバイス100と通信を行うように、仮想サービス提供プログラム130との間で様々な情報をやり取りできる。
【0064】
(e3:仮想サービス提供プログラム130の利用可否の問合せ)
例えば、アプリケーション122は、現在の実行環境(すなわち、自デバイス)において、仮想サービス提供プログラム130が利用可能であるか否かの確認が必要な場合がある。このような場合において、アプリケーション122は、自デバイスにおいて、仮想サービス提供プログラム130が利用可能であるか否かを、仮想サービス提供プログラム130に問い合わせられるようにしてもよい。すなわち、管理サービスの一例として、仮想サービス提供プログラム130の利用可否を応答するようにしてもよい。
【0065】
この場合においても、
図4と同様に、アプリケーション122は、宛先アドレスが特定のネットワークアドレス(例えば、"fc00::1")であるパケット161の生成および送信を上位層通信プログラム140に要求する。仮想サービス提供プログラム130は、生成されたパケット161の宛先アドレスが予め設定された特定のネットワークアドレスと一致していると判断すると、ネットワークアドレス"fc00::1"に対応する仮想サービス(例えば、仮想サービス提供プログラム130が利用可能であることの通知)を実行する。この場合には、仮想サービス提供プログラム130は、パケット161に対する応答パケット162を、上位層通信プログラム140を介してアプリケーション122に応答する。仮想サービス提供プログラム130が存在していれば、通常、仮想サービス提供プログラム130が利用可能であるので、特別な処理を行なうことなく、単に応答パケット162を送信すれば十分である。
【0066】
一方、仮想サービス提供プログラム130が存在していない場合には、応答パケット162を送信できないので、アプリケーション122は、仮想サービス提供プログラム130が利用可能ではないと判断できる。
【0067】
以上のように、アプリケーション122から見ると、仮想サービス提供プログラム130を利用できるか否かを予め確認できるので、通信処理の開始条件などの実装を容易化できる。
【0068】
(e4:ネットワークアドレスの一覧取得/検索)
例えば、ネットワークアドレスを用いて複数のデバイス100と通信する場合には、宛先として選択可能なネットワークアドレスを予め取得する必要が生じることもある。そのため、仮想サービス提供プログラム130は、送信先として選択可能であることが判明しているネットワークアドレスの一覧を提供するようにしてもよい。あるいは、仮想サービス提供プログラム130は、予め取得しているネットワークアドレスのうち、指定した検索条件に合致するネットワークアドレスを応答するようにしてもよい。すなわち、管理サービスの一例として、ネットワークアドレスの一覧取得および検索などを実行できるようにしてもよい。
【0069】
例えば、アプリケーション122は、宛先アドレスが特定のネットワークアドレス(例えば、"fc00::1")であるパケット161の生成および送信を上位層通信プログラム140に要求する。このとき、パケット161は、ネットワークアドレスの一覧を取得するためのコマンドを含んでいてもよいし、取得されているネットワークアドレスのうちから検索条件に合致するネットワークアドレスを検索するためのコマンドを含んでいてもよい。
【0070】
図5は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130の別の処理例を示す模式図である。
図5を参照して、仮想サービス提供プログラム130は、生成されたパケット161の宛先アドレスが予め設定された特定のネットワークアドレスと一致していると判断すると、ネットワークアドレス"fc00::1"に対応する仮想サービス(この例では、ネットワークアドレス一覧の取得や検索)を実行する。
【0071】
この場合、仮想サービス提供プログラム130は、検索エンジンを有しており、パケット161に含まれるコマンドに従って、指定された取得または検索の処理を仮想サービスとして実行する。そして、仮想サービス提供プログラム130は、仮想サービスの実行により得られたネットワークアドレス一覧などを含む応答パケット162を送信する。
【0072】
アプリケーション122は、仮想サービス提供プログラム130からのネットワークアドレスの一覧に基づいて、送信先のデバイス100を決定できる。
【0073】
(e5:管理サービス)
仮想サービス提供プログラム130は、各種の設定を有しており、これらの設定をアプリケーション122などから確認および変更したいというニーズも存在する。管理サービスは、アプリケーション122などから仮想サービス提供プログラム130の設定を確認および変更するためのサービスを含んでいてもよい。
【0074】
管理サービスは、ウェブインターフェイスを介して提供されてもよい。ウェブインターフェイスを利用することで、ユーザは、アプリケーション122(例えば、ウェブブラウザ)を介して、対話的に設定の確認および変更を行うことができる。
【0075】
さらに、仮想サービス提供プログラム130が有している様々な情報についても、アプリケーション122を介して、確認および変更などを行えるようにしてもよい。
【0076】
(e6:電子メールの送信)
例えば、アプリケーション122などからメールアドレスに電子メールを送信したいような場合には、デバイス100とは別のSMTP(Simple Mail Transfer Protocol)サーバに電子メールの送信を依頼しなければならないことが多い。仮想サービス提供プログラム130がこのような電子メールの送信を行うようにしてもよい。すなわち、proxyサービスの一例として、仮想サービス提供プログラム130が電子メールを代理で送信できるようにしてもよい。
【0077】
図6は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130のさらに別の処理例を示す模式図である。
図6を参照して、仮想サービス提供プログラム130は、生成されたパケット161の宛先アドレスが予め設定された特定のネットワークアドレスと一致していると判断すると、ネットワークアドレス"fc00::3"に対応する仮想サービス(この例では、電子メールの送信)を実行する。
【0078】
この場合、仮想サービス提供プログラム130は、一種のSMTPサーバとして機能するように構成されており、パケット161に含まれるデータに従って、指定されたメールアドレスに電子メール164を送信する。
【0079】
仮想サービス提供プログラム130は、電子メール164の送信ログなどを含むパケット163をパケット161の送信元へ送信してもよい。
【0080】
proxyサービスは、電子メールの送信に限らず、FTP(File Transfer Service)によるデータの転送、SMS(Short Message Service)の送信、任意のネットワークサービスに対する代理アクセスなどの任意のサービスを含む。このように、proxyサービスは、デバイス100の外部にデータを送信する処理を含んでいてもよい。
【0081】
なお、仮想サービス提供プログラム130は、電子メールを送信できるように、図示しない下位層通信プログラム150を利用できてもよい。
【0082】
(e7:インターフェイス)
上述したように、仮想サービス提供プログラム130は、複数の仮想サービスを提供できる。ここで、仮想サービスの実行の要求を受け付ける利用するためのインターフェイスを複数用意していてもよい。すなわち、仮想サービス提供プログラム130は、仮想サービスの実行の要求を受け付けるためのインターフェイスを複数有していてもよい。
【0083】
図7は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130の仮想デバイス設定172の一例を示す模式図である。
【0084】
図7を参照して、仮想デバイス設定172は、例えば、仮想サービスを利用するためのインターフェイスと、対応するネットワークアドレスとの設定を含む。
図7に示す例では、管理インターフェイスと、ウェブベースインターフェイスと、proxyインターフェイスとが用意されている。
【0085】
より具体的には、
図7に示す例では、仮想サービス提供プログラム130は、ネットワークアドレス"fc00::1"が宛先アドレスとして設定されたパケットを受信すると、受信したパケットに基づく管理サービスを実行する。
【0086】
また、仮想サービス提供プログラム130は、ネットワークアドレス"fc00::2"が宛先アドレスとして設定されたパケットを受信すると、一種のウェブサーバとして動作する。なお、仮想サービス提供プログラム130は、指定されたURLやコマンドなどに応じて、管理サービスやproxyサービスを実行する。
【0087】
また、仮想サービス提供プログラム130は、ネットワークアドレス"fc00::3"が宛先アドレスとして設定されたパケットを受信すると、proxyサービスを実行する。
【0088】
このように、仮想サービス提供プログラム130は、仮想サービスを提供するためのネットワークアドレスを複数用意することもできる。この場合には、仮想サービス提供プログラム130は、受信したパケットに基づいてサービスを実行するための、特定のネットワークアドレスを複数有することになる。
【0089】
図7に示すようなインターフェイスの設定例に限らず、アプリケーション122などから仮想サービスの実行を要求するためのインターフェイスはどのように設計してもよい。
【0090】
上述の管理インターフェイスおよびproxyインターフェイスにおいては、例えば、リモートプロシージャコール(RPC:Remote Procedure Call)をサポートするようにしてもよい。この場合には、特定のネットワークアドレスを宛先アドレスとするパケットは、仮想サービス提供プログラム130に用意されたサブルーチンまたはプロシージャを呼び出すためのコマンドを含んでいてもよい。また、仮想サービス提供プログラム130は、パケットに含まれるコマンドに従って処理実行した結果を応答してもよい。
【0091】
例えば、特定のネットワークアドレスを宛先アドレスとするパケットは、自デバイスのネットワークアドレスを取得するためのサブルーチン名またはプロシージャ名を含んでいてもよい。例えば、"Whoami"というサブルーチンまたはプロシージャを呼び出す場合には、アプリケーション122において、"fc00::1//Whoami"と指定してもよい。
【0092】
また、上述のウェブインターフェイスを実現するために、仮想サービス提供プログラム130は、httpd(HyperText Transfer Protocol Daemon)を有していてもよい。この場合には、特定のネットワークアドレスを宛先アドレスとするパケットは、HTTP(Hypertext Transfer Protocol)に従って生成および送信されてもよいし、仮想サービス提供プログラム130は、HTTPに従って応答してもよい。
【0093】
例えば、仮想サービス提供プログラム130から必要な情報を取得するためのスクリプトを"GetAddress.js"とすると、アプリケーション122から"https://fc00::2/GetAddress.js"といったURLを指定してもよい。
【0094】
(e8:ユーザインタラクション)
仮想サービス提供プログラム130は、要求された仮想サービスを実行するだけではなく、仮想サービスの一部として、ユーザとの対話(ユーザインタラクション)を行うこともできる。
【0095】
図8は、本実施の形態に従うデバイス100の仮想サービス提供プログラム130のさらに別の処理例を示す模式図である。
図8を参照して、仮想サービス提供プログラム130は、宛先アドレスが特定のネットワークアドレスに設定されたパケット161を受信し、受信したパケット161に応じた仮想サービスの実行に際して、ユーザインターフェイス画面190を提供するためのコマンド166を送信する。
【0096】
コマンド166は、ユーザインターフェイス画面190を提供するための情報を含む。コマンド166は、例えば、OSに対して送信されてもよいし、アプリケーション122に送信されてもよい。デバイス100のプログラム実行環境に応じて、ユーザインターフェイス画面190を提供するための任意のコマンド166を生成できる。
【0097】
なお、仮想サービス提供プログラム130がユーザインターフェイス画面190を提供するための実装はどのようなものであってもよい。例えば、OSが提供するAPI(Application Programming Interface)を利用するものであってもよいし、仮想サービス提供プログラム130が直接的にユーザインターフェイス画面190を生成してもよい。
【0098】
仮想サービス提供プログラム130は、ユーザがユーザインターフェイス画面190を操作して入力した指令168を取得する。
図8に示すユーザインターフェイス画面190は、ユーザに対して、承諾を求めるものとなっている。ユーザが承諾すると、仮想サービス提供プログラム130は、仮想サービスを継続する。例えば、仮想サービス提供プログラム130は、仮想サービスを継続して、指定された宛先へのアクセス167を行ってもよい。
【0099】
一方、ユーザが承諾しなければ、仮想サービス提供プログラム130は、仮想サービスを中断してもよい。
【0100】
このように、仮想サービス提供プログラム130は、ユーザとの対話を行うような仮想サービスを提供することもできる。すなわち、仮想サービスは、ユーザとの対話を行う処理を含んでいてもよい。ユーザとの対話を行う頻度やタイミングなどについては、任意に設計することができる。
【0101】
説明の便宜上、
図8には、グラフィカルユーザインターフェイスを用いたユーザとの対話の例を示すが、キャラクタユーザインターフェイスを用いてユーザとの対話を実現してもよい。すなわち、ユーザとの対話に用いるユーザインターフェイスはどのようなものであってもよい。
【0102】
(e9:仮想サービス提供プログラム130のイベント実行)
上述の
図8に示す処理例においては、アプリケーション122などから要求に応答して、仮想サービス提供プログラム130がユーザインターフェイス画面190を提供するが、仮想サービス提供プログラム130は、任意の条件が満たされると、ユーザインターフェイス画面190を提供するようにしてもよい。
【0103】
例えば、仮想サービス提供プログラム130は、何らかのイベントが発生すると、ユーザインターフェイス画面190を提供してもよい。イベントは、例えば、ユーザの承認が必要な処理を実行しなければならなくなった状況の発生や、ユーザに対して何らかの通知をしなければならない状況の発生などを含む。
【0104】
このように、仮想サービス提供プログラム130は、アプリケーション122などとは独立して、独自の仮想サービスを提供することもできる。
【0105】
(e10:アプリケーションの実装)
デバイス100において、任意のアプリケーション122が仮想サービス提供プログラム130を利用できる。アプリケーション122は、例えば、任意のプロジェクトをビルドして生成されてもよいし、ウェブブラウザ上で実行されるソースコード(例えば、JavaScript(登録商標)で記述される)であってもよい。
【0106】
上述したように、仮想サービス提供プログラム130は、特定のネットワークアドレスをもつ仮想デバイスとして機能する。そのため、アプリケーション122は、当該特定のネットワークアドレスを宛先として指定できるように実装すればよく、実装における制約が少なくなる。
【0107】
(e11:その他)
上述した仮想サービス提供プログラム130が提供する機能および処理については、任意に組み合わせることができる。
【0108】
図9は、本実施の形態に従うデバイス100の別の機能構成例を示す模式図である。
図9を参照して、デバイス100は、仮想サービス提供プログラム130と並列的に通信処理プログラム160を含んでいてもよい。
【0109】
通信処理プログラム160は、例えば、認証済ネットワークアドレスを取得するような処理を実行するようなプログラムであってもよい。
【0110】
図9に示す例では、上位層通信プログラム140が生成および送信したパケットは、仮想サービス提供プログラム130および通信処理プログラム160の両方に転送される。仮想サービス提供プログラム130は、宛先アドレスが特定のネットワークアドレスと一致するパケットのみを処理し、通信処理プログラム160は、パケットの宛先に応じた通信処理を実行する。なお、特定のネットワークアドレスが仮想的なものであれば、現実のネットワークにおいてパケットを転送することができないので、実体的な通信処理を行われないことになる。
【0111】
仮想サービス提供プログラム130がデバイス100の外部にデータを送信する処理を実行しなければならない場合などに、通信処理プログラム160に処理を委託できるように、仮想サービス提供プログラム130と通信処理プログラム160との間で情報をやり取りできるようにしてもよい。
【0112】
また、仮想サービス提供プログラム130は、独自の通信処理を実行できるようにしてもよい。この場合には、仮想サービス提供プログラム130が下位層通信プログラム150を利用できるようにしてもよい。
【0113】
また、仮想サービス提供プログラム130と通信処理プログラム160とを一体化してもよい。この場合には、受信したパケットの宛先に応じて、仮想サービス提供プログラム130および通信処理プログラム160の一方の処理が選択される。
【0114】
さらに、仮想サービス提供プログラム130は、通信処理プログラム160ではなく任意のプログラムの一部として実装されてもよい。
【0115】
<F.利点>
本実施の形態に従うネットワークシステムによれば、特定のネットワークアドレスを宛先として指定されたパケットに対して、パケットに含まれる要求に応じた情報が提供されるので、当該情報を用いて処理を豊富化できる。
【0116】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0117】
100 デバイス、102 プロセッサ、104 メモリ、106 ストレージ、108 ディスプレイ、110 入力部、112 通信部、120 OS、122 アプリケーション、130 仮想サービス提供プログラム、140 上位層通信プログラム、150 下位層通信プログラム、160 通信処理プログラム、161,163 パケット、162 応答パケット、164 電子メール、166 コマンド、167 アクセス、168 指令、172 仮想デバイス設定、190 ユーザインターフェイス画面。