(57)【要約】【課題】効率的なデータ送信を行う。【解決手段】複数のデータパケットを他の通信装置に送信する送信手段と、前記複数のデータパケットに対応する複数の確認応答パケットを前記他の通信装置から受信する受信手段と、前記受信手段により受信した前記複数の確認応答パケットをバッファに順次格納する格納手段と、前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記送信手段により送信された前記複数のデータパケットに対する到達確認を行う確認手段と、を有する。【選択図】図４
2017123620.tif 000002
【特許請求の範囲】
【請求項１】
通信装置であって、
複数のデータパケットを他の通信装置に送信する送信手段と
前記複数のデータパケットに対応する複数の確認応答パケットを前記他の通信装置から受信する受信手段と、
前記受信手段により受信した前記複数の確認応答パケットをバッファに順次格納する格納手段と、
前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記送信手段により送信された前記複数のデータパケットに対する到達確認を行う確認手段と、
を有することを特徴とする通信装置。
【請求項２】
前記確認手段は、前記バッファに格納された前記複数の確認応答パケットのうち、最後に格納された確認応答パケットに基づいて、前記送信手段により送信された前記複数のデータパケットに対する到達確認を行うことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記確認手段により前記到達確認が行われた後、前記バッファに格納されている確認応答パケットを前記バッファから破棄する破棄手段を更に有することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記受信手段により、所定時間内に、所定の閾値よりも多くの確認応答パケットを受信した場合に、前記確認手段は、前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記到達確認を行うことを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項５】
前記確認手段は、前記到達確認を行った後、所定時間が経過すると、再度、前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記到達確認を行うことを特徴とする請求項１から３のいずれか１項に記載の通信装置。
【請求項６】
前記確認手段は、前記他の通信装置へ到達したデータパケットの数を確認することを特徴とする請求項１から５のいずれか１項に記載の通信装置。
【請求項７】
前記確認手段は、前記バッファに最後に格納された確認応答パケットと、最後から２番目に格納された確認応答パケットと基づいて、前記到達確認を行うことを特徴とする請求項１から６のいずれか１項に記載の通信装置。
【請求項８】
前記バッファに格納された前記複数の確認応答パケットのうち、前記他の通信装置とのコネクションを制御するための情報を含む確認応答パケットがある場合、当該確認応答パケットに含まれる情報に従って、前記他の通信装置との間のコネクションを制御する制御手段を更に有することを特徴とする請求項１から７のいずれか１項に記載の通信装置。
【請求項９】
前記バッファは、ＬＩＦＯ（Ｌａｓｔ  ｉｎ，  Ｆｉｒｓｔ  ｏｕｔ）の構造を有することを特徴とする請求項１から８のいずれか１項に記載の通信装置。
【請求項１０】
前記受信手段は、前記他の通信装置からパケットを受信し、
前記受信手段により受信されたパケットが、前記他の通信装置により受信確認されたデータパケットに対する確認応答パケットであるか否かを判定する判定手段を更に有することを特徴とする請求項１に記載の通信装置。
【請求項１１】
前記受信手段により受信されたパケットが、前記判定手段により前記確認応答パケットではないパケットと判定された場合、前記格納手段は、前記確認応答パケットではないと判定されたパケットを前記バッファとは異なる他のバッファに順次格納することを特徴とする請求項１０に記載の通信装置。
【請求項１２】
前記他のバッファは、ＦＩＦＯ（Ｆｉｒｓｔ  ｉｎ，  Ｆｉｒｓｔ  ｏｕｔ）の構造を有することを特徴とする請求項１１に記載の通信装置。
【請求項１３】
前記確認応答パケットは、ＴＣＰ通信におけるＡＣＫパケットであることを特徴とする請求項１から１２のいずれか１項に記載の通信装置。
【請求項１４】
１つの前記確認応答パケットは、複数のデータパケットに対する確認応答パケットであることを特徴とする請求項１から１３のいずれか１項に記載の通信装置。
【請求項１５】
通信装置の制御方法であって、
複数のデータパケットを他の通信装置に送信する送信工程と
前記複数のデータパケットに対応する複数の確認応答パケットを前記他の通信装置から受信する受信工程と、
前記受信工程において受信した前記複数の確認応答パケットをバッファに順次格納する格納工程と、
前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記送信工程において送信された前記複数のデータパケットに対する到達確認を行う確認工程と、
を有することを特徴とする通信装置の制御方法。
【請求項１６】
コンピュータを、請求項１から１４のいずれか１項に記載の通信装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、確認応答を要するパケット通信技術に関する。
【背景技術】
【０００２】
従来のパケット通信において、通信の信頼性を保障するために、累積確認応答（Ｃｕｍｕｌａｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）を行う通信方式が知られている。この通信方式では、データ送信装置は、パケットを送信した後に、累積確認応答のためのパケット（以下、ＡＣＫパケットと称す）の受信によってデータの到達確認を実施する。このために、例えば、送信装置は、トランスポート層のプロトコルであるＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を利用して送信データをシーケンス番号で管理し、受信装置は、受信したデータパケットに記載のシーケンス番号を基にＡＣＫ番号を算出して、ＡＣＫパケットを返信する（特許文献１）。また、送信装置は、受信したＡＣＫパケットに記載のＡＣＫ番号を基に、送信済みデータの到達確認と次に送信すべきデータの特定を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−３８５９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＴＣＰのようにスライディングウィンドウを用いるプロトコルの場合、送信装置は、一度に大量のデータパケットを送信して、受信装置から複数のＡＣＫパケットを受信することを期待するような状況が考えられる。特に近年では、送信装置において通信に使用可能なメモリ量の増加や、ネットワークの帯域幅の拡大によって、送信装置が一度に送信可能なデータ量が増加している。
【０００５】
ここで、送信装置が、大量のデータパケットを送信して、それに対する複数のＡＣＫパケットを同時に受信した状況を想定する。このとき、従来の送信装置は、同時に受信した複数のＡＣＫパケットを、受信パケットバッファなどの記憶領域に一時的に保持して、受信した順番に従って処理していく。ここで、ＡＣＫパケットは、送信装置が送信した複数のデータパケットのうち、到達確認の取れた範囲（すなわち、ＡＣＫ番号）を提示するものである。そのため、送信装置は、受信した全てのＡＣＫパケットを処理しなくとも、最後に送信したデータパケットに対するＡＣＫパケットを処理することができれば、それまでに送信したすべてのデータに対して到達確認をとることが可能になる。すなわち、送信装置は、最後に受信したＡＣＫパケットを処理することで、より多くのデータパケットに対する到達確認を取れる可能性が高い。しかしながら、従来の送信装置は、受信した順番に従ってＡＣＫパケットの処理をしていたため、効率的なデータ送信が実現されていなかった。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、効率的なデータ送信を行うことを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するための一手段として、本発明の通信装置は、複数のデータパケットを他の通信装置に送信する送信手段と、前記複数のデータパケットに対応する複数の確認応答パケットを前記他の通信装置から受信する受信手段と、前記受信手段により受信した前記複数の確認応答パケットをバッファに順次格納する格納手段と、前記バッファに格納された前記複数の確認応答パケットのうち、一部の確認応答パケットに基づいて、前記送信手段により送信された前記複数のデータパケットに対する到達確認を行う確認手段と、を有する。
【発明の効果】
【０００８】
本発明によれば、効率的にデータ送信を行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】通信システムの全体構成を示す図。
【図２】送信装置の機能ブロック構成を示す図。
【図３】送信装置によるデータ送信処理のフローチャート。
【図４】実施形態１に記載のパケット受信処理のフローチャート。
【図５】実施形態２に記載のパケット受信処理のフローチャート。
【図６】実施形態３に記載のパケット受信処理のフローチャート。
【図７】実施形態４に記載のパケット受信処理のフローチャート。
【図８】実施形態４における送信装置の機能ブロック構成を示す図。
【図９】実施形態５に記載のパケット受信処理のフローチャート。
【図１０】ＴＣＰヘッダを示す図。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明をその実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１１】
以下に説明する実施形態において、累積確認応答を行うプロトコルを用いてデータ通信を行う送信装置を対象として説明する。なお、実施形態では、累積確認応答を行うプロトコルとしてＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を使用する例を提示するが、ＴＣＰ以外のプロトコルを使用することも可能である。また、実施形態では、送信装置が、ＭＡＣ（Ｍｅｄｉｕｍ  Ａｃｃｅｓｓ  Ｌａｙｅｒ）層において受信パケットがＡＣＫパケットか否かを判別するＡＣＫ判定処理を行うことを想定する。なお、この処理は、累積確認応答を行うプロトコルより下位層であればＭＡＣ層以外の層で実施することも可能である。
【００１２】
［実施形態１］
以下、実施形態１における送信装置の処理を説明する。図１は、本実施形態における通信システム１００の全体構成を示す図である。通信システム１００は、送信装置１０１と受信装置１０２から構成され、両者はネットワーク１０３を介して通信可能である。送信装置１０１は、データパケットを受信装置１０２へ送信する。データパケットを受信した受信装置１０２は、受信確認できたデータパケットに対応する確認応答パケット（すなわちＡＣＫパケット）を送信する。なお、説明のために送信装置１０１と受信装置１０２と表記するが、両者はデータの送信および受信のいずれも行うことが可能である。また、本実施形態では、ネットワーク１０３は、パケットのロスやパケットの到達順序の入れ替えなどが発生しにくい安定したネットワークであるとする。
【００１３】
図２は、本実施形態における送信装置１０１の機能ブロック構成を示す図である。なお、図２に示す各機能ブロックは、それぞれハードウェア又はソフトウェアによって構成される。ソフトウェアとして構成される場合には、各機能を実現するためのコンピュータプログラムが不図示の記憶部に記憶され、不図示のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が当該プログラムを実行することによって該機能が実現される。
【００１４】
送信装置１０１は、アプリケーション層処理部２０１、ＴＣＰ層処理部２０２、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）層処理部２０３、ＭＡＣ層処理部２０４により、送信データをパケット化する処理を実施する。そして、送信装置１０１は、ネットワークインタフェース部２０５により、データパケットを受信装置１０２に送信する。
【００１５】
ここで、パケットの送信に関しては、ＭＡＣ層処理部２０４の送信パケット処理部２０６が、従来通りの送信処理を行う。一方で、パケットの受信処理に関しては、従来の受信処理と異なる処理が行われる。以下、本実施形態における受信処理を詳細に説明する。
【００１６】
ＭＡＣ層処理部２０４のＡＣＫ判定処理部２０７は、ネットワークインタフェース部２０５において受信されたパケットに対して、ＡＣＫパケットか否かの判定を行う。ＡＣＫ格納処理部２０８と受信パケット格納処理部２１０は、それぞれ、ＡＣＫ判定処理部２０７による判定等に基づき、ＡＣＫバッファ部２０９とパケットバッファ部２１１に対するバッファ制御を行う。ＡＣＫ判定処理部２０７により、受信パケットがＡＣＫパケットであると判定された場合、該受信パケット（すなわちＡＣＫパケット）は、ＡＣＫ格納処理部２０８によりＡＣＫバッファ部２０９に順次格納される。本実施形態では、ＡＣＫバッファ部２０９は、ＬＩＦＯ（Ｌａｓｔ  Ｉｎ，  Ｆｉｒｓｔ  Ｏｕｔ）の構造を有するものとする。
【００１７】
一方で、ＡＣＫ判定処理部２０７により、受信パケットがＡＣＫパケットでないと判定された場合、該受信パケット（すなわちＡＣＫパケットではないパケット）は、受信パケット格納処理部２１０によりパケットバッファ部２１１に格納される。本実施形態では、パケットバッファ部２１１は、ＦＩＦＯ（Ｆｉｒｓｔ  ｉｎ，  Ｆｉｒｓｔ  ｏｕｔ）の構造を有するものとする。ＡＣＫバッファ部２０９とパケットバッファ部２１１に格納されたパケットは、受信パケット処理部２１２により、ＭＡＣ層における受信処理が施された後に、ＩＰ層処理部２０３およびＴＣＰ層処理部２０２により、上位層のプロトコルの受信処理が実施される。
【００１８】
次に、図３及び図４を参照して、送信装置１０１の動作について説明する。図３は、送信装置１０１により行われるデータ送信処理の一連の流れを表したフローチャートである。Ｓ３０１では、ＴＣＰ層処理部２０２、ＩＰ層処理部２０３、およびＭＡＣ層処理部２０４が、アプリケーション層処理部２０１から送信要求のあったデータを、各層でプロトコル処理をしてパケット化する。続いて、ネットワークインタフェース部２０５が、パケットデータを、ネットワーク１０３を介して受信装置１０２に送信する。Ｓ３０２では、ネットワークインタフェース部２０５、ＭＡＣ層処理部２０４、ＩＰ層処理部２０３、およびＴＣＰ層処理部２０２が、ＡＣＫパケットを含むパケットの受信処理を行う。Ｓ３０２の処理は、図４を用いて後述する。
【００１９】
Ｓ３０２で、送信装置１０１は、送信済みのデータに対するＡＣＫパケットの受信を確認した場合、新たに未送信のデータを送信することが可能となる。続いて、Ｓ３０３で、アプリケーション層処理部２０１は、未送信のデータがあるかを確認する。なお、アプリケーション層処理部２０１に加えて、もしくは、代えて、ＴＣＰ層処理部２０２が未送信のデータがあるかを確認するようにしてもよい。アプリケーション層処理部２０１が全ての送信データをＴＣＰ層処理部２０２に渡したとしても、受信装置１０２の受信ウィンドウサイズの制限により全てのデータが送信されない可能性がある。しかし、ＴＣＰ層処理部２０２が、未送信のデータがあるかを確認することで、ことのような未送信データを確認することができる。
【００２０】
未送信データがある場合には（Ｓ３０３のＹｅｓ）、処理はＳ３０１に戻り、データ送信処理が継続される。一方、未送信データが無い場合には（Ｓ３０３のＮｏ）、送信装置は、送信処理を終了する。
【００２１】
図４は、Ｓ３０２のパケット受信処理の流れを表したフローチャートである。Ｓ４０１で、ネットワークインタフェース部２０５が、パケットを受信する。Ｓ４０２で、ＡＣＫ判定処理部２０７が、受信したパケットがＴＣＰ通信におけるＡＣＫパケットか否かを判定する。受信パケットがＡＣＫパケットであると判定された場合は（Ｓ４０２のＹｅｓ）、ＡＣＫ格納処理部２０８が、該受信パケット（すなわちＡＣＫパケット）をＡＣＫバッファ部２０９に格納する。一方、受信パケットがＡＣＫパケットでないと判定された場合は（Ｓ４０２のＮｏ）、受信パケット格納処理部２１０が、該受信パケット（すなわちＡＣＫパケットではないパケット）を、パケットバッファ部２１１に格納する。
【００２２】
その後、Ｓ４０５で、ネットワークインタフェース部２０５は、受信しているパケットがあるか否かを判断する。受信しているパケットがあれば（Ｓ４０５のＹｅｓ）、処理はＳ４０２へ戻る。一方、受信しているパケットがなければ（Ｓ４０５のＮｏ）、処理はＳ４０６へ進む。このように、本実施形態では、ネットワークインタフェース部２０５において受信されているパケットがない場合に（Ｓ４０５のＮｏ）、処理がＳ４０６に進む。なお、Ｓ４０５の処理に替えて、所定の条件が満たされた場合に、処理がＳ４０６に進むようにしてもよい。例えば、ネットワークインタフェース部２０５が、所定時間内に、所定の閾値よりも多くのパケットを連続して受信した場合や、Ｓ４０１の処理が開始されてから所定時間が経過した場合に、処理がＳ４０６に進むようにしても良い。
【００２３】
Ｓ４０６で、受信パケット処理部２１２は、ＬＩＦＯ構造を有するＡＣＫバッファ部２０９にＡＣＫパケットが格納されているか確認する処理を行う。ＡＣＫバッファ部２０９にＡＣＫパケットが格納されている場合（Ｓ４０６のＹｅｓ）、Ｓ４０７で、受信パケット処理部２１２は、ＡＣＫバッファ部２０９の先頭の位置に格納されているＡＣＫパケット、すなわち、最後に格納されたＡＣＫパケットを取り出し、ＭＡＣ層の受信プロトコル処理を行う。続いて、ＩＰ層処理部２０３、ＴＣＰ層処理部２０２は、それぞれの層で受信プロトコル処理を実施する。これにより、Ｓ３０１で送信されたデータの到達確認がとれたことになる。すなわち、ＴＣＰ層処理部２０２は、受け取ったＡＣＫパケットの一部に基づいてＡＣＫ番号を検出し、該ＡＣＫ番号を基に、Ｓ３０１で送信されたデータの到達確認を行う。なお、ＴＣＰ層処理部２０２は、下位層においてすでに検出されたＡＣＫ番号を受け取るように構成されて良い。また、到達確認できた送信済みデータの情報（到達確認できた送信済みデータの数など）は、ＴＣＰ層処理部２０２からＭＡＣ層処理部２０４の受信パケット処理部２１２へ通知されてもよい。
【００２４】
このように本実施形態では、ＡＣＫバッファ部２０９に最後に格納されたＡＣＫパケットに対して受信プロトコル処理が行われる。ＡＣＫバッファ部２０９に最後に格納されたＡＣＫパケットは、安定したネットワークが利用されていれば、受信装置１０２が送信装置１０１から送信されたデータをすべて受け取った後に送信するＡＣＫパケットである可能性が高い。そのため、ＡＣＫバッファ部２０９の先頭の位置に格納されるＡＣＫパケットは、２番目以降に格納されるＡＣＫパケットよりも、多くの送信済みデータを到達確認するＡＣＫパケットであると考えらえる。したがって、Ｓ４０７の処理の終了後は、ＡＣＫバッファ部２０９を空にしてもよく、Ｓ４０８で、ＡＣＫ格納処理部２０８は、ＡＣＫバッファ部２０９内のＡＣＫパケットを破棄する。その後、処理はＳ４０９に進む。
【００２５】
Ｓ４０９では、Ｓ４０２で、受信パケットがＡＣＫパケットではないと判定された場合（Ｓ４０２のＮｏ）に、受信パケット処理部２１２は、パケットバッファ部２１１に格納されているパケットに対して受信プロトコル処理を実施する。続いて、ＩＰ層処理部２０３、ＴＣＰ層処理部２０２は、それぞれの層で受信プロトコル処理を実施する。
【００２６】
なお、受信パケットはあるものの、所定の条件が満たされたことにより処理がＳ４０６へ進んだ場合、ネットワークインタフェース部２０５に受信パケットがある限り、送信装置１０１は、図４に示す処理を実施してもよい。また、送信装置１０１は、Ｓ３０１でデータを送信してから、所定時間、図４に示す処理を実施してもよい。このとき、送信装置１０１が、所定時間中に、すべての送信済みのデータに対するＡＣＫパケットを受信することができなかった場合には、所定時間経過後に図４に示す処理を試みた後、Ｓ３０３の処理へ進む。この際、ユーザにエラーを通知してもよい。
【００２７】
また、本実施形態では、受信パケット処理部２１２は、ＡＣＫバッファ部２０９に格納されたＡＣＫパケットを処理し、その後、パケットバッファ部２１１に格納されたパケットを処理した。しかし、これらの処理の順序は逆であってもよい。例えば、アプリケーション層処理部２０１が、データの受信処理を高優先度で実施する場合などは、受信パケット処理部２１２は、パケットバッファ部２１１に格納されたパケットを先に処理してもよい。
【００２８】
このように、本実施形態における送信装置１０１は，多くの冗長なＡＣＫパケットの受信処理を省略することができる。特に、ネットワーク１０３がパケットのロスや到達順序の入れ替えなどが発生しにくい安定した通信路である場合に、本実施形態における送信装置１０１は、より効率的にデータ送信処理を実施することが可能になる。
【００２９】
［実施形態２］
以下、実施形態２における送信装置の処理を説明する。なお、通信システムの全体構成（図１）、送信装置１０１の機能ブロック構成（図２）、および送信装置１０１により行われるデータ送信処理の流れ（図３）は、実施形態１と同様であるため、説明を省略する。
【００３０】
図５は、実施形態２における処理３０２のパケット受信処理の流れを表したフローチャートである。Ｓ５０１からＳ５０７の処理は、実施形態１において説明した図４のＳ４０１からＳ４０７の処理と同様であるため、説明を省略する。
【００３１】
Ｓ５０８では、受信パケット処理部２１２は、Ｓ５０７で、受信パケット処理部２１２、ＩＰ層処理部２０３、ＴＣＰ層処理部２０２が受信プロトコル処理を実施したことによって、すべての送信済みのデータに対する到達確認がとれたか否かを判定する。この判定は、例えば、受信パケット処理部２１２が、ＴＣＰ層処理部２０２からすべての送信済みのデータに対する到達確認が通知されたか否かにより行うことが可能である。すべての送信済みのデータに対する到達確認がとれた場合（Ｓ５０８のＹｅｓ）、Ｓ５０９で、ＡＣＫ格納処理部２０８は、受信パケット処理部２１２の制御により、バッファ内のＡＣＫパケットを破棄する。一方、すべての送信済みのデータに対する到達確認がとれなかった場合（Ｓ５０８のＮｏ）、処理はＳ５０６へ戻る。
【００３２】
ＡＣＫバッファ部２０９内にＡＣＫパケットがなくなった場合（Ｓ５０６のＮｏ）および、ＡＣＫバッファ部２０９がＡＣＫパケットを破棄した場合（Ｓ５０９）に、処理はＳ５１０へ進む。Ｓ５１０の処理は、実施形態１において説明した図４のＳ４０９の処理と同様であるため、説明を省略する。
【００３３】
なお、Ｓ５０８で、すべての送信済みのデータに対する到達確認がとれなかった場合は（Ｓ５０８のＮｏ）、処理はＳ５０６へ戻るが、このループが継続して終わらない可能性がある。したがって、Ｓ５０６からＳ５０８の処理のループが所定回数繰り返された時点で、送信装置１０１のユーザにエラー表示を行なったり、所定時間後再度Ｓ５０８の処理が行われるように、送信装置１０１が構成されてもよい。
【００３４】
このように、本実施形態における送信装置１０１は、すべての送信済みデータに対して到達確認が取れた段階でＡＣＫパケットを破棄する。これにより、送信装置１０１は、冗長と判断できたＡＣＫパケットの処理を削減しつつも、ＡＣＫパケットの受信によって必要となる高速再転送などの処理が実施可能になる。したがって、本実施形態は、パケットロスやＡＣＫパケットの到達順序の入れ替えなどが発生しやすいネットワーク環境でも適用可能である。
【００３５】
［実施形態３］
以下、実施形態３における送信装置の処理を説明する。なお、通信システムの全体構成（図１）、送信装置１０１の機能ブロック構成（図２）、および送信装置１０１により行われるデータ送信処理の流れ（図３）は、実施形態１と同様であるため、説明を省略する。
【００３６】
図６は、実施形態３における処理３０２のパケット受信処理の流れを表したフローチャートである。Ｓ６０１からＳ６０７の処理は、実施形態１において説明した図４のＳ４０１からＳ４０７の処理と同様であるため、説明を省略する。
【００３７】
Ｓ６０８では、受信パケット処理部２１２は、ＬＩＦＯ構造を有するＡＣＫバッファ部２０９の先頭の位置に格納されたＡＣＫパケットと、先頭から２番目に格納されたＡＣＫパケットに基づいて、送信済みデータの到達数の比較を行う。具体的には、例えば、ＡＣＫバッファ部２０９の先頭の位置に格納されたＡＣＫパケットと、２番目に格納されたＡＣＫパケットに対して、ＴＣＰ層までの受信プロトコル処理が施された後、受信パケット処理部２１２が、ＴＣＰ層処理部２０２から両ＡＣＫパケットに対する到達確認された送信済みデータの情報を受け取る。受信パケット処理部２１２は、受け取った到達確認の情報に基づいて、送信済みパケットの到達数の比較を行うことが可能である。また、受信パケット処理部２１２が、ＡＣＫバッファ部２０９の先頭の位置に格納されたＡＣＫパケットと、２番目に格納されたＡＣＫパケットのそれぞれに含まれるＡＣＫ番号情報を検出し、両ＡＣＫ番号の情報（例えばＡＣＫ番号の個数）に基づいて、送信済みパケットの到達数の比較を行ってもよい。
【００３８】
ＡＣＫバッファ部２０９の先頭の位置に格納されたＡＣＫパケットに対する送信済みパケットの到達数が、２番目に格納されたＡＣＫパケットに対する送信済みパケットの到達数より多い場合（Ｓ６０９のＹｅｓ）、Ｓ６１０でＡＣＫ格納処理部２０８は、受信パケット処理部２１２の制御により、バッファ内のＡＣＫパケットを破棄する。破棄するパケットには、ＡＣＫバッファ部２０９の先頭から２番目に格納されているＡＣＫパケットも含まれる。これは、送信データが受信装置１０２にロスすることなく到達し、ＡＣＫ番号の順序通りに送信装置１０１にＡＣＫパケットが到達しているものと考えられるからである。また、先頭から２番目に格納されたＡＣＫパケットより前に受信したＡＣＫパケットのＡＣＫ番号は、Ｓ６０７で到達確認済みである可能性が高いと考えられるからである。これにより、ＡＣＫパケットの処理を削減することが可能となる。
【００３９】
一方、ＡＣＫバッファ部２０９の先頭の位置に格納されたＡＣＫパケットに対する送信済みパケットの到達数が、２番目に格納されたＡＣＫパケットに対する送信済みパケットの到達数以下である場合（Ｓ６０９のＮｏ）、処理はＳ６０６に戻る。この場合、パケットロスが発生する等の、ネットワーク１０３が不安定な状態であることが想定される。そのため、処理はＳ６０６に戻り、ＡＣＫバッファ部２０９内のＡＣＫパケットに対して受信プロトコル処理が継続される。このとき、例えば、ＡＣＫ格納処理部２０８がＡＣＫバッファ部２０９の先頭に格納されているＡＣＫパケットを破棄し、Ｓ６０６からの処理が行われてもよい。また、最初のＳ６０６の処理の時点でＡＣＫバッファ部２０９に格納されているＡＣＫパケットが２つであった場合には、Ｓ６０９でＮｏの場合であっても、処理がＳ６１０へ進むようにしても良い。
【００４０】
ＡＣＫバッファ部内のＡＣＫパケットが破棄された後（Ｓ６１０）、または、ＡＣＫバッファ部２０９にＡＣＫパケットが格納されていない場合（Ｓ６０６のＮｏ）、処理はＳ６１１に進む。Ｓ６１１の処理は、実施形態１において説明した図４のＳ４０９の処理と同様のため、説明を省略する。
【００４１】
このように、本実施形態における送信装置１０１は、ＡＣＫパケットのＡＣＫ番号を基に、データパケットがロスすることなく受信装置１０２に到達し、順番通りに送信装置１０１にＡＣＫパケットが戻されたか否かを判定する。そして、送信装置１０１は、この判定に基づいて、冗長だと判断したＡＣＫパケットの処理を削減している。なお、本実施形態では、送信装置１０１は、最後に連続して受信した２つのＡＣＫパケットのＡＣＫ番号を比較する処理を実施していたが、Ｓ６０９を拡張して、最後に連続して受信した２つ以上のＡＣＫパケットのＡＣＫ番号を確認して、ＡＣＫバッファ部２０９のＡＣＫパケットを破棄するか判断をするようにしても良い。
【００４２】
［実施形態４］
以下、実施形態４における送信装置の処理を説明する。なお、通信システムの全体構成（図１）および送信装置１０１により行われるデータ送信処理の流れ（図３）は、実施形態１と同様であるため、説明を省略する。
【００４３】
図７は、実施形態４における処理３０２のパケット受信処理の流れを表したフローチャートである。また、図８は、実施形態４の説明のために、図２の送信装置１０１の機能ブロック構成のうち、ＭＡＣ層処理部２０４の受信処理に関わる部分を詳細化して表した機能ブロック構成を示す図である。
【００４４】
図８について、図２と異なる点を説明する。ＡＣＫ格納処理部２０８は、コネクション確認処理部８０１とＡＣＫ格納先決定部８０２を有し、ＡＣＫバッファ部２０９は、それぞれＬＩＦＯの構造を有するサブバッファ部８０３〜８０５を有する。ＡＣＫパケットは、それぞれに含まれる所定の情報に基づき、いずれかのサブバッファ部８０３〜８０５に格納される。本実施形態では、所定の情報は、ＴＣＰコネクションの情報とする。
【００４５】
コネクション確認処理部８０１は、ＡＣＫ判定処理部２０７から受け取ったＡＣＫパケットが、どのコネクション宛かを確認する。そして、コネクション確認処理部８０１は、そのＡＣＫパケットは、ＡＣＫバッファ部２０９に格納すべきＡＣＫパケットであるか否かを確認する。ＡＣＫバッファ部２０９に格納すべきと判定された場合、次にＡＣＫ格納先決定部８０２は、ＡＣＫバッファ部２０９の持つ複数のサブバッファ部のうち、どのサブバッファ部に格納するのかの判断を行う、図８は、ＡＣＫバッファ部２０９が３つのサブバッファ部８０３〜８０５を保持していることを想定して図示されているが、このサブバッファ部の数はこれに限定されるものではなく、必要に応じて増減しても良いものとする。
【００４６】
続いて、図７のフローチャートを用いて、本実施形態の処理の流れを説明する。Ｓ７０１とＳ７０２の処理は、Ｓ４０１とＳ４０２の処理と同様であるため、説明を省略する。
【００４７】
Ｓ７０２で受信パケットがＡＣＫパケットと判定された場合（Ｓ７０２のＹｅｓ）、コネクション確認処理部８０１は、そのＡＣＫパケットのコネクションの情報を確認する。続いて、コネクション確認処理部８０１は、そのＡＣＫパケットのコネクションの情報に基づいて、該ＡＣＫパケットが、どのＴＣＰコネクションに到達するパケットなのかを確認する（Ｓ７０３）。この確認の後、コネクション確認処理部８０１は、ＡＣＫパケットが到達すべき所望のＴＣＰコネクションが、ＡＣＫバッファ部２０９を使用可能かどうかを判断する（Ｓ７０４）。
【００４８】
所望のＴＣＰコネクションがＡＣＫバッファ部２０９を使用可能である場合（Ｓ７０４のＹｅｓ）、ＡＣＫ格納先決定部８０２は、サブバッファ部８０３〜８０５のうち、どのサブバッファ部にＡＣＫパケットを格納するかを決定する（Ｓ７０５）。ここで、ＡＣＫ格納先決定部８０２は、コネクション確認処理部８０１で確認されたコネクションの情報と、サブバッファ部８０３〜８０５のいずれかとの関連付けを行う。そして、ＡＣＫ格納先決定部８０２は、同一コネクションに到達すべきＡＣＫパケットが同じサブバッファ部に格納されるように、格納先のサブバッファ部を決定する。コネクションの情報とサブバッファ部の関連付けは、通信に使用されるアドレスやポート番号などのコネクションを識別可能な情報を、格納先のサブバッファ部に紐づける方法などが考えられる。この紐付けは、予め設定されても、ＡＣＫ格納先決定部８０２が設定してもよい。
【００４９】
なお、より処理を高速化したい場合などは、ＡＣＫ格納先決定部８０２は、コネクションを識別可能な情報をキーとするハッシュ関数を用いて、格納先のサブバッファ部の識別子を導出してもよい。その他、ＡＣＫ格納先決定部８０２は、コネクションを識別可能な情報からＡＣＫパケットの格納先のサブバッファ部を識別できれば、どのような方法によりＳ７０５の処理を行ってもよい。ＡＣＫ格納先決定部８０２は、ＡＣＫパケットの格納先のサブバッファ部を決定したら、Ｓ７０６で、決定したサブバッファ部にＡＣＫパケットを格納する。
【００５０】
一方、所望のＴＣＰコネクションがＡＣＫバッファ部２０９を使用可能でない場合（Ｓ７０４のＮｏ）、処理はＳ７０７に進む。Ｓ７０７では、コネクション確認処理部８０１は、ＡＣＫパケットを、受信パケット格納処理部２１０を介して、ＦＩＦＯ構造を有するパケットバッファ部２１１に格納する。
【００５１】
以降のＳ７０８からＳ７１２の処理は、実施形態１において説明した図４のＳ４０５からＳ４０９の処理と同様のため、説明を省略する。また、これらの処理は。実施形態２または実施形態３において説明したパケット破棄の方法で代替してもよい。
【００５２】
このように、本実施形態における送信装置１０１は、例えば高優先度でデータ転送をしたいコネクションに到達するＡＣＫパケットのみを優先的に処理することが可能となる。また、送信装置１０１は、それ以外のＡＣＫパケットは通常のパケットバッファ部２１１に格納して後から処理を実施することが可能となる。このように、本実施形態では、優先度に基づいたＡＣＫパケットの処理方法が可能になる。
【００５３】
また、送信装置１０１は、コネクションの情報に基づいて、ＡＣＫパケットの格納先のサブバッファ部を変更することが可能であり、コネクションごとに独立してサブバッファ部の使用が可能になる。これにより、複数のＴＣＰコネクションでデータをする送信装置１０１であっても、実施形態１から実施形態３に記載のＡＣＫパケットを削除する方法を適用した際であっても、誤って該ＡＣＫパケットが到達すべきコネクションではない他のコネクションに到達すべきＡＣＫパケットを削除することを防ぐことができるようになる。
【００５４】
［実施形態５］
以下、実施形態５における送信装置の処理を説明する。なお、通信システムの全体構成（図１）、送信装置１０１の機能ブロック構成（図２）、および送信装置１０１により行われるデータ送信処理の流れ（図３）は、実施形態１と同様であるため、説明を省略する。
【００５５】
図９は、実施形態５における処理３０２のパケット受信処理の流れを表したフローチャートである。Ｓ９０１からＳ９０６の処理は、実施形態１において説明した図４のＳ４０１からＳ４０６の処理と同様であるため、説明を省略する。また、これらの処理は、実施形態４に記載のＳ７０１からＳ７０９の処理に代替可能であるとする。
【００５６】
Ｓ９０７で、ＡＣＫ格納処理部２０８は、ＡＣＫバッファ部２０９に格納されたＡＣＫパケットを走査して、コネクションを制御するための情報を有するＡＣＫパケットがあるか否かを確認する。本実施形態において、コネクションを制御するための情報は、ＴＣＰヘッダに記載されたコントロールビットが該当する。図１０に、ＴＣＰヘッダの例を示す。コントロールビットには、コネクションの接続や切断、強制終了などを要求する情報が格納されている。もし、これらの制御情報を有するＡＣＫパケットが確認された場合（Ｓ９０７のＹｅｓ）、処理はＳ９０８に進む。Ｓ９０８で、ＡＣＫ格納処理部２０８は、コネクション制御情報を有するＡＣＫパケットを、ＡＣＫバッファ部２０９の先頭の位置に移動させる。これにより、コネクション制御方法を有するＡＣＫパケットに対し、優先的に受信プロトコル処理が実施される。
【００５７】
なお、本実施形態では、累積確認応答を用いるプロトコルとしてＴＣＰを使用することを例に説明を行った。ＴＣＰ以外のプロトコルを使用する場合、ＡＣＫ格納処理部２０８は、そのプロトコルで使用されるコネクション制御情報を参照して、優先的に処理すべきＡＣＫパケットをＡＣＫバッファ部２０９の先頭の位置に格納する。
【００５８】
以降のＳ９０９からＳ９１１の処理は、実施形態１において説明した図４のＳ４０７からＳ４０９の処理と同様のため、説明を省略する。また、これらの処理は。実施形態２または実施形態３において説明したパケット破棄の方法で代替してもよい。
【００５９】
このように、実施形態５における送信装置１０１は、ＴＣＰコネクションの制御情報が受信装置１０２から送信されたときに、迅速に受信処理を行うことが可能になる。また、送信装置１０１は、より多くの送信済みデータに対する到達確認を取ることが可能で、コネクション制御方法を有するＡＣＫパケットに対して受信プロトコル処理を行い、他は破棄する。これらの処理により、必要なＡＣＫパケットの処理量を削減することが可能になる。
【００６０】
なお、送信装置１０１は、ＡＣＫバッファ部２０９の先頭の位置に該ＡＣＫパケットを移動させているが、本実施形態ではコネクションの制御情報を有するＡＣＫパケットを優先的に処理する他の方法も考えられる。例えば、送信装置１０１は、ＡＣＫバッファ部２０９に格納されたＡＣＫパケットが有するコネクション制御情報を、ＡＣＫバッファ部２０９の先頭に位置するＡＣＫパケットに持たせるように制御してもよい。この場合、ＡＣＫ格納処理部２０８が、ＡＣＫバッファ部２０９に格納されているＡＣＫパケットが有するＴＣＰヘッダのコントロールビットの情報を、ＡＣＫバッファ部２０９の先頭に位置するＡＣＫパケットのＴＣＰヘッダのコントロールビットの領域にコピーしてもよい。
【００６１】
また、コネクションの制御情報を優先的に処理する必要が無い場合には、Ｓ９０８で、ＡＣＫ格納処理部２０８は、コネクションの制御情報を有するＡＣＫパケットを、ＦＩＦＯ構造を有するパケットバッファ部２１１へ格納してもよい。これにより、コネクション制御情報を持つＡＣＫパケットの処理される順番は遅れることになるが、ＡＣＫバッファ部２０９に格納されたまま処理されることなく破棄されてしまうことを未然に防ぐことが可能になる。
【００６２】
このように、以上に説明した実施形態によれば、送信装置は、複数受信したＡＣＫパケットのうち、最後に受信したパケットから効率的に処理できるようになり、先に到達した冗長なＡＣＫパケットの処理を削減することが可能になる。
【００６３】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００６４】
１０１  送信装置、１０２  受信装置、１０３  ネットワーク、２０１  アプリケーション層処理部、２０２  ＴＣＰ層処理部、２０３  ＩＰ層処理部、２０４  ＭＡＣ層処理部、２０５  ネットワークインタフェース部、２０６  送信パケット処理部、２０７  ＡＣＫ判定処理部、２０８  ＡＣＫ格納処理部、２０９  ＡＣＫバッファ部、２１０  受信パケット格納処理部、２１１  パケットバッファ部、２１２  受信パケット処理部、８０１  ＡＣＫ格納先決定部、８０２  コネクション確認処理部、８０３，８０４，８０５  サブバッファ部
【図１】
2017123620.tif 000003
【図２】
2017123620.tif 000004
【図３】
2017123620.tif 000005
【図４】
2017123620.tif 000006
【図５】
2017123620.tif 000007
【図６】
2017123620.tif 000008
【図７】
2017123620.tif 000009
【図８】
2017123620.tif 000010
【図９】
2017123620.tif 000011
【図１０】
2017123620.tif 000012