(57)【特許請求の範囲】
【請求項１】
無線回線を介して他の装置と通信する無線通信システムで用いられる装置において、
自装置から、自装置を送信先装置として指定するデータの送信要求が発行されたのか否かを監視する監視手段と、
上記送信要求の発行が検出されるときに、データの受信先となるプロセスを生成するとともに、該プロセスに対応付けてバッファを生成する生成手段と、
バーチャルサーキット型通信に従って、上記データの送信要求発行元から上記プロセスにデータ転送を行って上記バッファに格納することで、そのバーチャルサーキット型通信の通信プロトコルを終端させる転送手段と、
無線回線が切断されるときに、該切断時点での送信データのシーケンス番号を特定する特定手段と、
上記バッファに格納されるデータの送信に先立って、無線回線のレイヤ層より上位のレイヤ層で指定すべき送信先情報を送信することで、その送信対象のデータを無線回線を介して他の装置に送信するとともに、無線回線が再接続されるときに、上記特定手段の特定したシーケンス番号からデータ送信を再開する送信手段とを備えることを、
特徴とする無線通信システムで用いられる装置。
【請求項２】
請求項１に記載の無線通信システムで用いられる装置において、
上記バッファのデータ格納状態を検出する検出手段を備え、
上記転送手段は、上記検出手段の検出結果に応じて、バーチャルサーキット型通信の通信速度を制御することを、
特徴とする無線通信システムで用いられる装置。
【請求項３】
請求項１又は２に記載の無線通信システムで用いられる装置において、
上記送信手段は、複数のバッファが同時に生成されるときにあって、該バッファに設定される優先度に従い、優先度の高いバッファから順番にデータを送信することを、
特徴とする無線通信システムで用いられる装置。
【請求項４】
請求項１又は２に記載の無線通信システムで用いられる装置において、
上記送信手段は、複数のバッファが同時に生成されるときにあって、該バッファに設定される優先度に従い、優先度の高いバッファの送信周期を短く設定しつつデータを送信することを、
特徴とする無線通信システムで用いられる装置。
【請求項５】
請求項１ないし４のいずれか１項に記載の無線通信システムで用いられる装置において、
上記送信手段のデータ送信に応答して返答されるデータを格納するキャッシュメモリと、
上記データ送信要求元プログラムの要求するデータが上記キャッシュメモリに登録されているのか否かを検索する検索手段とを備え、
上記送信手段は、上記検索手段が上記キャッシュメモリに登録されていることを判断するときには、データ送信を行わないことを、
特徴とする無線通信システムで用いられる装置。
【請求項６】
無線回線を介して他の装置と通信する無線通信システムで用いられる装置の実現に用いられるプログラムが格納されるプログラム記録媒体であって、
自装置から、自装置を送信先装置として指定するデータの送信要求が発行されたのか否かを監視する監視処理と、
上記送信要求の発行が検出されるときに、データの受信先となるプロセスを生成するとともに、該プロセスに対応付けてバッファを生成する生成処理と、
バーチャルサーキット型通信に従って、上記データの送信要求発行元から上記プロセスにデータ転送を行って上記バッファに格納することで、そのバーチャルサーキット型通信の通信プロトコルを終端させる転送処理と、
無線回線が切断されるときに、該切断時点での送信データのシーケンス番号を特定する特定処理と、
上記バッファに格納されるデータの送信に先立って、無線回線のレイヤ層より上位のレイヤ層で指定すべき送信先情報を送信することで、その送信対象のデータを無線回線を介して他の装置に送信するとともに、無線回線が再接続されるときに、上記特定処理で特定したシーケンス番号からデータ送信を再開する送信処理とをコンピュータに実行させるプログラムが格納されることを、
特徴とするプログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、無線回線を介して他の装置と通信する無線通信システムで用いられる装置と、その装置の実現に用いられるプログラムが格納されるプログラム記録媒体とに関し、特に、エンド・エンド間でのデータ通信のスループットの向上を実現する無線通信システムで用いられる装置と、その装置の実現に用いられるプログラムが格納されるプログラム記録媒体とに関する。
【０００２】
最近、携帯端末が、無線回線を介して公衆網に接続されるゲートウェイと接続して、そのゲートウェイを介して、インターネットに接続されるサーバなどと通信していくことが広く行われている。
【０００３】
このような場合、無線回線が不安定な回線であることから、エンド・エンド間でのデータ通信のスループットの低下が避けられない。これから、このエンド・エンド間でのデータ通信のスループットの向上を実現する技術の構築が叫ばれている。
【０００４】
【従来の技術】
一般に、コンピュータネットワークでは、電話のように、先ず最初に、目的のノードに対して呼（Ｃｏｎｎｅｃｔｉｏｎ）を設定してから、その呼に対してデータの送受信を行い、その後で、その呼を解除するというバーチャルサーキット型の通信を用いている。
【０００５】
このバーチャルサーキット型の通信では、通信するエンド・エンド間で、再送制御やエラー回復や順序制御や流量制御や混雑制御などの制御が行われることで、呼の信頼性が保証され、送信した情報が失われたり変化したりすることなく、受信側で正しい順番のデータが得られることを実現している。
【０００６】
従来では、図３４に示すように、通信するエンド・エンド間に、無線回線が介在する場合にも、このバーチャルサーキット型の通信に従って、エンド・エンド間でデータを通信するという構成を採っている。
【０００７】
【発明が解決しようとする課題】
しかしながら、このような従来技術に従っていると、不安定な回線である無線回線により、エンド・エンド間でのデータ通信のスループットが大きく低下するのを避けられない。
【０００８】
すなわち、図３５に示すように、無線回線のデータリンク層（無線回線は物理層とデータリンク層という２つのレイヤ層からなる）のプロトコルでも、上位層のプロトコルとは別に、相手に確実にデータを転送するための機構として、再送制御やエラー制御が行われている。
【０００９】
この場合、例えば、インターネットで一般に使われているトランスポート層のＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を例に挙げると、送信ノードは受信ノードまでのラウンドトリップ時間（ＲＴＴ）を測定し、その時間を基に再送制御に使うタイマ時間を設定する。この設定したタイマ時間内に、受信ノードから受信確認応答（ＡＣＫ）が返ってこないと、再度、データを送り直すことをしてデータの信頼性を保証している。
【００１０】
このとき、エンド・エンド間に不安定な無線回線があり、その無線回線で行われるデータリンク層の再送が発生すると、その再送時間がＴＣＰでの再送タイマ時間に加味され、それにより長いタイマ時間が設定されてしまうことになる。これから、ＴＣＰでのセグメントデータが喪失された場合に、直ぐに再送が起こらず、エンド・エンド間でのデータ通信のスループットが大きく低下する。
【００１１】
更に、ＴＣＰでは、再送のときに、再送原因が輻輳にあると見なして、輻輳を抑止するためのスロースタートの制御を行う。すなわち、通常は、複数のセグメントデータをまとめて先送りするウィンドウ制御を行っているが、再送を開始するときには、この大きさを最小単位にして輻輳となる原因をなくすようにと通信を開始する。これから、安定状態に比べてＡＣＫの発生率が増え、エンド・エンド間でのデータ通信のスループットが大きく低下する。
【００１２】
無線回線が不安定な回線であることを考慮して、特開平９−２１９８８０  号では、無線通信システムを構成する移動端末やサーバにバッファメモリを備える構成を採って、無線回線の切り替え時や無線回線が切断されそうなレベル状態にあるときに、無線回線に送出するデータをそのバッファメモリに一時的に蓄えて、無線回線が切り替わった後やレベル状態が復帰するときに、そのバッファメモリに蓄えておいたデータからデータ通信を再開するという技術が開示されている。
【００１３】
しかしながら、この先行技術では、上位レイヤ層のプロトコルについて考慮しておらず、これから、上位レイヤ層であるトランスポート層にＴＣＰのような再送制御があると、無線回線を含んで再送タイマを設定するといった制御が働くことで、エンド・エンド間でのデータ通信のスループットが大きく低下するのを避けられない。
【００１４】
本発明はかかる事情に鑑みてなされたものであって、無線回線を介して他の装置と通信する構成を採るときにあって、エンド・エンド間でのデータ通信のスループットの向上を実現する新たな無線通信システムで用いられる装置の提供と、その装置の実現に用いられるプログラムが格納される新たなプログラム記録媒体の提供とを目的とする。
【００１５】
【課題を解決するための手段】
図１に本発明の原理構成を図示する。
図中、１は本発明を具備する送信側装置、２は本発明を具備する送信側装置１と通信を行う受信側装置である。本発明の送信側装置１は、無線回線を介して、受信側装置２と通信する。
【００１６】
本発明の送信側装置１は、監視手段１０と、生成手段１１と、プロセス１２と、バッファ１３と、転送手段１４と、送信手段１５と、検出手段１６と、特定手段１７と、キャッシュメモリ１８と、検索手段１９とを備える。
【００１７】
監視手段１０は、自装置から、自装置を送信先装置として指定するデータの送信要求が発行されたのか否かを監視する。生成手段１１は、監視手段１０が自装置を送信先装置として指定するデータの送信要求の発行を検出するときに、データの受信先となるプロセス１２を生成するとともに、そのプロセス１２に対応付けてバッファ１３を生成する。
【００１８】
転送手段１４は、バーチャルサーキット型通信に従って、送信要求発行元からプロセス１２にデータ転送を行ってバッファ１３に格納する。送信手段１５は、バッファ１３に格納されるデータを無線回線を介して他の装置に送信する。検出手段１６は、バッファ１３のデータ格納状態を検出する。
【００１９】
特定手段１７は、無線回線が切断されるときに、切断時点での送信データのシーケンス番号を特定する。キャッシュメモリ１８は、送信手段１５のデータ送信に応答して返答されるデータを格納する。検索手段１９は、送信要求発行元の要求するデータがキャッシュメモリ１８に登録されているのか否かを検索する。
【００２０】
一方、受信側装置２は、受信手段２０と、監視手段２１と、生成手段２２と、プロセス２３と、転送手段２４と、キャッシュメモリ２５と、検索手段２６とを備える。
【００２１】
受信手段２０は、無線回線を介して送られてくるデータを受信する。監視手段２１は、受信手段２０が無線回線のレイヤ層で切断されたプロトコルに従うデータを受信したのか否かを監視する。
【００２２】
生成手段２２は、監視手段２１が該当するデータの受信を検出するときに、そのデータの受信先となるプロセス２３を生成する。転送手段２４は、バーチャルサーキット型通信に従って、プロセス２３の受信するデータを送信要求先にデータ転送する。
【００２３】
キャッシュメモリ２５は、転送手段２４のデータ転送に応答して返答されるデータを格納する。検索手段２６は、無線回線を介して送られてきたデータの要求するデータがキャッシュメモリ２５に登録されているのか否かを検索する。
【００２４】
ここで、本発明の送信側装置１の持つ機能は、具体的にはプログラムで実現されるものであり、このプログラムは、フロッピィディスクなどに格納されたり、サーバなどのディスクなどに格納され、それらから送信側装置１にインストールされてメモリ上で動作することで、本発明を実現することになる。
【００２５】
このように構成される本発明の送信側装置１では、監視手段１０が、自装置から、自装置を送信先装置として指定するデータの送信要求が発行されたことを検出すると、生成手段１１は、データの受信先となるプロセス１２を生成するとともに、そのプロセス１２に対応付けてバッファ１３を生成する。
【００２６】
この生成手段１１の生成処理を受けて、転送手段１４は、バーチャルサーキット型通信に従って、送信要求発行元からプロセス１２にデータ転送を行ってバッファ１３に格納し、これ受けて、送信手段１５は、バッファ１３に格納されるデータを無線回線を介して他の装置に送信する。
【００２７】
このとき、自装置が送信先装置として指定されることで、本来の送信先の装置が指定されていないので、送信手段１５は、例えば、送信要求先とそれを展開する装置のアドレスとの対応関係を管理するファイルを参照することで、本来の送信先の装置のアドレスを得てそれを送信するというように、無線回線のレイヤ層より上位のレイヤ層で指定すべき送信先情報を送信する。
この構成により、データの送信要求発行元にとっては、あたかも送信先がそこにあるかのように見えるプロキシーとして動作することになる。
このように動作するときにあって、無線回線が切断すると、特定手段１７が無線回線の切断時点での送信データのシーケンス番号を特定するので、送信手段１５は、無線回線が再接続されるときに、その特定されたシーケンス番号からデータ送信を再開することで、相手が受信したデータを重複して無線回線上に送信することを避けるように制御する。
【００２８】
このように、本発明の送信側装置１では、図２に示すように、トランスポート層で行われるデータ保証の再送制御を無線回線の手前で終端させ、不安定な無線回線のデータ転送については、その無線回線のデータリンク層のプロトコルを利用して行うことで、エンド・エンド間でのデータ通信のスループットの向上を実現する。
【００２９】
この構成を採るときにあって、検出手段１６が、バッファ１３が溢れそうになることを検出すると、転送手段１４は、バーチャルサーキット型通信の通信速度が遅くなるようにと制御することで、バッファ１３が溢れないようにと制御する。
【００３１】
また、送信手段１５は、複数のバッファ１３が同時に生成されるときにあって、それらのバッファ１３に設定される優先度に従い、優先度の高いバッファ１３から順番にデータを送信したり、優先度の高いバッファ１３の送信周期を短く設定しつつデータを送信することがある。
【００３２】
また、検索手段１９が、送信要求発行元の要求するデータがキャッシュメモリ１８に登録されていることを検索すると、送信手段１５による送信処理を行うことなく、直ちに、その検索されたデータが送信要求発行元に通知されることになる。
【００３３】
一方、このように構成される受信側装置２では、受信手段２０が無線回線のレイヤ層で切断されたプロトコルに従うデータを受信すると、生成手段２２は、そのデータの受信先となるプロセス２３を生成する。
【００３４】
この生成手段２２の生成処理を受けて、転送手段２４は、バーチャルサーキット型通信に従って、生成されたプロセス２３の受信するデータを送信要求先にデータ転送する。
【００３５】
このように、受信側装置２では、トランスポート層で行われるデータ保証の再送制御を無線回線の手前で終端させ、不安定な無線回線のデータ転送については、その無線回線のデータリンク層のプロトコルを利用して行う本発明の送信側装置１の送信するデータを受信することで、エンド・エンド間でのデータ通信のスループットの向上を実現する。
【００３６】
この構成を採るときにあって、検索手段２６が、送信要求発行元の要求するデータがキャッシュメモリ２５に登録されていることを検索すると、送信要求先にデータ転送することなく、直ちに、その検索されたデータが送信要求発行元に通知されることになる。
【００３７】
このように、本発明によれば、トランスポート層で行われるデータ保証の再送制御を無線回線の手前で終端させ、不安定な無線回線のデータ転送については、その無線回線のデータリンク層のプロトコルを利用して行うことで、エンド・エンド間でのデータ通信のスループットの向上を実現できるようになる。
【００３８】
そして、本発明によれば、データの送信要求発行元にとっては、あたかも送信先がそこにあるかのように見えるプロキシーとして動作することを実現できるようになる。
そして、本発明によれば、この実現にあたって、無線回線に切断が発生し、それが再接続されるときにあって、相手が受信したデータを重複して無線回線上に送信することを避けることができるようになる。
【００３９】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
ここで、以下に説明する実施例では、インターネットで一般に使われているトランスポート層のＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）と、ネットワーク層のＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）とを用いることを想定している。
【００４０】
図３に、本発明を具備する情報システムの一実施例を図示する。
図中、３０はクライアントであって、アプリケーションプログラム３００を展開してサービス要求を発行するもの、４０はサーバであって、サービスプログラム４００を展開し、無線回線を介してクライアント３０と接続されて、クライアント３０にサービスを提供するものである。なお、この実施例では、クライアント３０とサーバ４０とが１対１に通信することを想定している。
【００４１】
クライアント３０は、携帯電話とデータ通信アダプタとから構成される無線機３０１と、無線機３０１を接続するインタフェースを介してデータを送信する送信ルーチン３０２と、無線機３０１を接続するインタフェースを介してデータを受信する受信ルーチン３０３と、ＴＣＰで指定されるポート番号（サービスプログラム４００を指定するもの）を監視するデーモンプログラム３０４と、アプリケーションプログラム３００が「サービスプログラム名（あるいはポート番号）、ｌｏｃａｌｈｏｓｔ  」を宛先として指定してサービス要求を発行するときに生成されて、アプリケーションプログラム３００との間に張られるソケットを使い、バーチャルサーキット型通信に従って、アプリケーションプログラム３００の発行するデータを受け取る子プロセス３０５と、子プロセス３０５に対応付けて生成されて、子プロセス３０５の受け取るデータを格納するバッファ３０６とを備える。
【００４２】
ここで、「ｌｏｃａｌｈｏｓｔ  」は、自装置のＩＰアドレス（ＩＰで指定されるノードのアドレス）を示しており、「サービスプログラム名（あるいはポート番号）、ｌｏｃａｌｈｏｓｔ  」は、自装置に展開されるサービスプログラム４００（本来は展開されていない）を宛先として指定することを意味している。
【００４３】
一方、サーバ４０は、携帯電話とデータ通信アダプタとから構成される無線機無線機４０１と、無線機４０１を接続するインタフェースを介してデータを受信する受信ルーチン４０２と、無線機４０１を接続するインタフェースを介してデータを送信する送信ルーチン４０３と、受信ルーチン４０２が自装置を宛先とするとともに、無線回線のレイヤ層で切断されたプロトコルに従うデータを受信したのか否かを監視するデーモンプログラム４０４と、デーモンプログラム４０４が該当するデータの受信を検出するときに生成されて、サービスプログラム４００との間に張られるソケットを使い、バーチャルサーキット型通信に従って、クライアント３０から送られてくるデータをサービスプログラム４００に転送する子プロセス４０５と、子プロセス４０５の受け取る宛先ポート番号を監視して、その宛先ポート番号の指すサービスプログラム４００を起動するサービスデーモンプログラム４０６とを備える。
【００４４】
なお、図示していないが、受信側となるサーバ４０にも、受信ルーチン４０２に対応付けてバッファが設けられることになるが、このバッファはデータ転送の速度差を吸収するために設けられるものではなくて、単なるメモリ渡しのために設けられることになる。
【００４５】
ここで、クライアント３０やサーバ４０に展開されるプログラムは、フロッピィディスクなどに格納されたり、サーバなどのディスクなどに格納され、それらからインストールされることになる。
【００４６】
ＴＣＰを用いる場合、送信元ポート番号と宛先ポート番号とを指定することで、送信側のプログラムと受信側のプログラムとを接続する構成を採る。
これから、このように構成される図３の実施例では、クライアント３０は、デーモンプログラム３０４を走らせることでポートを監視して、アプリケーションプログラム３００からの接続要求を待つ。
【００４７】
この状態にあるときに、図中の「１」に示すように、アプリケーションプログラム３００が起動されると、アプリケーションプログラム３００は、サーバ４０の提供するサービスが必要となるときには、サービスプログラムを示すポート番号とともに、自装置への接続を指示する「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行するので、デーモンプログラム３０４は、図中の「２」に示すように、ポートを監視することで、この「ｌｏｃａｌｈｏｓｔ  」を指定するサービス要求が発行されたのか否かを監視する。
【００４８】
デーモンプログラム３０４は、アプリケーションプログラム３００から「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求が発行されることを検出すると、サーバ４０へのデータ転送を行うために、図中の「３」に示すように、データ転送の仲介処理を実行する子プロセス３０５を生成するとともに、それに対応付けてバッファ３０６を生成する。この子プロセス３０５及びバッファ３０６は、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【００４９】
子プロセス３０５が生成されると、アプリケーションプログラム３００は、図中の「４」に示すように、子プロセス３０５との間にソケットコネクションを確立して、バーチャルサーキット型通信を使って、サーバ４０に転送するデータを子プロセス３０５に転送する。これを受けて、子プロセス３０５は、図中の「５」に示すように、無線機３０１に回線接続の指示を与えることで無線回線を接続するとともに、アプリケーションプログラム３００から転送されてくるデータをバッファ３０６に格納し、これを受けて、送信ルーチンは、そのバッファ３０６に格納されるデータを無線機３０１に送出する。
【００５０】
従来であれば、クライアント３０のアプリケーションプログラム３００は、サーバ４０のサービスデーモンプログラム４０６に対して、サービス要求先となるサービスプログラム４００を指定してサービス要求を発行するのに対して、本発明では、自装置のＩＰアドレスとなる「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行することで、不安定な要因のないバーチャルサーキット型通信に従って、サーバ４０に転送するデータをクライアント３０内のバッファ３０６に格納するように処理する。
【００５１】
このように、本発明を具備するクライアント３０は、トランスポート層で行われるデータ保証の再送制御を、無線回線の手前で一度終端させる構成を採るのである。
【００５２】
子プロセス３０５からの転送指示を受け取ると、無線機３０１は、無線回線のデータリンク層での再送制御などを行いながら、無線回線に従って、送信ルーチンの送出処理により送られてくるバッファ３０６のデータをサーバ４０に送信する。
【００５３】
この無線回線による送信処理は、無線回線が不安定な回線であることから送信速度が遅くなり、これから、アプリケーションプログラム３００から子プロセス３０５への高速なデータ転送速度との速度差を吸収するために、バッファ３０６を設ける構成を採るのである。
【００５４】
上述したように、従来であれば、クライアント３０のアプリケーションプログラム３００は、サーバ４０のサービスデーモンプログラム４０６に対して、サービス要求先となるサービスプログラム４００を指定してサービス要求を発行するのに対して、本発明では、自装置のＩＰアドレスとなる「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行することで、ＴＣＰ／ＩＰを無線回線の手前で終端させている。従って、そのままでは、サーバ４０はサービスプログラム４００を起動できない。
【００５５】
すなわち、ＴＣＰ／ＩＰが終端されなければ、無線回線のレイヤ層のヘッダに包まれて、ＴＣＰ／ＩＰで指定されたポート番号やＩＰアドレスがサーバ４０に通知されることになるのに対して、ＴＣＰ／ＩＰが無線回線の手前で終端されてしまうと、ＴＣＰ／ＩＰで指定されたポート番号やＩＰアドレスがサーバ４０に通知されないことで、サーバ４０はサービスプログラム４００を起動できないことになる。
【００５６】
そこで、サーバ４０に対するサービス要求にあたって、クライアント３０は、図４に示すように、データの送信に先立って、アプリケーションプログラム３００の指定するポート番号と、アプリケーションプログラム３００のセッション番号（Ｓｎ）と、アプリケーションプログラム３００の指定するＩＰアドレスとをサーバ４０に送り、それに続いて、データを送信していくように処理することになる。
【００５７】
ここで、セッション番号は、アプリケーションプログラム３００毎に割り付けられる番号で、異なるアプリケーションプログラム３００から同一のポート番号の指すサービスプログラム４００に対してサービス要求が発行されるときに、それを識別するために割り付けられることになる。なお、セッション番号はデーモンプログラム３０４が割り付け、ポート番号はＯＳが割り付けていくことになる。
【００５８】
一方、サーバ４０の側では、デーモンプログラム４０４は、図中の「６」に示すように、受信ルーチン４０２が自装置を宛先とするとともに、無線回線のレイヤ層で切断されたプロトコルに従うデータ（すなわち、クライアント３０の送信するデータ）を受信したのか否かを監視する。受信ルーチン４０２が該当するデータの受信を検出すると、デーモンプログラム４０４は、サービスプログラム４００へのデータ転送を行うために、図中の「７」で示すように、受信ルーチン４０２の受信するデータを受け取る子プロセス４０５を生成する。
【００５９】
ここで、子プロセス４０５は、クライアント３０の子プロセス３０５と同様に、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【００６０】
このようにして生成されると、子プロセス４０５は、クライアント３０から送られてくるポート番号の指すサービスデーモンプログラム４０６（ポート番号の指すサービスプログラム４００を起動するもの）に対して、図中の「８」に示すように接続要求を発行し、これに応答して、図中の「９」に示すように、サービスデーモンプログラム４０６は、アプリケーションプログラム３００のサービス要求先となるサービスプログラム４００を起動する。
【００６１】
この起動を受けて、子プロセス４０５は、図中の「１０」に示すように、起動されたサービスプログラム４００との間にソケットコネクションを確立して、バーチャルサーキット型通信を使って、クライアント３０から送られてくるデータをサービスプログラム４００に転送する。
【００６２】
このようにして、本発明を具備するサーバ４０は、クライアント３０により送られてくるデータを受信していくのである。
図３の実施例では、クライアント３０がサービス要求を発行して、これをサーバ４０に通知していくときの処理について説明したが、このサービス要求に応答してサービスプログラム４００がサービスを実行して、そのサービス結果をアプリケーションプログラム３００に返信していく場合には、図３で説明したクライアント３０の送信処理がサーバ４０で実行され、図３で説明したサーバ４０の受信処理がクライアント３０で実行されることになる。
【００６３】
次に、このように構成される図３の実施例で実行される図５ないし図１４の処理フローについて説明する。
ここで、図５はクライアント３０の実行する全体的な処理フローの一実施例、図６はクライアント３０の書込ルーチンの実行する処理フローの一実施例、図７はクライアント３０の送信ルーチン３０２の実行する処理フローの一実施例、図８はクライアント３０の受信ルーチン３０３の実行する処理フローの一実施例、図９はクライアント３０の読取ルーチンの実行する処理フローの一実施例、図１０はサーバ４０の実行する全体的な処理フローの一実施例、図１１はサーバ４０の受信ルーチン４０２の実行する処理フローの一実施例、図１２はサーバ４０の読取ルーチンの実行する処理フローの一実施例、図１３はサーバ４０の書込ルーチンの実行する処理フローの一実施例、図１４はサーバ４０の送信ルーチン４０３の実行する処理フローの一実施例である。
【００６４】
クライアント３０は、図５の処理フローに示すように、先ず最初に、ステップ１で、初期化処理を行い、ソケットを用意する。続いて、ステップ２で、送信スレッドとなる送信ルーチン３０２を起動し、続くステップ３で、受信スレッドとなる受信ルーチン３０３を起動する。
【００６５】
続いて、ステップ４で、「ｌｏｃａｌｈｏｓｔ  」を指定するポートへの接続要求が発行されるのを待って、発行されると、ステップ５に進んで、子プロセス３０５とバッファ３０６とを生成する。
【００６６】
子プロセス３０５を生成すると、ステップ６で示すように、アプリケーションプログラム３００と子プロセス３０５との間にソケットを張る。続いて、ステップ７で、ソケットに対応するセッション番号を取得して記憶する。続いて、ステップ８で、無線回線が接続済みであるのか否かを判断して、未接続であることを判断するときには、ステップ９に進んで、無線回線を接続する。
【００６７】
続いて、ステップ１０で、ポート番号情報にセッション番号を付加した制御パケットにしてバッファ３０６に書き出す。続いて、ステップ１１で、書込ルーチン（バッファ３０６への書込処理を実行するものであって、例えば、バッファ３０６対応に用意される）に従って、ソケットから送られてくるデータをバッファ３０６に書き込むとともに、送信ルーチン３０２に従って、バッファ３０６に格納されるデータを無線回線を介してサーバ４０に送信する。
【００６８】
ここで、クライアント３０が受信側となるときには、ステップ１２で示すように、受信ルーチン３０３に従って、上述したメモリ渡しのバッファにデータを受信していくとともに、読取ルーチン（メモリ渡しのバッファからの読取処理を実行するものであって、例えば、メモリ渡しのバッファ対応に用意される）に従って、そのメモリ渡しのバッファからデータを読み出してソケットに投入していくことになる。
【００６９】
続いて、ステップ１３で、全通信が終了したのか否かを判断して、全通信が終了していないことを判断するときには、無線回線を切断することなく、このセッションの処理を終了し、全通信が終了することを判断するときには、無線回線を切断してから処理を終了する。
【００７０】
このとき実行する書込ルーチンの処理について説明するならば、図６の処理フローに示すように、ソケットからデータを読み出して、該当するセッション番号を含むヘッダを付加し、それをバッファ３０６に書き込む。そして、ソケットが存続するのか否かを判断して、ソケットが存続することを判断するときには、データがあるのか否かを判断して、データがあることを判断するときには、ソケットからデータを読み出していくことで行う。
【００７１】
また、このとき実行する送信ルーチン３０２の処理について説明するならば、図７の処理フローに示すように、バッファ３０６にデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、バッファ３０６からデータを読み出して無線回線に送信し、このとき、無線回線が切断しているときには、再接続後に再送を行い、無線回線が切断していないときには、バッファ３０６から送信したデータをクリアしていくことで行う。
【００７２】
また、クライアント３０が受信側となるときに動作する受信ルーチン３０３の処理について説明するならば、図８の処理フローに示すように、無線回線からのデータがあるのか否かを判断して、あることを判断するときには、データを読み出し、上述したメモリ渡しの受信バッファに書き出す。そして、無線回線が切断されたのか否かを判断して、切断された場合には、再接続していくことで、無線回線からのデータの読み出しを実行していく。
【００７３】
また、クライアント３０が受信側となるときに動作する読取ルーチンの処理について説明するならば、図９の処理フローに示すように、上述したメモリ渡しの受信バッファにデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、メモリ渡しの受信バッファからデータを読み出し、ヘッダを取り外す。そして、そのヘッダからデータが制御パケットであるのか否かを判断して、制御パケットであることを判断するときには、制御パケットの指定する制御情報を処理し、制御パケットでないことを判断するとき、すなわち、通信データであることを判断するときには、セッション番号の指すソケットへデータを送出する。そして、この処理をソケットが存続する間実行することで行う。
【００７４】
一方、サーバ４０は、クライアント３０からのデータ送信を受けて、図１０の処理フローに示すように、先ず最初に、ステップ１で、初期化処理を行い、ソケットを用意する。続いて、ステップ２で、無線回線への着信を待って、無線回線への着信を検出すると、ステップ３に進んで、送信スレッドとなる送信ルーチン４０３を起動し、続くステップ４で、受信スレッドとなる受信ルーチン４０２を起動する。
【００７５】
続いて、ステップ５で、上述したメモリ渡しの受信バッファにポート番号情報が格納されるのを待って、格納されない場合には、ステップ６に進んで、無線回線を切断し、格納される場合には、ステップ７に進んで、セッション番号対応に子プロセス４０５を生成する。
【００７６】
子プロセス４０５を生成すると、ステップ８で示すように、ポート番号に従って、サービス要求先のサービスプログラム４００と子プロセス４０５との間にソケットを張る。続いて、ステップ９で、ソケットとセッション番号との対応関係を記憶する。
【００７７】
続いて、ステップ１１で、受信ルーチン４０２に従って、無線回線を介して送られてくるデータを受信して上述したメモリ渡しのバッファに格納していくとともに、読取ルーチン（メモリ渡しのバッファからの読取処理を実行するものであって、例えば、メモリ渡しのバッファ対応に用意される）に従って、そのメモリ渡しのバッファからの読み出しを実行して、ソケットに投入することでサービスプログラム４００に転送する。
【００７８】
ここで、サーバ４０が送信側となるときには、ステップ１０で示すように、書込ルーチンに従って、クライアント３０のバッファ３０６に相当するバッファ（書込ルーチンは、例えば、このバッファ対応に用意される）への書込処理を実行するとともに、送信ルーチン４０３に従って、そのバッファに格納されるデータを無線回線を介してクライアント３０に送信する。
【００７９】
そして、最後に、ステップ１２で、ソケットを解放して処理を終了する。
このとき実行する受信ルーチン４０２の処理について説明するならば、図１１の処理フローに示すように、無線回線が切断されているのか否かを判断して、無線回線が切断されていることを判断するときには、再接続タイマを起動し、その再接続タイマの設定時間内に再接続ができたのか否かを判断して、再接続できたことを判断するときには再接続タイマを停止する。すなわち、無線回線が切断するときには、送信側であるクライアント３０の方で再接続を試行するので、その試行を待つのである。そして、無線回線が切断されていないときには、無線回線からのデータを受信して、上述したメモリ渡しの受信バッファに書き出していくことで行う。
【００８０】
また、このとき実行する読取ルーチンの処理について説明するならば、図１２の処理フローに示すように、メモリ渡しの受信バッファにデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、メモリ渡しの受信バッファからデータを読み出し、ヘッダを取り外す。そして、そのヘッダからデータが制御パケットであるのか否かを判断して、制御パケットであることを判断するときには、制御パケットの指定する制御情報を処理し、制御パケットでないことを判断するとき、すなわち、通信データであることを判断するときには、セッション番号の指すソケットへデータを送出する。そして、この処理をソケットが存続する間実行することで行う。
【００８１】
また、サーバ４０が送信側となるときに動作する書込ルーチンの処理について説明するならば、図１３の処理フローに示すように、ソケットからデータを読み出して、該当するセッション番号を含むヘッダを付加し、それをクライアント３０のバッファ３０６に相当するバッファに書き込む。そして、ソケットが存続するのか否かを判断して、存続することを判断するときには、続けて、ソケットからデータを読み出していくことで行う。
【００８２】
また、サーバ４０が送信側となるときに動作する送信ルーチン４０３の処理について説明するならば、図１４の処理フローに示すように、クライアント３０のバッファ３０６に相当するバッファにデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、そのバッファからデータを読み出して無線回線に送信し、このとき、無線回線が切断しているときには、再接続タイマがタイムオーバーしないことを条件にしつつ再接続を行って再送を行い、無線回線が切断していないときには、そのバッファから送信したデータをクリアしていくことで行う。
次に、図１５に示す本発明を具備する情報システムの他の実施例について説明する。
【００８３】
この実施例と図３の実施例との違いは、図３の実施例では、無線の着信先がサーバ４０であり、そこにサービスプログラム４００が展開されているのに対して、この実施例では、無線の着信先がゲートウェイ５０で、サービスプログラム４００を展開するサーバ４０は、このゲートウェイ５０にインターネット６０を介して接続されている点にある。
【００８４】
この構成の違いにより、ゲートウェイ５０は、無線機５０１と、受信ルーチン５０２と、送信ルーチン５０３と、受信ルーチン５０２が無線回線のレイヤ層で切断されたプロトコルに従うデータ（すなわち、クライアント３０の送信するデータ）を受信したのか否かを監視するデーモンプログラム５０４と、デーモンプログラム５０４が該当するデータの受信を検出するときに生成されて、サービスプログラム４００との間に張られるソケットを使い、バーチャルサーキット型通信に従って、クライアント３０から送られてくるデータをサービスプログラム４００に転送する子プロセス５０５とを備える。
【００８５】
一方、サーバ４０は、子プロセス５０５の受け取る宛先ポート番号を監視して、その宛先ポート番号の指すサービスプログラム４００を起動するサービスデーモンプログラム４０６を備える。
【００８６】
そして、更に、クライアント３０は、ポート番号とＩＰアドレスとの対応関係を管理する設定ファイル３０７を備えたり、ゲートウェイ５０は、ポート番号とＩＰアドレスとの対応関係を管理する設定ファイル５０６を備える。
【００８７】
このように構成される図１５の実施例では、クライアント３０は、デーモンプログラム３０４を走らせることでポートを監視して、アプリケーションプログラム３００からの接続要求を待つ。
【００８８】
この状態にあるときに、図中の「１」に示すように、アプリケーションプログラム３００が起動されると、アプリケーションプログラム３００は、サーバ４０の提供するサービスが必要となるときには、サービスプログラムを示すポート番号とともに、自装置への接続を指示する「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行するので、デーモンプログラム３０４は、図中の「２」に示すように、ポートを監視することで、この「ｌｏｃａｌｈｏｓｔ  」を指定するサービス要求が発行されたのか否かを監視する。
【００８９】
デーモンプログラム３０４は、アプリケーションプログラム３００から「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求が発行されることを検出すると、サーバ４０へのデータ転送を行うために、図中の「３」に示すように、データ転送の仲介処理を実行する子プロセス３０５を生成するとともに、それに対応付けてバッファ３０６を生成する。この子プロセス３０５及びバッファ３０６は、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【００９０】
子プロセス３０５が生成されると、アプリケーションプログラム３００は、図中の「４」に示すように、子プロセス３０５との間にソケットコネクションを確立して、バーチャルサーキット型通信を使って、サーバ４０に転送するデータを子プロセス３０５に転送する。これを受けて、子プロセス３０５は、図中の「５」に示すように、無線機３０１に回線接続の指示を与えることで無線回線を接続するとともに、アプリケーションプログラム３００から転送されてくるデータをバッファ３０６に格納し、これを受けて、送信ルーチンは、そのバッファ３０６に格納されるデータを無線機３０１に送出する。
【００９１】
このとき、「ｌｏｃａｌｈｏｓｔ  」が指定されていることで、インターネット６０の先に接続されているサーバ４０のＩＰアドレスを知ることができないので、子プロセス３０５は、図中の「６」に示すように、指定されるポート番号を検索キーにして設定ファイル３０７を参照することで、サーバ４０のＩＰアドレスを得る。
【００９２】
子プロセス３０５からの転送指示を受け取ると、無線機３０１は、無線回線のデータリンク層での再送制御などを行いながら、無線回線に従って、送信ルーチンの送出処理により送られてくるバッファ３０６のデータをサーバ４０に送信する。
【００９３】
上述したように、従来であれば、クライアント３０のアプリケーションプログラム３００は、サーバ４０のサービスデーモンプログラム４０６に対して、サービス要求先となるサービスプログラム４００を指定してサービス要求を発行するのに対して、本発明では、自装置のＩＰアドレスとなる「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行することで、ＴＣＰ／ＩＰを無線回線の手前で終端させている。従って、そのままでは、サーバ４０はサービスプログラム４００を起動できない。
【００９４】
そこで、サーバ４０に対するサービス要求にあたって、送信ルーチン３０２は、図１６に示すように、例えば、データの送信に先立って、設定ファイル３０７から得られるサーバ４０のＩＰアドレスをゲートウェイ５０に送るとともに、アプリケーションプログラム３００の指定するポート番号と、アプリケーションプログラム３００のセッション番号（Ｓｎ）とをゲートウェイ５０に送り、続いて、データを送信していくように処理することになる。
【００９５】
一方、ゲートウェイ５０の側では、デーモンプログラム５０４は、図中の「７」に示すように、受信ルーチン５０２が無線回線のレイヤ層で切断されたプロトコルに従うデータ（すなわち、クライアント３０の送信するデータ）を受信したのか否かを監視する。受信ルーチン５０２が該当するデータの受信を検出すると、デーモンプログラム５０４は、サービスプログラム４００へのデータ転送を行うために、図中の「８」で示すように、受信ルーチン５０２の受信するデータを受け取る子プロセス５０５を生成する。
【００９６】
ここで、子プロセス５０５は、クライアント３０の子プロセス３０５と同様に、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【００９７】
このようにして生成されると、子プロセス５０５は、クライアント３０から送られてくるＩＰアドレスの指すサーバ４０に対して、クライアント３０から送られてくるポート番号の指すサービスデーモンプログラム４０６を指定しつつ、図中の「１０」に示すように接続要求を発行し、これに応答して、図中の「１１」に示すように、サービスデーモンプログラム４０６は、アプリケーションプログラム３００のサービス要求先となるサービスプログラム４００を起動する。
【００９８】
ここで、クライアント３０からＩＰアドレスが送られてこないときには、ゲートウェイ５０の子プロセス５０５は、クライアント３０から通知されるポート番号を検索キーにして設定ファイル５０６を参照することで、サーバ４０のＩＰアドレスを得ることになる。
【００９９】
このサービスプログラム４００の起動を受けて、子プロセス５０５は、図中の「１２」に示すように、起動されたサービスプログラム４００との間にソケットコネクションを確立して、バーチャルサーキット型通信を使って、クライアント３０から送られてくるデータをサービスプログラム４００に転送する。
【０１００】
このようにして、本発明を具備するサーバ４０は、クライアント３０により送られてくるデータを受信していくのである。
図１５の実施例では、クライアント３０がサービス要求を発行して、これをサーバ４０に通知していくときの処理について説明したが、このサービス要求に応答してサービスプログラム４００がサービスを実行して、そのサービス結果をアプリケーションプログラム３００に返信していく場合には、図１５で説明したクライアント３０の送信処理がサーバ４０で実行され、図１５で説明したサーバ４０の受信処理がクライアント３０で実行されることになる。
【０１０１】
図１７に、図１５の実施例に従う場合のクライアント３０の実行する全体的な処理フローの一実施例、図１８に、図１５の実施例に従う場合のゲートウェイ５０の実行する全体的な処理フローの一実施例を図示する。
【０１０２】
図１７の処理フローと図５の処理フローとの違いは、図１７の処理フローは、図５の処理フローのステップ８，９とステップ１０との間に、ステップαという処理を持つ点である。このステップαでは、設定ファイル３０７を参照することでサーバ４０のＩＰアドレスを得て、それをバッファ３０６に書き出す処理を行う。
【０１０３】
また、図１８の処理フローと図１０の処理フローとの違いは、図１８の処理フローはゲートウェイ５０が実行し、図１０の処理フローはサーバ４０が実行するという他に、実質的な違いとして、図１８の処理フローは、図１０の処理フローのステップ７とステップ８との間に、ステップαという処理を持つ点である。このステップαでは、クライアント３０から送られてくるサーバ４０のＩＰアドレスを受信する処理を実行するか、クライアント３０からサーバ４０のＩＰアドレスが送られてこないときに、設定ファイル５０６を参照することでサーバ４０のＩＰアドレスを得る処理を行う。
【０１０４】
上述したように、本発明では、トランスポート層で行われるデータ保証の再送制御を、無線回線の手前で一度終端させる構成を採ることで、エンド・エンド間でのデータ通信のスループットの向上を実現する構成を採っている。この構成を実現するために、アプリケーションプログラム３００は、上述したように、自装置のＩＰアドレスとなる「ｌｏｃａｌｈｏｓｔ  」を指定してサービス要求を発行する。
【０１０５】
このようなサービス要求の発行方法に対して、図１５の実施例では、ポート番号とＩＰアドレスとの対応関係を管理する、クライアント３０の設定ファイル３０７やゲートウェイ５０の設定ファイル５０６を使って、サーバ４０の特定に必要となるＩＰアドレスを得るようにしている。
【０１０６】
従って、図１５の実施例に従うと、アプリケーションプログラム３００にとっては、あたかもサービスプログラム４００がそこにあるかのように見えるプロキシーとして動作することを実現できるようになる。
【０１０７】
なお、クライアント３０の設定ファイル３０７やゲートウェイ５０の設定ファイル５０６が用意されない場合には、接続しているゲートウェイ５０を起点に、上位のアプリケーションプロトコルを使って、サーバ４０に接続しているサービスを受けることが可能である。
【０１０８】
図１９に、本発明で用いられるデータ送信の再送処理を図示する。
この再送処理では、データ送信中に無線回線が切断され、再接続するときに、最初からデータの送信をやり直すのではなくて、無線回線の切断時に送信中であったデータから再送していくことで効率的なデータ送信を実現するという方法を採っている。
【０１０９】
この再送処理を実現するために、具体的には、データのフォーマットとして、図２０に示すように、パケットのシーケンス番号（ＳＮ）をデータに持たせる構成を採って、図１９に示すように、データ送信中に無線回線が切断されると、再接続してから、最後に送信の完了したシーケンス番号（この例の場合はＳＮ＝２）を通知した後に、その次のシーケンス番号（この例の場合はＳＮ＝３）からデータの再送を再開していくという構成を採る。
【０１１０】
なお、図２０に示したデータフォーマットの長さが無線回線で一度に送信できる長さよりも長い場合には、このデータフォーマットを分割して送信することになる。これから、ヘッダから無線回線が切断されるまでに送られたデータが無駄にならないようにするために、送信側へ再接続用のシーケンス番号を送信するときに、受信したデータ長についても一緒に送信して、送信側でデータを再構成できるようにすることが好ましい。
【０１１１】
図２１ないし図２４に示す処理フローに従って、この再送処理について詳細に説明する。
ここで、図２１はクライアント３０の送信ルーチン３０２の実行する処理フローの一実施例、図２２はゲートウェイ５０の受信ルーチン５０２の実行する処理フローの一実施例、図２３はゲートウェイ５０の送信ルーチン５０３の実行する処理フローの一実施例、図２４はクライアント３０の受信ルーチン３０３の実行する処理フローの一実施例である。
【０１１２】
クライアント３０の送信ルーチン３０２は、ゲートウェイ５０にデータを送信するときには、図２１の処理フローに示すように、バッファ３０６にデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、シーケンス番号を付加しつつ、バッファ３０６からデータを読み出して無線回線に送信する。このとき、無線回線が切断しているときには、再接続した後、ゲートウェイ５０から通知される最後に受信したシーケンス番号を受信して、その次のシーケンス番号のデータから送信を再開していく。一方、無線回線が切断していないときには、バッファ３０６から送信したデータをクリアし、シーケンス番号をインクリメントしていく。
【０１１３】
このクライアント３０の送信ルーチン３０２の送信処理を受けて、ゲートウェイ５０の受信ルーチン５０２は、図２２の処理フローに示すように、無線回線が切断されているのか否かを判断して、無線回線が切断されていることを判断するときには、再接続タイマを起動し、その再接続タイマの設定時間内に再接続ができたのか否かを判断して、再接続できたことを判断するときには再接続タイマを停止してから、最後に受信したシーケンス番号をクライアント３０に通知する。そして、無線回線が切断されていないときには、無線回線からのデータを受信して、上述したメモリ渡しの受信バッファに書き出していく。
【０１１４】
一方、ゲートウェイ５０の送信ルーチン５０３は、サーバ４０からのデータをクライアント３０に返信するときには、図２３の処理フローに示すように、クライアント３０のバッファ３０６に相当するバッファにデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、シーケンス番号を付加しつつ、そのバッファからデータを読み出して無線回線に送信する。このとき、無線回線が切断しているときには、再接続タイマがタイムオーバーしないことを条件にしつつ再接続を行い、クライアント３０から通知される最後に受信したシーケンス番号を受信して、その次のシーケンス番号のデータから送信を再開していく。一方、無線回線が切断していないときには、そのバッファから送信したデータをクリアし、シーケンス番号をインクリメントしていく。
【０１１５】
このゲートウェイ５０の送信ルーチン５０３の送信処理を受けて、クライアント３０の受信ルーチン３０３は、図２４の処理フローに示すように、無線回線からのデータがあるのか否かを判断して、データがあることを判断するときには、データを読み出し、上述したメモリ渡しの受信バッファに書き出す。そして、無線回線が切断されたのか否かを判断して、無線回線が切断された場合には、再接続し、最後に受信したシーケンス番号をゲートウェイ５０に通知していく。
【０１１６】
このようにして、図１９に示す再送処理では、データ送信中に無線回線が切断され、再接続するときに、最初からデータの送信をやり直すのではなくて、無線回線の切断時に送信中であったデータから再送していくことで効率的なデータ送信を実現するのである。
【０１１７】
図２５に、本発明を具備する情報システムの他の実施例を図示する。
図３の実施例で説明したように、クライアント３０の子プロセス３０５は、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。そして、これに対応して、サーバ４０の子プロセス４０５もまた、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【０１１８】
従って、図２５の実施例に示すように、クライアントの子プロセス３０５に対応付けて生成されるバッファ３０６もまた、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。そして、サーバ４０の持つ図示しない上述したメモリ渡しのバッファもまた、アプリケーションプログラム３００の識別番号となるセッション番号対応に生成されることになる。
【０１１９】
これから、この図２５の実施例では、送信側となるクライアント３０の側に、複数のバッファ３０６からのデータの読み出し方法を定義するバッファ制御ルール３０８を設けることで、適切なデータの送信を実現する構成を採る。
【０１２０】
このバッファ制御ルール３０８は、例えば、各アプリケーションプログラム３００に割り付けられる優先度を管理して、送信ルーチン３０２に対して、優先度の高いバッファ３０６から順番にデータを送信していくことを指示したり、優先度の高いバッファ３０６の送信周期を短く設定しつつデータを送信していくことを指示する。
【０１２１】
図２６に、この実施例に従う場合のクライアント３０の送信ルーチン３０２の実行する処理フローの一実施例を図示する。
この実施例に従う場合、クライアント３０の送信ルーチン３０２は、図２６の処理フローに示すように、バッファ領域を確保し初期化を行うと、バッファ制御ルール３０８からの指示に従ってバッファ読み出しのルールを設定する。そして、バッファ３０６にデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、データの読み出しが可能となるのを待ってから、バッファ３０６からデータを読み出して無線回線に送信する。このとき、無線回線が切断しているときには、再接続後に再送を行い、無線回線が切断していないときには、バッファ３０６から送信したデータをクリアした後、バッファ読み出しのルールの指定する次のバッファを送信対象としていくことで行う。
【０１２２】
一方、サーバ４０が送信側となるときには、サーバ４０の送信ルーチン４０３は、図２７に示す処理フローを実行することになる。
すなわち、サーバ４０の送信ルーチン４０３は、図２７の処理フローに示すように、バッファ領域を確保し初期化を行うと、バッファ読み出しのルールを設定する。そして、クライアント３０のバッファ３０６に相当するバッファにデータが格納されているのか否かを判断して、データが格納されていることを判断するときには、データの読み出しが可能となるのを待ってから、そのバッファからデータを読み出して無線回線に送信する。このとき、無線回線が切断しているときには、再接続タイマがタイムオーバーしないことを条件にしつつ再接続を行って再送を行い、無線回線が切断していないときには、そのバッファから送信したデータをクリアした後、バッファ読み出しのルールの指定する次のバッファを送信対象としていくことで行う。
【０１２３】
この図２５の実施例に従うと、高い優先度の与えられるアプリケーションプログラム３００のデータを優先的にサーバ４０に送信できるようになる。
図２８に、本発明を具備する情報システムの他の実施例を図示する。
【０１２４】
この実施例は、図１５の実施例に従うときに、データの送信側となるクライアント３０に、バッファ３０６のデータ格納状態を監視して、その監視結果に基づいて、アプリケーションプログラム３００から子プロセス３０５に転送されるデータの転送速度を制御するデータ転送制御プログラム３０９を備える構成を採る。
【０１２５】
バッファ３０６の容量を十分大きくすることが可能であるならば、子プロセス３０５から転送されるデータによりバッファ３０６が溢れるということは起こらない。しかしながら、バッファ３０６の容量を十分大きくすることができない場合には、子プロセス３０５から転送されるデータによりバッファ３０６が溢れることが起こる。そこで、このような不都合を解決するために、図２８の実施例では、データ転送制御プログラム３０９を備える構成を採るのである。
【０１２６】
図２９に、このデータ転送制御プログラム３０９の実行する処理フローの一実施例を図示する。
データ転送制御プログラム３０９は、アプリケーションプログラム３００が起動されると処理に入って、図２９（ａ）の処理フローに示すように、バッファ３０６に格納されるデータが閾値を超えたのか否かを判断し、閾値を超えるときには、バッファ３０６の残量から、ソケット通信で用いられるＡＣＫ発行の遅延時間を計算する。そして、子プロセス３０５に対して、その遅延時間に従って、アプリケーションプログラム３００に発行するＡＣＫの遅延時間を指示することで、バーチャルサーキット型通信のデータ転送速度が遅くなるように制御する。
【０１２７】
あるいは、データ転送制御プログラム３０９は、アプリケーションプログラム３００が起動されると処理に入って、図２９（ｂ）の処理フローに示すように、バッファ３０６に格納されるデータが閾値を超えたのか否かを判断して、閾値を超えるときには、バッファ３０６の残量から、一度に転送するデータのサイズ（ウィンドウサイズ）を計算する。そして、アプリケーションプログラム３００に対して、そのウィンドウサイズに従ってデータ転送を行うことを指示することで、バーチャルサーキット型通信のデータ転送速度が遅くなるように制御する。
【０１２８】
このようにして、図２８の実施例に従うと、バッファ３０６の容量を大きくできないときにも、バッファ３０６のデータが溢れないように制御できるようになる。
【０１２９】
図２８の実施例では、クライアント３０に、データ転送制御プログラム３０９を備える構成を採ったが、現実的には、図３０に示すように、クライアント３０にデータを返信するゲートウェイ５０の側に、このデータ転送制御プログラム（図中のＺ）を備える構成を採ることが多いと思われる。なお、図３０に示す子プロセスＸは、ゲートウェイ５０が送信側となるときに生成される子プロセスであり、バッファＹは、ゲートウェイ５０が送信側となるときに生成されるバッファである。
【０１３０】
図３１及び図３２に、本発明の他の実施例を図示する。
この図３１の実施例は、図１５の実施例に従うときにあって、クライアント３０に、サーバ４０から入手したデータとそのデータの要求メッセージとの対応関係を記憶するキャッシュメモリ３１０を備えることで、アプリケーションプログラム３００からデータ要求メッセージが発行されるときに、そのデータ要求メッセージの指すデータがキャッシュメモリ３１０に登録されているときには、サーバ４０にアクセスすることなく、アプリケーションプログラム３００にデータを通知できるようにする構成を採っている。
【０１３１】
また、この図３２の実施例は、図１５の実施例に従うときにあって、ゲートウェイ５０に、サーバ４０から入手したデータとそのデータの要求メッセージとの対応関係を記憶するキャッシュメモリ５０７を備えることで、アプリケーションプログラム３００からデータ要求メッセージが発行されるときに、そのデータ要求メッセージの指すデータがキャッシュメモリ５０７に登録されているときには、サーバ４０にアクセスすることなく、アプリケーションプログラム３００にデータを通知できるようにする構成を採っている。
【０１３２】
これらの実施例に従うと、ネットワーク上のトラフィックを軽減できるようになる。
このようにして、本発明によれば、インターネット６０に、サーバ４０とゲートウェイ５０とが接続され、公衆網に、基地局とこのゲートウェイ５０とが接続れることで構築される図３３に示すような情報システムに、クライアント３０が無線回線を使ってアクセスするときに、クライアント３０とサーバ４０との間のデータ通信のスループットを向上できるようになる。
【０１３３】
図示実施例に従って本発明を詳細に説明したが、本発明はこれに限定されるものではない。例えば、実施例では、ＴＣＰ／ＩＰのプロトコルを具体例にして本発明を説明したが、本発明はＴＣＰ／ＩＰ以外のプロトコルを使う場合にもそのまま適用できる。
【０１３４】
【発明の効果】
以上説明したように、本発明によれば、トランスポート層で行われるデータ保証の再送制御を無線回線の手前で終端させ、不安定な無線回線によるデータ転送については、その無線回線のデータリンク層のプロトコルを利用して行うことで、エンド・エンド間でのデータ通信のスループットの向上を実現できるようになる。
【０１３５】
そして、本発明によれば、データの送信要求発行元にとっては、あたかも送信先がそこにあるかのように見えるプロキシーとして動作することを実現できるようになる。
そして、本発明によれば、この実現にあたって、無線回線に切断が発生し、それが再接続されるときにあって、相手が受信したデータを重複して無線回線上に送信することを避けることができるようになる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の説明図である。
【図３】本発明の一実施例である。
【図４】通信処理の説明図である。
【図５】処理フローの一実施例である。
【図６】処理フローの一実施例である。
【図７】処理フローの一実施例である。
【図８】処理フローの一実施例である。
【図９】処理フローの一実施例である。
【図１０】処理フローの一実施例である。
【図１１】処理フローの一実施例である。
【図１２】処理フローの一実施例である。
【図１３】処理フローの一実施例である。
【図１４】処理フローの一実施例である。
【図１５】本発明の他の実施例である。
【図１６】通信処理の説明図である。
【図１７】処理フローの一実施例である。
【図１８】処理フローの一実施例である。
【図１９】再送処理の説明図である。
【図２０】データフォーマットの説明図である。
【図２１】処理フローの一実施例である。
【図２２】処理フローの一実施例である。
【図２３】処理フローの一実施例である。
【図２４】処理フローの一実施例である。
【図２５】本発明の他の実施例である。
【図２６】処理フローの一実施例である。
【図２７】処理フローの一実施例である。
【図２８】本発明の他の実施例である。
【図２９】処理フローの一実施例である。
【図３０】本発明の他の実施例である。
【図３１】本発明の他の実施例である。
【図３２】本発明の他の実施例である。
【図３３】本発明の適用されるシステムの説明図である。
【図３４】バーチャルサーキット型通信の説明図である。
【図３５】従来技術の説明図である。
【符号の説明】
１    送信側装置
２    受信側装置
１０  監視手段
１１  生成手段
１２  プロセス
１３  バッファ
１４  転送手段
１５  送信手段
１６  検出手段
１７  特定手段
１８  キャッシュメモリ
１９  検索手段
２０  受信手段
２１  監視手段
２２  生成手段
２３  プロセス
２４  転送手段
２５  キャッシュメモリ
２６  検索手段
【図１】
0003620010.tif 000002
【図２】
0003620010.tif 000003
【図３】
0003620010.tif 000004
【図４】
0003620010.tif 000005
【図５】
0003620010.tif 000006
【図６】
0003620010.tif 000007
【図７】
0003620010.tif 000008
【図８】
0003620010.tif 000009
【図９】
0003620010.tif 000010
【図１０】
0003620010.tif 000011
【図１１】
0003620010.tif 000012
【図１２】
0003620010.tif 000013
【図１３】
0003620010.tif 000014
【図１４】
0003620010.tif 000015
【図１５】
0003620010.tif 000016
【図１６】
0003620010.tif 000017
【図１７】
0003620010.tif 000018
【図１８】
0003620010.tif 000019
【図１９】
0003620010.tif 000020
【図２０】
0003620010.tif 000021
【図２１】
0003620010.tif 000022
【図２２】
0003620010.tif 000023
【図２３】
0003620010.tif 000024
【図２４】
0003620010.tif 000025
【図２５】
0003620010.tif 000026
【図２６】
0003620010.tif 000027
【図２７】
0003620010.tif 000028
【図２８】
0003620010.tif 000029
【図２９】
0003620010.tif 000030
【図３０】
0003620010.tif 000031
【図３１】
0003620010.tif 000032
【図３２】
0003620010.tif 000033
【図３３】
0003620010.tif 000034
【図３４】
0003620010.tif 000035
【図３５】
0003620010.tif 000036