(57)【要約】【課題】受信データをキャッシュできる状態にあるか否かにかかわらず再送された消失データの受信に連続してシーケンス番号を付したセグメントデータを受信できるようにし、通信のスループットの低下を回避し、全セグメントデータの受信完了時間を短縮することができる通信方法を提供する。【解決手段】ＴＣＰに基づいてデータ通信を行う第１通信装置及び第２通信装置において、第１通信装置が前回受信した予定シーケンス番号と同一の予定シーケンス番号に対応する情報を受信し（Ｓ２０５でＹＥＳ）、連続受信回数が所定の回数に達したとき（Ｓ２０８でＹＥＳ）、シーケンス番号を受信した予定シーケンス番号に戻す（Ｓ２０９）。【選択図】図１３
2008099139.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
前記一の通信装置から送信されたデータを受信し、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【請求項２】
ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
前記一の通信装置から送信されたデータを受信し、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【請求項３】
ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した変数及び予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
前記変数と共に、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【請求項４】
ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した変数及び予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を前記変数と共に複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【請求項５】
前記一の通信装置は、
データ通信の開始についての開始確認を送信し、
前記他の通信装置は、
受信した開始確認に対する開始応答を送信し、
前記一の通信装置は、
該開始応答を受信した場合、前記データを送信することを特徴とする請求項１乃至４のいずれかに記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＴＣＰに基づく通信装置間のデータ通信に関し、特に消失したデータの再送を円滑にできる通信方法に関する。
【背景技術】
【０００２】
従来、通信装置間の通信は、データの破壊、パケットの消失、重複、順序の入れ替わりなどの問題が生じる。そこで、通信装置間の通信規格であるＯＳＩ参照モデルは、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）に基づいて、各通信装置にチェックサム、シーケンス願望、確認応答、再送制御、コネクション管理及びウィンドウ制御など実行させて通信の信頼性を確保している。
【０００３】
以下、従来のＴＣＰに基づく通信方法を説明する。ＴＣＰは、データ送信側の通信装置Ａがデータを送信した場合、データ受信側の通信装置Ｂに受信の肯定確認応答（以下「ＡＣＫ」という）を返信させる。その結果、ＡＣＫを受信した通信装置Ａは、データが到着した旨を確認できる。
【０００４】
また、ＴＣＰは、通信装置間で通信するデータが大容量である場合、通信可能な最大データ単位を決定する。決定したデータ単位は、最大セグメント長（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ、以下「ＭＳＳ」という）と呼ばれ、大量のデータを送信する場合、当該データをＭＳＳ毎に区切る（セグメントデータという）。
【０００５】
しかし、従来のＴＣＰに基づく通信方法にあっては、原則、通信装置Ａは、セグメントデータを送信した場合、通信装置Ｂから返信されたＡＣＫを受信してから、次のセグメントデータを送信するので、セグメントデータを迅速に送信できない。また、通信装置Ｂは、全セグメントデータの受信を完了するまで長時間を要する。特に、音楽及び動画などの大容量のデータを通信することが必要されている市場においては、データ通信の高速化を実現できる通信方法が要望されている。
【０００６】
そこで、従来のＴＣＰでは、通信装置Ａが通信装置Ｂから返信されるＡＣＫを待たずに送信できる最大のセグメント数（ウィンドウサイズという）を設け、通信装置Ａが複数のセグメントデータを連続して送信することにより、通信装置Ｂが全セグメントデータの受信を完了させるまでの時間を短縮してデータ通信の高速化を図ることができる通信方法が規格されている。図１４は従来の方法で制御された通信シーケンスを示す説明図である。
【０００７】
前記通信方法においては、例えば、ＴＣＰが以下の制御を行う。通信装置Ａは、通信装置Ｂから予め受信可能なウィンドウサイズを受信しておく。通信装置Ａは、シーケンス番号（ｎ）を付したセグメントデータを送信し、シーケンス番号（ｎ）をｎ＋ｍに更新する（セグメント１）。更に、通信装置Ａは、通信装置Ｂから送信されるべきＡＣＫを待つことなく、セグメントデータを順次送信する（セグメント２、３、４）。
【０００８】
通信装置Ｂは、セグメント１のデータを受信したとき、受信したセグメント１のデータをアプリケーション処理部へ送り、受信したセグメント１のデータのシーケンス番号（ｎ）に基づいて次回受信すべきデータのシーケンス番号を表す予定シーケンス番号（ｎ＋ｍ）を生成し、生成した予定シーケンス番号（ｎ＋ｍ）を含むＡＣＫを通信装置Ａに送信する（セグメント５）。
【０００９】
ここで、通信装置Ａがセグメントデータを順次送信しているときに一部のセグメントデータが消失して通信装置Ｂへ到着しない場合がある。この場合、通信装置Ｂは、セグメント２のデータを受信できず、当該データに付されたシーケンス番号に基づいて予定シーケンス番号を更新することができず、当該データをアプリーション処理部へ送ることができない。
【００１０】
そこで、通信装置Ｂは、前回受信した予定シーケンス番号（ｎ＋ｍ）を含むＡＣＫを通信装置Ａに送信する（セグメント８）。以後、通信装置Ｂは、消失したセグメント２のデータと同一のシーケンス番号（ｎ＋ｍ）が付されたセグメントデータを受信するまで、通信装置Ａから受信したセグメント３、４，６、７、９、１１のデータをメモリに順次キャッシュしていくともに予定シーケンス番号（ｎ＋ｍ）を含むＡＣＫを通信装置Ａに順次送信する（セグメント８、１０、１２、１４、１６、１８）。
【００１１】
通信装置Ａは、セグメント５の予定シーケンス番号（ｎ＋ｍ）を含むＡＣＫを受信した後に同一の予定シーケンス番号（ｎ＋ｍ）を含むＡＣＫ（セグメント８、１０、１２）を連続して所定の回数（通常は３回）受信した場合、予定シーケンス番号（ｎ＋ｍ）と同一のシーケンス番号を付したセグメントデータを送信する（セグメント１３）。通信装置Ｂは、セグメント１３のデータを受信したときにメモリに順次キャッシュしているセグメント３、４，６、７、９、１１のデータを順次読出してアプリケーション処理部へ送る共に受信したセグメント１３のデータをアプリケーション処理部へ送る（例えば、非特許文献１、非特許文献２、特許文献１、特許文献２）。
【非特許文献１】詳解ＴＣＰ／ＩＰ  Ｖｏｌ．１  Ｗ・リチャード・スティーヴンス著  株式会社ピアソン・エデュケーション  ２０００年１２月２０日  第２８６頁〜第２８９頁及び第３４６頁〜第３５３頁
【非特許文献２】詳解ＴＣＰ／ＩＰ  Ｖｏｌ．２  ゲリー・Ｒ・ライト、Ｗ・リチャード・スティーヴンス共著  株式会社ピアソン・エデュケーション  ２００２年１２月３０日  第９１２頁〜第９１７頁
【特許文献１】特許第３３１５９２６号公報
【特許文献２】特開平１１−３４１０７２号公報
【００１２】
このように、ＴＣＰは、消失したセグメントデータを適宜再送しつつ、セグメントデータをシーケンス番号の順番で処理できるようにして、通信装置Ａ及びＢ間でのデータ通信の信頼性を確保している。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来のＴＣＰに基づく通信方法においては、例えば、設置スペース又はコスト削減等の観点から、通信装置Ｂに大容量のキャッシュ用メモリを用いることができない場合、通信装置Ａから順次受信したデータがメモリにキャッシュされずに廃棄されることがあるため、以下の問題を引き起こす。図１５及び図１６は従来の方法で制御された通信シーケンスを示す説明図である。
【００１４】
前記の例で説明すると、通信装置Ｂは、消失したセグメント２のデータと同一のシーケンス番号（ｎ＋ｍ）のセグメントデータを受信するまで、受信したセグメント３、４，６、７、９、１１のデータをメモリにキャッシュできず廃棄しているから、通信装置Ｂは、セグメント１３のデータを受信したときに当該セグメント１３のデータのみをアプリケーション処理部へ送る。その結果、通信装置Ｂは、廃棄したセグメント３、４，６、７、９、１１のデータの再送を通信装置Ａに要求する必要が生じる。
【００１５】
通信装置Ｂは、セグメント１３のデータのシーケンス番号（ｎ＋ｍ）に基づいて予定シーケンス番号（ｎ＋２ｍ）を生成し、生成した予定シーケンス番号（ｎ＋２ｍ）を含むＡＣＫを通信装置Ａに順次送信する（セグメント２０、２２、２４、２６、２８、３０、３２）。
【００１６】
通信装置Ａは、セグメント２０の予定シーケンス番号（ｎ＋２ｍ）を含むＡＣＫを受信した後に同一の予定シーケンス番号（ｎ＋２ｍ）を含むＡＣＫを複数回連続して受信したとき、シーケンス番号（ｎ＋２ｍ）を付したセグメントデータを再送する（セグメント２７）。このとき、通信装置Ｂは、セグメント３のデータが再送されるまでに受信したセグメント１５、１７、１９，２１、２３、２５のデータを廃棄しているから、廃棄した当該セグメントデータの再送を通信装置Ａに要求する必要が更に生ずる。
【００１７】
このように、従来のＴＣＰに基づく通信方法にあっては、通信装置Ｂが受信データをキャッシュできない状態に陥ったときに通信装置Ａの消失データに対する再送がトリガーとなり、通信装置Ｂが順次受信したセグメントデータをアプリケーション処理部へ送る間隔が数セグメントになり、その結果、両通信装置間のスループットが著しく低下して、通信装置Ｂが全セグメントデータをアプリケーション処理部へ送り終えるまで長時間を要するという問題が発生する。
【００１８】
本発明はこのような事情に鑑みてなされたものであって、その目的とするところは、ＴＣＰに基づいてデータ通信を行う２つの通信装置において、一の通信装置が、他の通信装置から受信した同一の予定シーケンス番号に対応する情報を複数回連続して受信したときに該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することにより、他の通信装置は、受信データをキャッシュできる状態にあるか否かにかかわらず再送されたセグメントデータをアプリケーション処理部へ順次送ることができるようにして、通信のスループットの低下を回避し、全セグメントデータの受信完了時間を短縮することができる通信方法を提供することにある。
【００１９】
また、本発明の他の目的は、一の通信装置が、更新してきたシーケンス番号以下であって同一の予定シーケンス番号に対応する情報を他の通信装置から複数回連続して受信したときに該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することにより、一の通信装置が、消失セグメントデータに基づかない同一の予定シーケンス番号に対応する情報を複数回連続受信した場合にまで、不必要にデータを再送しないようにして他の通信装置が受信するセグメントデータ数を抑制し、一の通信装置が送信するセグメントデータ数も抑制し、通信のスループットの低下を回避して、全セグメントデータの受信完了時間を短縮することができる通信方法を提供することにある。
【００２０】
また、本発明の他の目的は、一又は複数のデータを交互に通信する２つの通信装置間において、一の通信装置が、他の通信装置からデータを受信した旨を示す変数と共に複数回連続して同一の予定シーケンス番号に対応する情報を受信したときに該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することにより、２つの通信装置間で双方向通信を実行する場合であっても、他の通信装置は、受信データをキャッシュできる状態にあるか否かにかかわらず再送されたセグメントデータをアプリケーション処理部へ順次送ることができるようにして、通信のスループットの低下を回避し、全セグメントデータの受信完了時間を短縮することができる通信方法を提供することにある。
【００２１】
また、本発明の他の目的は、一又は複数のデータを交互に通信する２つの通信装置間において、一の通信装置が、他の通信装置からデータを受信した旨を示す変数と共に同一の予定シーケンス番号に対応する情報を複数回連続して受信したときに該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することにより、２つの通信装置間で双方向通信を実行する場合であっても、一の通信装置が、消失セグメントデータに基づかない同一の予定シーケンス番号に対応する情報を複数回連続受信した場合にまで、不必要にデータを再送しないようにして他の通信装置が受信するセグメントデータ数を抑制し、一の通信装置が送信するセグメントデータ数も抑制し、通信のスループットの低下を回避して、全セグメントデータの受信完了時間を短縮することができる通信方法を提供することにある。
【００２２】
更にまた、本発明の他の目的は、他の通信装置が開始確認に応答した場合に、一の通信装置がデータの送信を行うことにより、他の通信装置が従来のＴＣＰによる通信のみに対応している場合にはこれを用いないようにできる通信方法を提供することにある。
【課題を解決するための手段】
【００２３】
上記課題を解決するために本発明に係る通信方法は、ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、一の通信装置は、シーケンス番号を付したデータを順次送信し、送信の都度前記シーケンス番号を更新し、他の通信装置は、前記一の通信装置から送信されたデータを受信し、受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、生成した予定シーケンス番号に対応する情報を送信し、前記一の通信装置は、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする。
【００２４】
また、本発明に係る通信方法は、ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、一の通信装置は、シーケンス番号を付したデータを順次送信し、送信の都度前記シーケンス番号を更新し、他の通信装置は、前記一の通信装置から送信されたデータを受信し、受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、生成した予定シーケンス番号に対応する情報を送信し、前記一の通信装置は、更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする。
【００２５】
また、本発明に係る通信方法は、ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、一の通信装置は、シーケンス番号を付したデータを順次送信し、送信の都度前記シーケンス番号を更新し、他の通信装置は、送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、生成した変数及び予定シーケンス番号に対応する情報を送信し、前記一の通信装置は、前記変数と共に、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする。
【００２６】
また、本発明に係る通信方法は、ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、一の通信装置は、シーケンス番号を付したデータを順次送信し、送信の都度前記シーケンス番号を更新し、他の通信装置は、送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、生成した変数及び予定シーケンス番号に対応する情報を送信し、前記一の通信装置は、更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を前記変数と共に複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする。
【００２７】
また、本発明に係る通信方法は、前記一の通信装置は、データ通信の開始についての開始確認を送信し、前記他の通信装置は、受信した開始確認に対する開始応答を送信し、前記一の通信装置は、該開始応答を受信した場合、前記データを送信することを特徴とする。
【００２８】
本発明にあっては、一の通信装置が、同一の予定シーケンス番号に対応する情報を複数回連続して受信したときに該予定シーケンス番号以降のデータを順次送信するから、他の通信装置は、セグメントデータをキャッシュできない状態であっても消失したセグメントデータ及び連続するシーケンス番号のセグメントデータを順次受信してアプリケーション処理部へ送ることができる。その結果、順次受信したセグメントデータをアプリケーション処理部へ送るタイミングが数セグメントに間隔が生ずることなく順次行うことができ、両通信装置間のスループットの低下を回避でき、他の通信装置は全セグメントデータの受信完了時間を短縮することができる。
【００２９】
また、本発明にあっては、一の通信装置が、更新してきたシーケンス番号以下であって同一の予定シーケンス番号に対応する情報を他の通信装置から複数回連続して受信したときに該予定シーケンス番号以降のデータを順次送信するから、例えば、予定シーケンス番号が過去に更新してきたシーケンス番号を超える場合、即ち、過去に送信してきた消失データのシーケンス番号に基づかない予定シーケンス番号に対応する情報を複数回受信したときまで、不必要にデータを再送しないようにできる。
【００３０】
また、本発明にあっては、更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を、受信した旨を示す変数と共に複数回連続して受信したときに該予定シーケンス番号以降のデータを順次送信する。データを交互に送信する双方向通信間において、他の通信装置は、一の通信装置からデータを受信していない場合でもセグメント長０以上のデータを送信するため、一の通信装置は、データと共に受信した予定シーケンス番号に対応する情報が、セグメントデータ消失に基づいた予定シーケンス番号であるのか、または、セグメントデータ消失に基づかない予定シーケンス番号であるのか判断ができず、同一の予定シーケンス番号の計数のトリガーを決定することができない。しかし、本発明の変数を用いることにより、一の通信装置は、データと共に受信した予定シーケンス番号に対応する情報が、セグメントデータの消失に基づくか否かを判断し、同一の予定シーケンス番号の計数のトリガーを決定することができる。
【００３１】
更にまた、本発明あっては、他の通信装置が開始確認に応答した場合に、一の通信装置がデータの送信を行うことにより、従来のＴＣＰによる通信方法のみに対応している他の通信装置がデータを受信する場合は、従来のＴＣＰによる通信方法を利用するようにして、当該他の通信装置との通信不可能状態になる事態を回避する。
【発明の効果】
【００３２】
本発明あっては、他の通信装置は、セグメントデータをキャッシュできない状態であっても消失したセグメントデータ及び連続するシーケンス番号のセグメントデータを順次受信してアプリケーション処理部へ送ることができ、セグメントデータをアプリケーション処理部へ送るタイミングに数セグメントの間隔が発生することなく、両通信装置間のスループットの低下を回避でき、他の通信装置は全セグメントデータの受信完了時間を短縮することができる。
【００３３】
また、本発明にあっては、例えば、予定シーケンス番号が過去に更新してきたシーケンス番号を超える場合、即ち、過去に送信してきた消失データのシーケンス番号に基づかない予定シーケンス番号に対応する情報を複数回受信したときまで、不必要にデータを再送しないようにでき、他の通信装置が受信するセグメントデータ数を抑制でき、一の通信装置が送信するセグメントデータ数も抑制でき、通信のスループットの低下を回避して、全セグメントデータの受信完了時間を短縮することができる。
【００３４】
また、本発明にあっては、データを交互に送信する双方向通信間において、一の通信装置は、受信した予定シーケンス番号に対応する情報がセグメントデータの消失に基づくか否かを判断し、同一の予定シーケンス番号の計数のトリガーを決定することができる。
【００３５】
また、本発明にあっては、従来のＴＣＰによる通信方法のみに対応している他の通信装置へデータを送信する場合であっても、両通信装置間で通信不可能状態になる事態を回避できる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明に係る通信方法について、実施の形態を示す図面に基づいて説明する。図１は本発明に係る通信システムの全体構成を説明する構成図である。
【００３７】
図１中、１は、ＴＣＰに基づいてデータ通信を制御される第１通信装置である。第１通信装置１は、外部記憶装置１０と、通信インタフェース１１と、ＲＯＭ１２と、ＲＡＭ１３と、カウンタ１４と、タイマ１５と、通信処理部１６と、アプリケーション処理部１７とから構成されている。
【００３８】
外部記憶装置１０は、第１通信装置１に本発明に係る通信方法を実行させるためのコンピュータプログラム等の各種プログラム及びデータ等の情報を記憶したＣＤ−ＲＯＭ等の可搬式記録媒体１０ａから情報を読み取り、読み取った情報をＲＯＭ１２又はＲＡＭ１３に送る。
【００３９】
通信インタフェース１１は、通信網と接続するためのインタフェースであり、接続した通信網を介して、ウィンドウサイズ、シーケンス番号、肯定確認応答（ＡＣＫ）等を含むＴＣＰヘッダ及びセグメントデータを他の通信装置へ送信又は受信する。
【００４０】
ＲＯＭ１２は、本発明に係る通信方法を実行させるコンピュータプログラム等の各種プログラム、ＴＣＰ等の通信プロトコルに関するデータを含む各種データ等が格納され、必要に応じて読み出され、ＲＡＭ１３へ送られる。
【００４１】
ＲＡＭ１３は、ＳＲＡＭ又はフラッシュメモリ等で構成されており、外部から受信したセグメントデータ、ＴＣＰヘッダ等を記憶し、必要に応じて通信処理部１６又はアプリケーション処理部１７へ送られる。
【００４２】
カウンタ１４は、予定シーケンス番号を含むＴＣＰヘッダなどの連続受信回数を計数するものであり、例えば、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であると判断したときに計数を開始し、所定の回数に達したときに計数到達信号を通信処理部１６へ送る。
【００４３】
タイマ１５は、ＴＣＰで制御されるタイムアウト処理、送信セグメントの間隔、双方向通信時の送受信セグメントの間隔を計時し、所定の時間に到達した場合、計時到達信号を通信処理部１６へ送る。
【００４４】
通信処理部１６は、本発明に係る通信方法を実行させるコンピュータプログラム及びＴＣＰ等の通信プロトコルに関するデータ等により、受信したＴＣＰヘッダが含むウィンドウサイズ情報をＲＡＭ１３へ記憶し、記憶しているウィンドウサイズの範囲内でセグメントデータを順次送信する。また、通信処理部１６は、ＴＣＰヘッダが含むシーケンス番号又はＡＣＫ等のフラグを更新する。また、通信処理部１６は、受信したＴＣＰヘッダが同一のシーケンス番号を含むと判断したとき、カウンタ１４に連続受信回数をカウントさせ、カウンタ１４から計数到達信号を受付け、当該予定シーケンス番号以降のシーケンスデータを順次送信する。
【００４５】
また、通信処理部１６は、ＴＣＰに基づいてセグメントデータ送信に対応して外部から受信すべきセグメントデータを受信したか否かを判断し、受信していると判断したとき、更に、受信したＴＣＰヘッダが含むシーケンス番号がＲＡＭ１３に記憶している予定シーケンス番号と同一であるか否かを判断し、同一であると判断したときに予定シーケンス番号を受信したＴＣＰヘッダのシーケンス番号に基づいて生成し、生成した予定シーケンス番号、ＡＣＫフラグ‘１’及びＣＡＫ（Ｃｏｕｎｔｅｒ  ＡＣＫ）フラグ‘１’のＴＣＰヘッダを送信する。
【００４６】
アプリケーション処理部１７は、ＴＣＰが属するトランスポート層より上位であるアプリケーション層が含むプロトコルに基づいて通信処理を実行する。例えば、ファイル転送、電子メール、遠隔ログイン（仮想端末等を実現するために用いる。）
【００４７】
第２通信装置２、並びに、それが備える外部記憶装置２０、可搬式記録媒体２０ａ、通信インタフェース２１、ＲＯＭ２２，ＲＡＭ２３、カウンタ２４、タイマ２５、通信処理部２６及びアプリケーション処理部２７は、第１通信装置１及びそれが備えるハードウェアに対応しており、同一の構成及び作用を奏するものであるから説明を省略する。
【００４８】
尚、第１通信装置１及び第２通信装置２間の通信形態は、一方がＴＣＰヘッダを付したセグメント長‘０’より大きいデータを送信し、他方がＴＣＰヘッダを付したセグメント長‘０’のデータ（即ちＴＣＰヘッダのみ）を送信する「一方向通信」と、両装置ともＴＣＰヘッダを付したセグメント長‘０’より大きいデータを交互に送信し合う「双方向通信」がある。
【００４９】
次に、本発明で用いるＴＣＰヘッダの内容について説明する。図２は本発明で用いるＴＣＰヘッダの内容を示す模式図である。
【００５０】
ＴＣＰヘッダは、３２ビット長のフィールドに、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、ヘッダ長、予約済み、コントロールフラグ、ウィンドウサイズ、チェックサム、緊急ポインタ、オプションから多層に構成されている。ＴＣＰヘッダは、通信装置によりセグメントデータに付されて送受信される。
【００５１】
送信元ポート番号は、１６ビット長のフィールドで、送信元のポート番号を示す。
【００５２】
宛先ポート番号は、１６ビット長のフィールドで、宛先のポート番号を示す。
【００５３】
シーケンス番号は、３２ビット長のフィールドで、送信したセグメントデータの位置を示す。初期値は、通信装置間で通信交渉を確立した際、乱数値ｎで決定され、セグメントデータを送信する毎に、転送したセグメントデータ量（ｍバイト）が加算（インクリメント）される。尚、減算（デクリメント）でもよい。
【００５４】
確認応答番号は、３２ビット長のフィールドで、次に受信すべきセグメントデータのシーケンス番号を表す予定シーケンス番号である。当該確認応答番号は、受信したセグメントデータのシーケンス番号に基づいて更新される。更新した確認応答番号は、受信したセグメントデータのシーケンス番号の中で最大値と同値になる。セグメントデータが消失して受信できない場合は、確認応答番号と受信したセグメントデータのシーケンス番号とが異なる。
【００５５】
ヘッダ長は、４ビット長のフィールドであり、ＴＣＰヘッダの長さを示すものである。
【００５６】
予約済みは、将来の機能を拡張するために準備されたフィールドであり、５ビット長である。
【００５７】
コントロールフラグは、７ビット長であり、各ビットは、左から、ＣＡＫ、ＵＲＧ、ＡＣＫ、ＰＳＨ、ＰＳＴ、ＳＹＮ、ＦＩＮであり、‘１’に更新したときに以下の意味を持つ。ＣＡＫは、双方向通信において、データの送信に対応して受信すべきデータを受信した場合に‘１’に更新され、データを受信した旨を示す変数として扱われる。ＵＲＧ（ＵＲＧＥＮＴ）は、緊急に処理すべきデータが含まれていることを意味する。ＡＣＫは、一方向通信において、データを受信している場合、又は、双方向通信において、データの送信に対応して受信すべきデータを受信している場合に、受信の肯定確認応答を意味する。ＰＳＨ（ＰＵＳＨ）は、受信したデータを直ぐにアプリケーション処理部へ送らなければならないことを意味する。尚、‘０’の場合は、ＲＡＭにバッファリングすることが許可される。ＲＳＴ（ＲＥＳＥＴ）は、通信が強制的に切断されることを意味する。ＳＹＮ（ＳＹＮＣＨＲＯＮＩＺＥ）は、通信の確立を希望することを意味する。ＦＩＮは、通信の切断を希望することを意味する。
【００５８】
ウィンドウサイズは、１６ビット長のフィールドであり、ＡＣＫを待たずに送信できる最大のセグメント数を示す。通信装置は、ウィンドウサイズを超えたセグメントデータを通信することは許可されない。
【００５９】
チェックサムは、１６ビット長のフィールドであり、通信装置のＲＡＭの故障又はプログラムのバグによりセグメントデータが破損していないことを保証する。
【００６０】
緊急ポインタは、１６ビット長のフィールドであり、前記ＵＲＧが‘１’のとき、有効になる。ここに示される値は、緊急を要するデータの格納場所を示すポインタとして利用される。
【００６１】
オプションは、ＴＣＰに基づく通信を向上させるために利用させるフィールドであり、例えば、ＭＳＳの決定、データ通信が通常通信又は再送通信のいずれであるかを示す再送フラグ、などに利用される。
【００６２】
実施例１．
次に、本発明で制御された通信の手順を説明する。図３及び図４は本発明で制御された通信シーケンスの一例を示す説明図である。以下、通信形態が「一方向通信」であって、第２通信装置２が、順次受信したセグメントデータをＲＡＭ２３に記憶できずに廃棄している場合を一例として説明する。
【００６３】
まず、第１通信装置１は、第２通信装置２へＳＩＮフラグ‘１’のＴＣＰヘッダを送信し、第２通信装置２は、ウィンドウサイズ（例えば、最大セグメント数：３０）を含むＴＣＰヘッダを送信する。第１通信装置１は、受信したウィンドウサイズをＲＡＭ１３に記憶する。これにより、両通信装置間で最大セグメント数３０としたデータ通信が可能となり、ｍバイトのＭＳＳ毎に区切ったセグメントデータの通信を行う。
【００６４】
第１通信装置１は、シーケンス番号（ｎ）を付したセグメントデータを送信し、シーケンス番号（ｎ）をｎ＋ｍに更新する（セグメント１）。更に、通信装置Ａは、通信装置Ｂから送信されるべきＡＣＫを待つことなく、セグメントデータを順次送信する（セグメント２、３、４）。
【００６５】
第２通信装置２は、セグメント１のデータを受信したとき、受信したセグメント１のデータをアプリケーション処理部２７へ送り、受信したセグメント１のデータのシーケンス番号（ｎ）に基づいて次回受信すべきデータのシーケンス番号を表す予定シーケンス番号（ｎ＋ｍ）を生成し、生成した予定シーケンス番号（ｎ＋ｍ）及びＡＣＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント５）。
【００６６】
ここで、第１通信装置１が送信したセグメント２のデータが消失して第２通信装置に到着しなかった場合、第２通信装置２は、セグメント２のデータを受信できず、当該データをアプリケーション処理部２７へ送ることできず、予定シーケンス番号に対応する情報を生成することもできない。また、第２通信装置２は、第１通信装置１から送信されたセグメント３のデータを受信するが、受信したセグメント３のデータのシーケンス番号が前回生成した予定シーケンス番号と同一ではないため、アプリケーション処理部２７へ送ることができない。更にまた、第２通信装置２は、当該セグメントデータをＲＡＭ２３に記憶できない状況にあるので、これを廃棄する。第２通信装置２は、前回生成した予定セグメント番号（ｎ＋ｍ）及びＡＣＫ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント８）。
【００６７】
第１通信装置１は、シーケンス番号を付したセグメントデータを順次送信していく（セグメント６、７、９、１１）。第２通信装置２は、受信したセグメント６、７、９、１１のデータを廃棄しつつ、予定シーケンス番号（ｎ＋ｍ）を含むＴＣＰヘッダ及びＡＣＫ‘１’を含むＴＣＰヘッダを順次送信していく（セグメント１０、１２，１４、１６、１８）。
【００６８】
第１通信装置１は、同一の予定シーケンス番号（ｎ＋ｍ）を含むＴＣＰヘッダ（セグメント８、１０、１２）を３回連続して受信したときに当該予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメントデータを順次送信する（セグメント１３、１５、１７、１９、２１、２３、２５）。
【００６９】
第２通信装置２は、予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメント１３、１５、１７、１９、２１、２３、２５のデータを順次受信し、受信の都度セグメントデータをアプリケーション処理部２７へ送るともに、予定シーケンス番号を受信の都度セグメント１３、１５、１７、１９、２１、２３、２５のデータのシーケンス番号に基づいて生成し、生成した予定シーケンス番号及びＡＣＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ順次送信する（セグメント２０、２２、２４，２６、２８、３０、３２）。
【００７０】
実施例２．
次に、通信形態が「一方向通信」であって、第２通信装置２が、順次受信したセグメントデータをＲＡＭ２３に記憶できる場合を一例として説明する。図５及び図６は本発明で制御された通信シーケンスの一例を示す説明図である。
【００７１】
実施例１と同様に、第１通信装置１は、ウィンドウサイズをＲＡＭ１３に記憶し、シーケンス番号（ｎ）を付したセグメントデータを送信し、シーケンス番号（ｎ）をｎ＋ｍに更新する（セグメント１）。第２通信装置２は、受信したセグメント１のデータを受信したときに受信したセグメントデータをアプリケーション処理部２７へ送り、予定シーケンス番号（ｎ＋ｍ）及びＡＣＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント５）。
【００７２】
ここで、第１通信装置１が送信したセグメント２のデータが消失して第２通信装置に到着しなかった場合、第２通信装置２は、セグメント２のデータを受信できず、当該データをアプリケーション処理部２７へ送ることできず、予定シーケンス番号に対応する情報を生成することもできない。また、第２通信装置２は、第１通信装置１から送信されたセグメント３のデータを受信するが、受信したセグメント３のデータのシーケンス番号が前回生成した予定シーケンス番号と同一ではないため、アプリケーション処理部２７へ送ることができない。更にまた、第２通信装置２は、受信したセグメントデータをＲＡＭ２３に順次記憶していき、前回生成した予定シーケンス番号（ｎ＋ｍ）を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント８、１０、１２、１４、１６、１８）。
【００７３】
第１通信装置１は、同一の予定シーケンス番号（ｎ＋ｍ）を含むＴＣＰヘッダ（セグメント８、１０、１２）を３回連続して受信したときに当該予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメントデータを順次送信する（セグメント１３、１５、１７、１９、２１、２３、２５）。
【００７４】
第２通信装置２は、予定シーケンス番号（ｎ＋ｍ）のシーケンス番号を付したセグメント１３のデータを受信したとき、ＲＡＭ２３に記憶しているセグメント３、４、６、７、９、１１のデータを読み出してアプリケーション処理部２７へ順次送り、セグメント１３のデータをアプリケーション処理部２７へ送る。また、第２通信装置２は、次回受信すべきシーケンス番号を示す予定シーケンス番号（ｎ＋８ｍ）を生成し、生成した予定シーケンス番号（ｎ＋８ｍ）及びＡＣＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント２０）。更にまた、第２通信装置２は、第１通信装置１から送信されたセグメント１５、１７、１９、２１、２３、２５については、既にアプリケーション処理部２７へ送っているので、これを廃棄するとともに、予定シーケンス番号（ｎ＋８ｍ）及びＡＣＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ順次送信する（セグメント２２、２４、２６、２８、３０、３２）。
【００７５】
ここで、第１通信装置１は、第２通信装置２から送信された同一の予定シーケンス番号（ｎ＋８ｍ）及びＡＣＫ‘１’を含むＴＣＰヘッダ（セグメント２２、２４、２６）を３回連続して受信しているが、当該予定シーケンス番号（ｎ＋８ｍ）は、更新してきたシーケンス番号（ｎ＋ｍからｎ＋８ｍまで）以下ではないから、同一の予定シーケンス番号のカウントのトリガーとはならない。
【００７６】
実施例３．
次に、通信形態が「双方向通信」であって、第２通信装置２が、順次受信したセグメントデータをＲＡＭ２３に記憶できず廃棄している状態にある場合を一例として説明する。図７及び図８は本発明で制御された通信シーケンスの一例を示す説明図である。
【００７７】
第１通信装置１は、シーケンス番号（ｎ）を付したセグメントデータを送信し、シーケンス番号（ｎ）をｎ＋ｍに更新する（セグメント１）。図中の「ｆ」は、ＣＡＫフラグが‘０’、即ちデータを受信していない旨を示す。以下同様。
【００７８】
第２通信装置２は、セグメント１のデータを受信したときに受信したセグメント１のデータをアプリケーション処理部２７へ送り、予定シーケンス番号（ｎ＋ｍ）を生成し、シーケンス番号（ｙ）を付したセグメントデータ並びに生成した予定シーケンス番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ）をｙ＋ｘに更新する（セグメント５）。尚、図中の「ｔ」は、ＣＡＫフラグが‘１’、即ちデータを受信した旨を示す。以下同様。
【００７９】
ここで、第１通信装置１が送信したセグメント２のデータが消失して第２通信装置２に到着しなかった場合、第２通信装置２は、セグメント２のデータを受信できず、当該データをアプリケーション処理部２７へ送ることできず、予定シーケンス番号に対応する情報を生成することもできない。また、第２通信装置２は、シーケンス番号（ｙ＋ｘ）を付したセグメントデータを送信する際、前回生成した予定セグメント番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘０’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ＋ｘ）をｙ＋２ｘに更新する（セグメント７）。
【００８０】
また、第１通信装置１は、第２通信装置２から受信すべきＡＣＫフラグ‘１’を待つことなく、シーケンス番号（ｎ＋２ｍ）を付したセグメントデータ及びＣＡＫフラグ‘０’を含むＴＣＰヘッダを送信し、シーケンス番号（ｎ＋２ｍ）をｎ＋３ｍに更新する（セグメント３）。第２通信装置２は、セグメント３のデータを受信するが、受信したセグメント３のデータのシーケンス番号が前回生成した予定シーケンス番号と同一ではないため、アプリケーション処理部２７へ送ることができない。また、第２通信装置２は、当該セグメントデータをＲＡＭ２３に記憶できない状況にあるので、これを廃棄する。第２通信装置２は、シーケンス番号（ｙ＋２ｘ）を付したセグメントデータを送信する際、前回生成した予定セグメント番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ＋２ｘ）をｙ＋３ｘに更新する（セグメント９）。
【００８１】
第１通信装置１は、セグメント５のデータを受信したときに予定シーケンス番号（ｙ＋ｘ）を生成し、シーケンス番号（ｎ＋４ｍ）を付したセグメントデータ並びに生成した予定シーケンス番号（ｙ＋ｘ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第２通信装置２へ送信し、シーケンス番号（ｎ＋４ｍ）をｎ＋５ｍに更新する（セグメント６）。同様に、第１通信装置１は、更新したシーケンス番号を付したセグメントデータ並びに生成した予定セグメント番号、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第２通信装置２へ送信する（セグメント８、１０、１２）。
【００８２】
第２通信装置２は、受信したセグメント６、８、１０等のデータを廃棄しつつ、更新したシーケンス番号を付したセグメントデータを送信する際、前回受信した予定シーケンス番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号を更新する（セグメント１３、１５、１７等）。
【００８３】
第１通信装置１は、セグメント５のデータを受信した後に同一の予定シーケンス番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’（セグメント９、１１、１３）を３回連続受信したとき、当該予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメントデータ並びに送信の都度生成した予定シーケンス番号、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＰＣヘッダを順次送信する（セグメント１４、１６、１８、２０、２２、２４、２６）。
【００８４】
第２通信装置２は、予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメント１４、１６、１８、２０、２２、２４、２６のデータを順次受信し、受信したセグメントデータをアプリケーション処理部２７へ順次送るとともに、受信の都度予定シーケンス番号を生成し、シーケンス番号を付したセグメントデータ並びに生成した予定シーケンス番号、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ順次送信する（セグメント２１、２３、２５、２７，２９、３１、３３）。
【００８５】
実施例４．
次に、通信形態が「双方向通信」であって、第２通信装置２が、順次受信したセグメントデータをＲＡＭ２３に記憶できる状態にある場合を一例として説明する。図９及び図１０は本発明で制御された通信シーケンスの一例を示す説明図である。
【００８６】
実施例３と同様に、第１通信装置１は、ウィンドウサイズをＲＡＭ１３に記憶し、シーケンス番号（ｎ）を付したセグメントデータ及びＣＡＫフラグ‘０’を含むＴＣＰヘッダを送信し、シーケンス番号（ｎ）をｎ＋ｍに更新する（セグメント１）。
【００８７】
第２通信装置２は、セグメント１のデータを受信したときに受信したセグメント１のデータをアプリケーション処理部２７へ送り、予定シーケンス番号（ｎ＋ｍ）を生成し、シーケンス番号（ｙ）を付したセグメントデータ並びに生成した予定シーケンス番号（ｎ＋ｍ）、ＡＣＫ‘１’及びＣＡＫ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ）をｙ＋ｘに更新する（セグメント５）。
【００８８】
ここで、第１通信装置１が送信したセグメント２のデータが消失して第２通信装置２へ到着しなかった場合、第２通信装置２は、セグメント２のデータを受信できず、当該データをアプリケーション処理部２７へ送ることができず、予定セグメント番号を生成することもできない。また、第２通信装置２は、シーケンス番号（ｙ＋ｘ）を付したセグメントデータを送信する際、前回生成した予定セグメント番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘０’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ＋ｘ）をｙ＋２ｘに更新する（セグメント７）。
【００８９】
また、第１通信装置１は、第２通信装置２から受信すべきＡＣＫフラグ‘１’を待つことなく、シーケンス番号を付したセグメントデータ及びＣＡＫフラグ‘０’を含むＴＣＰヘッダを順次送信する（セグメント３、４）。また、第１通信装置１は、セグメント５のデータを受信したときに予定シーケンス番号（ｙ＋ｘ）を生成し、シーケンス番号（ｎ＋４ｍ）を付したセグメントデータ並びに生成した予定シーケンス番号（ｙ＋ｘ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第２通信装置２へ送信し、シーケンス番号（ｎ＋４ｍ）をｎ＋５ｍに更新する（セグメント６）。同様に、第１通信装置１は、更新したシーケンス番号を付したセグメントデータ並びに生成した予定セグメント番号、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第２通信装置２へ送信する（セグメント８、１０、１２）。
【００９０】
第２通信装置２は、受信したセグメント６、８、１０等のデータのシーケンス番号が、前回生成した予定シーケンス番号と同一ではないため、当該データをＲＡＭ２３に順次記憶しつつ、更新したシーケンス番号を付したセグメントデータ並びに前回生成した予定シーケンス番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信する（セグメント１３、１５、１７等）。
【００９１】
第１通信装置１は、セグメント５のデータを受信した後に同一の予定シーケンス番号（ｎ＋ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’（セグメント９、１１、１３）を３回連続受信したとき、当該予定シーケンス番号（ｎ＋ｍ）以降のシーケンス番号を付したセグメントデータ並びに予定シーケンス番号、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを順次送信する（セグメント１４、１６、１８、２０、２２、２４、２６）。
【００９２】
第２通信装置２は、シーケンス番号（ｎ＋ｍ）を付したセグメント１４のデータを受信したとき、ＲＡＭ２３に記憶しているセグメント３、４、６、８、１０、１２のデータを読み出してアプリケーション処理部２７へ順次送り、セグメント１４のデータをアプリケーション処理部２７へ送る。また、第２通信装置２は、予定シーケンス番号（ｎ＋８ｍ）を生成し、シーケンス番号（ｙ＋８ｘ）を付したセグメントデータ並びに生成した予定シーケンス番号（ｎ＋８ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ送信し、シーケンス番号（ｙ＋８ｘ）をｙ＋９ｘに更新する（セグメント２１）。更にまた、第２通信装置２は、第１通信装置１から送信されたセグメント１６、１８、２０、２２、２４、２６のデータについては、既にアプリケーション処理部２７へ送ったので、これを廃棄するともに、シーケンス番号を付したセグメントデータ並びに予定シーケンス番号（ｎ＋８ｍ）、ＡＣＫフラグ‘１’及びＣＡＫフラグ‘１’を含むＴＣＰヘッダを第１通信装置１へ順次送信する（セグメント２３、２５、２７、２９、３１、３３）。
【００９３】
ここで、第１通信装置１は、同一の予定シーケンス番号（ｎ＋８ｍ）、ＡＣＫフラグ及びＣＡＫフラグ‘１’（セグメント２３、２５、２７）を連続して受信しているが、当該予定シーケンス（ｎ＋８ｍ）は、更新してきたシーケンス番号（ｎ＋ｍからｎ＋８ｍまで）以下ではないから、同一の予定シーケンス番号のカウントのトリガーとはならない。
【００９４】
次に、本発明で用いるシーケンス番号及び予定シーケンス番号の変化について説明する。図１１はシーケンス番号及び予定シーケンス番号を示す説明図である。図中、第１通信装置１の送信シーケンスをＪ、第２通信装置２の送信シーケンスをＫとして表す。以下同様。
【００９５】
例えば、通常のデータ送信において、第１通信装置１は、シーケンス番号（ｎ＋３ｍ）を付したセグメントデータを送信し、シーケンス番号（ｎ＋３ｍ）をｎ＋４ｍに更新し（セグメントＪ）、シーケンス番号（ｎ＋４ｍ）を付したセグメントデータを送信し、シーケンス番号（ｎ＋４ｍ）をｎ＋５ｍに更新する（セグメントＪ＋１）。一方、第２通信装置２は、第１通信装置１から送信されたセグメントデータを受信したときに予定シーケンス番号（ｎ＋ｍ）を生成し、生成した予定シーケンス番号（ｎ＋ｍ）を送信し（セグメントＫ）予定シーケンス番号（ｎ＋ｍ）と同一のシーケンス番号が付されたセグメントデータを受信したときに受信したセグメントデータをアプリケーション処理部２７へ送って当該セグメントデータを受信済みとし、予定シーケンス番号（ｎ＋２ｍ）を生成し、生成した予定シーケンス番号（ｎ＋２ｍ）を送信する。以上、図１１（ａ）参照。
【００９６】
ここで、第１通信装置１から送信されたシーケンス番号（ｎ＋ｍ）のセグメントデータが消失して第２通信装置２へ到着しなかった場合、第２通信装置２は、予定シーケンス番号に対応する情報が生成できず、セグメントＫで送信した予定シーケンス（ｎ＋ｍ）を再度送信する。第１通信装置１は、同一の予定シーケンス番号（ｎ＋ｍ）を３回連続受信したとき、即ち、シーケンス番号（ｎ＋７ｍ）を付したセグメントデータを送信した（セグメントＪ−１）後、シーケンス番号（ｎ＋７ｍ）をｎ＋ｍに戻してシーケンス番号（ｎ＋ｍ）を付したセグメントデータを送信し、シーケンス番号（ｎ＋ｍ）をｎ＋２ｍに更新し（セグメントＪ）、シーケンス番号（ｎ＋２ｍ）を付したセグメントデータを送信し、シーケンス番号（ｎ＋２ｍ）をｎ＋３ｍに更新する（セグメントＪ＋１）。第２通信装置２は、第１通信装置から送信されたシーケンス番号（ｎ＋ｍ）を付したセグメントデータを受信したときに受信したセグメントデータをアプリケーション処理部２７へ送って当該セグメントデータを受信済みとして扱う。尚、第１通信装置は、既にシーケンス番号（ｎ＋ｍ）から（ｎ＋８ｍ）までのセグメントデータを送信しており、図１１（ａ）のとおりデータが問題なく受信されていれば、第２通信装置２から受信すべき予定シーケンス番号は（ｎ＋２ｍ）から（ｎ＋８ｍ）までになるから、期待している予定シーケンス番号（ｎ＋２ｍ）から（ｎ＋８ｍ）までの間で最小の（ｎ＋２ｍ）未満の予定シーケンス番号を受信した場合に限りデータが消失したと判断し、同一の予定シーケンス番号のカウントを開始して前記処理を行う。以上、図１１（ｂ）参照。
【００９７】
しかし、第１通信装置１がシーケンス番号（ｎ＋７ｍ）を付したセグメントデータを送信し、シーケンス番号（ｎ＋７ｍ）をｎ＋８ｍに更新した際（セグメントＪ）、第２通信装置２が予定シーケンス番号（ｎ＋８ｍ）を生成し、生成した予定シーケンス番号（ｎ＋８ｍ）を送信した場合（セグメントＫ）、当該予定シーケンス番号（ｎ＋８ｍ）は、第１通信装置１が更新してきたシーケンス番号（ｎ＋ｍからｎ＋８ｍまで）を超えるものであって未だ送信されていないセグメントデータに付されるべきものであるから、連続送信される予定シーケンス番号（ｎ＋８ｍ）は、第１通信装置１から送信されたセグメントデータが途中で消失して第２通信装置２へ到着しなかった事態を示すものではない。従って、第１通信装置１は、予定シーケンス番号（ｎ＋８ｍ）を３回連続受信した場合であってもこれをカウントせず、データ送信のトリガーとしないことで不必要なセグメントデータを送信しないようにしている。以上、図１１（ｃ）参照。
【００９８】
次に、本発明で用いる第１通信装置１の通信処理の手順について説明する。図１２は第１通信装置の送信処理の手順を説明するフローチャート、図１３は第１通信装置の受信処理の手順を説明するフローチャートである。
【００９９】
第１通信装置１の通信処理部１６は、送信すべきデータが存在するか否かを判断し（Ｓ１０１）、現在送信すべきデータが存在しないと判断した場合（Ｓ１０１でＮＯ）、送信すべきデータが現れるまでステップＳ１０１の判断を繰り返す。
【０１００】
一方、通信処理部１６は、現在送信すべきデータが存在する場合（Ｓ１０１でＹＥＳ）、該当するデータにシーケンス番号を付して第２通信装置２へ送信し（Ｓ１０２）、該シーケンス番号を次番号に更新する（Ｓ１０３）。
【０１０１】
また、通信処理部１６は、第２通信装置２から送信された予定シーケンス番号を含むセグメントを受信したか否かを判断し（Ｓ２０１）、当該セグメントを受信していないと判断した場合（Ｓ２０１でＮＯ）、当該セグメントを受信するまでステップＳ２０１の判断を繰り返す。
【０１０２】
一方、通信処理部１６は、当該セグメントを受信したと判断した場合（Ｓ２０１でＹＥＳ）、受信したセグメントに含まれる予定シーケンス番号が期待している最小の予定シーケンス番号未満であるか否かを判断し（Ｓ２０２）、最小の予定シーケンス番号未満ではないと判断した場合（Ｓ２０２でＮＯ）、最小の予定シーケンス番号を受信した予定シーケンス番号に更新し（Ｓ２０３）、次回予定シーケンス番号の受信に備えるためにステップＳ２０１へ戻る。
【０１０３】
一方、通信処理部１６は、最小の予定シーケンス番号未満であると判断した場合（Ｓ２０２でＹＥＳ）、受信した予定シーケンス番号が更新してきたシーケンス番号以下であるか否かを判断し（Ｓ２０４）、更新してきたシーケンス番号以下ではないと判断した場合（Ｓ２０４でＮＯ）、次回予定シーケンス番号の受信に備えるためにステップＳ２０１へ戻る。
【０１０４】
一方、通信処理部１６は、更新してきたシーケンス番号以下であると判断した場合（Ｓ２０４でＹＥＳ）、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断し（Ｓ２０５）、前回受信した予定シーケンス番号と同一ではないと判断した場合（Ｓ２０５でＮＯ）、カウント変数ｉを０に戻し（Ｓ２０６）、次回予定シーケンス番号の受信に備えるためにステップＳ２０１へ戻る。
【０１０５】
一方、通信処理部１６は、前回受信した予定シーケンス番号と同一であると判断した場合（Ｓ２０５でＹＥＳ）、カウント変数ｉに１を加算し（Ｓ２０７）、加算後のカウント変数ｉが３に達したか否かを判断し（Ｓ２０８）、３に達していないか又は３を超えたと判断した場合（Ｓ２０８でＮＯ）、次回予定シーケンス番号の受信に備えるためにステップＳ２０１へ戻る。
【０１０６】
一方、通信処理部１６は、３に達したと判断した場合（Ｓ２０８でＹＥＳ）、シーケンス番号を連続受信した予定シーケンス番号に更新し（Ｓ２０９）、次回予定シーケンス番号の受信に備えるためにステップＳ２０１へ戻る。また、通信処理部１６は、ステップＳ２０９で更新したシーケンス番号に基づいて前記送信処理を行う（Ｓ１０１〜Ｓ１０３）。
【０１０７】
以下の実施の形態に関し、更に以下の付記を開示する。
【０１０８】
（付記１）  ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
前記一の通信装置から送信されたデータを受信し、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【０１０９】
（付記２）  ＴＣＰに基づいて２つの通信装置間のデータ通信を行う通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
前記一の通信装置から送信されたデータを受信し、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【０１１０】
（付記３）  ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した変数及び予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
前記変数と共に、同一の予定シーケンス番号に対応する情報を複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【０１１１】
（付記４）  ＴＣＰに基づいて２つの通信装置間で一又は複数のデータを交互に送信する通信方法において、
一の通信装置は、
シーケンス番号を付したデータを順次送信し、
送信の都度前記シーケンス番号を更新し、
他の通信装置は、
送信したデータと交互に前記一の通信装置から送信されたデータを受信した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成し、
生成した変数及び予定シーケンス番号に対応する情報を送信し、
前記一の通信装置は、
更新してきたシーケンス番号以下の、同一の予定シーケンス番号に対応する情報を前記変数と共に複数回連続して受信したとき、該予定シーケンス番号以降のデータを順次、前記他の通信装置に送信することを特徴とする通信方法。
【０１１２】
（付記５）  前記一の通信装置は、
データ通信の開始についての開始確認を送信し、
前記他の通信装置は、
受信した開始確認に対する開始応答を送信し、
前記一の通信装置は、
該開始応答を受信した場合、前記データを送信することを特徴とする請求項１乃至４のいずれかに記載の通信方法。
【０１１３】
（付記６）  ＴＣＰに基づいてデータ通信を行う複数の通信装置を備える通信システムにおいて、
一の通信装置は、
シーケンス番号を付したデータを順次送信する手段と、
送信の都度前記シーケンス番号を更新する手段と
を備え、
他の通信装置は、
前記一の通信装置から送信されたデータを受信する手段と、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成する手段と、
生成した予定シーケンス番号に対応する情報を送信する手段と
を備え、
前記一の通信装置は、
前記他の通信装置から送信された予定シーケンス番号に対応する情報を受信する手段と、
受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断する手段と、
同一であると判断した場合、受信した予定シーケンス番号に対応する情報の連続受信回数を計数する手段と、
計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以降のデータを順次、前記他の通信装置に送信する手段と
を備えることを特徴とする通信システム。
【０１１４】
（付記７）  ＴＣＰに基づいてデータ通信を行う複数の通信装置を備える通信システムにおいて、
一の通信装置は、
シーケンス番号を付したデータを順次送信する手段と、
送信の都度前記シーケンス番号を更新する手段と
を備え、
他の通信装置は、
前記一の通信装置から送信されたデータを受信する手段と、
受信の都度次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成する手段と、
生成した予定シーケンス番号に対応する情報を送信する手段と
を備え、
前記一の通信装置は、
前記他の通信装置から送信された予定シーケンス番号に対応する情報を受信する手段と、
受信した予定シーケンス番号が更新してきたシーケンス番号以下であるか否かを判断する手段と、
更新してきたシーケンス番号以下であると判断した場合、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断する手段と、
同一であると判断した場合、受信した予定シーケンス番号に対応する情報の連続受信回数を計数する手段と、
計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以降のデータを順次、前記他の通信装置に送信する手段と
を備えることを特徴とする通信システム。
【０１１５】
（付記８）  ＴＣＰに基づいて一又は複数のデータを交互に送信する複数の通信装置を備える通信システムにおいて、
一の通信装置は、
シーケンス番号を付したデータを順次送信する手段を備え、
送信の都度前記シーケンス番号を更新する手段と
を備え、
他の通信装置は、
データの送信に対応して前記一の通信装置から受信すべきデータを受信したか否かを判断する手段と、
該データを受信したと判断した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成する手段と、
生成した変数及び予定シーケンス番号に対応する情報を送信する手段と
を備え、
前記一の通信装置は、
前記他の通信装置から送信された変数及び予定シーケンス番号に対応する情報を受信する手段と、
受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断する手段と、
同一であると判断した場合、前記変数と共に受信した予定シーケンス番号に対応する情報の連続受信回数を計数する手段と、
計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以降のデータを順次、前記他の通信装置に送信する手段と
を備えることを特徴とする通信システム。
【０１１６】
（付記９）  ＴＣＰに基づいて一又は複数のデータを交互に送信する複数の通信装置を備える通信システムにおいて、
一の通信装置は、
シーケンス番号を付したデータを順次送信する手段を備え、
送信の都度前記シーケンス番号を更新する手段と
を備え、
他の通信装置は、
データの送信に対応して前記一の通信装置から受信すべきデータを受信したか否かを判断する手段と、
該データを受信したと判断した場合、受信した旨を示す変数及び次回受信すべきデータのシーケンス番号を表す予定シーケンス番号に対応する情報を生成する手段と、
生成した変数及び予定シーケンス番号に対応する情報を送信する手段と
を備え、
前記一の通信装置は、
前記他の通信装置から送信された変数及び予定シーケンス番号に対応する情報を受信する手段と、
受信した予定シーケンス番号が更新してきたシーケンス番号以下であるか否かを判断する手段と、
更新してきたシーケンス番号以下であると判断した場合、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断する手段と、
同一であると判断した場合、前記変数と共に受信した予定シーケンス番号に対応する情報の連続受信回数を計数する手段と、
計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以降のデータを順次、前記他の通信装置に送信する手段と
を備えることを特徴とする通信システム。
【０１１７】
（付記１０）  前記一の通信装置は、
データ通信の開始についての開始確認を送信する手段
を備え、
前記他の通信装置は、
受信した開始確認に対する開始応答を送信する手段
を備え、
前記一の通信装置は、
該開始応答を受信した場合、前記データを送信する手段を備えることを特徴とする付記６乃至９のいずれかに記載の通信システム。
【０１１８】
（付記１１）  ＴＣＰに基づいて外部とデータ通信することが可能な通信装置において、
シーケンス番号を付したデータを順次送信する手段と、
送信の都度前記シーケンス番号を更新する手段と、
外部の装置から送信された予定シーケンス番号に対応する情報を受信する手段と、
受信した予定シーケンス番号が更新してきたシーケンス番号以下であるか否かを判断する手段と、
更新してきたシーケンス番号以下であると判断した場合、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断する手段と、
同一であると判断した場合、受信した予定シーケンス番号に対応する情報の連続受信回数を計数する手段と、
計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以降のデータを順次、外部の装置へ送信する手段と
を備えることを特徴とする通信装置。
【０１１９】
（付記１２）  コンピュータにＴＣＰに基づいて外部とデータ通信を行わせるコンピュータプログラムにおいて、
コンピュータにデータの送信の都度該データに付したシーケンス番号を更新させるステップと、
コンピュータに外部の装置から受信した予定シーケンス番号が更新してきたシーケンス番号以下であるか否かを判断させるステップと、
コンピュータに、更新してきたシーケンス番号以下であると判断した場合、受信した予定シーケンス番号が前回受信した予定シーケンス番号と同一であるか否かを判断させるステップと、
コンピュータに、同一であると判断した場合、受信した予定シーケンス番号に対応する情報の連続受信回数を計数させるステップと、
コンピュータに、計数の結果、所定の回数に達したとき、受信した予定シーケンス番号以下のデータを順次送信させるステップと
を実行させることを特徴とするコンピュータプログラム。
【図面の簡単な説明】
【０１２０】
【図１】本発明に係る通信システムの全体構成を説明する構成図である。
【図２】本発明で用いるＴＣＰヘッダの内容を示す模式図である。
【図３】本発明で制御された通信シーケンスの一例を示す説明図である。
【図４】本発明で制御された通信シーケンスの一例を示す説明図である。
【図５】本発明で制御された通信シーケンスの一例を示す説明図である。
【図６】本発明で制御された通信シーケンスの一例を示す説明図である。
【図７】本発明で制御された通信シーケンスの一例を示す説明図である。
【図８】本発明で制御された通信シーケンスの一例を示す説明図である。
【図９】本発明で制御された通信シーケンスの一例を示す説明図である。
【図１０】本発明で制御された通信シーケンスの一例を示す説明図である。
【図１１】シーケンス番号及び予定シーケンス番号を示す説明図である。
【図１２】第１通信装置の送信処理の手順を説明するフローチャートである。
【図１３】第１通信装置の受信処理の手順を説明するフローチャートである。
【図１４】従来の方法で制御された通信シーケンスを示す説明図である。
【図１５】従来の方法で制御された通信シーケンスを示す説明図である。
【図１６】従来の方法で制御された通信シーケンスを示す説明図である。
【符号の説明】
【０１２１】
１  第１通信装置
１０  外部記憶装置
１１  通信インタフェース
１２  ＲＯＭ
１３  ＲＡＭ
１４  カウンタ
１５  タイマ
１６  通信処理部
１７  アプリケーション処理部
２  第２通信装置
２０  外部記憶装置
２１  通信インタフェース
２２  ＲＯＭ
２３  ＲＡＭ
２４  カウンタ
２５  タイマ
２６  通信処理部
２７  アプリケーション処理部
【図１】
2008099139.tif 000003
【図２】
2008099139.tif 000004
【図３】
2008099139.tif 000005
【図４】
2008099139.tif 000006
【図５】
2008099139.tif 000007
【図６】
2008099139.tif 000008
【図７】
2008099139.tif 000009
【図８】
2008099139.tif 000010
【図９】
2008099139.tif 000011
【図１０】
2008099139.tif 000012
【図１１】
2008099139.tif 000013
【図１２】
2008099139.tif 000014
【図１３】
2008099139.tif 000015
【図１４】
2008099139.tif 000016
【図１５】
2008099139.tif 000017
【図１６】
2008099139.tif 000018