(57)【要約】【課題】コンピュータデバイスのオーバーヘッドを低減し、コンピュータデバイスのパフォーマンスを改善するソケットＡＰＩのループバック処理の方法およびシステムを提供する。【解決手段】本発明は、コンピュータデバイス上での利口なソケットＡＰＩのループバック処理の方法およびシステムに関する。方法およびシステムの一例では、ソケットＡＰＩは、ＴＣＰ／ＩＰプロトコルスタックまたはより低レベルのシステム（例えばネットワークドライバ）を呼び出すこと無しにループバックコールを処理するので、ＴＣＰ／ＩＰプロトコルスタックおよびより低レベルのシステムに掛かる処理の負荷およびオーバーヘッドを低減し、コンピュータデバイス全体のパフォーマンスを改善する。【選択図】図２
2010027039.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク接続可能なコンピュータデバイスであって、
ネットワークを利用するアプリケーションを実行するアプリケーション実行部と、
上記アプリケーション実行部と接続可能なソケットＡＰＩを実行するソケット実行部と、
上記ソケット実行部と接続可能なＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部とを含み、
上記ソケット実行部は、上記アプリケーション実行部からコールを受け取ると、上記コールが上記コンピュータデバイスの内部プロセスを宛先とするループバックコールであるか否かを判定し、上記コールがループバックコールである場合、上記プロトコル実行部を呼び出すことなく上記アプリケーション実行部と上記コールが示す内部プロセスとの間の通信を確立し、上記コールがループバックコールではない場合、上記プロトコル実行部を呼び出し、上記コールを上記プロトコル実行部に転送することを特徴とするコンピュータデバイス。
【請求項２】
上記ソケット実行部は、上記コールにおいて受け取ったデータを上記ソケット実行部のデータ記憶部に保存することを特徴とする請求項１に記載のコンピュータデバイス。
【請求項３】
上記ソケット実行部は、上記コールにおいて要求されるデータを上記ソケット実行部の上記データ記憶部から取得し、上記アプリケーション実行部に上記データを送信することを特徴とする請求項２に記載のコンピュータデバイス。
【請求項４】
上記ソケット実行部は、上記コールの宛先がループバックと関連しているか否かを判定することにより、上記コールがループバックコールであるか否かを判定することを特徴とする請求項１から３のいずれか一項に記載のコンピュータデバイス。
【請求項５】
上記ソケット実行部は、上記コールの宛先がループバックアドレスを指定しているか否かを判定することにより、上記コールがループバックコールであるか否かを判定することを特徴とする請求項１から４のいずれか一項に記載のコンピュータデバイス。
【請求項６】
ネットワーク接続可能なコンピュータデバイスであって、
ネットワークを利用するアプリケーションを実行するアプリケーション実行部と、
上記アプリケーション実行部と接続可能なソケットＡＰＩを実行するソケット実行部と、
上記ソケット実行部と接続可能なＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部とを含み、
上記ソケット実行部は、上記アプリケーション実行部からループバックコールを受け取り、上記プロトコル実行部を呼び出すこと無しに上記ループバックコールを処理することを特徴とするコンピュータデバイス。
【請求項７】
上記ソケット実行部は、上記アプリケーション実行部から非ループバックコールを受け取り、上記プロトコル実行部を呼び出して上記非ループバックコールを処理することを特徴とする請求項６に記載のコンピュータデバイス。
【請求項８】
ネットワークを利用するアプリケーションを実行するアプリケーション実行部とＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部とソケットＡＰＩを実行するソケット実行部とを有し、上記ソケット実行部は上記アプリケーション実行部および上記プロトコル実行部と接続可能であるコンピュータデバイスにおけるループバック処理の方法であって、
上記ソケット実行部が、上記アプリケーション実行部からのコールを受け取るステップと、
上記ソケット実行部が、上記コールがループバックコールであるか否かを判定するステップと、
上記コールが上記コンピュータデバイスの内部プロセスを宛先とするループバックコールである場合、上記ソケット実行部が、上記プロトコル実行部を呼び出すことなく上記アプリケーション実行部と上記コールが示す内部プロセスとの間の通信を確立して上記コールを処理するステップと、
上記コールがループバックコールではない場合、上記ソケット実行部が、上記プロトコル実行部を呼び出し、上記コールを上記プロトコル実行部に転送するステップとを含むことを特徴とするループバック処理の方法。
【請求項９】
上記コールを処理するステップは、上記コールにおいて受け取ったデータを上記ソケット実行部のデータ記憶部に保存するステップを含むことを特徴とする請求項８に記載のループバック処理の方法。
【請求項１０】
上記コールを処理するステップは、上記コールにおいて要求されるデータを上記ソケット実行部の上記データ記憶部から取得するステップと、上記アプリケーション実行部に取得した上記データを送信するステップとを含むことを特徴とする請求項９に記載のループバック処理の方法。
【請求項１１】
上記判定するステップは、上記コールの宛先がループバックと関連しているか否かを判定するステップを含むことを特徴とする請求項８から１０のいずれか一項に記載のループバック処理の方法。
【請求項１２】
上記判定するステップは、上記コールの宛先がループバックアドレスを指定しているか否かを判定するステップを含むことを特徴とする請求項８から１１のいずれか一項に記載のループバック処理の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ループバックネットワークに関し、特にコンピュータデバイスのオーバーヘッドを低減し、コンピュータデバイスのパフォーマンスを改善することに関する。
【背景技術】
【０００２】
インターネットプロトコル（ＩＰ）はループバックネットワーク機能を定義している。ほとんどのＩＰバージョン４（ＩＰｖ４）の実装ソフトウェアは、ループバックアドレスとして１２７．０．０．１を使用するが、ＩＰバージョン６（ＩＰｖ６）の実装ソフトウェアは、通常はループバックアドレスとして：：１を使用する。
【０００３】
ループバック機能を用いれば、コンピュータデバイス上で実行されているネットワークアプリケーションは、ループバックアドレスを使用している該コンピュータデバイス上で実行されている別のプロセスをアドレス指定し、コンピュータデバイスの内部で通信することができる。
【０００４】
よくあるループバック機能の用途の一つは、プロセスの実行可能性および設計の検証のための内部テストである。例えば、ウェブサイトのホストとなるウェブサーバとウェブブラウザとを有するコンピュータデバイス上において、ウェブブラウザにＵＲＬ（Uniform Resource Locator）http://127.0.0.1 を指定することにより該ウェブサイトにアクセスすることができ、該ウェブサイトを外部のネットワークにさらすこと無しにテストを行うことができる。
【０００５】
特許文献１には、アプリケーションプログラムと、ＡＰＩ処理部と、プロトコルスタック処理部とを有するパーソナルコンピュータが開示されている。このパーソナルコンピュータは、ＡＰＩ処理部が、アプリケーションプログラムからの要求に応じて、複数の階層からなる通信処理の内、ネットワークプロトコルスタックの上位の層の第１の処理を実行する。プロトコルスタック処理部は、第１の処理の処理結果に応じてネットワークプロトコルスタックの第２の処理を実行することで、特定のネットワークプロトコルスタックに対して多様なＡＰＩを提供する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１８３７３８号公報（２００７年７月１９日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の構成では、下記の問題を生じる。
【０００８】
ネットワーク接続が可能な現在のオペレーティングシステム（例えば、Windows（登録商標）、vxWorks（登録商標））では、ループバックアドレスはリモートホストのＩＰアドレスのように多くの方法によって処理されている。ループバックアドレスはルーティングテーブルにエントリを有し、妥当なサブネットに属している。アプリケーションがループバックアドレスを使用して内部プロセスを呼び出すとき、ソケットアプリケーションプログラミングインターフェース（ソケットＡＰＩ：socket application programming interface）（例えば、Windows（登録商標）におけるWinsock、vxWorks（登録商標）におけるsockLib）は、オペレーティングシステムのＴＣＰ／ＩＰ（Transmission Control Protocol/IP）プロトコルスタックへコール（呼び出し）を通過させ、経路（ルーティング）を決定するためにルーティングテーブルを参照し、それから当該内部プロセスに到達するまでに、オペレーティングシステムのＩ／Ｏ（input/output）サブシステム内の仮想ネットワークデバイスドライバに該コールを転送する。仮想ネットワークデバイスドライバは、例えば該アプリケーションと該内部プロセスとの間で伝送されるデータをバッファするといった余分なループバック処理を実行する。これらのオペレーティングシステムの基本的な設計概念におけるループバック機能は、ルーティング、バッファリング、およびハウスキーピングを含むループバック処理のためのＴＣＰ／ＩＰプロトコルスタックおよび低レベルの仮想ネットワークデバイスドライバを呼び出す。それゆえ、このような従来のループバック機能は非常に非効率的である。ここで、ソケットＡＰＩは、一般的にはアプリケーションがネットワークで接続された他のコンピュータデバイスで動作するアプリケーションと通信するために、アプリケーションによってコールされる、ＯＳ等が用意しているソフトウェアである。また、ＴＣＰ／ＩＰプロトコルスタックは、ネットワーク接続されたコンピュータ間においてＴＣＰ／ＩＰプロトコルに従ってデータの送受信を行うソフトウェアである。
【０００９】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、コンピュータデバイスのオーバーヘッドを低減し、コンピュータデバイスのパフォーマンスを改善するソケットＡＰＩのループバック処理の方法およびシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る一態様において、ネットワーク接続可能なコンピュータデバイスは、ネットワークを利用するアプリケーションを実行するアプリケーション実行部と、上記アプリケーション実行部と接続可能なソケットＡＰＩを実行するソケット実行部と、上記ソケット実行部と接続可能なＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部とを含み、上記ソケット実行部は、上記アプリケーション実行部からコールを受け取ると、上記コールが上記コンピュータデバイスの内部プロセスを宛先とするループバックコールであるか否かを判定し、上記コールがループバックコールである場合、上記プロトコル実行部を呼び出すことなく上記アプリケーション実行部と上記コールが示す内部プロセスとの間の通信を確立し、上記コールがループバックコールではない場合、上記プロトコル実行部を呼び出し、上記コールを上記プロトコル実行部に転送することを特徴としている。
【００１１】
本発明に係る他の態様において、ネットワーク接続可能なコンピュータデバイスは、アプリケーションと、上記アプリケーションと接続可能なソケットＡＰＩと、上記ソケットＡＰＩと接続可能なＴＣＰ／ＩＰプロトコルスタックとを含み、上記ソケットＡＰＩは、上記アプリケーションからコールを受け取り、上記コールがループバックコールであるか否かの上記ソケットＡＰＩによる判定結果に基づき、上記コールを処理するために上記ＴＣＰ／ＩＰプロトコルスタックを選択的に呼び出すことを特徴としている。
【００１２】
また、上記コールがループバックコールであると判定された場合、上記ソケットＡＰＩは、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出すこと無しに、上記コールを処理する構成であってもよい。
【００１３】
また、上記コールが非ループバックコールであると判定された場合、上記ソケットＡＰＩは、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出す構成であってもよい。
【００１４】
また、上記ソケットＡＰＩは、上記コールに対する処理として、上記コールにおいて受け取ったデータを上記ソケットＡＰＩのデータ記憶部に保存する構成であってもよい。
【００１５】
また、上記ソケットＡＰＩは、上記コールに対する処理として、上記コールにおいて要求されるデータを上記ソケットＡＰＩのデータ記憶部から取得し、上記アプリケーションに上記データを送信する構成であってもよい。
【００１６】
また、上記ソケットＡＰＩは、上記コールの宛先がループバックと関連しているか否かを判定することにより、上記コールがループバックコールであるか否かを判定する構成であってもよい。
【００１７】
また、上記ソケットＡＰＩは、上記コールの宛先がループバックアドレスを指定しているか否かを判定することにより、上記コールがループバックコールであるか否かを判定する構成であってもよい。
【００１８】
本発明に係るさらに他の態様において、ネットワーク接続可能なコンピュータデバイスは、ネットワークを利用するアプリケーションと、上記アプリケーションと接続可能なソケットＡＰＩと、上記ソケットＡＰＩと接続可能なＴＣＰ／ＩＰプロトコルスタックとを含み、上記ソケットＡＰＩは、上記アプリケーションからループバックコールを受け取り、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出すこと無しに上記ループバックコールを処理することを特徴としている。
【００１９】
また、上記ソケットＡＰＩは、上記アプリケーションから非ループバックコールを受け取り、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出して上記非ループバックコールを処理する構成であってもよい。
【００２０】
本発明に係るさらに他の態様において、ネットワークを利用するアプリケーションを実行するアプリケーション実行部とＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部とソケットＡＰＩを実行するソケット実行部とを有し、上記ソケット実行部は上記アプリケーション実行部および上記プロトコル実行部と接続可能であるコンピュータデバイスにおけるループバック処理の方法は、上記ソケット実行部が、上記アプリケーション実行部からのコールを受け取るステップと、上記ソケット実行部が、上記コールがループバックコールであるか否かを判定するステップと、上記コールが上記コンピュータデバイスの内部プロセスを宛先とするループバックコールである場合、上記ソケット実行部が、上記プロトコル実行部を呼び出すことなく上記アプリケーション実行部と上記コールが示す内部プロセスとの間の通信を確立して上記コールを処理するステップと、上記コールがループバックコールではない場合、上記ソケット実行部が、上記プロトコル実行部を呼び出し、上記コールを上記プロトコル実行部に転送するステップとを含むことを特徴としている。
【００２１】
本発明に係るさらに他の態様において、アプリケーションとＴＣＰ／ＩＰプロトコルスタックとソケットＡＰＩとを有し、上記ソケットＡＰＩは上記アプリケーションおよび上記ＴＣＰ／ＩＰプロトコルスタックと接続可能であるコンピュータデバイスにおけるループバック処理の方法は、上記ソケットＡＰＩが、上記アプリケーションからのコールを受け取るステップと、上記ソケットＡＰＩが、上記コールがループバックコールであるか否かを判定するステップと、上記判定するステップの結果に基づき上記コールを処理するために、上記ソケットが、上記ＴＣＰ／ＩＰプロトコルスタックを選択的に呼び出すステップとを含むことを特徴としている。
【００２２】
また、上記コールがループバックコールである場合、上記ソケットＡＰＩが、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出すこと無しに上記コールを処理するステップをさらに含んでもよい。
【００２３】
また、上記コールが非ループバックコールである場合、上記ソケットＡＰＩが、上記ＴＣＰ／ＩＰプロトコルスタックを呼び出して上記コールを処理するステップをさらに含んでもよい。
【００２４】
また、上記コールを処理するステップは、上記コールにおいて受け取ったデータを上記ソケットＡＰＩのデータ記憶部に保存するステップを含んでもよい。
【００２５】
また、上記コールを処理するステップは、上記コールにおいて要求されるデータを上記ソケットＡＰＩのデータ記憶部から取得するステップと、上記アプリケーションに取得した上記データを送信するステップとを含んでもよい。
【００２６】
また、上記判定するステップは、上記コールがループバックの宛先と関連しているか否かを判定するステップを含んでもよい。
【００２７】
また、上記判定するステップは、上記コールの宛先がループバックアドレスを指定しているか否かを判定するステップを含んでもよい。
【発明の効果】
【００２８】
本発明に係るネットワーク接続可能なコンピュータデバイスは、アプリケーションと、上記アプリケーションと接続可能なソケットＡＰＩと、上記ソケットＡＰＩと接続可能なＴＣＰ／ＩＰプロトコルスタックとを含み、上記ソケットＡＰＩは、上記アプリケーションからコールを受け取り、上記コールがループバックコールであるか否かの上記ソケットＡＰＩによる判定結果に基づき、上記コールを処理するために上記ＴＣＰ／ＩＰプロトコルスタックを選択的に呼び出すことを特徴としている。よって、コールがループバックコールである場合に、下位の階層（例えばＴＣＰ／ＩＰプロトコルスタックまたはネットワークドライバ等）へ当該コールを転送する等の不要な処理を削減でき、コンピュータデバイスのオーバーヘッドを低減し、コンピュータデバイスのパフォーマンスを改善することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態の、ネットワーク接続可能なコンピュータデバイスを示すブロック図である。
【図２】本発明の実施形態のコンピュータデバイス上で実行可能なソフトウェアを示すブロック図である。
【図３】本発明の実施形態のコンピュータデバイス上でのループバック処理の方法を示すフロー図である。
【発明を実施するための形態】
【００３０】
本発明の上述したまたは他の態様については、以下の詳細な記述と上述の図面とを参照することによってよりよく理解できるだろう。もちろん、本発明は特許請求の範囲の記載によって規定される。
【００３１】
本発明は、基本的な機能として、利口なソケットＡＰＩのループバック処理を提供する。本発明の本質によれば、コンピュータデバイス上でのループバック処理は、ＴＣＰ／ＩＰプロトコルスタックまたはより低レベルのシステム（例えばネットワークドライバ）に頼ること無しに、ソケットＡＰＩによって実行される。それゆえ、ＴＣＰ／ＩＰプロトコルスタックおよびより低レベルのシステムに掛かる処理の負荷およびオーバーヘッドを低減し、コンピュータデバイス全体のパフォーマンスを改善する。
【００３２】
＜コンピュータデバイスの構成＞
図１は、本発明に係る一実施形態における、ネットワーク接続可能なコンピュータデバイス１００を示す図である。コンピュータデバイス１００は、演算装置１４０、ユーザインターフェース１１０、ネットワークインターフェース１２０、および記憶装置１３０を備える。演算装置１４０は、ユーザインターフェース１１０、ネットワークインターフェース１２０、および記憶装置１３０と通信可能に接続されている。コンピュータデバイス１００は、例えば、パーソナルコンピュータ、パーソナルデータアシスタント（ＰＤＡ）、サーバ装置、携帯電話、または複合機（多機能周辺装置：ＭＦＰ）であってもよい。
【００３３】
ユーザインターフェース１１０は、１つ以上の入力装置を介してコンピュータデバイス１００のユーザからの入力を受け付けて、１つ以上の出力装置を介してユーザに対して出力を表示する。出力装置は、液晶ディスプレイ（ＬＣＤ）または有機発光ダイオード（ＯＬＥＤ）のような表示装置を含む。入力装置は、例えば、指あるいはスタイラスペンで操作可能なタッチスクリーン、スクロールホイールあるいはスクロールボール、キーパッド、および／または、音声指示入力モジュールを含む。
【００３４】
ネットワークインターフェース１２０は、有線または無線の通信回線の向こうにある他のネットワーク接続可能な装置に情報を送信し、該装置から情報を受信する有線または無線の通信インターフェースである。ネットワークインターフェース１２０は、例えば、有線のイーサネット（登録商標）インターフェース、携帯電話のネットワークインターフェース、無線のイーサネット（登録商標）インターフェース（例えばＷｉＦｉ（登録商標）のインターフェース）、または、ＷｉＭＡＸ（Worldwide Interoperability for Microwave Access）インターフェースであってもよい。
【００３５】
演算装置１４０は、コンピュータデバイス１００によって動作がサポートされるソフトウェアを実行する。図２は、本発明の一実施形態のコンピュータデバイス上で実行可能なソフトウェアを示す図である。演算装置１４０によって実行可能なコンピュータデバイス１００のソフトウェア２００は、アプリケーション２１０、ソケットＡＰＩ２２０、ＴＣＰ／ＩＰプロトコルスタック２３０、ネットワークデバイスドライバ（ネットワークドライバ）２４０を含む。また重要なことに、ソケットＡＰＩ２２０は、ループバック処理部２２５およびループバックデータ記憶部（データ記憶部）２２６を含む。演算装置１４０によって実行可能な上記ソフトウェアの各要素は、記憶装置１３０に保存される。記憶装置１３０は、１つ以上のランダムアクセスメモリ（ＲＡＭ）、および１つ以上のリードオンリーメモリ（ＲＯＭ）を含んでもよい。ある実施形態においては、ソケットＡＰＩ２２０、ＴＣＰ／ＩＰプロトコルスタック２３０、およびネットワークデバイスドライバ２４０は、必須の構成としてオペレーティングシステムに組み込まれている。なお、図２の各ブロックは、対応するソフトウェアの各要素を実行する実行部（すなわち、アプリケーションを実行するアプリケーション実行部２１０、ソケットＡＰＩを実行するソケット実行部２２０、ＴＣＰ／ＩＰプロトコルスタックを実行するプロトコル実行部２３０、ネットワークデバイスドライバを実行するドライバ実行部２４０）として表現することもできる。
【００３６】
アプリケーション２１０は、例えばウェブブラウザのような、ループバックコールおよび非ループバックコールを発行することができる、ネットワークに対応したアプリケーションプログラムである。これらのコールは、ユーザインターフェース１１０を介してユーザによって開始されることもあり、または、ユーザの介入無しにアプリケーション２１０によって発生されることもある。ループバックコールはコンピュータデバイス１００の内部で実行されている内部プロセスをアクセス先とするコールであり、非ループバックコールはコンピュータデバイス１００の外部のネットワーク等にあるリモートコンピュータデバイスまたはリモートコンピュータデバイスで実行されているプロセスをアクセス先とするコールである。
【００３７】
ソケットＡＰＩ２２０は、アプリケーション２１０とＴＣＰ／ＩＰプロトコルスタック２３０とを結びつけるネットワークＡＰＩである。ソケットＡＰＩ２２０は、従来のＴＣＰ接続を介してリモートコンピュータデバイスと通信するのと同じように、アプリケーション２１０がループバック機能を介してコンピュータデバイス１００上のループバックプロセス（内部プロセス）と通信することを可能にする。ソケットＡＰＩ２２０は、アプリケーションからのコールを受け取り、コールのためのエンドポイントを与えるソケットを生成し、ソケットを宛先のアドレスと結合させる。また、ソケットＡＰＩ２２０は、通信が不要になると、結合を解除してソケットをクローズする。ソケットは、例えば１２７．０．０．１といったよく知られるループバックの宛先アドレスに結合された１つ以上のループバックソケット、および、リモートコンピュータデバイスに関連する非ループバックの宛先アドレスに結合された１つ以上の従来のＴＣＰソケットを含んでもよい。
【００３８】
ループバック処理部２２５は、ソケットＡＰＩ２２０のソフトウェアサブシステムである。ループバック処理部２２５は、コンピュータデバイス１００がＴＣＰ／ＩＰプロトコルスタック２３０または他のより低レベル（低位の階層）のシステム（例えばネットワークドライバ）を使用すること無しにループバック機能をサポートすることができるようにする。ループバック処理部２２５は、ループバックソケットを参照するアプリケーション２１０からのループバックコールを処理する。ループバックコールの処理の結果、ループバック処理部２２５は、アプリケーション２１０を呼び出された内部プロセスに結びつけ、アプリケーション２１０と内部プロセスとの間の通信を確立する。また、ループバック処理部２２５は、呼び出された内部プロセスからアプリケーション２１０に発信されたデータを、その途中で一時的にループバックデータ記憶部２２６に保存する。同様に、ループバック処理部２２５は、アプリケーション２１０から呼び出された内部プロセスに発信されたデータを、その途中で一時的にループバックデータ記憶部２２６に保存する。ループバックデータ記憶部２２６は、基本的にバッファとして機能する。例えば、第１のアプリケーションと第２のアプリケーションとが同一のコンピュータデバイス上で動作しており、第２のアプリケーションが第１のアプリケーションと接続されており、第２のアプリケーションが第１のアプリケーションから送信されたデータを読み取る場合、第２のアプリケーションは、既にループバックデータ記憶部２２６に保存されているデータを検索し、取得する。
【００３９】
ＴＣＰ／ＩＰプロトコルスタック２３０は、ソケットＡＰＩ２２０とネットワークデバイスドライバ２４０とを結びつけるプロトコルスタックである。ＴＣＰ／ＩＰプロトコルスタック２３０は、プロトコルを実装するソフトウェアからなっている。ＴＣＰ／ＩＰプロトコルスタック２３０は、アプリケーション２１０が従来のＴＣＰ接続を介してリモートコンピュータデバイスと通信できるようにする。ＴＣＰ／ＩＰプロトコルスタック２３０は、適切にフォーマットされたデータをソケットＡＰＩ２２０とネットワークデバイスドライバ２４０との間で伝送し、ＴＣＰセッションおよびＩＰデータグラムサービスを提供する。
【００４０】
ネットワークデバイスドライバ２４０は、ＴＣＰ／ＩＰプロトコルスタック２３０とネットワークインターフェース１２０とを結びつけるソフトウェアである。ネットワークデバイスドライバ２４０は、アプリケーション２１０が従来のＴＣＰ接続を介してリモートコンピュータデバイスと通信できるようにする。ネットワークデバイスドライバ２４０は、適切にフォーマットされたデータをＴＣＰ／ＩＰプロトコルスタック２３０とネットワークインターフェース１２０との間で伝送し、ある実施形態では、メディアアクセスコントロール（ＭＡＣ）および論理リンク制御（ＬＬＣ）サービスを提供する。
【００４１】
本発明の実施形態によれば、ソケットＡＰＩ２２０が受け取ったコールがループバックコールである場合、低位の階層のシステム（ＴＣＰ／ＩＰプロトコルスタック２３０またはネットワークデバイスドライバ２４０）に当該コールを転送せずに、ループバック処理部２２５が、当該コールを目的の内部プロセスに結びつける。これにより、アプリケーション２１０は、目的の内部プロセスと通信することが可能となる。ループバック処理部２２５によるループバックコールの処理は、低位の階層のシステム（ＴＣＰ／ＩＰプロトコルスタック２３０またはネットワークデバイスドライバ２４０）に依存することなく実行されるため、アプリケーション２１０は、ループバック機能を利用して内部プロセスを高速に呼び出すことができる。したがって、ソケットＡＰＩ２２０によって、コンピュータデバイスのオーバーヘッドを低減し、コンピュータデバイスのパフォーマンスを改善することが可能となる。
【００４２】
＜ループバック処理フロー＞
図３は、本発明に係る一実施形態のコンピュータデバイス上でのループバック処理の方法を示す図である。以下では、本発明に係るいくつかの実施形態について、コンピュータデバイス１００上でのループバック処理の方法を、図２および図３を参照しながら説明する。
【００４３】
ソケットＡＰＩ２２０は、アプリケーション２１０からソケットＡＰＩコールを受信する（Ｓ３１０）。ソケットＡＰＩコールに応答して、ソケットＡＰＩ２２０は、当該コールを既存のソケットに結びつけることを試みる（Ｓ３２０）。当該コールに対応するソケットが存在する場合、該ソケットを当該コールに対応するソケットとして特定する。当該コールに対応するソケットが存在しない場合、ソケットＡＰＩ２２０は、ソケットを生成し、該ソケットを宛先アドレスに結合させる（Ｓ３３０）。このようにして、ソケットＡＰＩ２２０は、当該コールに対応するソケットを特定する。
【００４４】
続けてソケットＡＰＩ２２０は、特定したソケットがループバック型のソケットか否かを判定する（Ｓ３４０）。特定したソケットがループバック型のソケットである場合、当該コールは、ＴＣＰ／ＩＰプロトコルスタック２３０または他のより低レベルのシステム（例えばネットワークドライバ）に頼ること無しに、ソケットＡＰＩ２２０のループバック処理部２２５上で処理される（Ｓ３５０）。一方、特定したソケットが非ループバック型のソケット（例えば従来のＴＣＰソケット）である場合、ソケットＡＰＩ２２０は、当該コールをさらなる処理のためにＴＣＰ／ＩＰプロトコルスタック２３０へ転送する（Ｓ３６０）。
【００４５】
ある実施形態では、新しいソケットが生成され結合されるたびに、ループバック処理部２２５が呼び出され、宛先アドレスがループバックアドレスであるか否かを調べることによって当該ソケットがループバックソケットであるか否かを判定する。そして、当該ソケットがループバックソケットであると判定された場合、ループバック処理部２２５は、当該ソケットにループバックソケットを識別するための標識を付加する。これにより、当該ソケットが以降に受け取ったコールを、ループバック処理部２２５の処理に代わって、簡単に特定することができる。また、例えばＩＰｖ６では、１つのネットワークデバイスに複数のアドレスを設定することができる。それゆえ、ソケットＡＰＩコールは、複数のアドレス、またはアドレスの範囲を宛先として含むことがある。この場合ループバック処理部２２５は、当該ソケットＡＰＩコールが含む複数の宛先アドレス、または宛先アドレスの範囲がループバックに関連しているか否かを判定する。
【００４６】
上述したように、本実施形態のコンピュータデバイス１００は、例えば、複合機（多機能周辺装置：ＭＦＰ）などに適用される。本願出願人の提唱するシステム（ＳＨＡＲＰ  ＯＳＡ（登録商標））では、ＳＯＡＰ（Simple Object Access Protocol）をベースとして、ＰＣ（パーソナルコンピュータ）上で動作するアプリケーションと複合機の機能とを連携し、複合機がトータルアプリケーションシステムの一部となって動作することができる。これにより、複合機の機能とＰＣの機能とを適宜組み合わせた柔軟性のあるサービスの構築を容易に行うことができる（シャープ株式会社、[online]、[平成２１年５月１２日検索]、インターネット〈URL：http://www.sharp.co.jp/print/osa/index.html〉 参照）。本実施形態のコンピュータデバイス１００は、このような複合機に適用することができる。
【００４７】
具体的には、ＰＣ上で動作するアプリケーションと複合機の機能とを連携させた上記のシステムでは、複合機に内部実装されたアプリケーション（ＯＳＡ（オープンシステムアーキテクチャー）アプリ）は、ソケットＡＰＩによる機能呼び出し（ファンクションコール）を行なう。ここで、ファンクションコールとしては、複合機が有する機能（プリント機能、スキャン機能、画像処理機能など）を呼び出すもの（ループバックコール）、および、複合機に接続されたＰＣなどの外部機器へのコールが存在する。そこで、本実施形態のコンピュータデバイス１００を適用することで、ソケットＡＰＩ２２０は、ファンクションコールがループバックコールであるか、外部機器へのコールであるかを判定することができる。そして、ループバックコールの場合は複合機内に実装された内部コマンドを直接コールし、外部機器へのコールの場合はＴＣＰ／ＩＰプロトコルスタックを呼び出してＴＣＰ／ＩＰプロトコルにより外部機器の機能をコールする。これにより、複合機内部の機能を高速にコールすることができる。また、これにより、例えばループバック機能をサポートできない独自仕様のＴＣＰ／ＩＰプロトコルスタックにおいても、ループバック機能をサポートすることが可能になる。
【００４８】
ここに記載した本発明の精神または本質的特徴から逸脱すること無しに、本発明を他の具体的形式で実施することができることは、当業者であれば理解できるであろう。それゆえ、上述の説明は、制限するためではなく説明するためになされたものである。本発明の範囲は請求項によって示されており、それらと同等の手段および同等の範囲による変更の全ての結果も、本発明の範囲に包含される。
【００４９】
最後に、ソケットＡＰＩ２２０を含むソフトウェア２００の各ブロックは、ハードウェアロジックによって構成してもよいし、次のようにＣＰＵを用いてソフトウェアによって実現してもよい。
【００５０】
すなわち、コンピュータデバイス１００は、各機能を実現する制御プログラムの命令を実行するＣＰＵ（central processing unit）、上記プログラムを格納したＲＯＭ（read only memory）、上記プログラムを展開するＲＡＭ（random access memory）、上記プログラムおよび各種データを格納するメモリ等の記憶装置（記録媒体）などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェア２００のプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータで読み取り可能に記録した記録媒体を、上記コンピュータデバイス１００に供給し、そのコンピュータデバイス１００（またはＣＰＵやＭＰＵ）が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【００５１】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ／ＭＯ／ＭＤ／ＤＶＤ／ＣＤ−Ｒ等の光ディスクを含むディスク系、ＩＣカード（メモリカードを含む）／光カード等のカード系、あるいはマスクＲＯＭ／ＥＰＲＯＭ／ＥＥＰＲＯＭ／フラッシュＲＯＭ等の半導体メモリ系などを用いることができる。
【００５２】
また、コンピュータデバイス１００に、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【産業上の利用可能性】
【００５３】
本発明は、ネットワーク接続可能なパーソナルコンピュータ、パーソナルデータアシスタント（ＰＤＡ）、サーバ装置、携帯電話、または複合機に利用することができる。
【符号の説明】
【００５４】
１００    コンピュータデバイス
１１０    ユーザインターフェース
１２０    ネットワークインターフェース
１３０    記憶装置
１４０    演算装置
２００    ソフトウェア
２１０    アプリケーション
２２０    ソケットＡＰＩ
２２５    ループバック処理部
２２６    ループバックデータ記憶部（データ記憶部）
２３０    ＴＣＰ／ＩＰプロトコルスタック
２４０    ネットワークデバイスドライバ
【図１】
2010027039.tif 000003
【図２】
2010027039.tif 000004
【図３】
2010027039.tif 000005