(57)【特許請求の範囲】
【請求項１】
相手端末との間でデータ通信を指示するアプリケーション・プログラムと、該アプリケーション・プログラムからの指示があったとき、中継器に通信路を介して発呼して、データリンクを確立およびデータ通信セッションを確立してデータ通信を行う通信制御手段とを備えた端末と、
発呼されたときデータリンクを確立およびデータ通信セッションを確立してデータ通信要求があったとき該当する相手端末にデータ転送を行う通信制御手段を備えた中継器とを具備し、端末間でデータ通信を行うデータ通信システムであって、
上記データ通信を行なう端末内あるいは中継器内にある通信制御手段は、データリンクが切断したり、データ通信中に一時的なデータリンクの品質低下による通信遅延が生じた後、通信相手側アプリケーション・プログラムから受信確認を含む通信パケットを受信した時、上記通信相手側アプリケーション・プログラムから受信した通信パケット内に含まれる受信確認番号を変更した複数の受信確認応答パケットを生成して自アプリケーション・プログラムに送信し、擬似的にデータ通信が順次行なわれているように自アプリケーション・プログラムを制御し、自アプリケーション・プログラムが行なうスロースタートおよび輻輳抑止制御から早期に回復させる
ことを特徴とするデータ通信システム。
【請求項２】
上記データ通信を行なう端末内あるいは中継器内にある通信制御手段は、データリンクの切断や通信遅延に備えて通信内容の複製を記憶し、データ通信中に一時的にデータリンクが切断した後のデータリンクの再確立後、上記通信内容の複製を自律的に通信相手側アプリケーション・プログラムに送信し、自アプリケーション・プログラムからのデータの再送を待つことなくデータ通信を再開させる
ことを特徴とする請求項１のデータ通信システム。
【請求項３】
上記データ通信を行なう端末内あるいは中継器内にある通信制御手段は、相手側アプリケーション・プログラムへの再送パケットの送信が、ある一定回数（＝Ｎ）以上続いた際、リンクの品質低下による遅延発生とみなし、再送パケットを通信相手側アプリケーション・プログラムに送出せずに破棄して、自アプリケーション・プログラム側に対して送信停止制御を行い、
再送パケットが上記一定回数（＝Ｎ）を越えるまで、あるいはＮより大きいＭ回の再送パケットを検出した後は通信相手側アプリケーション・プログラムに再送パケットを送出する
ことを特徴とする請求項１または請求項２のデータ通信システム。
【請求項４】
相手端末との間でデータ通信を指示するアプリケーション・プログラムと、該アプリケーション・プログラムからの指示があったとき、中継器に通信路を介して発呼して、データリンクを確立およびデータ通信セッションを確立してデータ通信を行う通信制御プログラムとを備えた端末と、
発呼されたときデータリンクを確立およびデータ通信セッションを確立してデータ通信要求があったとき該当する相手端末にデータ転送を行う通信制御プログラムを具備する中継器とを備えた通信システムにおける通信制御プログラムを記録した記録媒体であって、
データ通信を行なう端末内あるいは中継器内にある上記通信制御プログラムは、データリンクが切断したり、データ通信中に一時的なデータリンクの品質低下による通信遅延が生じた後、通信相手側アプリケーション・プログラムから受信確認を含む通信パケットを受信した時、上記通信相手側アプリケーション・プログラムから受信した通信パケット内に含まれる受信確認番号を変更した複数の受信確認応答パケットを生成して自アプリケーション・プログラムに送信し、擬似的にデータ通信が順次行なわれているように該自アプリケーション・プログラムを制御し、自アプリケーション・プログラムが行なうスロースタートおよび輻輳抑止制御から早期に回復させる
ことを特徴とする通信制御プログラムを記録した記録媒体。
【請求項５】
上記通信制御プログラムは、データリンクの切断や通信遅延に備えて通信内容の複製を記憶し、
データ通信中に一時的にデータリンクが切断した後のデータリンクの再確立後、上記通信内容の複製を自律的に相手側アプリケーション・プログラムに送信し、自アプリケーション・プログラムからのデータの再送を待つことなくデータ通信を再開させる
ことを特徴とする請求項４の通信制御プログラムを記録した記録媒体。
【請求項６】
上記通信制御プログラムは、相手側アプリケーション・プログラムへの再送パケットの送信が、ある一定回数（＝Ｎ）以上続いた際、リンクの品質低下による遅延発生とみなし、再送パケットを相手側アプリケーション・プログラムへは送出せずに破棄して、自アプリケーション・プログラム側に対して送信停止制御を行い、
再送パケットが上記一定回数（＝Ｎ）を越えるまで、あるいはＮより大きいＭ回の再送パケットを検出した後は相手側アプリケーション・プログラムに再送パケットを送出する
ことを特徴とする請求項４または請求項５の通信制御プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、端末間でデータ通信を行なう、データ通信システムおよび該データ通信プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
従来から、端末がインターネットなどで利用されるＴＣＰ／ＩＰプロトコルなどを用いてネットワークに接続されている他の端末との間でデータ通信を行うシステムが使用されている。
従来のデータ通信システムにおいては、通信中、電波状況の悪化等でデータリンクが切断された後のデータリンク再確立後のデータ通信や、遅延増大によるデータの再送発生時には、送信側端末の再送タイマ（ＲＴＯ：Retransmission Time Out ）が増大し、なかなかデータ送信されず、また、データ通信再開後もスロースタートや輻輳抑止制御が行なわれ、通信効率が低下している。
【０００３】
【発明が解決しようとする課題】
無線を介した移動端末等を利用したデータリンクの確立を伴うＴＣＰ／ＩＰデータ通信において、データ通信中に電波状況などが変化してデータリンクが切断された時や一時的に遅延が増大した場合、受信確認応答が期待した時間内に到着しないために、送信側端末は再送タイマ（ＲＴＯ）を２倍づつ増加させながらデータの再送を行なう。
このためデータリンク再確立後や遅延増大からの回復後に、送信相手側端末から何もパケットを受信しない場合は送信側端末の再送タイマがタイムアウトするまで無通信状態が続く。またデータ通信再開後も送信側端末においてネットワークの輻輳を防ぐ目的で輻輳ではないにも関わらず、スロースタートや輻輳抑止制御が働き、データ通信効率が低下するという問題があった。
本発明はこれらの問題を解決するためになされたものであって、本発明の目的は、データリンク再確立後や遅延増大からの回復後、送信側端末からのデータ再送を待つことなくデータ通信を再開できるようにするとともに、データ通信再開後、スロースタートおよび輻輳抑止制御から早期に回復させ、データ通信を効率よく行なえるようにすることである。
【０００４】
【課題を解決するための手段】
図１は本発明の概要を示す図である。同図（ａ）は本発明が適用される通信システムの一例を示し、端末Ａは移動端末などのデータ通信を行なう端末であり、端末Ｂはデータ通信を行なうネットワークに接続された端末である。また、同図（ｂ）はリンク異常切断発生時の動作を示している。
以下、図１により本発明の概要を説明する。
通信制御プログラム１Ａは、アプリケーション・プログラムＡからアプリケーション・プログラムＢへの通信パケットの複製を保持し、通信制御プログラム１Ｃはアプリケーション・プログラムＢからアプリケーション・プログラムＡへの通信パケットの複製を保持する。
通信中に何らかの問題でデータリンクが切断されたり遅延が増大した時、該通信制御プログラム１Ａ，１ＣはＴＣＰ／ＩＰで規定された相手受信バッファの空きが無いことを伝える送信停止命令を自アプリケーション・プログラムに送信して〔図１（ｂ）の(3) 〕、自アプリケーション・プログラムからのデータ送信を一時中断させる。
データリンクが切断された場合には、データリンク回復後、通信制御プログラム１Ｃが保持したデータ通信内容の複製を相手側アプリケーション・プログラム２Ａに送信し〔図１（ｂ）の(4) 〕、相手側アプリケーション・プログラム２Ａからの応答を受け取るまで待つ。
データリンクの回復後、あるいは、通信遅延からの回復後、相手側アプリケーション・プログラム２Ａから何らかのデータを受信すると〔図１（ｂ）の(5) 〕、該相手側アプリケーション・プログラム２Ａから受信したパケット内で指示された次データのオフセット位置を示す受信確認応答番号をもとに、本来の番号を越えない範囲で複数の受信確認応答パケットを通信制御プログラム１Ｃが生成し自アプリケーション・プログラムに送信する〔図１（ｂ）の(6) 〕。図示していないが、通信制御プログラム１Ａも同様の制御を行う。
輻輳抑止制御は、受信確認応答により回復するため、これを多数返すようにしている。
これにより、上記送信停止命令を解除し、順次データ通信が行なわれているように自アプリケーション・プログラム２Ｂを制御し、自アプリケーション・プログラム内で行なわれるスロースタートおよび輻輳抑止制御から早期に回復させ、データ通信を効率よく行なえるようにする。
【０００５】
また、データリンクの品質低下による通信遅延が発生した場合には、次のように通信遅延を検出し制御する。
通信遅延が発生すると、タイムアウトする毎に図１（ｂ）の(2) に示すように再送パケットを相手側アプリケーション・プログラム（例えばアプリケーション・プログラム２Ａ）に送出する。ある一定回数（＝Ｎ）に達するまでは、パケットロス、データ抜け、ビットエラーに備え相手アプリケーションに送出する。相手側アプリケーション・プログラム２Ａへの再送パケットの送信が、Ｎ回以上続いた際、リンクの品質低下による遅延発生とみなし、再送パケットを通信相手側アプリケーション・プログラム２Ａに送出せずに破棄し、前記図１（ｂ）の(3) に示したように自アプリケーション・プログラム側に対して送信停止制御を行う。
そして、Ｎより大きいＭ回の再送パケットを検出した後は通信相手側アプリケーション・プログラム２Ａに再送パケットを送出する。
【０００６】
本発明の請求項１，４の発明においては、上記のようにデータリンクの回復後、あるいは、通信遅延からの回復後、相手側アプリケーション・プログラムから受信確認応答を受信したとき、受信したパケット内で指示された次データのオフセット位置を示す受信確認応答番号をもとに、受信確認番号を変更した複数の受信確認応答パケットを生成し、自アプリケーション・プログラムに送信する。擬似的にデータ通信が行われるように自アプリケーション・プログラムを制御しているので、自アプリケーション・プログラム内で行なわれるスロースタートおよび輻輳抑止制御から早期に回復させ、データ通信を効率よく行なえるようにすることができる。
本発明の請求項２，５の発明においては、上記のように、通信制御プログラムで通信内容の複製を記憶し、データ通信中に一時的なデータリンクが切断した後のデータリンクの再確立後、上記通信内容の複製を自律的に通信相手側アプリケーション・プログラムに送信するので、ＲＴＯが増大した送信元のアプリケーションケーション・プログラムが行うデータの再送を待つことなくデータ通信を再開させることができる。
本発明の請求項３，６の発明においては、上記のように、相手側アプリケーション・プログラムへの再送パケットの送信が、ある一定回数（＝Ｎ）以上続いた際、リンクの品質低下による遅延発生とみなし、再送パケットを通信相手側アプリケーション・プログラムに送出せずに破棄して、自アプリケーション・プログラム側に対して送信停止制御を行い、再送パケットが上記一定回数（＝Ｎ）を越えるまで、あるいはＮより大きいＭ回の再送パケットを検出した後は通信相手側アプリケーション・プログラムに再送パケットを送出するようにしたので、通信データ欠損や通信プロトコルのデータ誤り訂正機能を考慮して、リンク品質低下による通信遅延を検出することができる。
【０００７】
【発明の実施の形態】
図２は本発明が適用される通信システムの構成例を示す図である。
図２（ａ）は一方の端末のみが中継器に対してデータリンクの確立を必要とする場合のシステム構成を示し、もう一方の端末はＬＡＮなどのネットワークに常時接続している場合である。図２（ｂ）は両端末が移動端末の場合のように両端末が中継器に対してデータリンクの確立を必要とする場合のシステムの構成を示し、このように端末Ｂ内に通信制御プログラム１４Ｂがある場合は端末Ｂと中継器Ｃとがデータリンクの確立を必要とするネットワーク接続形態で接続されてもよい。図２（ｃ）は中継器内に端末の通信相手側アプリケーション・プログラムが存在する場合を示している。
【０００８】
図２において、端末Ａは移動端末などの端末であって、データ通信を行なう端末であり、相手端末との間でデータ通信を指示するアプリケーション・プログラム１１Ａと、ＴＣＰモジュール１２Ａと、ＩＰモジュール１３Ａ、通信制御プログラム１４Ａ、データリンクモジュール１５Ａから構成される。
ＴＣＰモジュール１２ＡおよびＩＰモジュール１３Ａは既知のＴＣＰ／ＩＰプロトコルに従い相手端末Ｂ内のＴＣＰモジュール１２Ｂ、ＩＰモジュール１３Ｂとの間で通信を行い、アプリケーション・プログラム１１Ｂへデータを送信する。通信制御プログラム１４Ａはデータ通信制御を行なうプログラムであり、データリンクモジュール１５Ａは中継器Ｃに対して発呼などしてデータリンクを確立する。
中継器Ｃは端末Ａと端末Ｂの間にあってデータ通信を中継するものであり、データリンクモジュール１５Ｃ、通信制御プログラム１４Ｃ、ＩＰモジュール１３Ｃ、ＩＰアドレス割り当てモジュール１６Ｃ等から構成される。ＩＰアドレス割り当てモジュール１６Ｃは端末Ａなどに対し、一意のＩＰアドレスを割り当てるものである。また、通信制御プログラム１４Ｃは端末Ａとの間などでデータ通信を制御する。
【０００９】
図２（ａ）の端末Ｂはデータ通信を行なうネットワークに接続された端末であって、アプリケーションプログラム１１Ｂ、ＴＣＰモジュール１２Ｂ、ＩＰモジュール１３Ｂなどから構成される。図２（ｂ）の端末Ｂは例えば移動端末であり、端末Ａと同様な構成を有する。また、図２（ｃ）は前記したように中継器内に端末の通信相手側アプリケーション・プログラム１１Ｂが存在する場合であって、その他の構成は図２（ａ）（ｂ）の中継器Ｃと同じである。
なお、以下の説明では、図２（ａ）のシステムを対象として本発明の実施例を説明するが、本発明を図２（ｂ）（ｃ）のシステムにも同様に適用することもできる。
【００１０】
以下、リンクが異常切断した場合の回復時の動作、および、リンクに回線品質低下による遅延が発生した際の回復時の動作について、図２、図３により説明する。
図３は、リンクが異常切断した時の回復の様子を示したものである。
図３において、▲１▼は通常のデータ通信時の状態を示し、端末Ａのアプリケーション・プログラム１１Ａ、および、端末Ｂのアプリケーション・プログラム１１Ｂは通常のＴＣＰ／ＩＰプロトコルに従いＴＣＰセッションでデータ通信をする。この時、通信制御プログラム１４Ａ、１４Ｃはそれぞれ自アプリケーション・プログラムの送出したデータ通信パケットの複製を保持し、不意のリンク異常切断に備える。このパケットの複製は、相手側アプリケーション・プログラムから受信確認応答（Ａ＝１１）を受信したとき破棄される。
▲２▼はリンクが異常切断したが、まだ、リンクの異常切断を通信制御プログラムが認知していない状態を示す。
【００１１】
▲３▼ではリンクの異常切断を検出した端末Ａの通信制御プログラム１４Ａ、中継器Ｃの通信制御プログラム１４Ｃが各々の側のアプリケーション・プログラム１１Ａおよび１１Ｂに送信停止制御として、公知のＴＣＰプロトコルで規定された受信バッファ一杯の旨を送出している（Ａ＝１１，Ｗｉｎ＝０）。
再送タイマがタイムアウトする毎に、データ送信側であるアプリケーション・プログラム１１Ｂは定期的にデータ通信再開確認用のパケット（Ｓ＝１１）を送出し、通信制御プログラム１４Ｃはデータ送信停止制御パケット（Ａ＝１１，Ｗｉｎ＝０）を返し応答している。
【００１２】
▲４▼は、リンクが回復したことを通信制御プログラム１４Ｃが認知した状態を示し、通信制御プログラム１４Ｃは前記▲１▼で保持していたデータ通信パケット（Ｓ＝１１〜Ｓ１４）の複製を相手側のアプリケーション・プログラム１１Ａに対し送出する。
これにより、送信側端末における増大した再送タイマのタイムアウトによるデータの再送を待つことなくデータ通信を再開させることができる。
上記複製を受信した相手側アプリケーション・プログラム１１Ａは、データＳ＝１１を受信して再開されたと解釈し、受信確認応答を返す。
【００１３】
相手側アプリケーション・プログラム１１Ａからの受信確認応答（Ａ＝１５）を受け取った通信制御プログラム１４Ｃは、受信したパケット内で指示された受信確認応答番号をもとに複数の受信確認応答パケット（Ａ＝１２〜Ａ＝１５）を生成し、自アプリケーション・プログラム１１Ｂに送出する。
すなわち、受信確認応答（Ａ＝１５）を分割し、受信確認応答番号の値に達するまで、自アプリケーション・プログラム１１Ｂに送出し順次データ通信が行なわれたように振る舞う。これにより、自アプリケーション・プログラム１１Ｂ側のＴＣＰモジュール内の通信効率を決定する要因である送信ウィンドウサイズや輻輳ウィンドウサイズを短時間に増加させ、さらに増大した各種タイマ値をリセットさせ、通信効率を早期に回復させる。
相手側アプリケーション・プログラム１１Ａからの受信確認応答（Ａ＝１５）を分割したので、自アプリケーション・プログラム１１Ｂが送出する重複したデータ通信パケット（Ｓ＝１２〜Ｓ１４）は通信制御制御プログラム１４Ｃ内で破棄し、アプリケーション・プログラム１１Ａには伝えない。
▲５▼では新規データ通信パケット（Ｓ＝１５〜１８）を検出し▲１▼の通常の通信制御に戻る。
【００１４】
図４は、リンクに回線品質低下による遅延が発生した際の回復の様子を示したものである。
図４において、▲１▼は通常のデータ通信時の状態を示し、端末Ａのアプリケーション・プログラム１１Ａ、および、端末Ｂのアプリケーション・プログラム１１Ｂは通常のＴＣＰ／ＩＰプロトコルに従いＴＣＰセッションでデータ通信をする。この時、通信制御プログラムは図３で説明したようにそれぞれ自アプリケーション・プログラムの送出したデータ通信パケットの複製を保持し、不意のリンク異常切断に備える。このパケットの複製は、相手側の端末Ａから受信確認応答（Ａ＝１１）を受信したとき破棄される。
通信制御プログラム１４Ｃは、相手側アプリケーション・プログラム１１Ａから受信確認応答が返ってこなくても、再送パケットがある一定値を越えるまでは、パケットロスやエラー訂正の可能性もあるのでそのまま通過させる（Ｓ＝１１〜Ｓ１４）。
【００１５】
▲２▼は通信制御プログラム１４Ｃが一定値（Ｎ）に達した（この場合はＮ＝２）再送パケットを観測したことにより、回線品質低下による遅延発生を検出した状態を示しており、再送パケット（Ｓ＝１１）を破棄し、自アプリケーション・プログラム１１Ｂに対し送信停止制御として公知のＴＣＰプロトコルで規定された受信バッファが一杯の旨を伝える（Ａ＝１１，Ｗｉｎ＝０）。
なお、上記再送回数がＮ回以上続いた際に、上記のようにリンクの品質低下による遅延発生と見なして再送パケットを破棄して送信停止制御を行い、Ｎより大きいＭ回の再送パケットを検出した際には、パケット欠損か通信プロトコルのデータ誤り訂正の可能性があるので、後述するように相手側端末（端末Ａ）に再送パケットをそのまま送出する。
【００１６】
▲３▼は相手側のアプリケーション・プログラム１１Ａからの受信確認応答（Ａ＝１５）を検出したことで、リンク内の遅延回復を検出した状態を示しており、前記したように受信したパケット内で指示された受信確認応答番号をもとに複数の受信確認応答パケット（Ａ＝１２〜Ａ＝１５）を生成し、自アプリケーション・プログラム１１Ｂに送出する。
すなわち、受信確認応答（Ａ＝１５）を分割して、自アプリケーション・プログラム１１Ｂに送出し順次データ通信が行なわれたように振る舞う。これにより、前記したように自アプリケーション・プログラム側のＴＣＰモジュール内の通信効率を決定する要因である送信ウィンドウサイズや輻輳ウィンドウサイズを短時間に増加させ、さらに増大した各種タイマ値をリセットさせ、通信効率を早期に回復させる。
また、前記したように、受信確認応答（Ａ＝１５）を分割したことにより、自アプリケーション・プログラム１１Ｂが送出する重複したデータ通信パケット（Ｓ＝１２〜Ｓ１４）は通信制御制御プログラム１４Ｃ内で破棄し、相手側アプリケーション・プログラム１１Ａには伝えない。
▲４▼では新規データ通信パケット（Ｓ＝１５〜１８）を検出し▲１▼の通常の通信制御に戻る。
【００１７】
図５は通信制御プログラムが自アプリケーション・プログラムより通信パケットを受信した時の動作を示すフローチャートである。
通信制御プログラムは自アプリケーション・プログラムより通信パケットを受信すると、まずデータパケットかどうかを判別する（ステップＳ１）。
受信したパケットが、セッションの確立要求（ＳＹＮ）や終了要求（ＦＩＮ）や強制終了（ＲＳＴ）を指示するＴＣＰの制御パケットの場合は、ステップＳ２からステップＳ３に行き、セッション状態を更新する。
受信したパケットがデータパケットの場合には、該受信パケットが新規パケットかどうかをセッション毎に保持している記憶をもとに判別する（ステップＳ４）。
該受信パケットが新規パケットの場合は複製、記憶保持し（ステップＳ４→Ｓ５）、データリンクが検出されていることを確認した上で受信パケットを相手側アプリケーション・プログラムに送出する（ステップＳ６→ステップＳ７）。
【００１８】
上記受信パケット送出時にデータリンクが検出されなかった場合はリンク障害と判断し、リンク異常切断時制御へ進む（ステップＳ６→Ｓ９→Ｓ１０）。
一方、ステップＳ４において、受信パケットが新規パケットでなく再送パケットと判別した場合、データリンクを検出し（ステップＳ８）、異常切断中ではないことを確認した後に再送回数を加算し（ステップＳ１１）、再送回数を確認する（ステップＳ１２）。もし該再送回数αが遅延検出回数範囲内（α＜Ｎ、α≧Ｍ）である場合には、再送パケットを相手側アプリケーション・プログラムに送出する。また、該再送回数αが遅延検出回数範囲を越えると（α≧Ｎ）、通信遅延とみなし、通信遅延時制御へ進む（ステップＳ１３→ステップＳ１４）。
上記再送回数がさらに増えて遅延検出回数範囲外になると（α≧Ｍ）、パケット欠損か通信プロトコルのデータ誤り訂正の可能性があるので再送パケットをそのまま相手側アプリケーション・プログラムに送信する（ステップＳ１２→ステップＳ７）。
【００１９】
図６は、通信制御プログラムが相手側アプリケーション・プログラムより通信パケットを受信した時の動作を示すフローチャートである。
通信制御プログラムは相手アプリケーション・プログラムより通信パケットを受信すると、まずデータパケットかどうかを判別する（ステップＳ１）。通信パケットが、セッションの確立要求（ＳＹＮ）や終了要求（ＦＩＮ）や強制終了（ＲＳＴ）を指示するＴＣＰの制御パケットの場合は、ステップＳ２からステップＳ３に行き、セッション状態を更新する。
受信したパケットがデータパケットの場合には、該受信パケットを検出した際の制御状態が通常状態にあるか（前記図３および図４の▲１▼の状態にあるか）を確認する（ステップＳ４）。
もし通常状態でなければ、通信遅延発生状態からの回復かあるいはリンクの異常切断後のリンク再確立直後に該当するので、データ通信回復制御を行なう（ステップＳ５）。
また、該通信パケット受信時の制御状態が通常状態であれば、該通信パケットから受信確認応答番号を検出し、記憶から該受信確認応答番号に該当する複製パケットを削除した後に自アプリケーション・プログラムに該受信パケットを送出する（ステップＳ６、Ｓ７、Ｓ８）。
【００２０】
図７は通信制御プログラムのリンク異常切断時の動作（図３の▲３▼およびリンクが再確立直後の動作）を示すフローチャートである。
通信制御プログラムはリンクの異常切断をリンクの信号線等から検出すると、送信停止制御パケットとして、ＴＣＰで規定された受信バッファ一杯の旨を示すパケットを自アプリケーション・プログラムに対し送信する（ステップＳ１）。
これを受け取った自アプリケーション・プログラムは、相手側アプリケーション・プログラムの受信バッファが満杯であると判断し（ステップＳ２，Ｓ３）、相手側アプリケーション・プログラムの受信バッファが空いたかどうかを確認するためのパケット作成し、相手側アプリケーション・プログラムに送信する（ステップＳ４）。
【００２１】
通信制御プログラムは、上記パケットを受信すると（ステップＳ５）、該パケットが新規パケットであるかを判断し（ステップＳ６）、新規パケットの場合はそれを記憶し（ステップＳ７）、また、新規パケットでない場合には（再送の場合）、該パケットを破棄して（ステップＳ８）、ステップＳ１に戻り、上記処理を繰り返しながら、リンクが再確立されるのを待つ。
リンクが再確立されると、通信制御プログラムはこれまでに自アプリケーション・プログラムが送信し、相手側アプリケーション・プログラムから受信確認応答が返ってきていない全パケットを相手側アプリケーション・プログラムに送信し（ステップＳ９）、相手側アプリケーション・プログラムから受信確認応答が返るのを待つ。
相手側アプリケーション・プログラムは上記パケットを受信すると（ステップＳ１０）、受信確認応答を作成し送信する（ステップＳ１１）。
通信制御プログラムは、上記受信確認応答を相手側アプリケーション・プログラムから受信すると、後述するデータ通信回復制御に移る（ステップＳ１２）。そして、この制御が終った時点で異常切断時制御から抜け、通常状態の制御に戻る。
【００２２】
図８は通信制御プログラムの通信遅延時の動作（前記図４の▲２▼）を示すフローチャートである。
通信制御プログラムは、前記図４で説明したように自アプリケーション・プログラムからの再送パケットの回数を各通信セッション毎に数え、該再送回数がある一定値範囲にあるときに通信遅延状態と判断し通信遅延制御に入る。
通信遅延制御にある通信制御プログラムは、自アプリケーション・プログラムからパケットを受信すると（ステップＳ１）、通信遅延検出中であるか判断し（ステップＳ２）、通信遅延検出中の場合には、相手側アプリケーション・プログラムからパケットを受信しているか判断する（ステップＳ３）。
相手側アプリケーション・プログラムからパケットを受信していない場合には、リンク異常切断時制御と同様に、送信停止制御パケットを作成し該パケットを自アプリケーション・プログラムに送信する（ステップＳ４）。
これを受け取った自アプリケーション・プログラムは、相手側アプリケーション・プログラムの受信バッファが満杯であると判断し（ステップＳ５，Ｓ６）、相手側アプリケーション・プログラムの受信バッファが空いたかどうかを確認するための受信バッファサイズ確認用パケットとして再送パケットを準備し（ステップＳ７）、該再送パケットを送信する（ステップＳ８）。
また、相手側アプリケーション・プログラムからパケットを受信した場合には、データ通信回復制御に移り（ステップＳ３→ステップＳ９）、この制御が終った時点で通信遅延時制御から抜け、通常状態の制御に戻る。
【００２３】
図９、図１０は図７、図８に示したデータ通信回復制御（図３の▲４▼、図４の▲３▼）の動作を示すフローチャートである。すなわち、リンク異常切断後のリンク再接続後、通信制御プログラムが複製を自律的に送信したことにより相手側アプリケーション・プログラムが通信可能状態と判断して何らかの応答を返した後、および、一時的に通信遅延発生後に相手側アプリケーション・プログラムが送信した通信パケットが届いた時に、通信制御プログラムが行う通信効率回復の動作を示している。
相手側アプリケーション・プログラムが送出したパケットを通信制御プログラムが検知すると、まず、そのパケット内に含まれる確認応答番号（Ａｎ）を検出し、相手側アプリケーション・プログラムが受信したデータのオフセット位置を確認する（ステップＳ１）。
そして、通信遅延検出中もしくは異常切断後のリンク回復直後の場合には、通信制御プログラムが受信したパケットの複製を保持しているキャッシュを調べ（ステップＳ２、Ｓ３）、該相手側アプリケーション・プログラムから受信したパケットによって新たに受信確認されたデータがあることを確認する。さらに、自アプリケーション・プログラムが複数パケットとして送出したデータに対して、一回で一括受信確認応答がされているかどうか確認する（ステップＳ４）。
【００２４】
一括受信確認されている場合には、上記キャッシュに保存されている自アプリケーション・プログラムが相手側アプリケーション・プログラムに送出した一番古いパケット（Ｐａ）を取り出し（ステップＳ５）、これを元に次データを要求する受信確認応答を、相手側アプリケーション・プログラムから自アプリケーション・プログラムに送られてきたように送信元情報と宛先情報を設定し、自アプリケーション・プログラムに送出する（ステップＳ６）。
上記のように通信制御プログラム内で生成された受信確認応答を受信した自アプリケーション・プログラムは、今まで受信確認されていなかったパケット（Ｐａ）が受信されたことを検知し、増大した再送タイマ等が解除した後、次データ（Ｐａ＋１）を送出する（ステップＳ７、Ｓ８）。
自アプリケーション・プログラムから次データ（Ｐａ＋１）を受信した通信制御プログラムは、次データ（Ｐａ＋１）に含まれるデータのオフセット位置Ｓａ＋１（シーケンス番号）と前記した確認応答番号（Ａｎ）とを比較する（ステップＳ９、Ｓ１０、Ｓ１１）。
Ｓａ＋１がＡｎより小さい場合には、相手側アプリケーション・プログラムは既にそのデータを受信していると判断し、相手側アプリケーション・プログラムには送信せず破棄対象として、ステップＳ５に戻り、上記と同様に次データを要求する受信確認応答を生成し、次アプリケーション・プログラムに送出する。
【００２５】
以上の処理をＳａ＋１がＡｎになるまで繰り返すことで、順次データが相手側アプリケーション・プログラムで受信されたように、自アプリケーション・プログラムを制御し、通信遅延発生中もしくはリンクの異常切断中の通信効率を低下させる要因を解除させる。
Ｓａ＋１がＡｎ以上に達すると、通信制御プログラムは、Ｐａ＋１が相手側アプリケーション・プログラムにまだ送信していない新規パケットと判断し、該パケットＰａ＋１を相手側アプリケーション・プログラムに送出し（ステップＳ１２）、データ通信回復制御を終了させ通常の通信制御に戻る（ステップＳ１３）。
【００２６】
【発明の効果】
以上説明したように、本発明においては、以下の効果を得ることができる。
（１）データリンクの回復後、あるいは、通信遅延からの回復後、受信確認応答を受信したとき、受信確認番号を変更した複数の受信確認応答パケットを生成して送信し、擬似的にデータ通信が行われるように自アプリケーション・プログラムを制御しているので、スロースタートおよび輻輳抑止制御から早期に回復させることができ、データ通信を効率よく行なえるようにすることができる。
（２）通信制御プログラムで通信内容の複製を記憶し、データ通信中に一時的なデータリンクが切断した後のデータリンクの再確立後、上記通信内容の複製を自律的に通信相手側アプリケーション・プログラムに送信するようにしたので、ＲＴＯが増大した送信元のアプリケーションケーション・プログラムが行うデータの再送を待つことなくデータ通信を再開させることができ、データ通信の効率を向上させることができる。
（３）再送パケットの送信が、ある一定回数（＝Ｎ）以上続いた際、リンクの品質低下による遅延発生とみなし、再送パケットを通信相手側アプリケーション・プログラムに送出せずに破棄して、自アプリケーション・プログラム側に対して送信停止制御を行い、再送パケットが上記一定回数（＝Ｎ）を越えるまで、あるいはＮより大きいＭ回の再送パケットを検出した後は通信相手側アプリケーション・プログラムに再送パケットを送出するようにするようにしたので、通信データ欠損や通信プロトコルのデータ誤り訂正機能を考慮して、リンク品質低下による通信遅延を検出することができる。
【図面の簡単な説明】
【図１】本発明の概要を説明する図である。
【図２】本発明が適用されるシステムの構成例を示す図である。
【図３】本発明の実施例の動作説明図（異常切断発生時）である。
【図４】本発明の実施例の動作説明図（リンク内遅延発生時）である。
【図５】通信制御プログラムが自アプリケーション・プログラムより通信パケットを受信した時の動作を示すフローチャートである。
【図６】通信制御プログラムが相手側アプリケーション・プログラムより通信パケットを受信した時の動作を示すフローチャートである。
【図７】通信制御プログラムのリンク異常切断時の動作を示すフローチャートである。
【図８】通信制御プログラムの通信遅延時の動作を示すフローチャートである。
【図９】データ通信回復時の動作を示すフローチャート（１）である。
【図１０】データ通信回復時の動作を示すフローチャート（２）である。
【符号の説明】
１Ａ，１Ｃ              通信制御プログラム
２Ａ，２Ｂ              アプリケーション・プログラム
１１Ａ，１１Ｂ          アプリケーション・プログラム
１２Ａ，１２Ｂ          ＴＣＰモジュール
１３Ａ，１３Ｂ，１３Ｃ  ＩＰモジュール
１４Ａ，１４Ｂ，１４Ｃ  通信制御プログラム
１５Ａ，１５Ｂ，１５Ｃ  データリンクモジュール
１６Ｃ                  ＩＰアドレス割り当てモジュール
Ａ，Ｂ                  端末
Ｃ                      中継器
【図１】
0003659864.tif 000002
【図２】
0003659864.tif 000003
【図３】
0003659864.tif 000004
【図４】
0003659864.tif 000005
【図５】
0003659864.tif 000006
【図６】
0003659864.tif 000007
【図７】
0003659864.tif 000008
【図８】
0003659864.tif 000009
【図９】
0003659864.tif 000010
【図１０】
0003659864.tif 000011