(57)【特許請求の範囲】
【請求項１】
複数のコネクションにデータを分散させて通信を実現する通信装置であって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する機能を有することを特徴とする通信装置。
【請求項２】
前記ヘッダは、コネクションヘッダであることを特徴とする請求項１に記載の通信装置。
【請求項３】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズを、許容されるパケットサイズの最大値として統一する機能を有することを特徴とする請求項１に記載の通信装置。
【請求項４】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズ以下のパケットサイズで通信する機能を有することを特徴とする請求項１に記載の通信装置。
【請求項５】
前記データを復元するための情報として、データ長を格納することを特徴とする請求項１から請求項４のいずれかに記載の通信装置。
【請求項６】
ＴＣＰやＳＣＴＰ、ＵＤＰ、ＤＣＣＰなどのＯＳＩ４層相当のトランスポートプロトコルによるコネクションを利用し、複数のコネクションにデータを分散させて通信を実現する通信装置であって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する機能を有することを特徴とする通信装置。
【請求項７】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドに格納することを特徴とする請求項６に記載の通信装置。
【請求項８】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドのタイムスタンプフィールドの一部に格納することを特徴とする請求項６に記載の通信装置。
【請求項９】
複数のコネクションに分散させたデータを復元するための情報を、ＩＰヘッダ内に格納することを特徴とする請求項１に記載の通信装置。
【請求項１０】
複数のコネクションに分散させたデータを復元するための情報を、ＩＰヘッダ内のフラグメントフィールドに格納することを特徴とする請求項１に記載の通信装置。
【請求項１１】
複数のコネクションで利用可能なＭＴＵをパスＭＴＵディスカバリーオプションにより調査し、それぞれのコネクションのＭＴＵを前記調査により得られた最も小さいＭＴＵに統一する機能を有することを特徴とする請求項６に記載の通信装置。
【請求項１２】
送信側が、前記分散させたデータを復元するための情報に、分散されたデータ長を格納し、受信側が前記データ長を参照することにより、データを復元することを特徴とする請求項６に記載の通信装置。
【請求項１３】
通信レートに応じて、それぞれのコネクションに一度に渡すデータサイズを変更することを特徴とする請求項１から請求項１２のいずれかに記載の通信装置。
【請求項１４】
データを復元するための情報を参照することにより、データを復元することを特徴とする請求項１から請求項１３のいずれかに記載の通信装置。
【請求項１５】
ＴＣＰの通信レートが低い場合には、それぞれのコネクションに一度に渡すデータ量を小さくし、ＴＣＰの通信レートが高くなった場合には、それぞれのコネクションに一度に渡すデータ量を大きくする機能を有することを特徴とする請求項１から請求項１２のいずれかに記載の通信装置。
【請求項１６】
複数のコネクションにデータを分散させて通信を実現する通信方法であって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する処理を含むことを特徴とする通信方法。
【請求項１７】
前記ヘッダはコネクションヘッダであることを特徴とする請求項１６に記載の通信方法。
【請求項１８】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズを、許容されるパケットサイズの最大値として統一する処理を含むことを特徴とする請求項１６に記載の通信方法。
【請求項１９】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズ以下のパケットサイズで通信する処理を含むことを特徴とする請求項１６に記載の通信方法。
【請求項２０】
データを復元するための情報として、データ長を格納することを特徴とする請求項１６から請求項１９のいずれかに記載の通信方法。
【請求項２１】
ＴＣＰやＳＣＴＰ、ＵＤＰ、ＤＣＣＰなどのＯＳＩ４層相当のトランスポートプロトコルによるコネクションを利用し、複数のコネクションにデータを分散させて通信を実現する通信方法であって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する処理を含むことを特徴とする通信方法。
【請求項２２】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドに格納することを特徴とする請求項２１に記載の通信方法。
【請求項２３】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドのタイムスタンプフィールドの一部に格納することを特徴とする請求項２１に記載の通信方法。
【請求項２４】
複数のコネクションに分散させたデータを復元するための情報を、ＩＰヘッダ内に格納することを特徴とする請求項１６に記載の通信方法。
【請求項２５】
それぞれのコネクションに分散させたデータを復元するための情報をＩＰヘッダ内部のフラグメントフィールドに格納することを特徴とする請求項１６に記載の通信方法。
【請求項２６】
それぞれのコネクションで利用可能なＭＴＵをパスＭＴＵディスカバリーオプションにより調査し、それぞれのコネクションのＭＴＵを前記調査により得られた最も小さいＭＴＵに統一する処理を含むことを特徴とする請求項２１に記載の通信方法。
【請求項２７】
送信側で、分散させたデータを復元するための情報に、分散されたデータ長を格納し、受信側が前記分散されたデータをを参照することにより、データを復元することを特徴とする請求項２１に記載の通信方法。
【請求項２８】
通信レートに応じて、それぞれのコネクションに一度に渡すデータサイズを変更する処理を含むことを特徴とする請求項１６から請求項２７のいずれかに記載の通信方法。
【請求項２９】
データを復元するための情報を参照することによりデータを復元する処理を含むことを特徴とする請求項１６から請求項２８のいずれかに記載の通信方法。
【請求項３０】
ＴＣＰの通信レートが低い場合には、それぞれのコネクションに一度に渡すデータ量を小さくし、ＴＣＰの通信レートが高くなった場合には、それぞれのコネクションに一度に渡すデータ量を大きくする処理を含むことを特徴とする請求項１６から請求項２７のいずれかに記載の通信方法。
【請求項３１】
複数のコネクションにデータを分散させる通信をコンピュータに実行させるためのプログラムであって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する機能を前記コンピュータに実行させることを特徴とするプログラム。
【請求項３２】
前記ヘッダはコネクションヘッダであることを特徴とする請求項３１に記載のプログラム。
【請求項３３】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズを、許容されるパケットサイズの最大値として統一する機能を実行させることを特徴とする請求項３１に記載のプログラム。
【請求項３４】
通信に関係するコネクションで許容されるパケットサイズの最大値を調査し、前記パケットサイズの最大値のうち最も小さいサイズ以下のパケットサイズで通信する機能を実行させることを特徴とする請求項３１に記載のプログラム。
【請求項３５】
データを復元するための情報として、データ長を格納する機能を実行させることを特徴とする請求項３１から請求項３４のいずれかに記載のプログラム。
【請求項３６】
ＴＣＰやＳＣＴＰ、ＵＤＰ、ＤＣＣＰなどのＯＳＩ４層相当のトランスポートプロトコルによるコネクションを利用し、複数のコネクションにデータを分散させる通信をコンピュータに実行させるためのプログラムであって、
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内に格納する機能を前記コンピュータに実行させることを特徴とするプログラム。
【請求項３７】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドに格納する機能を実行させることを特徴とする請求項３６に記載のプログラム。
【請求項３８】
複数のコネクションに分散させたデータを復元するための情報を、トランスポートプロトコルのヘッダ内のオプションフィールドのタイムスタンプフィールドの一部に格納する機能を実行させることを特徴とする請求項３６に記載のプログラム。
【請求項３９】
複数のコネクションに分散させたデータを復元するための情報を、ＩＰヘッダ内部に格納する機能を実行させることを特徴とする請求項３１に記載のプログラム。
【請求項４０】
複数のコネクションに分散させたデータを復元するための情報を、ＩＰヘッダ内部のフラグメントフィールドに格納する機能を実行させることを特徴とする請求項３１に記載のプログラム。
【請求項４１】
複数のコネクションで利用可能なＭＴＵをパスＭＴＵディスカバリーオプションにより調査し、それぞれのコネクションのＭＴＵを前記調査により得られた最も小さいＭＴＵに統一する機能を実行させることを特徴とする請求項３６に記載のプログラム。
【請求項４２】
送信側で、分散させたデータを復元するための情報に、分散されたデータ長を格納し、受信側で、前記分散されたデータ長を参照してデータを復元する機能を実行させることを特徴とする請求項３６に記載のプログラム。
【請求項４３】
通信レートに応じて、それぞれのコネクションに一度に渡すデータサイズを変更する機能を実行させることを特徴とする請求項３１から請求項４２のいずれかに記載のプログラム。
【請求項４４】
データを復元するための情報を参照してデータを復元する機能を実行させることを特徴とする請求項３１から請求項４３のいずれかに記載のプログラム。
【請求項４５】
ＴＣＰの通信レートが低い場合には、それぞれのコネクションに一度に渡すデータ量を小さくし、ＴＣＰの通信レートが高くなった場合には、それぞれのコネクションに一度に渡すデータ量を大きくする機能を実行させることを特徴とする請求項３１から請求項４２のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】  本発明は、通信装置およびその通信方法ならびにプログラムに関し、特に複数のコネクションにデータを分散させて通信を実現する通信装置およびその通信方法ならびにプログラムに関する。
【背景技術】  従来、送信端末と受信端末間の通信で用いられる１つの通信フローのデータを複数のフローに分岐させて、最後に復元する通信方法がある。例えば、送信端末が置かれたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と、受信端末が置かれたＬＡＮに、それぞれゲートウエイを設置し、送信端末から送出されたＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）コネクションのデータを送信端末近傍のゲートウエイにおいてパケット単位でそれぞれの通信経路に振り分け、受信端末近傍のゲートウエイでは、ＴＣＰのシーケンス番号にしたがってパケットの順序逆転を補正する方法がある（特開２０００−２６１４７８号公報参照）。
ただし、この方法では、端末のＴＣＰは、１つの通信経路で使用されることを前提としている動作を実現しているため、通信経路の性能を十分に発揮できない問題がある。
複数の通信回線を効率的に利用し、回線利用率を向上させる方法としては、以下の方法が存在する。
第１の方法は、端末のＴＣＰに機能を追加し、従来一本のＴＣＰコネクションを用いていた通信を複数のＴＣＰコネクションを利用するように変更する方法である（マルチパスＴＣＰ、マルチパスプロキシサーバ〈Ｍｕｌｔｉｐａｔｈ  Ｐｒｏｘｙ  Ｓｅｒｖｅｒ〉、特開２００３−１１０６０４号公報参照）。
この方法では送信端末と受信端末間の通信で１つの通信フローで行われていたデータの通信を複数の通信フローに分割して並列的に送る方法がある。送信端末から受信端末へとデータを送信する場合、送信端末の通信プロトコルは１つの通信フローの通信データを分割し、複数の通信フローに振り分け、受信端末がこれを元のデータに復元するための復元情報として新たなヘッダをＴＣＰ／ＩＰのパケットのパケットデータ内に付加して、それぞれの通信フローにてデータを送信し、受信端末の通信プロトコルでは複数の通信フローから受信したデータの復元情報を参照して１つの通信フローを復元し、元のデータを復元する。
第一の問題は、第一方式では、データの分割および復元のため、パケット内に新たなヘッダを付け加えるため、ヘッダが大きくなってしまい通信効率が低下することである。
第二の問題は、第一方式では、データの分割および復元のため、パケット内に新たなヘッダを付け加えることによりヘッダが大きくなってしまい、データをパケットごとに分割するためのセグメント化が変化するため、セグメント化が変化することを考慮しないアプリケーションでは、正常な通信ができなくなってしまうことである。
特に、プロキシサーバに第一方式を用い、一つのコネクションで受信したデータを複数のコネクションに分散させて送信した場合では、必ず再セグメント化が必要となる。
第三の問題は、第一方式の通信装置が利用するネットワーク経路の途中に、本方式を意識しない制御管理範囲外の装置が存在し、セグメント化が変化した場合、第一方式では、正常な通信が行えなくなってしまうことである。
第四の問題は、第一方式では、データ分割をし、複数のコネクションにて並列に送信する際に、１パケット単位でＴＣＰコネクション処理プロセスへとデータを渡すため、書き込み命令の発行回数が多くなってしまい、処理負荷が大きくなる点である。
【発明の開示】
そこで本発明の目的は、ヘッダが大きくなるのを防止することにより、フローの分割および復元を伴う通信を効率よく実現することが可能な通信装置およびその通信方法ならびにプログラムを提供することにある。
前記課題を解決するために本発明による通信装置は、複数のコネクションにデータを分散させて通信を実現する通信装置であって、その装置はそれぞれのコネクションに分散させたデータを復元するための情報をヘッダ内部に格納する機能を有することを特徴とする。
また、本発明による通信方法は、複数のコネクションにデータを分散させて通信を実現する通信方法であって、その方法はそれぞれのコネクションに分散させたデータを復元するための情報をヘッダ内部に格納する処理を含むことを特徴とする。
さらに、本発明によるプログラムは、複数のコネクションにデータを分散させて通信を実現する通信方法をコンピュータに実行させるためのプログラムであって、そのプログラムはそれぞれのコネクションに分散させたデータを復元するための情報をヘッダ内部に格納する処理を含むことを特徴とする。
本発明によれば、それぞれのコネクションに分散させたデータを復元するための情報をヘッダ内部に格納するため、ヘッダが大きくなることがない。
【図面の簡単な説明】  図１は、本発明による通信装置の第１実施例の構成を示すブロック図である。
図２は、第１実施例で送信端末２−１から受信端末２−２へのデータの流れを示したブロック図である。
図３は、第１実施例におけるデータの分割方法と、分割されたブロックを示す図である。
図４は、第１実施例のデータ分割復元処理部においてＴＣＰヘッダ内部にデータの復元情報を格納する例を示す図である。
図５は、ＴＣＰのタイムスタンプオプションの形式図である。
図６は、第１実施例における送信端末２−１の処理の概要を示すフローチャートである。
図７は、第１実施例における受信端末２−２の処理の概要を示すフローチャートである。
図８は、第２実施例における送信端末２−１の処理の概要を示すフローチャートである。
図９は、第２実施例における受信端末２−２の処理の概要を示すフローチャートである。
図１０は、第３実施例における送信端末２１−１と、プロキシサーバ２１−３と、受信端末２１−２との間のデータの流れを示すブロック図である。
図１１は、第４実施例のデータ分割復元処理部１−２においてブロックの先頭にデータの復元情報を格納する例を示す図である。
図１２は、第４実施例における送信端末２−１の処理の概要を示すフローチャートである。
図１３は、第４実施例における受信端末２−２における処理の概要を示すフローチャートである。
図１４は、第５実施例における通信レートが大きい場合の送信端末と受信端末との間のデータの流れを示すブロック図である。
図１５は、第５実施例における通信レートが大きい場合のデータの分割方法と、分割されたブロックとを示す図である。
図１６は、第５実施例における送信端末２−１の処理の概要を示すフローチャートである。
図１７は、第５実施例における受信端末２−２の処理の概要を示すフローチャートである。
【発明を実施するための最良の形態】  以下、本発明の実施の形態について添付図面を参照しながら説明する。
（第１実施例）
図１は本発明による通信装置の第１実施例の構成を示すブロック図である。第１実施例において、通信装置１は、アプリケーション処理部１−１と、データ分割復元処理部１−２と、ネットワーク処理部１−３とを含んで構成される。
アプリケーション処理部１−１は、任意のアプリケーションプログラムを処理し、データを送信する場合にはデータ分割復元処理部１−２にデータを送り、データを受信する場合にはデータ分割復元処理部１−２からデータを受け取る機能を有する。
データ分割復元処理部１−２は、データを送信する場合にはアプリケーション処理部１−１からデータを受け取り、データを任意の数のブロックに分割し、このブロックを元のデータに復元するための情報をＴＣＰヘッダ内部に格納し、任意の数のＴＣＰコネクションを利用してネットワーク処理部１−３へと送り、データを受信する場合にはネットワーク処理部１−３から受け取った複数のＴＣＰコネクションのデータについて、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、これをあわせることにより分割前のデータに復元し、アプリケーション処理部１−１に送る機能を有する。
ネットワーク処理部１−３は、データを送信する場合にはデータ分割復元処理部１−２から受け取ったＴＣＰコネクションのデータをネットワークへと出力し、データを受信する場合にはネットワークから入力されたＴＣＰコネクションのデータをデータ分割復元処理部１−２へと送る機能を有する。
図２は、第１実施例で送信端末２−１から受信端末２−２へのデータの流れを示したブロック図、図３は第１実施例におけるデータの分割方法と、分割されたブロックを示す図である。図２では、送信端末２−１から受信端末２−２へとデータを送る場合、送信端末２−１は図３に示すように送信するデータを複数のブロックへ分割し、これを復元するための情報をＴＣＰヘッダ内部に格納し、複数のＴＣＰコネクションを利用して受信端末２−２へ送る。
図２では、データ３−１を４つのブロック（１）〜（４）に分割し、２つのＴＣＰコネクション（１）、（２）を利用し、ＴＣＰコネクション（１）ではブロック（１）、（３）を送信し、ＴＣＰコネクション（２）ではブロック（２）、（４）を送信する例を示している。
送信端末２−１からのブロックを受け取った受信端末２−２は、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、ブロックを順番に整列することにより、複数のブロックからもとのデータを復元する。
図２では、受信端末２−２は、ＴＣＰコネクション（１）、（２）から受け取ったブロック（１）〜（４）を順番に整列し、元のデータを復元する。
図４は、第１実施例のデータ分割復元処理部においてＴＣＰヘッダ内部にデータの復元情報を格納する例を示す図である。送信端末２−１は、データを分割し、複数のブロックを生成したのち、このブロック番号をＴＣＰのタイムスタンプ（Ｔｉｍｅｓｔａｍｐ）オプションの一部に格納する。
図５はＴＣＰのタイムスタンプオプションの形式図である。ＴＣＰのタイムスタンプオプションは図５に示す形式にてＴＣＰヘッダのオプションフィールドに格納される。同図を参照すると、ＴＣＰのタイムスタンプオプションは種類（Ｋｉｎｄ）と、長さ（Ｌｅｎｇｔｈ）と、ＴＳ  Ｖａｌｕｅ（ＴＳｖａｌ）と、ＴＳ  Ｅｃｈｏ  Ｒｅｐｌｙ（ＴＳｅｃｒ）とを含んで構成される。同図は種類が８、長さが１０バイトの場合を示している。
本実施例では、このＴＳ  Ｖａｌｕｅの４バイトの情報のうち、１バイトをデータの復元情報として、ブロック番号を格納するために用い、残りの３バイトにＴＳ  Ｖａｌｕｅのうち、上位３バイトを格納する。
ただし、このＴＳ  Ｖａｌｕｅの４バイトの情報のうち、２バイトをデータの復元情報として、ブロック番号を格納するために用い、残りの２バイトにＴＳ  Ｖａｌｕｅのうち、下位２バイトを格納する、というようにＴＳ  Ｖａｌｕｅにおけるデータの復元情報のために利用する領域を変更した実施例も可能である。
次に、図６および図７を参照して第１実施例における送信端末２−１、受信端末２−２における処理について説明する。なお、以下の説明において、送信端末２−１および受信端末２−２は図１の通信装置１の一例を示している。
図６は第１実施例における送信端末２−１の処理の概要を示すフローチャートである。同図を参照すると、送信端末２−１はアプリケーション処理部１−１が任意の処理を実施し、データ分割復元処理部１−２にデータの送信を指示することにより、処理が開始される。
処理５−１では、データ分割復元処理部１−２は、アプリケーション処理部１−１から受け取ったデータを任意の数のブロックに分割する。処理５−２へ移動する。
処理５−２では、データ分割復元処理部１−２は、分割したブロックを任意のＴＣＰコネクションに振り分ける。処理５−３へ移動する。
処理５−３では、データ分割復元処理部１−２は、ネットワーク処理部１−３へブロックの送信を指示する。このとき、データＴＣＰヘッダ内のタイムスタンプオプションフィールドに復元するための情報として、送信しているブロック番号を格納する。ただし、異なるブロックは同じパケット内には格納しない。ネットワーク処理部１−３はネットワークへブロックを送出する。ブロックをすべて送信し、アプリケーション処理部１−１の任意の処理が終了したら、処理を終了する。
図７は第１実施例における受信端末２−２の処理の概要を示すフローチャートである。受信端末２−２は、ネットワークから送信端末２−１が送信したブロックを受信することによって処理を開始する。
処理６−１では、ネットワーク処理部１−３がデータ分割復元処理部１−２にブロックをわたし、データ分割復元処理部１−２では、ＴＣＰヘッダ内のタイムスタンプオプションフィールドに格納されているブロック番号を参照し、これを整列し、元のデータに復元する。処理６−２へ移動する。
処理６−２では、データ分割復元処理部１−２が復元したデータをアプリケーション処理部１−１にわたし、アプリケーション処理部１−１では任意の処理を実行する。すべてのブロックがアプリケーション処理部１−１に渡され、アプリケーション処理部１−１の任意の処理が終了したら処理を終了する。
以上が、本発明による第一の実施例における通信端末の処理の内容である。
従来の技術においては、データを分割し、これを復元するための情報をアプリケーションデータの一部としていたため、これを格納するためアプリケーションデータが大きくなってしまっていた。
一方、上記で述べたように第１実施例では、広く用いられているＴＣＰのタイムスタンプオプションフィールドに、データを復元するための情報を含めることによってアプリケーションデータが大きくなることがなく、復元情報を格納するためのオーバヘッドがない。かつ、同時にタイムスタンプオプションも利用することができる。
また、第１実施例では、タイムスタンプオプションに復元情報を格納する方法を示したが、この他、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ヘッダのうち、冗長なデータを含んでいる箇所や、データ長の圧縮あるいは縮退可能な箇所に復元情報を格納する実施例も可能である。
例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットには１つのパケットを分割するためのフラグメントオプションがあるが、現在では、パスＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｆｅｒ  Ｕｎｉｔ）ディスカバリー（Ｐａｔｈ  ＭＴＵ  Ｄｉｓｃｏｖｅｒｙ）オプションが一般的に利用された場合にはこのフラグメントフィールドは利用されておらず、これをＴＣＰタイムスタンプオプションフィールドの代わりに用いる実施例も可能である。
（第２実施例）
本発明の第２実施例による通信装置の構成は図１に示した第１実施例と同様であるため、ここでは第１実施例の構成を示す図１を用いて説明する。
第２実施例において、通信装置１は、アプリケーション処理部１−１と、データ分割復元処理部１−２と、ネットワーク処理部１−３とを含んで構成される。
アプリケーション処理部１−１は、データ分割復元処理部１−２により設定された最大パケットサイズを参照し、最大パケットサイズに基づきデータを区切って通信することがある任意のアプリケーションプログラムを処理し、データを送信する場合にはデータ分割復元処理部１−２にデータを送り、データを受信する場合にはデータ分割復元処理部１−２からデータを受け取る機能を有する。
データ分割復元処理部１−２は、ネットワーク処理部１−３の複数のインタフェースに設定された最大パケットサイズをそれぞれ参照し、最も小さい最大パケットサイズを代表値としてアプリケーションへと公開し、データを送信する場合にはアプリケーション処理部１−１からデータを受け取り、データを最大パケットサイズの代表値の倍数に基づくサイズのブロックに分解し（ただし最大パケットサイズの倍数に基づくブロックに分割した際に生じた端数は最大パケットサイズの代表値の倍数でなくてもよい）、このブロックを元のデータに復元するための情報をＴＣＰヘッダ内部に格納し、最大パケットサイズの代表値を利用可能な最大パケットサイズとして設定された任意の数のＴＣＰコネクションを利用してネットワーク処理部１−３へと送り、データを受信する場合にはネットワーク処理部１−３から受け取った複数のＴＣＰコネクションのデータについて、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、これをあわせることにより分割前のデータに復元し、アプリケーション処理部１−１に送る機能を有する。
ネットワーク処理部１−３は、データを送信する場合にはデータ分割復元処理部１−２から受け取ったＴＣＰコネクションのデータをネットワークへと出力し、データを受信する場合にはネットワークから入力されたＴＣＰコネクションのデータをデータ分割復元処理部１−２へと送る機能を有する。
また、それぞれの最大パケットサイズを調査する場合に、ＴＣＰのオプションとして提供されているパスＭＴＵディスカバリーオプションを利用し、通信開始後に最大パケットサイズの代表値を再調整する実施例も可能である。
図２は、第２実施例で、送信端末２−１から受信端末２−２へのデータの流れを示したブロック図である。
図２では、送信端末２−１から受信端末２−２へとデータを送る場合、送信端末２−１は通信に利用する複数のＴＣＰコネクションで利用可能な最大パケットサイズをそれぞれ調査し、最も小さい最大パケットサイズを代表値として、それぞれのＴＣＰコネクションで利用するようにし、図３に示すように送信するデータを最大パケットサイズの代表値の倍数に基づくサイズのブロックに分解し（ただし最大パケットサイズの倍数に基づくブロックに分割した際に生じた端数は最大パケットサイズの代表値の倍数でなくてもよい）、これを復元するための情報をＴＣＰヘッダ内部に格納し、最大パケットサイズの代表値が設定された複数のＴＣＰコネクションを利用して受信端末２−２へ送る。
図２では、データを４つのブロック（１）〜（４）に分割し、２つのＴＣＰコネクション（１）、（２）を利用し、ＴＣＰコネクション（１）ではブロック（１）、（３）を送信し、ＴＣＰコネクション（２）ではブロック（２）、（４）を送信する例を示している。
送信端末２−１からのブロックを受け取った受信端末２−２は、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、ブロックを順番に整列することにより、複数のブロックから元のデータを復元する。図２では、受信端末２−２は、ＴＣＰコネクション（１）、（２）から受け取ったブロック（１）〜（４）を順番に整列し、元のデータを復元する。
図４は、第２実施例のデータ分割復元処理部１−２においてＴＣＰヘッダ内部にデータの復元情報を格納する例を示す図である。送信端末２−１は、データを分割し、複数のブロックを生成したのち、このブロック番号をＴＣＰのタイムスタンプオプションの一部に格納する。ＴＣＰのタイムスタンプオプションは図５に示す形式にてＴＣＰヘッダのオプションフィールドに格納される。
第２実施例では、このＴＳ  Ｖａｌｕｅの４バイトの情報のうち、１バイトをデータの復元情報として、ブロック番号を格納するために用い、残りの３バイトにＴＳ  Ｖａｌｕｅのうち、上位３バイトを格納する。
次に、図８および図９を参照して第２実施例における送信端末２−１および受信端末２−２の処理について説明する。
図８は第２実施例における送信端末２−１の処理の概要を示すフローチャートである。送信端末２−１はアプリケーション処理部１−１が任意の処理を実施し、データ分割復元処理部１−２にデータの送信を指示することにより、処理を開始する。
処理７−１では、データ分割復元処理部１−２は、それぞれのＴＣＰコネクションで利用可能な最大パケットサイズを調査し、それぞれの最大パケットサイズのうちの最も小さな最大パケットサイズを代表値として設定しそれぞれのＴＣＰコネクションを利用する場合はこの代表値を利用できるようにする。アプリケーション処理部１−１から受け取ったデータを最大パケットサイズの代表値の倍数に基づくサイズのブロックに分割し（ただし最大パケットサイズの倍数に基づくブロックに分割した際に生じた端数は最大パケットサイズの代表値の倍数でなくてもよい）、処理７−２へ移動する。
処理７−２では、データ分割復元処理部１−２は、分割したブロックを任意のＴＣＰコネクションに振り分ける。処理７−３へ移動する。
処理７−３では、データ分割復元処理部１−２は、ネットワーク処理部１−３へブロックの送信を指示する。
このとき、データＴＣＰヘッダ内のタイムスタンプオプションフィールドに復元のための情報として、送信しているブロック番号を格納する。ただし、ブロック番号が変わる場合は、同じパケットには格納しない。
ネットワーク処理部１−３はネットワークへブロックを送出する。ブロックをすべて送信し、アプリケーション処理部１−１の任意の処理が終了したら、処理を終了する。
図９は、第２実施例における受信端末２−２の処理の概要を示すフローチャートである。
受信端末２−２は、ネットワークから送信端末２−１が送信したブロックを受信することによって処理を開始する。
処理８−１では、ネットワーク処理部１−３がデータ分割復元処理部１−２にブロックをわたし、データ分割復元処理部１−２では、ＴＣＰヘッダ内のタイムスタンプオプションフィールドに格納されているブロック番号を参照し、これを整列し、元のデータに復元する。処理８−２へ移動する。
処理８−２では、データ分割復元処理部１−２が復元したデータをアプリケーション処理部１−１にわたし、アプリケーション処理部１−１では任意の処理を実行する。すべてのブロックがアプリケーション処理部１−１に渡され、アプリケーション処理部１−１の任意の処理が終了したら処理を終了する。
以上が、本発明による第２実施例における通信端末の処理の内容である。
従来の技術においては、各ＴＣＰコネクションの最大パケットサイズを意識せずにブロック化を行っていたため、それぞれのＴＣＰコネクションでは、パケットがフラグメントされてしまう可能性があり、通信効率が低下していた。
本発明による通信装置では、それぞれのＴＣＰコネクションで利用可能なＭＳＳ（Ｍａｘ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）を調査し、この調査結果に基づいてブロック化を行うため、効率のよい通信が実現される。
（第３実施例）
本発明の第３実施例による通信装置の構成は図１に示した第２の実施例と同様であるため、ここでは第２の実施例の構成を示す図１を用いて説明する。
第３実施例では、図１０に示すように、本発明による第２の実施例の通信方法を用いた通信装置である、プロキシサーバ２１−３と受信端末２１−２、従来のＴＣＰ／ＩＰによる通信を実現する送信端末２１−１の通信を説明する。なお、以下の説明において、プロキシサーバ２１−３は図１の通信装置１の一例を示している。
図１０は第３実施例における送信端末２１−１と、プロキシサーバ２１−３と、受信端末２１−２との間のデータの流れを示すブロック図である。
プロキシサーバ２１−３でのアプリケーション処理部１−１では、送信端末２１−１と受信端末２１−２の通信を実現するためのプロキシサーバが動作しており、送信端末２１−１から従来のＴＣＰ／ＩＰによる通信によって受信したパケット（１）〜（４）を転送し、受信端末２１−２へと送信する。
プロキシサーバ２１−３は、通信に関係するＴＣＰコネクションであるＴＣＰコネクション（０）、ＴＣＰコネクション（１）、ＴＣＰコネクション（２）でそれぞれ利用可能な最大パケットサイズのうち最も小さな最大パケットサイズを、本通信で利用可能な最大パケットサイズの代表値として設定する。プロキシサーバ２１−３は送信端末２１−１、受信端末２１−２に本通信で利用可能な最大パケットサイズの代表値を通知しＴＣＰコネクションを開設する。
送信端末はプロキシサーバ２１−３から通知されたパケットサイズ以下の大きさのパケットを用いてパケットをプロキシサーバ２１−３に送信する。プロキシサーバ２１−３は、送信端末２１−１から受け取ったデータを転送し、ＴＣＰコネクション（１）、ＴＣＰコネクション（２）を利用して、受信端末２１−２へとパケットを送出する。
図１０では、送信端末２１−１は、従来の技術による１本のＴＣＰコネクション（０）によりプロキシサーバ２１−３にパケット（１）〜（４）を送信し、プロキシサーバ２１−３は、ＴＣＰ  コネクション（０）により受信した該パケットを、ＴＣＰコネクション（１）、ＴＣＰコネクション（２）に振り分け受信端末２１−２へと送信する。
以上のように、本発明による通信方法では、通信に関係するそれぞれのＴＣＰコネクションでそれぞれ利用可能な最大パケットサイズのうち、最小のものを用いて通信を行う。また、データを複数のコネクションに分散させて送出させる場合に既存のＴＣＰヘッダ内部に復元情報を格納するため、通信データが増えることがない。これにより、第３実施例のように１本のＴＣＰコネクションで受信したパケットを複数のＴＣＰコネクションを用いて送出するプロキシサーバとして利用した場合においては、結果的に受信したパケットと同じ全くデータを持つパケットのままで送信することができ、既存通信との親和性が高く、正常な通信が行える可能性も高い。
（第４実施例）
本発明の第４実施例による通信装置の構成は図１に示した第１の実施例と同様であるため、ここでは第１実施例の構成を示す図１を用いて説明する。
第４実施例において、本通信装置１は、アプリケーション処理部１−１と、データ分割復元処理部１−２と、ネットワーク処理部１−３とを含んで構成される。
アプリケーション処理部１−１は、任意のアプリケーションプログラムを処理し、データを送信する場合にはデータ分割復元処理部１−２にデータを送り、データを受信する場合にはデータ分割復元処理部１−２からデータを受け取る機能を有する。
データ分割復元処理部１−２は、データを送信する場合にはアプリケーション処理部１−１からデータを受け取り、データを任意の数のブロックに分割し、このブロックを元のデータに復元するための情報として、元のデータにおけるブロックの位置を示すシーケンス番号と、ブロックの大きさをブロックの先頭に追加し、それぞれのブロックを任意の数のＴＣＰコネクションに割り当て、ＴＣＰコネクションを利用してネットワーク処理部へと送り、データを受信する場合にはネットワーク処理部から受け取った複数のＴＣＰコネクションのデータについて、ブロックの先頭に格納されたシーケンス番号と、ブロックの大きさを参照し、整列することによりより分割前のデータに復元し、アプリケーション処理部１−１に送る機能を有する。
ネットワーク処理部１−３は、データを送信する場合にはデータ分割復元処理部１−２から受け取ったＴＣＰコネクションのデータをネットワークへと出力し、データを受信する場合にはネットワークから入力されたＴＣＰコネクションのデータをデータ分割復元処理部１−２へと送る機能を有する。
図２は、第４実施例で、送信端末２−１から受信端末２−２へのデータの流れを示したブロック図、図１１は第４実施例におけるデータが分割されたブロックを示す図である。
図２では、送信端末２−１から受信端末２−２へとデータを送る場合、送信端末２−１は図３に示すように送信するデータを複数のブロックへ分割し、これを復元するための情報として、元のデータにおけるブロックの位置を示すシーケンス番号と、ブロックのサイズを図１１に示すようにブロックの先頭に追加し、これを複数のＴＣＰコネクションを利用して受信端末２−２へ送る。
図２では、データを４つのブロック（１）〜（４）に分割し、２つのＴＣＰコネクション（１）、（２）を利用し、ＴＣＰコネクション（１）ではブロック（１）、（３）を送信し、ＴＣＰコネクション（２）では、ブロック（２）、（４）を送信する例を示している。
送信端末２−１からのブロックを受け取った受信端末２−２は、ブロックの先頭に格納されたシーケンス番号と、ブロックのサイズを参照し、分割されたブロックを識別し、ブロックを順番に整列することにより、複数のブロックから元のデータを復元する。図２では、受信端末２−２は、ＴＣＰコネクション（１）、（２）から受け取ったブロック（１）〜（４）を順番に整列し、元のデータを復元する。
図１１は、第４実施例のデータ分割復元処理部１−２においてブロックの先頭にデータの復元情報を格納する例を示す図である。
送信端末２−１は、図３に示すようにデータを分割し、複数のブロックを生成したのち、図４に示すように、ブロックの分割前のデータにおける位置を示すシーケンス番号と、各ブロックのサイズをブロックの先頭に追加する。
次に図１２および図１３を参照して第４実施例における送信端末２−１および受信端末２−２における処理について説明する。
図１２は、第４実施例における送信端末２−１の処理の概要を示すフローチャートである。送信端末２−１は、アプリケーション処理部１−１が任意の処理を実施し、データ分割復元部１−２にデータの送信を指示することにより、処理が開始される。
処理１０−１では、データ分割復元処理部１−２は、アプリケーション処理部１−１から受け取ったデータを任意の数のブロックに分割し、これを復元するための情報として、データのシーケンス番号と、ブロックの大きさをブロックの先頭に追加する。処理１０−２へ移動する。
処理１０−２では、データ分割復元処理部１−２は、分割したブロックを任意のＴＣＰコネクションに振り分ける。処理１０−３へ移動する。
処理１０−３では、データ分割復元処理部１−２は、ネットワーク処理部１−３へブロックの送信を指示する。ブロックをすべて送信し、アプリケーション処理部１−１の任意の処理が終了したら、処理を終了する。
図１３は、第４実施例における受信端末２−２の処理の概要を示すフローチャートである。受信端末２−２は、ネットワークから送信端末２−１が送信したブロックを受信することによって処理を開始する。
処理１１−１では、ネットワーク処理部１−３がデータ分割復元処理部１−２にブロックをわたし、データ分割復元処理部１−２では、ブロックの先頭に格納されているシーケンス番号とブロックサイズを参照し、ブロックを整列し、元のデータに復元する。処理１１−２へ移動する。
処理１１−２では、データ分割復元処理部１−２が復元したデータをアプリケーション処理部１−１にわたし、アプリケーション処理部１−１では任意の処理を実行する。すべてのブロックがアプリケーション処理部１−１に渡され、アプリケーション処理部１−１の任意の処理が終了したら処理を終了する。
以上が、本発明による第４実施例における通信端末の処理の内容である。
従来の技術においては、通信経路中に想定していないプロキシサーバなどがあり、データのセグメントが変更される場合があると、受信端末でデータを復元することが不可能であった。
一方、上記で述べたように第４実施例では、データを複数のブロック分割し、これを復元するための情報に分割されたブロックの長さを格納することにより、通信経路中に想定していないプロキシサーバなどがあり、データのセグメント化が変更される場合においても、受信端末でデータを復元することが可能である。
（第５実施例）
本発明の第５実施例による通信装置の構成は図１に示した第１実施例と同様であるため、ここでは第１の実施例の構成を示す図１を用いて説明する。
第５実施例において、本通信装置１は、アプリケーション処理部１−１と、データ分割復元処理部１−２と、ネットワーク処理部１−３とを含んで構成される。
アプリケーション処理部１−１は、任意のアプリケーションプログラムを処理し、データを送信する場合にはデータ分割復元処理部１−２にデータを送り、データを受信する場合にはデータ分割復元処理部１−２からデータを受け取る機能を有する。
データ分割復元処理部１−２は、データを送信する場合にはアプリケーション処理部１−１からデータを受け取り、データを送信するために任意の数のＴＣＰコネクションを利用し、それぞれのＴＣＰコネクションの通信レートを調査し、通信レートが低い場合は、小さなブロックにデータを分割し、通信レートが高い場合は、より大きなブロックをへとデータを分割し、任意の数のＴＣＰコネクションを利用して、ブロックをネットワーク処理部１−３へと送り、データを受信する場合にはネットワーク処理部１−３から受け取った複数のＴＣＰコネクションのデータについて、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、これをあわせることにより分割前のデータに復元し、アプリケーション処理部１−１に送る機能を有する。
ネットワーク処理部１−３は、データを送信する場合にはデータ分割復元処理部１−２から受け取ったＴＣＰコネクションのデータをネットワークへと出力し、データを受信する場合にはネットワークから入力されたＴＣＰコネクションのデータをデータ分割復元処理部１−２へと送る機能を有する。
図２は、第５実施例で、送信端末２−１から受信端末２−２へのデータの流れを示したブロック図、図１４は第５実施例における通信レートが大きい場合の送信端末と受信端末との間のデータの流れを示すブロック図、図１５は第５実施例における通信レートが大きい場合のデータの分割方法と、分割されたブロックとを示す図である。
図２では、送信端末２−１から受信端末２−２へとデータを送る場合、送信端末２−１は利用するそれぞれのＴＣＰコネクションの通信レートを調査し、図３に示すように、送信するデータを複数のブロックへ分割する。
ただし、それぞれのＴＣＰコネクションの通信レートを調査し、この通信レートの調査結果の合計が低い場合は、分割するブロックのサイズを小さくし、この通信レートの合計が高い場合は、分割するブロックのサイズを大きくする。次に、分割したブロックをあわせもとのデータを復元するための情報をＴＣＰヘッダ内部に格納し、複数のＴＣＰコネクションを利用して受信端末２−２へ送る。
例えば、通信レートが低い場合では、図３に示すように、データを４つのブロック（１）〜（４）に分割し、図２に示すように２つのＴＣＰコネクション（１）、（２）を利用し、ＴＣＰコネクション１ではブロック（１）、（３）を送信し、ＴＣＰコネクション２では、ブロック（２）、（４）を送信し、通信レートが高い場合では、分割するブロックの数を多くし、図１５に示すように、データを２つのブロック（１）、（２）に分割し、図１４に示すように２つのＴＣＰコネクション（１）、（２）を利用し、ＴＣＰコネクション（１）ではブロック１３−１を送信し、ＴＣＰコネクション（２）では、ブロック１３−２を送信する。
送信端末２−１からのブロックを受け取った受信端末２−２は、ＴＣＰヘッダ内部に格納された復元情報を参照し、分割されたブロックを識別し、ブロックを順番に整列することにより、複数のブロックから元のデータを復元する。図２では、受信端末２−２は、ＴＣＰコネクション（１）、（２）から受け取ったブロック（１）〜（４）を順番に整列し、元のデータを復元する。
同様に図１４では、受信端末２−２は、ＴＣＰコネクション（１）、（２）から受け取ったブロック１３−１および１３−２を順番に整列し、元のデータを復元する。
図４は、第５実施例のデータ分割復元処理部１−２においてＴＣＰヘッダ内部にデータの復元情報を格納する例である。送信端末２−１は、データを分割し、複数のブロックを生成したのち、このブロック番号をＴＣＰのタイムスタンプオプションの一部に格納する。ＴＣＰのタイムスタンプオプションは図５に示す形式にてＴＣＰヘッダのオプションフィールドに格納される。
第５実施例では、このＴＳ  Ｖａｌｕｅの４バイトの情報のうち、１バイトをデータの復元情報として、ブロック番号を格納するために用い、残りの３バイトにＴＳ  Ｖａｌｕｅのうち、上位３バイトを格納する。
ただし、このＴＳ  Ｖａｌｕｅの４倍との情報のうち、２バイトをデータの復元情報として、ブロック番号を格納するために用い、残りの２バイトにＴＳ  Ｖａｌｕｅのうち、下位２バイトを格納する、というように  ＴＳ  Ｖａｌｕｅにおけるデータの復元情報のために利用する領域を変更した実施例も可能である。
次に図１６、図１７を参照して第５実施例における送信端末２−１、受信端末２−２における処理について説明する。
図１６は、第５実施例における送信端末２−１の処理の概要を示すフローチャートである。送信端末２−１は、アプリケーション処理部が任意の処理を実施し、データ分割復元部１−２にデータの送信を指示することにより、処理が開始される。
処理１４−１では、データ分割復元処理部１−２は、アプリケーション処理部１−１から受け取ったデータを任意の数のブロックに分割する。ただし、このとき利用するＴＣＰコネクションの通信レートを調査し、その合計が低い場合は、小さなブロックへとデータを分割し、その合計が高い場合はより大きなブロックへとデータを分割する。処理１４−２へ移動する。
処理１４−２では、データ分割復元処理部１−２は、分割したブロックを任意のＴＣＰ  コネクションに振り分ける。処理１４−３へ移動する。
処理１４−３では、データ分割復元処理部１−２は、ネットワーク処理部１−３へブロックの送信を指示する。このとき、データＴＣＰヘッダ内のタイムスタンプオプションフィールドに復元のための情報として、送信しているブロック番号を格納する。ただし、ブロック番号が変わる場合は、同じパケット内には格納しない。
ネットワーク処理部１−３はネットワークへブロックを送出する。ブロックをすべて送信し、アプリケーション処理部１−１の任意の処理が終了したら、処理を終了する。
図１７は、第５実施例における受信端末２−２の処理の概要を示すフローチャートである。受信端末２−２は、ネットワークから送信端末２−１が送信したブロックを受信することによって処理を開始する。
処理１５−１では、ネットワーク処理部１−３がデータ分割復元処理部１−２にブロックをわたし、データ分割復元処理部１−２では、ＴＣＰヘッダ内のタイムスタンプオプションフィールドに格納されているブロック番号を参照し、これを整列し、元のデータに復元する。処理１５−２へ移動する。
処理１５−２では、データ分割復元処理部１−２が復元したデータをアプリケーション処理部１−１にわたし、アプリケーション処理部１−１では任意の処理を実行する。すべてのブロックがアプリケーション処理部１−１に渡され、アプリケーション処理部１−１の任意の処理が終了したら処理を終了する。
以上が、本発明による第５実施例における通信端末の処理の内容である。
従来の技術においては、通信レートに依存せず、複数のＴＣＰコネクションに分割したデータを振り分けており、異なるＴＣＰコネクションでデータを送信する際には、ＴＣＰコネクションへとデータを渡すための指示が多くなることによる処理負荷が大きかった。
一方、上記で述べたように第５実施例では、通信レートが大きくなった場合には、ＴＣＰコネクションに渡すブロックのサイズを大きくすることにより、一度の送信指示により渡されるサイズを大きくし、送信指示の回数を減らし、逆に、通信レートが小さい場合にはＴＣＰコネクションに渡すブロックのサイズを小さくすることにより、複数の通信回線を並列的に利用して通信を実現でき、通信回線の利用効率を上げることができる。
また、第５実施例では、データ分割復元処理部１−２は、データを送信する際に、利用するＴＣＰコネクションの通信レートを調査し、通信レートが低い場合にはデータを小さなブロックへと分割し、通信レートが高い場合は、データをより大きなブロックへと分割するとしたが、これに代えて、分割するブロックのサイズは一定とし、通信レートが低い場合には、一度の書き込み指示で１つのＴＣＰコネクションに１のブロックを渡すようにし、通信レートが高い場合には、ネットワーク処理部へと一度の書き込み指示で１つのＴＣＰコネクションに複数のブロックを連続して渡すようにする実施例も可能である。
また、第５実施例では、データ分割復元処理部１−２は、データを送信する際に、利用するＴＣＰコネクションの通信レートを調査するが、ＴＣＰの輻輳ウィンドウを参照することにより通信レートを推測し、通信レートの調査の代わりとする実施例も可能である。
また、第５実施例では、データ分割復元処理部１−２は、データを送信する際に、利用するＴＣＰコネクションの通信レートを調査するが、通信を開始してまもなくの間は、通信レートが低いと仮定し、通信開始から時間が経過するごとに通信レートが上がると仮定することにより、通信レートの調査の代わりとする実施例も可能である。
また、第５実施例では、データ分割復元処理部１−２は、データを送信する際に、利用するＴＣＰコネクションの通信レートを調査するが、アプリケーション処理部から渡されたデータの大きさによって、このデータが大きい場合は通信レートが高いものと仮定し、このデータが小さい場合には通信レートが低いと仮定することにより通信レートの調査の代わりとする実施例も可能である。
（第６実施例）
前述の図１の通信装置１はアプリケーション処理部１−１と、データ分割復元処理部１０２と、ネットワーク処理部１−３とを含むと説明した。しかし、これらにメモリ１８と、制御部１９とを加えプログラムの発明として権利化することも可能である。
メモリ１８には前述の図６〜図９、図１２、図１３、図１６および図１７にフローチャートで示すプログラムが格納されている。制御部１９はメモリ１８に格納されたこれらのプログラムを読み出し、そのプログラムにしたがってアプリケーション処理部１−１と、データ分割復元処理部１０２と、ネットワーク処理部１−３とを制御する。
なお、第１〜第６実施例では、ＴＣＰコネクションを利用した通信装置およびその通信方法ならびにプログラムについて説明したが、これに限定するものではなく、ＴＣＰ、ＳＣＴＰ（Ｓｔｒｅａｍ  Ｃｏｎｔｒｏｌ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）、ＤＣＣＰ（Ｄａｔａｇｒａｍ  Ｃｏｎｇｅｓｔｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）などのＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）４層のトランスポートプロトコルによるコネクションを利用した通信置およびその通信方法ならびにプログラムに本発明を適用することも可能である。
以上説明した本発明によれば、フロー分割および復元のために用いる情報を端末がデータを送出する際に作成したヘッダの内部に格納するため、データ分割および復元を行うために新たなヘッダをパケット内に格納する必要がなく、ヘッダが大きくなることがない。
また、本発明によれば、通信開始時に通信に関係するそれぞれのフローで利用可能なセグメントサイズを調査し、その調査結果に基づきそれぞれのフローで利用するセグメントサイズを決定するため、あるフローから別のフローへデータを乗せ換える場合でも、データを再セグメント化する必要が無くなり正常な通信が行える。
また、本発明によれば、データフローの分割および復元を行うために用いる情報に、ブロックの大きさを格納し、データ復元の際にこれを参照することにより、通信経路にてデータの再セグメント化が行われた場合でも、データの復元を行うことができ、正常な通信が行える。
さらに、本発明によれば、データ分割をし、複数のコネクションにて並列に送信する際に、コネクション処理プロセスへと一度に渡すデータの量を調整し、通信レートが小さいときには１パケット単位でデータを渡すが、通信レートが高くなった場合には複数のパケット分をまとめてコネクションに渡すため、コネクション処理プロセスへの書き込み命令の発行回数を少なくすることができ、この処理負荷を減らすことができる。
【図１】
0004656415.tif 000002
【図２】
0004656415.tif 000003
【図３】
0004656415.tif 000004
【図４】
0004656415.tif 000005
【図５】
0004656415.tif 000006
【図６】
0004656415.tif 000007
【図７】
0004656415.tif 000008
【図８】
0004656415.tif 000009
【図９】
0004656415.tif 000010
【図１０】
0004656415.tif 000011
【図１１】
0004656415.tif 000012
【図１２】
0004656415.tif 000013
【図１３】
0004656415.tif 000014
【図１４】
0004656415.tif 000015
【図１５】
0004656415.tif 000016
【図１６】
0004656415.tif 000017
【図１７】
0004656415.tif 000018