(57)【要約】【課題】リライアブルマルチキャスト通信において、送信計算機は、全ての受信計算機からＡＣＫパケットを受信するまで送信済データを送信済バッファに保持し続けなければならない。【解決手段】パケット送信部１０４がデータを送信後、送信ＡＣＫ受信部１１０は、当該データの受信を通知するＡＣＫパケットの送信元の受信計算機２００のいずれかを転送計算機として選択する。そして、転送計算機として選択された受信計算機２００が送信計算機の代わりにリライアブルマルチキャスト通信を行うので、送信計算機１００は、送信済データを送信済バッファに保持し続ける必要がない。【選択図】図１
2013197776.tif 000002
【特許請求の範囲】
【請求項１】
同じデータを複数の計算機装置に送信するデータ送信部と、
前記データ送信部により送信された送信データを受信した計算機装置から前記送信データの受信を通知する受信確認情報を受信する受信確認情報受信部と、
前記受信確認情報受信部により受信された受信確認情報の送信元の計算機装置から、前記送信データの転送を行わせる計算機装置を転送計算機装置として選択する転送計算機選択部と、
前記転送計算機選択部により選択された転送計算機装置に前記送信データを前記複数の計算機装置のうちの前記転送計算機装置以外の計算機装置に転送するよう指示する転送指示情報を、前記転送計算機装置に対して送信する転送指示情報送信部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記情報処理装置は、更に、
前記データ送信部により送信された前記送信データを記憶する送信データ記憶部を備え、
前記受信確認情報受信部は、
前記転送計算機装置から前記転送指示情報の受信を通知する転送指示確認情報を受信し、前記転送指示確認情報を受信した後に、前記送信データを消去するように前記送信データ記憶部に指示し、
前記送信データ記憶部は、
前記受信確認情報受信部の指示に基づき、記憶している前記送信データを消去することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、更に、
前記送信データを前記複数の計算機装置のうちのいずれかに再送するデータ再送部を備え、
前記転送指示情報送信部は、
前記データ再送部から再送される前記送信データの受信を通知する受信通知情報を前記転送計算機装置に送信するよう指示する転送計算機情報を、前記送信データの再送先に送信することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記データ送信部は、
それぞれが複数の記憶領域を備え、データを受信する毎に前記記憶領域のうちデータが記憶されていない未記憶領域のいずれかに受信したデータを記憶する複数の計算機装置に前記送信データを送信し、
前記受信確認情報受信部は、
前記送信データを受信した計算機装置が前記送信データを未記憶領域に記憶した後の残りの未記憶領域の数を示す未記憶領域情報を、前記送信データを受信した計算機装置から受信し、
前記転送計算機選択部は、
前記受信確認情報受信部により受信された未記憶領域情報に示される未記憶領域の数に基づき転送計算機装置を選択することを特徴とする請求項１〜３いずれか記載の情報処理装置。
【請求項５】
前記受信確認情報受信部は、
前記複数の計算機装置の全てから前記送信データの受信確認情報を受信したか否かを判定し、
前記転送計算機選択部は、
前記受信確認情報受信部により前記複数の計算機装置のうちの少なくともいずれかの計算機装置から前記送信データの受信確認情報を受信していないと判定された場合に、前記転送計算機装置を選択することを特徴とする請求項１〜４いずれか記載の情報処理装置。
【請求項６】
前記受信確認情報受信部は、
前記複数の計算機装置の全てから前記送信データの受信確認情報を受信したか否かを判定し、
前記データ再送部は、
前記受信確認情報受信部により前記複数の計算機装置のうちの少なくともいずれかの計算機装置から前記送信データの受信確認情報を受信していないと判定された場合に、前記送信データの受信確認情報を受信していないと判定された計算機装置に、前記送信データを再送することを特徴とする請求項３記載の情報処理装置。
【請求項７】
前記受信確認情報受信部は、
前記複数の計算機装置の全てから前記送信データの受信確認情報を受信したか否かを判定し、
前記転送計算機選択部は、
前記受信確認情報受信部により前記複数の計算機装置の全てから前記送信データの受信確認情報を受信したと判定された場合に、前記転送計算機装置を選択せず、
前記受信確認情報受信部は、更に、
判定の結果、前記複数の計算機装置の全てから前記送信データの受信確認情報を受信した場合に、前記送信データを消去するように前記送信データ記憶部に指示することを特徴とする請求項２記載の情報処理装置。
【請求項８】
前記データ送信部は、
受信した受信データを複製し、複製した複製データと前記受信データとを重複して記憶する複数の計算機装置に対して、前記送信データを送信し、
前記受信確認情報受信部により前記複数の計算機装置の全てから前記送信データの受信確認情報を受信したと判定された場合に、重複するデータの記憶が不要であることを通知する記憶不要情報を生成し、生成した記憶不要情報を前記複数の計算機装置に送信することを特徴とする請求項５〜７いずれか記載の情報処理装置。
【請求項９】
複数の計算機装置と、前記複数の計算機装置に同じデータを送信するとともに、送信した送信データを受信していない計算機装置が存在する場合に前記送信データを前記複数の計算機装置に所定回数再送する情報処理装置とを備える通信システムに含まれる計算機装置であって、
前記情報処理装置から送信された前記送信データを受信した後に、前記情報処理装置から再送された前記送信データを受信した計算機装置から、再送された前記送信データの受信を通知する受信通知情報を受信する受信通知情報受信部と、
前記情報処理装置が前記所定回数の再送を終えた後に、前記通信システムに含まれる前記複数の計算機装置と、前記受信通知情報の送信元の計算機装置とに基づき、前記情報処理装置から再送された前記送信データを受信していない計算機装置を判断する未受信計算機判断部と、
前記未受信計算機判断部により判断された計算機装置に、前記情報処理装置から受信した前記送信データを、前記情報処理装置に代わって、送信するデータ送信部と
を備えることを特徴とする計算機装置。
【請求項１０】
前記受信通知情報受信部は、
前記情報処理装置から送信された前記送信データの受信確認情報を前記情報処理装置が受信済みである計算機装置が示される受信済み計算機情報を、前記情報処理装置から受信し、
前記未受信計算機判断部は、
前記受信済み計算機情報に示される計算機装置と、前記通信システムに含まれる前記複数の計算機装置と、前記受信通知情報の送信元の計算機装置とに基づき、前記情報処理装置から送信された前記送信データ及び前記情報処理装置から再送された前記送信データのいずれも受信していない計算機装置を判断することを特徴とする請求項９記載の計算機装置。
【請求項１１】
前記受信通知情報受信部は、
前記データ送信部により前記送信データが送信された後に、前記データ送信部により送信された前記送信データを受信した計算機装置から、送信された前記送信データの受信を通知する確認情報を受信し、
前記未受信計算機判断部は、
前記受信済み計算機情報に示される計算機装置と、前記通信システムに含まれる前記複数の計算機装置と、前記受信通知情報の送信元の計算機装置と、前記確認情報の送信元の計算機装置とに基づき、前記情報処理装置もしくは前記データ送信部から前記送信データを受信していない計算機装置を判断することを特徴とする請求項１０記載の計算機装置。
【請求項１２】
前記計算機装置は、更に、
前記情報処理装置から受信した前記送信データを前記データ送信部による送信処理に用いられるデータとして記憶する送信データ記憶部を備え、
前記未受信計算機判断部は、
前記送信データを受信していない計算機装置が無いと判断した場合に、前記送信データを消去するように前記送信用データ記憶部に指示し、
前記送信用データ記憶部は、
前記データ送信部の指示に基づき、記憶している前記送信データを消去することを特徴とする請求項９〜１１いずれか記載の計算機装置。
【請求項１３】
前記計算機装置は、更に、
前記情報処理装置から受信した前記送信データを前記データ送信部による送信処理に用いられるデータとして記憶する送信データ記憶部を備え、
前記受信通知情報受信部は、
前記送信データ記憶部が前記送信データを記憶した後に、前記送信データの送信処理が前記情報処理装置において不要と判断された場合に、前記情報処理装置から前記送信データの記憶が不要であることを通知する記憶不要情報を受信し、受信した記憶不要情報に示される前記送信データを消去するように前記送信用データ記憶部に指示し、
前記送信用データ記憶部は、
前記受信通知情報受信部の指示に基づき、記憶している前記送信データを消去することを特徴とする請求項９〜１２いずれか記載の計算機装置。
【請求項１４】
前記データ送信部は、
前記未受信計算機判断部により前記送信データを受信していない計算機装置が無いと判断された場合に、
受信した受信データを複製し、複製した複製データと前記受信データとを重複して記憶する他の計算機装置に対し、重複するデータの記憶が不要であることを通知する記憶不要情報を生成し、生成した記憶不要情報を送信することを特徴とする請求項９〜１３いずれか記載の計算機装置。
【請求項１５】
コンピュータが、同じデータを複数の計算機装置に送信するデータ送信ステップと、
前記コンピュータが、前記データ送信ステップにより送信された送信データを受信した計算機装置から前記送信データの受信を通知する受信確認情報を受信する受信確認情報受信ステップと、
前記コンピュータが、前記受信確認情報受信ステップにより受信された受信確認情報の送信元の計算機装置から、前記送信データの転送を行わせる計算機装置を転送計算機装置として選択する転送計算機選択ステップと、
前記コンピュータが、前記転送計算機選択ステップにより選択された転送計算機装置に前記送信データを前記複数の計算機装置のうちの前記転送計算機装置以外の計算機装置に転送するよう指示する転送指示情報を、前記転送計算機装置に対して送信する転送指示情報送信ステップと
を備えたことを特徴とする情報処理方法。
【請求項１６】
複数の計算機装置と、前記複数の計算機装置に同じデータを送信するとともに、送信した送信データを受信していない計算機装置が存在する場合に前記送信データを前記複数の計算機装置に所定回数再送する情報処理装置とを備える通信システムに含まれる計算機装置が行う情報処理方法であって、
前記計算機装置が、前記情報処理装置から送信された前記送信データを受信した後に、前記情報処理装置から再送された前記送信データを受信した計算機装置から、再送された前記送信データの受信を通知する受信通知情報を受信する受信通知情報受信ステップと、
前記情報処理装置が前記所定回数の再送を終えた後に、前記計算機装置が、前記通信システムに含まれる前記複数の計算機装置と、前記受信通知情報の送信元の計算機装置とに基づき、前記情報処理装置から再送された前記送信データを受信していない計算機装置を判断する未受信計算機判断ステップと、
前記未受信計算機判断ステップにより判断された計算機装置に、前記計算機装置が、前記情報処理装置から受信した前記送信データを、前記情報処理装置に代わって、送信するデータ送信ステップと
を備えることを特徴とする情報処理方法。
【請求項１７】
同じデータを複数の計算機装置に送信するデータ送信ステップと、
前記データ送信ステップにより送信された送信データを受信した計算機装置から前記送信データの受信を通知する受信確認情報を受信する受信確認情報受信ステップと、
前記受信確認情報受信ステップにより受信された受信確認情報の送信元の計算機装置から、前記送信データの転送を行わせる計算機装置を転送計算機装置として選択する転送計算機選択ステップと、
前記転送計算機選択ステップにより選択された転送計算機装置に前記送信データを前記複数の計算機装置のうちの前記転送計算機装置以外の計算機装置に転送するよう指示する転送指示情報を、前記転送計算機装置に対して送信する転送指示情報送信ステップと
をコンピュータに実行させることを特徴とするプログラム。
【請求項１８】
複数の計算機装置と、前記複数の計算機装置に同じデータを送信するとともに、送信した送信データを受信していない計算機装置が存在する場合に前記送信データを前記複数の計算機装置に所定回数再送する情報処理装置とを備える通信システムに含まれる計算機装置に、
前記情報処理装置から送信された前記送信データを受信した後に、前記情報処理装置から再送された前記送信データを受信した計算機装置から、再送された前記送信データの受信を通知する受信通知情報を受信する受信通知情報受信ステップと、
前記情報処理装置が前記所定回数の再送を終えた後に、前記通信システムに含まれる前記複数の計算機装置と、前記受信通知情報の送信元の計算機装置とに基づき、前記情報処理装置から再送された前記送信データを受信していない計算機装置を判断する未受信計算機判断ステップと、
前記未受信計算機判断ステップにより判断された計算機装置に、前記情報処理装置から受信した前記送信データを、前記情報処理装置に代わって、送信するデータ送信ステップと
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、マルチキャスト通信を行う情報処理装置および計算機装置および情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
リライアブルマルチキャスト通信において、データが受信計算機に届いたことを送信計算機に通知するために、受信計算機は、送信計算機に向けてＡＣＫ（Ａｃｋｎｏｗｌｅｄｇｍｅｎｔ）パケットを送信する。ここで、ＡＣＫパケットとは、データが正しく到着したことを受信計算機から送信計算機に知らせるための通信パケットである。また、リライアブルマルチキャスト通信とは、全ての計算機からＡＣＫパケットが届くまでマルチキャスト通信を繰り返し行うデータ再送方式である。
そして、送信計算機は、全ての受信計算機からＡＣＫパケットを受信すれば、当該データの送信を完了する。
【０００３】
一方、送信計算機は、ＮＡＣＫ（Ｎｅｇａｔｉｖｅ  Ａｃｋｎｏｗｌｅｄｇｍｅｎｔ）パケットを受信計算機から受信した場合、または、一定時間以内にＡＣＫパケットもしくはＮＡＣＫパケットを受信しなかった場合に、当該データを受信計算機に再送する。ここでＮＡＣＫパケットとは、データが届かなかったことを受信計算機から送信計算機に知らせるための通信パケットである。
【０００４】
送信計算機は、受信計算機においてデータが届かなかったことを検出できるようにするために、送信データ毎に１から連続する「シーケンス番号」を割り当てる。受信計算機は、受信するデータのシーケンス番号が連続しないことによりデータが届かなかったことを検出する（例えば、特許文献１）。
【０００５】
また、リライアブルマルチキャスト通信において、システムのスループットを向上させるために、送信計算機は、全受信計算機からのＡＣＫパケットの受信を待たずに次のデータを送信する方法がある（例えば、特許文献２）。
【０００６】
この方法を実現するために、送信計算機は、データ送信後、送信済データを送信済バッファに一時的に保持しておき、全ての受信計算機からＡＣＫパケットが戻ればそのデータを送信済みバッファから削除する。一方、送信計算機は、ＮＡＣＫパケットを受信するか、一定時間以内にＡＣＫパケットを受信しなければ送信済バッファからそのデータを読み出し、受信計算機にデータを再送する。
【０００７】
例えば、送信計算機がある２台の受信計算機にシーケンス番号１番から１０番までのデータをリライアブルマルチキャスト通信で送信した場合を想定する。そして、送信計算機は、一方の受信計算機からは全てのデータのＡＣＫパケットを受信したが、他方の受信計算機からは、シーケンス番号１番から８番、および１０番のデータのＡＣＫパケットを受信し、９番のＮＡＣＫパケットを受信したとする。
その場合、送信計算機はシーケンス番号１番から８番および、１０番のデータは送信済バッファから削除する。そして、送信計算機は送信済バッファからシーケンス番号９番のデータを読み出し、受信計算機に再送する。なお、送信計算機は、シーケンス番号９番のデータの再送と並行してシーケンス番号１１番以降のデータも送信することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０９−２６１２５５号公報
【特許文献２】特開２００８−３１１７３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来、データをリライアブルマルチキャスト通信において、送信計算機は、全ての受信計算機からＡＣＫパケットを受信するまで送信済データを送信済バッファに保持し続けなければならないという課題がある。
そして、送信計算機の台数が多い場合、送信計算機は、全てのＡＣＫパケットを受信するまでに長い時間を待機しなければならないという課題がある。
また、送信計算機が全てのＡＣＫパケットを受信するまで待機しながら、新しいデータの送信を並行して行う場合、送信済バッファにデータが次々に格納される。特に、データの送信間隔が短い場合には顕著となる。しかし、送信済バッファの容量に空きがなくなるとリライアブルマルチキャスト通信ができなくなるか、システムのスループットが低下する。そのため、送信済バッファの容量を大きく確保しなければならない、あるいは、送信済バッファに格納されるデータ量を削減しなければならないという課題がある。
【００１０】
この発明は前記のような課題を解決することを主な目的とするもので、例えば、送信計算機の送信済バッファに送信済みデータを格納し続ける必要を無くすことを主な目的とする。
【課題を解決するための手段】
【００１１】
この発明に係る情報処理装置は、
同じデータを複数の計算機に送信するデータ送信部と、
前記データ送信部により送信された送信データを受信した計算機から前記送信データの受信を通知する受信確認情報を受信する受信確認情報受信部と、
前記受信確認情報受信部により受信された受信確認情報の送信元の計算機から、前記送信データの転送を行わせる計算機を転送計算機として選択する転送計算機選択部と、
前記転送計算機選択部により選択された転送計算機に前記送信データを前記複数の計算機のうちの前記転送計算機以外の計算機に転送するよう指示する転送指示情報を、前記転送計算機に対して送信する転送指示情報送信部と
を備えることを特徴とする。
【発明の効果】
【００１２】
この発明に係る情報処理装置は、データを受信した計算機に当該データの転送を行わせる。その為、この発明に係る情報処理装置は、転送用のデータを送信済バッファに格納し続ける必要が無くなる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１を示す図で、通信システムの構成の例を示す図。
【図２】実施の形態１を示す図で、送信済データ保管部のデータの構成の例を示す図。
【図３】実施の形態１を示す図で、受信データ保管部のデータの構成の例を示す図。
【図４】実施の形態１を示す図で、通信パケットのデータの構成の例を示す図。
【図５】実施の形態１を示す図で、受信確認パケットのデータの構成の例を示す図。
【図６】実施の形態１を示す図で、通信システムの処理の第１の例を示す図。
【図７】実施の形態１を示す図で、通信システムの処理の第２の例を示す図。
【図８】実施の形態１を示す図で、通信システムの処理の第３の例を示す図。
【図９】実施の形態１を示す図で、通信システムの処理の第４の例を示す図。
【図１０】実施の形態１を示す図で、通信システムの処理の第５の例を示す図。
【図１１】実施の形態１を示す図で、通信システムの処理の第６の例を示す図。
【図１２】実施の形態１を示す図で、通信システムの処理の第７の例を示す図。
【図１３】実施の形態１を示す図で、通信システムの処理の第８の例を示す図。
【図１４】実施の形態１を示す図で、通信システムの処理の第９の例を示す図。
【図１５】実施の形態１を示す図で、パケット送信部の処理の例を示すフローチャート。
【図１６】実施の形態１を示す図で、送信ＡＣＫ受信部の処理の例を示すフローチャート。
【図１７】実施の形態１を示す図で、送信パケット再送部の処理の例を示すフローチャート。
【図１８】実施の形態１を示す図で、パケット受信部の処理の例を示すフローチャート。
【図１９】実施の形態１を示す図で、再送ＡＣＫ受信部の処理の例を示すフローチャート。
【図２０】実施の形態１を示す図で、受信パケット再送部の処理の例を示すフローチャート。
【図２１】実施の形態２を示す図で、送信済データ保管部のデータの構成の例を示す図。
【図２２】実施の形態２を示す図で、受信確認パケットのデータの構成の例を示す図。
【図２３】実施の形態２を示す図で、通信システムの処理の第１０の例を示す図。
【図２４】実施の形態２を示す図で、通信システムの処理の第１１の例を示す図。
【図２５】実施の形態２を示す図で、通信システムの処理の第１２の例を示す図。
【図２６】実施の形態２を示す図で、通信システムの処理の第１３の例を示す図。
【図２７】実施の形態２を示す図で、通信システムの処理の第１４の例を示す図。
【図２８】実施の形態２を示す図で、通信システムの処理の第１５の例を示す図。
【図２９】実施の形態１〜２を示す図で、送信計算機（もしくは受信計算機）のハードウェア資源の一例を示す図。
【発明を実施するための形態】
【００１４】
実施の形態１．
（通信システムの構成）
図１は、通信システムの構成の例を示す図である。
通信システム５０は、ネットワーク９００を介して接続された複数の計算機から構成される。そして、本実施の形態の通信システムは、例えば、リライアブルマルチキャスト通信を行うシステムである。
例えば、ネットワーク９００は、ＬＡＮ（ローカルエリアネットワーク）、インターネットの他、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などでも構わない。
ネットワーク９００は、通信パケットや受信確認パケットが伝送される伝送路である。ここで、受信確認パケットはＡＣＫパケットやＮＡＣＫパケットが対応する。
【００１５】
ここで、本実施の形態の説明においては、説明を分かりやすくする為に複数の計算機を送信計算機１００と受信計算機２００とに区別する。
しかし、一つの計算機が、送信計算機１００と受信計算機２００とを構成する各部および送信計算機１００と受信計算機２００との機能を有していても構わない。
ここでは、任意の処理において、通信パケットをマルチキャスト送信した計算機を送信計算機１００と称し、送信計算機１００から送信される通信パケットの受信対象となる複数の計算機を受信計算機２００と称している。
【００１６】
すなわち、送信計算機１００は、複数の受信計算機２００に同じデータを送信するとともに、送信した送信データを受信していない受信計算機２００が存在する場合に当該送信データを複数の受信計算機２００に所定回数再送する。なお、「再送」のことを「転送」とも称する。
また、送信計算機１００は、情報処理装置に対応し、受信計算機２００は計算機装置に対応する。
【００１７】
送信計算機１００は、送信アプリケーション部１０３、パケット送信部１０４、送信パケット再送部１０５、送信済データ保管部１０８、送信ＡＣＫ受信部１１０を備える。
受信計算機２００は、受信パケット再送部２０５、受信アプリケーション部２０６、パケット受信部２０７、再送ＡＣＫ受信部２０８、受信データ保管部２０９を備える。
一つの計算機が、送信計算機１００と受信計算機２００とを構成する各部を備える場合、送信パケット再送部１０５と受信パケット再送部２０５とは同一のパケット再送部であってもよく、送信ＡＣＫ受信部１１０と再送ＡＣＫ受信部２０８とは同一のＡＣＫ受信部であってもよい。
なお、パケット送信部１０４と送信済データ保管部１０８とは、送信アプリケーション部１０３が動作する場合に必要となり、パケット受信部２０７と受信データ保管部２０９とは、受信アプリケーション部２０６が動作する場合に必要となる。その他の構成要素はどちらの場合にも必要となる。
【００１８】
（送信計算機１００の各部の説明）
送信アプリケーション部１０３は、通信パケットの構成要素であるアプリケーションデータを生成する。
パケット送信部１０４は、送信アプリケーション部１０３が生成したアプリケーションデータを用いて通信パケットを生成し、複数の受信計算機２００に対して送信する。すなわち、パケット送信部１０４は、同じデータを複数の受信計算機２００に対して送信するデータ送信部に対応する。また、パケット送信部１０４は、受信確認情報受信部にも対応する。そして、アプリケーションデータは、通信パケットに含まれており、パケット送信部１０４が送信する送信データに対応する。
【００１９】
送信済データ保管部１０８は、パケット送信部１０４が送信した通信パケットを削除可能（消去可能）となるまで記憶する。以降の説明において、データを「消去」することを、データを「削除」するとも称する。送信済データ保管部１０８は、送信データ記憶部に対応する。
【００２０】
送信ＡＣＫ受信部１１０は、パケット送信部１０４が通信パケットを送信した後、一定時間待機し、パケット送信部１０４が送信した通信パケットを受信した受信計算機２００から当該通信パケットの受信を通知する受信確認パケット（ＡＣＫパケットもしくはＮＡＣＫパケット）を受信する。
送信ＡＣＫ受信部１１０は、受信確認情報受信部に対応し、受信確認パケットは受信確認情報と受信通知情報と確認情報とに対応する。
【００２１】
送信パケット再送部１０５は、送信ＡＣＫ受信部１１０がＮＡＣＫパケットを受信した場合、もしくは一定時間以内に全ての受信計算機２００からのＡＣＫパケットを受信しなかった場合に、送信済データ保管部１０８に記憶された通信パケットを全ての受信計算機２００に対して再送する。
送信パケット再送部１０５は、転送計算機選択部と転送指示情報送信部とデータ再送部と受信確認情報受信部とデータ送信部とに対応する。
【００２２】
（受信計算機２００の各部の説明）
パケット受信部２０７は、他の計算機から送信された通信パケットを受信し通信パケットからアプリケーションデータを抽出する。パケット受信部２０７は、通信パケットを受信した場合に、ＡＣＫパケットを送信する。一方、パケット受信部２０７は、通信パケットの欠落が検出された場合には、ＮＡＣＫパケットを送信する。パケット受信部２０７は、受信通知情報受信部に対応する。
受信データ保管部２０９は、パケット受信部２０７が受信した通信パケットを削除可能となるまで記憶する。受信データ保管部２０９は、送信データ記憶部に対応する。
受信アプリケーション部２０６は、パケット受信部２０７が抽出したアプリケーションデータを用いて所定の処理（例えば演算処理）を行う。
受信パケット再送部２０５は、送信計算機１００から指示された場合に、受信データ保管部２０９に記憶された通信パケットを送信計算機１００に代わって他の受信計算機２００に対して送信する。なお、送信パケット再送部１０５が、通信パケットを再送するので、受信パケット再送部２０５は、通信パケットを再々送、もしくは、それ以上の回数の送信を行う。また、受信パケット再送部２０５は、データ送信部に対応する。
【００２３】
再送ＡＣＫ受信部２０８は、受信パケット再送部２０５通信パケットを送信した後、一定時間待機し、受信パケット再送部２０５が送信した通信パケットに対する各受信計算機２００からの受信確認パケット（ＡＣＫパケットもしくはＮＡＣＫパケット）を受信する。再送ＡＣＫ受信部２０８は、受信通知情報受信部と未受信計算機判断部とに対応する。
【００２４】
（送信済データ保管部１０８の説明）
図２は、送信済データ保管部１０８のデータの構成の例を示す図である。
送信済データ保管部１０８は、少なくともパケット送信部１０４により送信された通信パケット１１のシーケンス番号１５１、当該通信パケット１１、当該通信パケット１１の削除可否を示す送信パケット削除フラグ１５３を記憶する。
【００２５】
図２の例では、シーケンス番号１５１「５」の通信パケット１１（図２のＤ２１）とシーケンス番号１５１「６」の通信パケット１１（図２のＤ２２）とがそれぞれ送信パケット削除フラグ１５３と対応付けられて送信済データ保管部１０８に記憶されていることが示されている。ただし、通信パケット１１の図示は省略。
【００２６】
また、送信パケット削除フラグ１５３の値は、例えば「１」「０」の値などでも良いが、説明を分かりやすくする為、送信パケット削除フラグ１５３の値を「削除可」と「削除不可」とのいずれかで表記する。
後述の受信パケット削除フラグ２５３、再送フラグ２５４、ＡＣＫ受信フラグ、決定フラグ１５６なども同様である。
【００２７】
ここで、送信済データ保管部１０８に記憶されたシーケンス番号１５１と通信パケット１１と送信パケット削除フラグ１５３との組を「セット」と称する。
そして、このシーケンス番号１５１と通信パケット１１と送信パケット削除フラグ１５３との組を記憶する記憶領域を「エントリ」と称する。すなわち、送信済データ保管部１０８は複数のエントリ（記憶領域）を備える。
そして、図２のＤ２１が１つのセット（エントリ）であり、例えば、図２のＤ２１のセット（エントリ）をシーケンス番号１５１「５」のセット（エントリ）と称する。
【００２８】
なお、シーケンス番号１５１「５」の通信パケット１１を以降「通信パケット１１−５」と表記する。他のシーケンス番号１５１の通信パケット１１についても同様である。
パケット送信部１０４は、シーケンス番号１５１の順番通りに通信パケット１１を送信する。すなわち、パケット送信部１０４は、通信パケット１１−５を送信した後、通信パケット１１−６を送信する。
【００２９】
（受信データ保管部２０９の説明）
図３は、受信データ保管部２０９のデータの構成の例を示す図である。
受信データ保管部２０９は、少なくともパケット受信部２０７により受信された通信パケット１１のシーケンス番号１５１、当該通信パケット１１、当該通信パケット１１の削除可否を示す受信パケット削除フラグ２５３、当該通信パケット１１を再送に使用するか否かを示す再送フラグ２５４を記憶する。
なお、送信済データ保管部１０８と同様に、受信データ保管部２０９に記憶されたシーケンス番号１５１と通信パケット１１と受信パケット削除フラグ２５３と再送フラグ２５４との組を「セット」と称する。
そして、このシーケンス番号１５１と通信パケット１１と受信パケット削除フラグ２５３と再送フラグ２５４との組を記憶する記憶領域を「エントリ」と称する。すなわち、送信済データ保管部１０８は複数のエントリ（記憶領域）を備える。
そして、図３のＤ３１が１つのセット（エントリ）であり、例えば図３のＤ３１のセット（エントリ）をシーケンス番号１５１「５」のセット（エントリ）と称する。
【００３０】
ここで、受信アプリケーション部２０６は、シーケンス番号１５１の順番通りにアプリケーションデータを用いて、所定の処理を行う。例えば、受信アプリケーション部２０６は、通信パケット１１−５のアプリケーションデータを用いて所定の処理を行った後に、通信パケット１１−６のアプリケーションデータを用いて所定の処理を行う。
その為、受信アプリケーション部２０６は、シーケンス番号１５１の順番通りにパケット受信部２０７からアプリケーションデータが受け渡される必要がある。
しかし、パケット受信部２０７は、通信パケット１１−６を受信した後に、通信パケット１１−５を受信する場合がある。この場合、パケット受信部２０７は、通信パケット１１−５のアプリケーションデータを通信パケット１１―６のアプリケーションデータよりも先に受信アプリケーション部２０６に受け渡すことが出来ない。
【００３１】
そして、シーケンス番号１５１の順番通りにアプリケーションデータを受信アプリケーション部２０６に受け渡す為に、受信データ保管部２０９は、パケット受信部２０７が通信パケット１１−５を受信するまで、通信パケット１１−６を記憶する。
また、受信データ保管部２０９は、受信計算機２００が他の受信計算機２００に対して通信パケット１１を再送する場合に備えて、通信パケット１１を一時的に記憶する役割も持つ。
【００３２】
（通信パケット１１の説明）
図４は、通信パケット１１のデータの構成の例を示す図である。
通信パケット１１は、少なくともＡＣＫ送信先フィールド５１２、再送回数フィールド５１３、ＡＣＫ受信フラグフィールド５１４、シーケンス番号フィールド５１５、アプリケーションデータフィールド５１６、削除可能シーケンス番号フィールド５１７から構成される。
なお、通信パケット１１は、パケット送信部１０４から送信される送信パケット、送信パケット再送部１０５や受信パケット再送部２０５から再送される再送パケットや、パケット受信部２０７により受信される受信パケットに対応する。例えば、再送パケットは、再送回数フィールド５１３の値が１以上のものである。
【００３３】
ＡＣＫ送信先フィールド５１２は、受信計算機２００のパケット受信部２０７が受信した通信パケット１１の受信確認パケット１２（ＡＣＫパケット又はＮＡＣＫパケット）の送信先の計算機が示される。
そして、ＡＣＫ送信先フィールド５１２に示される計算機が通信パケット１１の再送を行う計算機となる。
【００３４】
再送回数フィールド５１３は、同じシーケンス番号１５１の通信パケット１１の再送回数が示される。
なお、例えばシーケンス番号１５１「５」で再送回数フィールド５１３「１」の通信パケット１１を以降「通信パケット１１−５−１」と表記する。他のシーケンス番号１５１及び再送回数フィールド５１３の通信パケット１１についても同様である。
【００３５】
ＡＣＫ受信フラグフィールド５１４は、複数のサブフィールドから構成される。１つのサブフィールドは、受信計算機２００の識別子と、通信パケット１１の送信もしくは再送を行った計算機がＡＣＫパケットを受信したか否かを示すフラグ（ＡＣＫ受信フラグ）との対で構成される。そして、ＡＣＫ受信フラグフィールド５１４は、全ての受信計算機２００の分のサブフィールドにより構成される。
【００３６】
シーケンス番号フィールド５１５は、通信パケット１１がパケット送信部１０４によりの送信された順番が示される。
アプリケーションデータフィールド５１６は、送信アプリケーション部１０３が所定の処理により生成したデータが示され、受信アプリケーション部２０６の所定の処理に用いられる。アプリケーションデータフィールド５１６は、通信パケット１１のペイロードに対応する。
【００３７】
削除可能シーケンス番号フィールド５１７は、各受信データ保管部２０９から削除可能な通信パケット１１のシーケンス番号１５１が示される。
詳細は、後述するが、削除可能シーケンス番号フィールド５１７には、再送計算機が決定した通信パケット１１のシーケンス番号１５１、もしくは、全ての受信計算機２００からＡＣＫパケット１２ａが揃った通信パケット１１のシーケンス番号１５１が示される。
【００３８】
（受信確認パケット１２の説明）
図５は、受信確認パケット１２のデータの構成の例を示す図である。
受信確認パケット１２は、受信計算機２００が通信パケット１１の受信を通知するためのＡＣＫパケットもしくは、受信計算機２００が通信パケット１１の未受信を通知するためのＮＡＣＫパケットである。
受信確認パケット１２は、少なくとも受信確認シーケンス番号フィールド５１８を備える。
また、図示は省略するが、受信確認パケット１２には受信確認パケット１２の送信元の計算機が示される。
【００３９】
更に、図示は省略するが、受信確認パケット１２がＡＣＫパケットの場合は、ＡＣＫパケットであることが示され、受信確認パケット１２がＮＡＣＫパケットの場合は、ＮＡＣＫパケットであることが示される。
以降、受信確認パケット１２がＡＣＫパケットの場合は、単に「ＡＣＫパケット１２ａ」と表記し、受信確認パケット１２がＮＡＣＫパケットの場合は、単に「ＮＡＣＫパケット１２ｂ」と表記する。
なお、例えばシーケンス番号１５１「５」で再送回数フィールド５１３「１」の通信パケット１１に対し、受信計算機２００ｂが送信したＡＣＫパケットを以降「ＡＣＫパケット１２ａ−５−ｂ−１」と表記する。他のシーケンス番号１５１及び再送回数フィールド５１３の通信パケット１１についても同様であり、他の受信計算機２００が送信したＡＣＫパケット１２ａ及びＮＡＣＫパケット１２ｂについても同様である。
【００４０】
（通信システムの処理の説明）
図６は、通信システムの処理の第１の例を示す図である。
図７は、通信システムの処理の第２の例を示す図である。
図８は、通信システムの処理の第３の例を示す図である。
図９は、通信システムの処理の第４の例を示す図である。
図１０は、通信システムの処理の第５の例を示す図である。
図１１は、通信システムの処理の第６の例を示す図である。
図１２は、通信システムの処理の第７の例を示す図である。
図１３は、通信システムの処理の第８の例を示す図である。
図１４は、通信システムの処理の第９の例を示す図である。
図１５は、パケット送信部１０４の処理の例を示すフローチャートである。
図１６は、送信ＡＣＫ受信部１１０の処理の例を示すフローチャートである。
図１７は、送信パケット再送部１０５の処理の例を示すフローチャートである。
図１８は、パケット受信部２０７の処理の例を示すフローチャートである。
図１９は、再送ＡＣＫ受信部２０８の処理の例を示すフローチャートである。
図２０は、受信パケット再送部２０５の処理の例を示すフローチャートである。
【００４１】
図６〜図１４の通信システム５０の処理について、図１５〜図２０のフローチャートを利用して、説明する。
なお、図６〜図１４において、送信アプリケーション部１０３、パケット送信部１０４、送信パケット再送部１０５、送信ＡＣＫ受信部１１０、受信パケット再送部２０５、受信アプリケーション部２０６、パケット受信部２０７、再送ＡＣＫ受信部２０８は、符号のみを図示している。後述の図２３〜２８も同様である。
【００４２】
（図６における通信システム５０の処理の説明）
最初に図６の初期状態について説明する。
送信計算機１００は、送信アプリケーション部１０３が生成したアプリケーションデータを受信計算機２００ａ〜２００ｃにマルチキャスト送信する。
そして、送信済データ保管部１０８には、シーケンス番号１５１「４」の通信パケット１１−４−０が記憶されており、送信パケット削除フラグ１５３は「削除可」に設定されている。
また、受信データ保管部２０９ａ〜２０９ｃにも、シーケンス番号１５１「４」の通信パケット１１−４−０が記憶されており、受信パケット削除フラグ２５３は「削除不可」に設定されている。
そして、次の処理として、パケット送信部１０４は通信パケット１１−５−０を受信計算機２００ａ〜２００ｃにマルチキャスト送信する。
なお、シーケンス番号１５１「１〜３」に関するデータの説明および図示は本実施の形態の説明において省略する。
【００４３】
なお、図６において通信パケット１１−５−０が送信済データ保管部１０８内に図示されているが、初期状態では通信パケット１１−５−０は存在せず、後述で説明の処理により、送信済データ保管部１０８に記憶される。
同様に、図６において通信パケット１１−５−０が受信データ保管部２０９ａ内に図示されているが、初期状態では通信パケット１１−５−０は存在せず、後述で説明の処理により、受信データ保管部２０９に記憶される。
また、通信パケット１１−５−０は、図６の（２）に示すような構成であるが図６〜１４の送信済データ保管部１０８及び受信データ保管部２０９内においては、例えば「１１−５−０」の様に省略して表記を行う。
【００４４】
（図６におけるパケット送信部１０４の処理の説明）
ここで、図１５を用いて、図６におけるパケット送信部１０４の処理を説明する。
パケット送信部１０４は、送信アプリケーション部１０３がアプリケーションデータを生成するまで待つ（図１５のＳ１５０１）。
ここで、送信アプリケーション部１０３はアプリケーションデータ「Ｄ５」を生成し、パケット送信部１０４に出力する（図６の（１））。
【００４５】
パケット送信部１０４は、アプリケーションデータを入力すると、入力したアプリケーションデータを用いて通信パケット１１を生成する。
通信パケット１１の生成にあたり、パケット送信部１０４は送信済データ保管部１０８を参照し、送信パケット削除フラグ１５３が「削除可」であるセットが記憶されているか否かを判定する（図１５のＳ１５０２）。
ここで、図６の送信済データ保管部１０８は、送信パケット削除フラグ１５３が「削除可」であるシーケンス番号１５１「４」のセットを記憶している（図１５のＳ１５０２の「ＹＥＳ」）。よって、パケット送信部１０４は、通信パケット１１の削除可能シーケンス番号フィールド５１７に「削除可」のセットのシーケンス番号１５１である「４」を設定する（図１５のＳ１５０３、図６の（２））。
ここで、削除可能シーケンス番号フィールド５１７に示される情報は、受信計算機２００が再送処理用に重複して記憶している通信パケット１１が不要であることを通知する記憶不要情報である。
【００４６】
一方、送信済データ保管部１０８に「削除可」であるセットが記憶されていない場合（図１５のＳ１５０２の「ＮＯ」）、パケット送信部１０４は、通信パケット１１の削除可能シーケンス番号フィールド５１７に何も設定しない。削除可能シーケンス番号フィールド５１７に何も設定されていない場合、例えば図８の通信パケット１１−６−０の削除可能シーケンス番号フィールド５１７のように「−」で表記する。
【００４７】
そして、パケット送信部１０４は、ＡＣＫ送信先フィールド５１２に送信計算機１００の識別子を設定する。送信計算機１００の識別子は、送信計算機１００の記憶装置に予め記憶されている。送信計算機１００の識別子は、例えばＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスでもよい。
更に、パケット送信部１０４は、再送回数フィールド５１３に再送回数が「０回」であることを示す「０」を設定する。
【００４８】
更に、パケット送信部１０４は、ＡＣＫ受信フラグフィールド５１４の各サブフィールドに受信計算機２００の識別子を設定する。受信計算機２００の識別子は、送信計算機１００の記憶装置に予め記憶されている。受信計算機２００の識別子は、例えばＩＰアドレスでもよい。
また、パケット送信部１０４は、ＡＣＫ受信フラグフィールド５１４の各サブフィールドのＡＣＫ受信フラグに当該受信計算機２００からのＡＣＫパケットが未受信であることを示す「ＡＣＫ未受信」を設定する。
【００４９】
更に、パケット送信部１０４は、前回送信した通信パケット１１のシーケンス番号１５１を送信計算機１００の記憶装置に記憶させており、前回送信した通信パケット１１のシーケンス番号１５１に「１」を加えた値をシーケンス番号フィールド５１５に設定する。
ここで、前回送信されたシーケンス番号１５１は「４」であり、図６に示す通り、パケット送信部１０４は、「５」をシーケンス番号フィールド５１５に設定する。
【００５０】
更に、パケット送信部１０４は、送信アプリケーション部１０３から入力したアプリケーションデータ「Ｄ５」をアプリケーションデータフィールド５１６に格納する。
削除可能シーケンス番号フィールド５１７については、前述の通りである。ここで、パケット送信部１０４は、前回の通信パケット１１の送信時と比べ、新たに送信パケット削除フラグ１５３が「削除可」となったセットのシーケンス番号１５１を削除可能シーケンス番号フィールド５１７に設定してもよい。また、パケット送信部１０４は、今までに送信パケット削除フラグ１５３が「削除可」となったセットのシーケンス番号１５１の全てを削除可能シーケンス番号フィールド５１７に設定してもよい。
【００５１】
そして、パケット送信部１０４は、生成した通信パケット１１−５−０を受信計算機２００ａ〜２００ｃに対して、送信する（図１５のＳ１５０４、図６（２））。
なお、図６に示す処理において、受信計算機２００ａは、通信パケット１１−５−０を受信するが、受信計算機２００ｂと受信計算機２００ｃとは通信パケット１１−５−０を受信しない。
【００５２】
パケット送信部１０４は、通信パケット１１−５−０の送信後、通信パケット１１−５−０の削除可能シーケンス番号フィールド５１７に設定されたシーケンス番号１５１「４」のセットを削除するように送信済データ保管部１０８に指示する（図１５のＳ１５０５）。そして、送信済データ保管部１０８は、パケット送信部１０４の指示に基づき、シーケンス番号１５１「４」のセットを削除する。すなわち、送信済データ保管部１０８は通信パケット１１−４−０を削除する。
【００５３】
なお、以降の説明において、「〜部」が「〜保管部」にデータ（通信パケット１１やセットなど）の削除を指示し、当該指示により「〜保管部」がデータ（通信パケット１１やセットなど）を削除することを「〜部が〜保管部にデータ（通信パケット１１やセットなど）を削除させる」と称する。
同様に以降の説明において、「〜部」が「〜保管部」にデータ（通信パケット１１やセットなど）の記憶を指示し、当該指示により「〜保管部」がデータ（通信パケット１１やセットなど）を記憶することを「〜部が〜保管部にデータ（通信パケット１１やセットなど）を記憶させる」と称する。
【００５４】
また、パケット送信部１０４は、送信ＡＣＫ受信部１１０に通信パケット１１−５−０のＡＣＫパケット１２ａが受信計算機２００から送信されるのを一定時間待つように指示する（図１５のＳ１５０６）。
そして、パケット送信部１０４は、送信した通信パケット１１−５−０を送信済データ保管部１０８の空きエントリに記憶させる。この時、パケット送信部１０４は、シーケンス番号１５１に「５」を設定し、送信パケット削除フラグ１５３に「削除不可」を設定する（図１５のＳ１５０７、図６の（３））。
なお、送信済データ保管部１０８に空きエントリが無い場合は、パケット送信部１０４は、送信済データ保管部１０８のセットのうち、送信パケット削除フラグ１５３が「削除可」と設定されているセットに、送信した通信パケット１１を上書きで記憶させてもよい。
そして、パケット送信部１０４は、送信アプリケーション部１０３により、次のアプリケーションデータが出力されるのを待つ（図１５のＳ１５０１）。
【００５５】
（図６におけるパケット受信部２０７の処理の説明）
次に、図１８を用いて、図６におけるパケット受信部２０７の処理を説明する。
図６において、通信パケット１１を受信するのは受信計算機２００ａのみなので、ここでは、パケット受信部２０７ａの処理について説明する。
【００５６】
パケット受信部２０７ａは、通信パケット１１が他の計算機から送信されるのを待つ（図１８のＳ１８０１）。
そして、パケット受信部２０７ａは、送信計算機１００から通信パケット１１−５−０を受信すると、通信パケット１１−５−０のＡＣＫ受信フラグフィールド５１４を参照する。そして、パケット受信部２０７ａは、自計算機（すなわち受信計算機２００ａ）のＡＣＫ受信フラグが「ＡＣＫ受信済」であるか否かを判定する。
【００５７】
ここで、自計算機（すなわち受信計算機２００ａ）のＡＣＫ受信フラグが「ＡＣＫ受信済」である場合とは、受信計算機２００ａが当該通信パケット１１を受信済みであり、ＡＣＫパケット１２ａを送信済みの場合である。一方、自計算機（すなわち受信計算機２００ａ）のＡＣＫ受信フラグが「ＡＣＫ未受信」である場合とは、受信計算機２００ａが当該通信パケット１１を未受信であるため、ＡＣＫパケット１２ａを送信していない場合である。
すなわち、パケット受信部２０７ａは、通信パケット１１−５−０が受信済みであるか否かを判定する（図１８のＳ１８０２）。
受信計算機２００ａのＡＣＫ受信フラグは「ＡＣＫ未受信」である為（図６の（２））、パケット受信部２０７は、通信パケット１１−５−０を未受信と判定する（図１８のＳ１８０２の「ＮＯ」）。
【００５８】
ここで、パケット受信部２０７ａは、受信データ保管部２０９を参照し、受信した通信パケット１１−５−０のシーケンス番号フィールド５１５が示す値（すなわちシーケンス番号１５１）が、受信済みの通信パケット１１のシーケンス番号１５１と連続しているか否かを判定する（図１８のＳ１８０９）。
あるいは、パケット受信部２０７ａは、受信済みの通信パケット１１のシーケンス番号１５１を受信計算機２００の記憶装置に記憶させていてもよい。
【００５９】
前述の通り、パケット受信部２０７は、シーケンス番号１５１の順番通りに通信パケット１１を受信していない場合、すなわち、シーケンス番号１５１が連続していない場合（図１８のＳ１８０９の「ＮＯ」）、パケット受信部２０７はアプリケーションデータを受信アプリケーション部２０６に受け渡すことが出来ない。
【００６０】
ここでは、前回、パケット受信部２０７ａは、シーケンス番号１５１「４」の通信パケット１１を受信している。そして、パケット受信部２０７ａは、受信した通信パケット１１−５−０のシーケンス番号フィールド５１５が示す値（すなわちシーケンス番号１５１）である「５」が連続していると判定する（図１８のＳ１８０９の「ＹＥＳ」）。
そして、パケット受信部２０７ａは受信した通信パケット１１−５−０のアプリケーションデータフィールド５１６からアプリケーションデータ「Ｄ５」を抽出し（図１８のＳ１８１０）、受信アプリケーション部２０６ａに出力する（図６の（４））。
すなわち、パケット受信部２０７ａは受信した通信パケット１１−５−０のアプリケーションデータフィールド５１６からアプリケーションデータ「Ｄ５」を複製する。
【００６１】
ここで、パケット受信部２０７は、シーケンス番号１５１「４」のアプリケーションデータ「Ｄ４」も抽出し、受信アプリケーション部２０６ａに出力済である。
そして、各パケット受信部２０７は、どのアプリケーションデータを受信アプリケーション部２０６に出力済みであるかを受信計算機２００ｂの記憶装置に記憶させている。
【００６２】
更に、パケット受信部２０７ａは、受信した通信パケット１１−５−０を受信データ保管部２０９ａの空きエントリに記憶させる。
この時、パケット受信部２０７ａは、シーケンス番号１５１ａに「５」を設定し、受信パケット削除フラグ２５３ａに「削除不可」を設定する（図１８のＳ１８１１、図６の（５））。
【００６３】
ここで、パケット受信部２０７ａに抽出されたアプリケーションデータは受信アプリケーション部２０６に用いられるために受信計算機２００の記憶装置に記憶されるが、通信パケット１１に含まれるアプリケーションデータも受信データ保管部２０９ａに重複して記憶される。
受信データ保管部２０９ａ記憶される通信パケット１１（アプリケーションデータ）は、受信パケット再送部２０５による送信処理に用いられる。
【００６４】
なお、受信データ保管部２０９に空きエントリが無い場合は、パケット受信部２０７は、受信データ保管部２０９のセットのうち、受信パケット削除フラグ２５３が「削除可」と設定されており、再送フラグ２５４が「再送」となっていないセットに受信した通信パケット１１を上書きで記憶させてもよい。
【００６５】
また、パケット受信部２０７ａは、受信した通信パケット１１−５−０の削除可能シーケンス番号フィールド５１７に示されているシーケンス番号１５１「４」のセットのアプリケーションデータが受信アプリケーション部２０６ａに出力済であるか否かを判定する（図１８のＳ１８２０）。
セットのアプリケーションデータが受信アプリケーション部２０６に出力済でない場合（図１８のＳ１８２０の「ＮＯ」）、受信データ保管部２０９は、当該セットを記憶し続ける必要がある。一方、シーケンス番号１５１「４」のセットのアプリケーションデータは受信アプリケーション部２０６ａに出力済なので（図１８のＳ１８２０の「ＹＥＳ」）、パケット受信部２０７ａは、当該セットを削除するように受信データ保管部２０９ａに指示する。
そして、受信データ保管部２０９ａは、シーケンス番号１５１「４」のセットを削除する（図１８のＳ１８０７）。
【００６６】
そして、パケット受信部２０７は、通信パケット１１−５−０を受信したことを通知するＡＣＫパケット１２ａ−５−ａ−０を生成する。ここで、パケット受信部２０７は、受信確認シーケンス番号フィールド５１８に、通信パケット１１−５−０のシーケンス番号１５１「５」を設定する。
そして、パケット受信部２０７は、生成したＡＣＫパケット１２ａ−５−ａ−０を通信パケット１１−５−０のＡＣＫ送信先フィールド５１２に示される送信先に送信する（図１８のＳ１８１２、図６の（６））。ここで、図示は省略するが、通信パケット１１−５−０のＡＣＫ送信先フィールド５１２には、送信計算機１００のＩＰアドレスが示されており、パケット受信部２０７は、生成したＡＣＫパケット１２ａ−５−ａ−０を送信計算機１００に送信する。
そして、パケット受信部２０７ａは、次の通信パケット１１を受信するまで待つ（図１８のＳ１８０１）。
【００６７】
（図６における送信ＡＣＫ受信部１１０の処理の説明）
次に、図７と図１６とを用いて、図６における送信ＡＣＫ受信部１１０の処理を説明する。
送信ＡＣＫ受信部１１０は、パケット送信部１０４の指示に基づき、一定時間、ＡＣＫパケット１２ａが受信計算機２００から送信されるのを待つ（図１６のＳ１６０１）。
【００６８】
送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａを受信すると、ＡＣＫパケット１２ａの送信元の計算機を特定する。更に、送信ＡＣＫ受信部１１０は、受信確認シーケンス番号フィールド５１８に示される値からシーケンス番号１５１を特定する。
そして、送信ＡＣＫ受信部１１０は、送信済データ保管部１０８において、特定したシーケンス番号１５１のセットを参照する。
ここでは、送信ＡＣＫ受信部１１０は、受信計算機２００ａからＡＣＫパケット１２ａ−５−ａ−０（図６の（６））を受信する。
【００６９】
そして、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「５」のセットの通信パケット１１−５−０のＡＣＫ送信先フィールド５１２に示される計算機が、ＡＣＫパケット１２ａ−５−ａ−０の送信元と同じか否かを判定する（図１６のＳ１６０２）。すなわち、送信ＡＣＫ受信部１１０は、ＡＣＫ送信先フィールド５１２に示される計算機からＡＣＫパケット１２ａを受信したか否かを判定する。
ここで、ＡＣＫ送信先フィールド５１２に示される計算機からＡＣＫパケット１２ａを受信したということは、ＡＣＫ送信先フィールド５１２に示される計算機が再送計算機として設定されたことを認識したことを意味する。
【００７０】
なお、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「５」のセットの通信パケット１１−５−０のＡＣＫ受信フラグフィールド５１４において、ＡＣＫパケット１２ａ−５−ａ−０の送信元の計算機のＡＣＫ受信フラグが「ＡＣＫ受信済」であるか否かを判定してもよい。ＡＣＫパケット１２ａ−５−ａ−０の送信元の計算機のＡＣＫ受信フラグが「ＡＣＫ受信済」であるということは、ＡＣＫパケット１２ａの送信元の計算機から２回以上ＡＣＫパケット１２ａが戻ってきたことを意味する。すなわち、同様に、ＡＣＫ送信先フィールド５１２に示される計算機が再送計算機として設定されたことを認識したことを意味する。
【００７１】
ここでは、ＡＣＫ送信先フィールド５１２「送信計算機１００」とＡＣＫパケット１２ａ−５−ａ−０の送信元「受信計算機２００ａ」とが異なる（図１６のＳ１６０２の「ＮＯ」）。
【００７２】
そして、送信ＡＣＫ受信部１１０は、送信済データ保管部１０８の通信パケット１１−５−０のＡＣＫ受信フラグフィールド５１４のうち、受信計算機２００ａのＡＣＫ受信フラグを「受信済」に変更する（図１６のＳ１６０３、図７）。
更に、送信ＡＣＫ受信部１１０は、全ての受信計算機２００からＡＣＫパケット１２ａを受信したか否かを、ＡＣＫ受信フラグフィールド５１４を参照して判定する（図１６のＳ１６０４）。ここでは、全ての受信計算機２００からＡＣＫパケット１２ａが受信されていないので（図１６のＳ１６０４の「ＮＯ」）、送信ＡＣＫ受信部１１０は、他のＡＣＫパケット１２ａが送信されるのを待つ（図１６のＳ１６０１）。
【００７３】
（図８における通信システム５０の処理の説明）
次に図８における処理の説明を行う。
ここで、送信済データ保管部１０８のシーケンス番号１５１「５」のセットには、図７に示す通信パケット１１−５−０が記憶されている。
【００７４】
送信アプリケーション部１０３は、図６で説明のアプリケーションデータ「Ｄ５」の次に「Ｄ６」を生成しパケット送信部１０４に出力する（図８の（１））。
パケット送信部１０４は、前述と同様に通信パケット１１−６−０を生成し、受信計算機２００ａ〜２００ｃに送信する（図８の（２））。
ここで、受信計算機２００ａ〜２００ｃは、通信パケット１１−６−０を受信する。
また、パケット送信部１０４は、通信パケット１１−６−０を送信済データ保管部１０８に記憶させる（図８の（３））。
【００７５】
受信計算機２００ａのパケット受信部２０７ａは、未受信の通信パケット１１−６−０を受信し（図１８のＳ１８０２の「ＮＯ」）、シーケンス番号１５１が連続するため（図１８のＳ１８０９の「ＹＥＳ」、通信パケット１１−６−０からアプリケーションデータ「Ｄ６」を抽出する（図１８のＳ１８１０、図８の（４））。
そして、パケット受信部２０７ａは、受信した通信パケット１１−６−０を受信データ保管部２０９ａに記憶させる（図１８のＳ１８１１、図８の（５））。
【００７６】
一方、受信計算機２００ｂのパケット受信部２０７ｂと受信計算機２００ｃのパケット受信部２０７ｃとは、シーケンス番号１５１が連続しないので（図１８のＳ１８０９の「ＮＯ」）、アプリケーションデータを受信アプリケーション部２０６に出力することが出来ない。
そのため、パケット受信部２０７ｂは、通信パケット１１−６−０をそのまま受信データ保管部２０９ｂに記憶させる（図１８のＳ１８１１、図８の（６））。また、パケット受信部２０７ｃも、通信パケット１１−６−０をそのまま受信データ保管部２０９ｃに記憶させる（図１８のＳ１８１１、図８の（７））。
【００７７】
なお、今までに送信パケット削除フラグ１５３が「削除可」となったセットのシーケンス番号１５１の全てが通信パケット１１―６−０の削除可能シーケンス番号フィールド５１７に設定されている場合は、受信データ保管部２０９ｂと受信データ保管部２０９ｃとにおいて、シーケンス番号１５１「４」のセットが削除されることになる。
【００７８】
（図９における通信システム５０の処理の説明）
次に図９における処理の説明を行う。
パケット受信部２０７ａ〜２０７ｃは、通信パケット１１−６−０を受信したことを通知するＡＣＫパケット１２ａを生成する。そして、パケット受信部２０７ａ〜２０７ｃは、生成したＡＣＫパケット１２ａを送信計算機１００に送信する（図１８のＳ１８１２、図９の（１））。
また、パケット受信部２０７ｂとパケット受信部２０７ｃとは、シーケンス番号１５１「５」の通信パケット１１が届いていないことを検知するので、シーケンス番号１５１「５」の通信パケット１１が未受信であることを通知するＮＡＣＫパケット１２ｂを生成し、送信計算機１００に送信する（図９の（２））。
【００７９】
一方、送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａを受信すると、送信済データ保管部１０８の通信パケット１１−６−０のＡＣＫ受信フラグフィールド５１４を変更する。すなわち、シーケンス番号１５１「６」の通信パケット１１−６−０のＡＣＫ受信フラグが全て「ＡＣＫ受信済」に設定される（図１６のＳ１６０３、図１０）。
そして、送信ＡＣＫ受信部１１０は、全ての受信計算機２００からＡＣＫパケット１２ａを受信したか否かを判定する（図１６のＳ１６０４）。ここで、全ての受信計算機２００からＡＣＫパケット１２ａを受信しているため（図１６のＳ１６０４の「ＹＥＳ」）、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「６」のセットの送信パケット削除フラグ１５３を「削除可」に変更する（図１６のＳ１６０５）。
【００８０】
ここで、送信パケット削除フラグ１５３の「削除可」は、送信済データ保管部１０８に対し、当該セットおよび当該セットに含まれる通信パケット１１やアプリケーションデータの削除の指示を示している。
【００８１】
（図１１における通信システム５０の処理の説明）
次に図１１における処理の説明を行う。
ここで、送信済データ保管部１０８は、シーケンス番号１５１「６」の送信パケット削除フラグ１５３を「削除可」の状態で記憶している。
【００８２】
（図１１における送信パケット再送部１０５の処理の説明）
ここで、図１７を用いて、図１１における送信パケット再送部１０５の処理を説明する。
送信パケット再送部１０５は、パケット送信部１０４からの指示を待つ（図１７のＳ１７０１）。ここで、パケット送信部１０４は、例えば通信パケット１１を送信する毎に、送信パケット再送部１０５に対し、一定時間待った後に、処理を開始する指示をする。
送信パケット再送部１０５は、一定時間待った後（図１７のＳ１７０２）、送信済データ保管部１０８を参照する。
【００８３】
また、送信パケット再送部１０５は、送信ＡＣＫ受信部１１０からの指示を待ってもよい（図１７のＳ１７０１）。
送信ＡＣＫ受信部１１０は、ＮＡＣＫパケット１２ｂを受信した場合に、ＮＡＣＫパケット１２ｂの受信確認シーケンス番号フィールド５１８に示されるシーケンス番号１５１の通信パケット１１の再送処理を指示する。その場合、送信パケット再送部１０５は、図１７のＳ１７０２の処理を省略してもよい。
【００８４】
そして、送信パケット再送部１０５は、送信パケット削除フラグ１５３が「削除不可」となっているセットが有るか否かを判定する（図１７のＳ１７０３）。
ここで、送信パケット削除フラグ１５３が「削除不可」となっているセットが有るのは、送信ＡＣＫ受信部１１０により、全ての受信計算機２００からＡＣＫパケット１２ａを受信したか否かが判定され、少なくともいずれかの受信計算機２００からＡＣＫパケット１２ａを受信していないと判定された場合である。
【００８５】
送信パケット削除フラグ１５３が「削除不可」となっているセットが無い場合（図１７のＳ１７０３の「ＮＯ」）、送信パケット再送部１０５は、再度、パケット送信部１０４もしくは送信ＡＣＫ受信部１１０からの指示を待つ（図１７のＳ１７０１）。すなわち、送信パケット再送部１０５は、後述の再送計算機を選択しない。
【００８６】
図１１においては、シーケンス番号１５１「５」のセットの送信パケット削除フラグ１５３が「削除不可」であるため（図１７のＳ１７０３の「ＹＥＳ」）、送信パケット再送部１０５は、送信済データ保管部１０８からシーケンス番号１５１「５」のセットの通信パケット１１−５−０を入力する（図１１の（１））。
なお、送信パケット再送部１０５は、送信ＡＣＫ受信部１１０からの指示に基づき、再送する通信パケット１１を選択してもよい。
【００８７】
そして、送信パケット再送部１０５は、ＡＣＫ受信フラグフィールド５１４のＡＣＫ受信フラグが「ＡＣＫ受信済」となっている受信計算機２００から１台の受信計算機２００を選択する。
すなわち、送信パケット再送部１０５は、送信ＡＣＫ受信部１１０により受信されたＡＣＫパケット１２ａの送信元の受信計算機２００から１台の受信計算機２００を選択する。そして、この選択された受信計算機２００は、通信パケット１１の再送を行わせる再送計算機となる。再送計算機は、転送計算機装置に対応する。
【００８８】
ここでは、受信計算機２００の選択方法に制限はなく、送信パケット再送部１０５は、受信計算機２００を例えば、ランダムに選択してもよいし、所定の順序に基づいて選択してもよい。所定の順序とは、例えば、ＡＣＫパケット１２ａを受信した順序や、受信計算機２００の識別子が所定の条件でソーティングされた順序などである。
【００８９】
そして、送信パケット再送部１０５は、選択した受信計算機２００をＡＣＫ送信先フィールド５１２に設定する（図１７のＳ１７０４）。正確には、送信パケット再送部１０５は、選択した受信計算機２００の識別子をＡＣＫ送信先フィールド５１２に設定する。
ここでは、ＡＣＫ受信フラグが「ＡＣＫ受信済」の受信計算機２００は、受信計算機２００ａのみなので、送信パケット再送部１０５は、受信計算機２００ａをＡＣＫ送信先フィールド５１２に設定する。
【００９０】
ここで、ＡＣＫ送信先フィールド５１２に示される情報は、送信パケット再送部１０５から再送通信パケット１１の受信を通知するＡＣＫパケット１２ａを再送計算機に送信するよう指示する転送計算機情報である。
【００９１】
また、送信パケット再送部１０５は、再送回数フィールド５１３の値に「１」を加える。すなわち、送信パケット再送部１０５は、再送回数フィールド５１３を再送回数が１回目であることを示す「１」に設定する。
また、送信パケット再送部１０５は、削除可能シーケンス番号フィールド５１７に送信パケット削除フラグ１５３が「削除可」であるセットのシーケンス番号１５１「６」を設定する。
【００９２】
そして、送信パケット再送部１０５は、上述の設定を行った通信パケット１１−５−１を受信計算機２００ａ〜ｃに対して、マルチキャスト送信する（図１７のＳ１７０５、図１１の（２））。すなわち、送信パケット再送部１０５が送信したデータは、送信パケット削除フラグ１５３が「削除不可」に設定されているセットの通信パケット１１である。
【００９３】
なお、送信パケット再送部１０５は、通信パケット１１−５−１をシーケンス番号１５１「５」の通信パケット１１のＡＣＫパケット１２ａが未受信である受信計算機２００ｂと受信計算機２００ｃとに送信してもよい。
【００９４】
送信パケット再送部１０５は、送信した通信パケット１１−５−１を送信済データ保管部１０８のシーケンス番号１５１「５」のセットに上書きで記憶させる（図１１の（３））。すなわち、送信済データ保管部１０８に記憶されていた通信パケット１１−５−０は、削除される。
【００９５】
そして、送信パケット再送部１０５は、送信済データ保管部１０８のシーケンス番号１５１「５」のセットの送信パケット削除フラグ１５３を「削除可」に変更する（図１７のＳ１７０６）。
ここで、送信パケット再送部１０５により通信パケット１１が再送された後、当該通信パケット１１の再々送が必要になったとしても、再々送の処理は受信計算機２００のいずれかにより行われる。そのため、送信計算機１００は、当該通信パケット１１が不要となるため、送信パケット削除フラグ１５３が「削除可」に変更される。
【００９６】
また、送信パケット再送部１０５は、通信パケット１１−５−１を送信する際に、送信パケット削除フラグ１５３が「削除可」であり、削除可能シーケンス番号フィールド５１７に設定されたシーケンス番号１５１「６」のセットを送信済データ保管部１０８に削除させる。
【００９７】
（図１１におけるパケット受信部２０７の処理の説明）
ここで、図１７を用いて、図１１における送信パケット再送部１０５の処理を説明する。
図１１に示す処理において、受信計算機２００ａと受信計算機２００ｂとは、通信パケット１１−５−１を受信するが、受信計算機２００ｃは、通信パケット１１−５−１を受信しない。
【００９８】
まず、受信計算機２００ａのパケット受信部２０７ａの処理について説明する。
パケット受信部２０７ａは、通信パケット１１−５−１を受信すると、前述と同様に、ＡＣＫ受信フラグフィールド５１４を参照し、シーケンス番号１５１「５」の通信パケット１１（アプリケーションデータ）を受信済みであると判定する（図１８のＳ１８０２の「ＹＥＳ」）。
【００９９】
次に、パケット受信部２０７ａは、ＡＣＫ送信先フィールド５１２に自計算機（受信計算機２００ａ）が設定されているか否かを判定する（図１８のＳ１８０３）。
ここで、ＡＣＫ送信先フィールド５１２には受信計算機２００ａが設定されているので（図１８のＳ１８０３の「ＹＥＳ」）、パケット受信部２０７ａは、受信データ保管部２０９のシーケンス番号１５１「５」のセットに受信した通信パケット１１−５−１を上書きで記憶させる（図１１の（４））。そして、パケット受信部２０７ａは、受信データ保管部２０９ａのシーケンス番号１５１「５」のセットの再送フラグ２５４ａを「再送」に設定する（図１８のＳ１８０４）。
【０１００】
ここで、通信パケット１１のＡＣＫ送信先フィールド５１２に自計算機が設定されている場合とは、再送計算機に設定された受信計算機２００のパケット受信部２０７が当該通信パケット１１を受信した場合である。
そして、当該通信パケット１１を受信した受信計算機２００は、自計算機が再送計算機に設定されたことを認識する。すなわち、ＡＣＫ送信先フィールド５１２に示される情報は、当該通信パケット１１を再送計算機以外の受信計算機２００に転送するよう指示する転送指示情報である。
【０１０１】
なお、通信パケット１１−５−１の受信前に、アプリケーションデータ「Ｄ５」は既に受信アプリケーション部２０６ａに出力されており、受信データ保管部２０９ａにも記憶されている。しかし、通信パケット１１−５−１のＡＣＫ受信フラグフィールド５１４には、各受信計算機２００の最新のＡＣＫパケット１２ａ受信状況が示されている。そのため、パケット受信部２０７ａは、通信パケット１１−５−１を受信データ保管部２０９ａに上書きで記憶させる。
【０１０２】
また、パケット受信部２０７ａは、削除可能シーケンス番号フィールド５１７に示されているシーケンス番号１５１「６」のセットを受信データ保管部２０９ａに削除させる（図１８のＳ１８１４、図１１の（５））。
【０１０３】
次に、受信計算機２００ｂのパケット受信部２０７ｂの処理について説明する。
パケット受信部２０７ｂは、通信パケット１１−５−１を受信すると、前述と同様に、ＡＣＫ受信フラグフィールド５１４を参照し、シーケンス番号１５１「５」の通信パケット１１（アプリケーションデータ）を未受信であると判定する（図１８のＳ１８０２の「ＮＯ」）。
そして、パケット受信部２０７ｂは、受信した通信パケット１１−５−１のシーケンス番号１５１「５」が、受信済みの通信パケット１１のシーケンス番号１５１「４」と連続すると判断する（図１８のＳ１８０９の「ＹＥＳ」）。
【０１０４】
パケット受信部２０７ｂは、受信した通信パケット１１−５−１のアプリケーションデータフィールド５１６からアプリケーションデータ「Ｄ５」を抽出し（図１８のＳ１８１０）、受信アプリケーション部２０６に出力する（図１１の（６））。
ここで、図１８における図示は省略するが、パケット受信部２０７ｂは、アプリケーションデータを抽出したシーケンス番号１５１に連続するシーケンス番号１５１のセットが受信データ保管部２０９にある場合、そのセットの通信パケット１１からもアプリケーションデータを抽出する。ここでは、パケット受信部２０７ｂは、シーケンス番号１５１「６」のセットの通信パケット１１−６−０からアプリケーションデータフィールド５１６からアプリケーションデータ「Ｄ６」を抽出し、受信アプリケーション部２０６に出力する（図１１の（６））。
【０１０５】
更に、パケット受信部２０７ｂは、受信した通信パケット１１−５−１を受信データ保管部２０９のシーケンス番号１５１「５」のセットに上書きで記憶させる（図１８のＳ１８１１、図１１の（７））。
なお、パケット受信部２０７は、ＡＣＫ送信先フィールド５１２に自計算機が示されておらず、再送回数フィールド５１３に「１」以上の値が設定されている通信パケット１１を受信した場合は、当該通信パケット１１を受信データ保管部２０９に上書きで記憶させず、破棄してもよい。
【０１０６】
また、パケット受信部２０７ｂは、受信した通信パケット１１−５−１の削除可能シーケンス番号フィールド５１７に示されているシーケンス番号１５１「６」のセットを受信データ保管部２０９ａに削除させる（図１８のＳ１８０７、図１１の（８））。
【０１０７】
（図１２における通信システム５０の処理の説明）
次に図１２における処理の説明を行う。
ここで、送信済データ保管部１０８のシーケンス番号１５１「６」のセットが削除されている。また、受信データ保管部２０９ａのシーケンス番号１５１「５」の再送フラグ２５４ａは「再送」に設定され、シーケンス番号１５１「６」のセットが削除されている。更に、受信データ保管部２０９のシーケンス番号１５１「６」のセットが削除されている。
【０１０８】
（図１２におけるパケット受信部２０７ａの処理の説明）
ここで、図１８を用いて、図１２におけるパケット受信部２０７ａの処理を説明する。
パケット受信部２０７ａは、ＡＣＫ送信先フィールド５１２に自計算機（受信計算機２００ａ）が設定された通信パケット１１−５−１を受信すると、通信パケット１１の受信を通知するＡＣＫパケット１２ａをＡＣＫ送信先フィールド５１２が示す計算機ではなく、送信計算機１００に送信する（図１８のＳ１８０５、図１２の（１））。
なお、図示は省略するが、通信パケット１１には、通信パケット１１の送信元の計算機のアドレスが示されており、パケット受信部２０７ａは、通信パケット１１の送信元の計算機のアドレスにＡＣＫパケット１２ａを送信する。
これは、受信計算機２００ａが再送計算機として設定されたことを送信計算機１００に通知するためのＡＣＫパケット１２ａであるとも言える。
【０１０９】
（図１２における送信ＡＣＫ受信部１１０の処理の説明）
次に、図１６を用いて、図１２における送信ＡＣＫ受信部１１０の処理を説明する。
前述の通り、送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａが受信計算機２００から送信されるのを待つ（図１６のＳ１６０１、図１２の（２））。
そして、送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａ−５−ａ−１を受信する。
【０１１０】
ここで、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「５」のセットの通信パケット１１−５−１のＡＣＫ送信先フィールド５１２に示される計算機が、ＡＣＫパケット１２ａ−５−ａ−１の送信元と同じか否かを判定する（図１６のＳ１６０２）。
ここでは、ＡＣＫ送信先フィールド５１２「受信計算機２００ａ」とＡＣＫパケット１２ａ−５−ａ−１の送信元「受信計算機２００ａ」とが同じである（図１６のＳ１６０２の「ＹＥＳ」）。
【０１１１】
そこで、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「５」のセットの送信パケット削除フラグ１５３を「削除可」に変更する（図１６のＳ１６０５、図１２の（３））。
すなわち、送信ＡＣＫ受信部１１０は、再送計算機である受信計算機２００ａからＡＣＫ送信先フィールド５１２に転送指示情報として受信計算機２００ａが示された通信パケット１１の受信を通知するＡＣＫパケット１２ａを受信した後に、送信パケット削除フラグ１５３を「削除可」に変更する。
【０１１２】
そして、パケット送信部１０４は、次のシーケンス番号１５１「７」の通信パケット１１−７−０生成時に、削除可能シーケンス番号フィールド５１７にシーケンス番号１５１「５」を設定する。
すなわち、受信計算機２００ａが再送計算機であることを認識し、再送計算機が確定したので、受信計算機２００ａ以外の計算機がシーケンス番号１５１「５」の通信パケット１１を記憶する必要がないことを示している。
よって、受信計算機２００ｂのパケット受信部２０７ｂと受信計算機２００ｃのパケット受信部２０７ｃとは、通信パケット１１−７−０を受信すると各受信データ保管部２０９にシーケンス番号１５１「５」のセットを削除させる。
そして、パケット送信部１０４は、通信パケット１１−７−０を送信する際に、送信パケット削除フラグ１５３が「削除可」であり、削除可能シーケンス番号フィールド５１７に設定されたシーケンス番号１５１「５」のセットを送信済データ保管部１０８に削除させる。
【０１１３】
一方、受信計算機２００ａのパケット受信部２０７ａは、通信パケット１１−７−０を受信しても、受信データ保管部２０９の再送フラグ２５４が「再送」に設定されている場合に、当該セットを削除することが出来ない。
逆に、受信データ保管部２０９の再送フラグ２５４の当該セットの「再送」の設定が解除された後であれば、パケット受信部２０７は、当該セットを削除することが可能である。
【０１１４】
なお、図示は省略するが、一定時間内に、送信ＡＣＫ受信部１１０が受信計算機２００ａからのＡＣＫパケット１２ａ−５−ａ−１を受信しない場合、パケット送信部１０４は、ＡＣＫパケット１２ａ−５−ａ−１が受信されるまで繰り返し、通信パケット１１−５−１をマルチキャスト送信する。
【０１１５】
（図１３における通信システム５０の処理の説明）
次に図１３における処理の説明を行う。
ここで、送信済データ保管部１０８のシーケンス番号１５１「６」のセットが削除され、新たにシーケンス番号１５１「７」のセットが記憶されている。
【０１１６】
（図１３における再送ＡＣＫ受信部２０８ａの処理の説明）
ここで、図１９を用いて、図１３における再送ＡＣＫ受信部２０８ａの処理を説明する。
前述の図１１において、通信パケット１１−５−１を受信した受信計算機２００ｂのパケット受信部２０７ｂは、ＡＣＫ送信先フィールド５１２に示されている受信計算機２００ａにＡＣＫパケット１２ａ−５−ｂ−１を送信する（図１３の（１））。
【０１１７】
再送ＡＣＫ受信部２０８ａは、前述の送信ＡＣＫ受信部１１０と同様にＡＣＫパケット１２ａが他の受信計算機２００から送信されるのを待つ（図１９のＳ１９０１、図１３の（２））。
そして、再送ＡＣＫ受信部２０８ａは、ＡＣＫパケット１２ａ−５−ｂ−１を受信する。すなわち、再送ＡＣＫ受信部２０８ａは、送信計算機１００の送信パケット再送部１０５から再送された通信パケット１１を受信した受信計算機２００から、当該再送された通信パケット１１の受信を通知するＡＣＫパケット１２ａを受信する。
そして、再送ＡＣＫ受信部２０８ａは、受信データ保管部２０９に記憶されている通信パケット１１−５−１のＡＣＫ受信フラグフィールド５１４のうち、受信計算機２００ｂのＡＣＫ受信フラグを「受信済」に変更する（図１９のＳ１９０２、図１３の（３））。
【０１１８】
そして、再送ＡＣＫ受信部２０８ａは、全ての受信計算機２００からＡＣＫパケット１２ａを受信したか否かを、ＡＣＫ受信フラグフィールド５１４を参照して判定する（図１９のＳ１９０３）。
すなわち、送信計算機１００の送信パケット再送部１０５が再送処理を終えた後、ＡＣＫ受信フラグフィールド５１４が示す全ての受信計算機２００と、送信計算機１００から再送された通信パケット１１に対するＡＣＫパケット１２ａの送信元の受信計算機２００とに基づき、送信計算機１００から再送された通信パケット１１を受信していない受信計算機２００を判断する。
【０１１９】
なお、受信データ保管部２０９に記憶されている通信パケット１１−５−１のＡＣＫ受信フラグフィールド５１４には、送信計算機１００のパケット送信部１０４から送信された通信パケット１１のＡＣＫパケット１２ａを、送信計算機１００が受信済みである受信計算機２００（受信済み計算機）が示されている。すなわち、ＡＣＫ受信フラグフィールド５１４の示す情報は、受信済み計算機情報に対応する。
そして、再送ＡＣＫ受信部２０８ａは、ＡＣＫ受信フラグフィールド５１４が示す全ての受信計算機２００と、受信済み計算機と、送信計算機１００から再送された通信パケット１１に対するＡＣＫパケット１２ａの送信元の受信計算機２００とに基づき、送信計算機１００から送信された通信パケット１１及び送信計算機１００から再送された通信パケット１１のいずれも受信していない受信計算機２００を判断する。
【０１２０】
ここでは、全ての受信計算機２００からＡＣＫパケット１２ａが受信されていないので（図１９のＳ１９０３の「ＮＯ」）、再送ＡＣＫ受信部２０８ａは、他のＡＣＫパケット１２ａが送信されるのを待つ（図１９のＳ１９０１）。
【０１２１】
（図１４における通信システム５０の処理の説明）
次に図１４における処理の説明を行う。
図１４において、送信計算機１００の図示は省略する。ここで、図１２に示す通信パケット１１−７−０を受信計算機２００ａ〜ｃは未受信である。
また、図１４における図示は省略するが、図１１でＡＣＫ送信先フィールド５１２に自計算機（受信計算機２００ａ）が示される通信パケット１１−５−１を受信したパケット受信部２０７ａは、データ再送を受信パケット再送部２０５に指示する（図１８のＳ１８０６）。
【０１２２】
（図１４における受信パケット再送部２０５ａの処理の説明）
ここで、図２０を用いて、図１４における受信パケット再送部２０５ａの処理を説明する。
受信パケット再送部２０５ａは、パケット受信部２０７ａからのデータ再送指示を待つ（図２０のＳ２００１）。ここで、パケット受信部２０７ａは、受信パケット再送部２０５ａに対し、一定時間待った後に、処理を開始する指示をする。
受信パケット再送部２０５ａは、一定時間待った後（図２０のＳ２００２）、受信データ保管部２０９ａを参照する。
【０１２３】
また、受信パケット再送部２０５は、再送ＡＣＫ受信部２０８からの指示を待ってもよい（図２０のＳ２００１）。
再送ＡＣＫ受信部２０８は、ＮＡＣＫパケット１２ｂを受信した場合に、ＮＡＣＫパケット１２ｂの受信確認シーケンス番号フィールド５１８に示されるシーケンス番号１５１の通信パケット１１の再送処理を指示する。その場合、受信パケット再送部２０５は、図２０のＳ２００２の処理を省略してもよい。
【０１２４】
そして、受信パケット再送部２０５ａは、再送フラグ２５４ａが「再送」となっているセットが有るか否かを判定する（図２０のＳ２００３）。
再送フラグ２５４ａが「再送」となっているセットが無い場合（図２０のＳ２００３の「ＮＯ」）、受信パケット再送部２０５ａは、パケット受信部２０７ａもしくは再送ＡＣＫ受信部２０８ａからの指示を待つ（図２０のＳ２００１）。
【０１２５】
図１４においては、シーケンス番号１５１「５」のセットの再送フラグ２５４ａが「再送」であるため（図２０のＳ２００３の「ＹＥＳ」）、受信パケット再送部２０５ａは、受信データ保管部２０９ａからシーケンス番号１５１「５」のセットの通信パケット１１−５−１を入力する（図１４の（１））。
なお、受信パケット再送部２０５ａは、再送ＡＣＫ受信部２０８ａからの指示に基づき、再送信する通信パケット１１を選択してもよい。
【０１２６】
更に、受信パケット再送部２０５ａは、受信データ保管部２０９ａにおいて受信パケット削除フラグ２５３ａが「削除可」になっているセットが有るか否かを判定する（図２０のＳ２００４）。「削除可」になっているセットが有る場合（図２０のＳ２００４の「ＹＥＳ」）、受信パケット再送部２０５ａは、通信パケット１１−５−１の削除可能シーケンス番号フィールド５１７にシーケンス番号１５１を設定する（図２０のＳ２００５）。
図１４においては、「削除可」になっているセットが受信データ保管部２０９ａに無い為（図２０のＳ２００４の「ＮＯ」）、削除可能シーケンス番号フィールド５１７は特に設定されない。
【０１２７】
また、受信パケット再送部２０５ａは、再送回数フィールド５１３の値に「１」を加える。すなわち、受信パケット再送部２０５ａは、再送回数フィールド５１３を再送回数が２回目であることを示す「２」に設定する。
【０１２８】
そして、受信パケット再送部２０５ａは、上述の設定を行った通信パケット１１−５−２を受信計算機２００ｂ〜ｃに対して、マルチキャスト送信する（図２０のＳ２００６、図１４の（２））。すなわち、受信パケット再送部２０５ａが送信したデータは、再送フラグ２５４が「再送」に設定されているセットの通信パケット１１である。
受信パケット再送部２０５ａは、送信した通信パケット１１−５−２を受信データ保管部２０９ａのシーケンス番号１５１「５」のセットに上書きで記憶させる（図１４の（３））。
【０１２９】
なお、受信パケット再送部２０５ａは、再送ＡＣＫ受信部２０８ａにより、いずれの計算機からも当該通信パケット１１（例えば通信パケット１１−５−２）を未受信であると判断された受信計算機２００にのみ当該通信パケット１１を送信してもよい。
【０１３０】
また、受信パケット再送部２０５ａは、通信パケット１１の送信後、通信パケット１１の削除可能シーケンス番号フィールド５１７にシーケンス番号１５１が設定されている場合は、当該シーケンス番号１５１のセットを削除するように受信データ保管部２０９に指示する。ここでは、削除可能シーケンス番号フィールド５１７にシーケンス番号１５１が設定されていないので、セットの削除は行われない。
【０１３１】
（図１４におけるパケット受信部２０７の処理の説明）
次に、図１８を用いて、図１４におけるパケット受信部２０７の処理を説明する。
図１４に示す処理において、受信計算機２００ｂと受信計算機２００ｃとは、通信パケット１１−５−２を受信する。
【０１３２】
まず、受信計算機２００ｂのパケット受信部２０７ｂの処理について説明する。
パケット受信部２０７ｂは、通信パケット１１−５−２を受信すると、前述と同様に、ＡＣＫ受信フラグフィールド５１４を参照し、シーケンス番号１５１「５」の通信パケット１１（アプリケーションデータ）を受信済みであると判定する（図１８のＳ１８０２の「ＹＥＳ」）。
【０１３３】
次に、パケット受信部２０７ｂは、ＡＣＫ送信先フィールド５１２に自計算機（受信計算機２００ｂ）が設定されているか否かを判定する（図１８のＳ１８０３）。
ここで、ＡＣＫ送信先フィールド５１２には受信計算機２００ａが設定されているので（図１８のＳ１８０３の「ＮＯ」）、パケット受信部２０７ｂは、受信データ保管部２０９のシーケンス番号１５１「５」のセットに受信した通信パケット１１−５−２を上書きで記憶させる（図１８のＳ１８０８、図１４の（４））。
【０１３４】
また、パケット受信部２０７ｂは、削除可能シーケンス番号フィールド５１７に示されているシーケンス番号１５１のセットを受信データ保管部２０９ｂに削除させる（図１８のＳ１８１３）。ここでは、削除可能シーケンス番号フィールド５１７に示されているシーケンス番号１５１が設定されていないので、パケット受信部２０７ｂは、削除可能シーケンス番号フィールド５１７に基づく、セットの削除は行わない。
【０１３５】
一方、パケット受信部２０７ｂは、シーケンス番号１５１「５」のアプリケーションデータ「Ｄ５」は既に、受信アプリケーション部２０６ｂに出力済みである。
また、通信パケット１１−５−２のＡＣＫ送信先フィールド５１２には、再送計算機が既に受信計算機２００ａに決定していることが示されている。
すなわち、受信データ保管部２０９ｂに記憶されているシーケンス番号１５１「５」のセットは、不要である。
従って、再送計算機に設定されていない受信計算機２００ｂのパケット受信部２０７ｂは、アプリケーションデータを受信アプリケーション部２０６ｂに出力済みのセットを図１８のＳ１８１３の処理において受信データ保管部２０９ｂに削除させてもよい。
【０１３６】
なお、パケット受信部２０７ｂは、通信パケット１１−５−２の自計算機のＡＣＫ受信フラグが「ＡＣＫ受信済」となっており（図１８のＳ１８０２の「ＹＥＳ」）、ＡＣＫ送信先フィールド５１２に自計算機が設定されていない場合（図１８のＳ１８０３の「ＮＯ」）いるので、ＡＣＫパケット１２ａを送信しない。
【０１３７】
次に、受信計算機２００ｃのパケット受信部２０７ｃの処理について説明する。
パケット受信部２０７ｃは、通信パケット１１−５−２を受信すると、前述と同様に、ＡＣＫ受信フラグフィールド５１４を参照し、シーケンス番号１５１「５」の通信パケット１１（アプリケーションデータ）を未受信であると判定する（図１８のＳ１８０２の「ＮＯ」）。
そして、前述と同様に、パケット受信部２０７ｃはアプリケーションデータ「Ｄ５」と「Ｄ６」とを受信アプリケーション部２０６ｃに出力し（図１４の（５））、通信パケット１１−５−２を受信データ保管部２０９ｃに記憶させる（図１４の（６））。
そして、パケット受信部２０７ｃはＡＣＫパケット１２ａ−５−ｃ−２を受信計算機２００ａに送信する（図１４の（７））。
【０１３８】
（図１４における再送ＡＣＫ受信部２０８ａの処理の説明）
次に、図１９を用いて、図１４における再送ＡＣＫ受信部２０８ａの処理を説明する。
【０１３９】
再送ＡＣＫ受信部２０８ａは、前述と同様にＡＣＫパケット１２ａが他の受信計算機２００から送信されるのを待つ（図１９のＳ１９０１、図１４の（８））。
そして、再送ＡＣＫ受信部２０８ａは、ＡＣＫパケット１２ａ−５−ｃ−２を受信すると、受信データ保管部２０９に記憶されている通信パケット１１−５−２のＡＣＫ受信フラグフィールド５１４のうち、受信計算機２００ｃのＡＣＫ受信フラグを「受信済」に変更する（図１９のＳ１９０２）。
そして、再送ＡＣＫ受信部２０８ａは、全ての受信計算機２００からＡＣＫパケット１２ａを受信したか否かを、ＡＣＫ受信フラグフィールド５１４を参照して判定する（図１９のＳ１９０３）。
すなわち、再送ＡＣＫ受信部２０８ａは、ＡＣＫ受信フラグフィールド５１４に示される全ての受信計算機２００と、パケット送信部１０４から送信された通信パケット１１を受信した受信計算機２００と、送信パケット再送部１０５から再送された通信パケット１１を受信した受信計算機２００と、受信パケット再送部２０５から送信された通信パケット１１を受信した受信計算機２００とから、送信計算機１００もしくは受信パケット再送部２０５から通信パケット１１を受信していない受信計算機２００を判断する。
【０１４０】
ここでは、図示は省略するが、図１４に示す通信パケット１１−５−２の受信計算機２００ｃのＡＣＫ受信フラグが「受信済」に変更され、全ての受信計算機２００からＡＣＫパケット１２ａが受信されたことになっている（図１９のＳ１９０３の「ＹＥＳ」）。
そして、再送ＡＣＫ受信部２０８ａは、シーケンス番号１５１「５」のセットのアプリケーションデータ「Ｄ５」を既に、受信アプリケーション部２０６ａに出力済みである。
【０１４１】
よって、再送ＡＣＫ受信部２０８ａは、シーケンス番号１５１「５」のセットを受信データ保管部２０９ａに削除させる。
すなわち、再送計算機に設定された受信計算機２００ａの再送ＡＣＫ受信部２０８ａは、アプリケーションデータを受信アプリケーション部２０６ａに出力済みであり、ＡＣＫパケット１２ａが全ての受信計算機２００から受信されたセットを図１９のＳ１９０４の処理において受信データ保管部２０９ａに削除させる。
【０１４２】
なお、後述で補足説明するが、再送ＡＣＫ受信部２０８は、受信データ保管部２０９にセットを削除させず、受信パケット削除フラグ２５３を「削除可」に変更し、再送フラグ２５４の「再送」を解除するだけでもよい。
ここで、受信パケット削除フラグ２５３の「削除可」は、受信データ保管部２０９に対し、当該セットおよび当該セットに含まれる通信パケット１１やアプリケーションデータの削除の指示を示している。
【０１４３】
また、受信パケット削除フラグ２５３が「削除可」のセットのシーケンス番号１５１を削除可能シーケンス番号フィールド５１７に設定した通信パケット１１を受信パケット再送部２０５が送信する際に、受信パケット再送部２０５が当該セットを受信データ保管部２０９ａに削除させてもよい。
【０１４４】
そして、通信システム５０は、シーケンス番号１５１「５」の通信パケット１１（アプリケーションデータ）のリライアブルマルチキャスト送信を終了する。
なお、リライアブルマルチキャスト送信の終了後に、パケット送信部１０４は、終了したシーケンス番号１５１（ここでは「５」）が削除可能シーケンス番号フィールド５１７に設定された通信パケット１１を各受信計算機２００に送信してもよい。
更に、全てのシーケンス番号１５１のリライアブルマルチキャスト送信の終了後に、パケット送信部１０４は、全てのシーケンス番号１５１が削除可能シーケンス番号フィールド５１７に設定された通信パケット１１を各受信計算機２００に送信してもよい。
【０１４５】
（実施の形態１の補足説明）
送信済データ保管部１０８や受信データ保管部２０９に記憶されているデータの容量をより効果的に削減するため、前述の説明の通り、所定の条件となった場合に、例えば、パケット受信部２０７は、受信データ保管部２０９にセットを削除させている。
しかし、例えば、パケット受信部２０７は、受信データ保管部２０９のセットの受信パケット削除フラグ２５３を「削除可」に変更するだけで、受信データ保管部２０９にセットを削除させなくてもよい。そして、例えば受信データ保管部２０９に空きエントリが無くなった場合に、前述の通り、受信パケット削除フラグ２５３が「削除可」に設定されているセットに新たなセットが上書きで記憶されてもよい。
パケット受信部２０７と受信データ保管部２０９との処理に限らず、他の処理においても同様である。
【０１４６】
（実施の形態１の効果）
実施の形態１の通信システム５０は、送信計算機１００が送信した通信パケット１１を受信した受信計算機２００が、通信パケット１１の再送を行う。その為、送信計算機１００は、再送のために記憶する通信パケット１１のデータ量を削減出来、送信済データ保管部１０８の記憶容量を小さくすることが出来る。
また、送信計算機１００以外の受信計算機２００が通信パケット１１の再送を行うため、送信計算機１００の処理の不可が軽減される。
また、送信パケット再送部１０５が、ＡＣＫ送信先フィールド５１２に再送計算機を設定して、全ての受信計算機２００に通信パケット１１をマルチキャストで再送する。その為、再送計算機に設定された受信計算機２００は自計算機が再送計算機に設定されたことを認識し、再送計算機以外の受信計算機２００はＡＣＫパケット１２ａの新たな送信先を認識することが出来る。
【０１４７】
実施の形態２．
本実施の形態では、送信パケット再送部１０５が再送計算機を選択する場合に、ＡＣＫパケット１２ａを受信済みの受信計算機２００のうち、受信データ保管部２０９の空きエントリの多い受信計算機２００を選択する方法について説明する。
なお、実施の形態２における通信システム５０、送信計算機１００、受信計算機２００の構成は実施の形態１と同様である。以降、実施の形態１と共通する部分については説明を省略する。
【０１４８】
また、受信データ保管部２０９は、パケット受信部２０７が通信パケット１１を受信した場合に、通信パケット１１が記憶されていないエントリ（記憶領域）である空きエントリ（未記憶領域）に受信した通信パケット１１を記憶する。
【０１４９】
（送信済データ保管部１０８の説明）
図２１は、送信済データ保管部１０８のデータの構成の例を示す図である。
本実施の形態のパケット受信部２０７は、通信パケット１１を受信し、ＡＣＫパケット１２ａを送信する際に、受信データ保管部２０９の空きエントリの数を示す情報を一緒に送信する。
そして、送信済データ保管部１０８は、実施の形態１で説明の情報に加え、空きエントリ数最大計算機１５４、空きエントリ数１５５、決定フラグ１５６を記憶する。
空きエントリ数最大計算機１５４は、受信データ保管部２０９の空きエントリ数が最も多い受信計算機２００の識別子（例えばＩＰアドレスでもよい）を示し、空きエントリ数１５５は当該受信計算機２００の空きエントリ数を示す。
決定フラグ１５６は、当該セットの再送計算機が決定したか否かを示すフラグである。
【０１５０】
（受信確認パケット１２の説明）
図２２は、受信確認パケット１２のデータの構成の例を示す図である。
本実施の形態の送信ＡＣＫ受信部１１０は、受信確認パケット１２に示される空きエントリ数１５５を受信確認パケット１２と共に受信する。
そして、受信確認パケット１２は、受信確認シーケンス番号フィールド５１８の他に空きエントリ数１５５を示す受信確認空きエントリ数フィールド５１９を備える。
なお、実施の形態１と同様に、受信確認パケット１２がＡＣＫパケットの場合は、単に「ＡＣＫパケット１２ａ」と表記し、受信確認パケット１２がＮＡＣＫパケットの場合は、単に「ＮＡＣＫパケット１２ｂ」と表記する。
【０１５１】
（通信システムの処理の説明）
図２３は、通信システムの処理の第１０の例を示す図である。
図２４は、通信システムの処理の第１１の例を示す図である。
図２５は、通信システムの処理の第１２の例を示す図である。
図２６は、通信システムの処理の第１３の例を示す図である。
図２７は、通信システムの処理の第１４の例を示す図である。
図２８は、通信システムの処理の第１５の例を示す図である。
【０１５２】
図２３〜図２８の通信システム５０の処理について説明する。
なお、図２３〜図２８において、送信済データ保管部１０８と受信データ保管部２０９とにおけるシーケンス番号１５１「１〜４」のセットは既に削除されている。
また、図２３〜図２８において、送信済データ保管部１０８と受信データ保管部２０９とにおけるシーケンス番号１５１と空きエントリ数最大計算機１５４と空きエントリ数１５５と以外の図示は省略する。
【０１５３】
（図２３における通信システム５０の処理の説明）
最初に図２３における通信システム５０の処理を説明する。
まず、送信計算機１００の送信アプリケーション部１０３がアプリケーションデータ「Ｄ５」を生成する（図２３の（１））。そして、パケット送信部１０４は、通信パケット１１−５−０を生成し、受信計算機２００ａ〜ｃにマルチキャスト送信する（図２３の（２））。更に、パケット送信部１０４は、送信した通信パケット１１−５−０を送信済データ保管部１０８に記憶させる（図２３の（３））。
【０１５４】
ここで、受信計算機２００ａと受信計算機２００ｂとは、通信パケット１１−５−０を受信するが、受信計算機２００ｃは通信パケット１１−５−０を受信しない。
【０１５５】
受信計算機２００ａのパケット受信部２０７ａは、通信パケット１１−５−０を受信すると、アプリケーションデータ「Ｄ５」を抽出し（図２３の（４））、更に、通信パケット１１−５−０を受信データ保管部２０９ａに記憶させる（図２３の（５））。
同様に、受信計算機２００ｂのパケット受信部２０７ｂも、通信パケット１１−５−０を受信すると、アプリケーションデータ「Ｄ５」を抽出し（図２３の（６））、更に、通信パケット１１−５−０を受信データ保管部２０９ｂに記憶させる（図２３の（７））。
【０１５６】
そして、図２３に示すように、受信データ保管部２０９ａの空きエントリ数は「３」となり、受信データ保管部２０９ｂの空きエントリ数は「４」となり、受信データ保管部２０９ｃの空きエントリ数は「４」となる。
この場合、パケット受信部２０７ａは、受信確認シーケンス番号フィールド５１８に受信した通信パケット１１−５−０のシーケンス番号１５１「５」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ａの空きエントリ数「３」を格納したＡＣＫパケット１２ａ−５−ａ−０を生成し、送信計算機１００に送信する（図２３の（８））。
また、パケット受信部２０７ｂは、受信確認シーケンス番号フィールド５１８に受信した通信パケット１１−５−０のシーケンス番号１５１「５」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ｂの空きエントリ数「４」を格納したＡＣＫパケット１２ａ−５−ｂ−０を生成し、送信計算機１００に送信する（図２３の（９））。
【０１５７】
送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａ−５−ａ−０とＡＣＫパケット１２ａ−５−ｂ−０とを受信すると、両者の受信確認空きエントリ数フィールド５１９の値を比較する。そして、送信ＡＣＫ受信部１１０は、受信したＡＣＫパケット１２ａのうち、受信確認空きエントリ数フィールド５１９の値が最大のＡＣＫパケット１２ａを選択する。
ここでは、送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａ−５−ｂ−０を選択する。
【０１５８】
換言すると、送信ＡＣＫ受信部１１０は、受信確認空きエントリ数フィールド５１９の値に基づき、ＡＣＫパケット１２ａ（ＡＣＫパケット１２ａの送信元の計算機）を選択する。
送信ＡＣＫ受信部１１０は、受信確認空きエントリ数フィールド５１９の値が所定の条件（例えば、「３以上」など）となるＡＣＫパケット１２ａ（ＡＣＫパケット１２ａの送信元の計算機）を選択してもよい。
【０１５９】
なお、受信した複数のＡＣＫパケット１２ａのうち、受信確認空きエントリ数フィールド５１９の最大値が同じものが複数ある場合、送信ＡＣＫ受信部１１０は、最大値が同じ当該複数のＡＣＫパケット１２ａからランダムにＡＣＫパケット１２ａを選択してもよい。
また、送信ＡＣＫ受信部１１０は、最大値が同じ当該複数のＡＣＫパケット１２ａから所定の順序に基づいてＡＣＫパケット１２ａを選択してもよい。所定の順序とは、例えば、ＡＣＫパケット１２ａを受信した順序や、ＡＣＫパケット１２ａの送信元の受信計算機２００の識別子が所定の条件でソーティングされた順序などである。
また、送信ＡＣＫ受信部１１０は、最大値が同じ当該複数のＡＣＫパケット１２ａから、送信元の受信計算機２００が送信済データ保管部１０８の空きエントリ数最大計算機１５４に設定されていないＡＣＫパケット１２ａを選択してもよい。
【０１６０】
送信ＡＣＫ受信部１１０は、選択したＡＣＫパケット１２ａの送信元を送信済データ保管部１０８のシーケンス番号１５１「５」のセットの空きエントリ数最大計算機１５４に記憶させる。更に、送信ＡＣＫ受信部１１０は、選択したＡＣＫパケット１２ａの受信確認空きエントリ数フィールド５１９の値を送信済データ保管部１０８のシーケンス番号１５１「５」のセットの空きエントリ数１５５に記憶させる。
【０１６１】
（図２４における通信システム５０の処理の説明）
次に図２４における通信システム５０の処理を説明する。
ここで、送信済データ保管部１０８には、シーケンス番号１５１「５」のセットの空きエントリ数最大計算機１５４に「受信計算機２００ｂ」、空きエントリ数１５５に「４」が記憶されている。
【０１６２】
通信パケット１１−５−０が送信された後に、送信アプリケーション部１０３は、アプリケーションデータ「Ｄ６」を生成する（図２４の（１））。そして、パケット送信部１０４は、通信パケット１１−６−０を生成し、受信計算機２００ａ〜ｃにマルチキャスト送信する（図２４の（２））。更に、パケット送信部１０４は、送信した通信パケット１１−６−０を送信済データ保管部１０８に記憶させる（図２４の（３））。
【０１６３】
ここで、受信計算機２００ａと受信計算機２００ｂと受信計算機２００ｃとが、通信パケット１１−６−０を受信する。
パケット受信部２０７ａは、受信した通信パケット１１のシーケンス番号１５１が連続するので、通信パケット１１−６−０を受信すると、アプリケーションデータ「Ｄ６」を抽出し、受信アプリケーション部２０６ａに出力する（図２４の（４））。そして、パケット受信部２０７ａは、通信パケット１１−６−０を受信データ保管部２０９ａに記憶させる（図２４の（５））。
同様に、パケット受信部２０７ｂは、受信した通信パケット１１のシーケンス番号１５１が連続するので、通信パケット１１−６−０を受信すると、アプリケーションデータ「Ｄ６」を抽出し、受信アプリケーション部２０６ｂに出力する（図２４の（６））。そして、パケット受信部２０７ｂは、通信パケット１１−６−０を受信データ保管部２０９ｂに記憶させる（図２４の（７））。
一方、パケット受信部２０７ｃは、シーケンス番号１５１「５」の通信パケット１１を未受信なので、アプリケーションデータは抽出せず、通信パケット１１−６−０を受信データ保管部２０９ｃに記憶させる（図２４の（８））。
【０１６４】
（図２５における通信システム５０の処理の説明）
次に図２５における通信システム５０の処理を説明する。
通信パケット１１−６−０が各受信データ保管部２０９に記憶されたことにより、図２５に示すように、受信データ保管部２０９ａの空きエントリ数は「３」となり、受信データ保管部２０９ｂの空きエントリ数は「３」となり、受信データ保管部２０９ｃの空きエントリ数は「３」となる。
【０１６５】
パケット受信部２０７ａは、受信確認シーケンス番号フィールド５１８に受信した通信パケット１１−６−０のシーケンス番号１５１「６」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ａの空きエントリ数「２」を格納したＡＣＫパケット１２ａ−６−ａ−０を生成し、送信計算機１００に送信する（図２５の（１））。
パケット受信部２０７ｂは、受信確認シーケンス番号フィールド５１８に受信した通信パケット１１−６−０のシーケンス番号１５１「６」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ｂの空きエントリ数「３」を格納したＡＣＫパケット１２ａ−６−ｂ−０を生成し、送信計算機１００に送信する（図２５の（２））。
【０１６６】
そして、パケット受信部２０７ｃは、受信確認シーケンス番号フィールド５１８に受信した通信パケット１１−６−０のシーケンス番号１５１「６」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ｃの空きエントリ数「３」を格納したＡＣＫパケット１２ａ−６−ｃ−０を生成し、送信計算機１００に送信する（図２５の（３））。
更に、パケット受信部２０７ｃは、受信確認シーケンス番号フィールド５１８に未受信のシーケンス番号１５１「５」を格納し、受信確認空きエントリ数フィールド５１９に受信データ保管部２０９ｃの空きエントリ数「３」を格納したＮＡＣＫパケット１２ｂ−５−ｃ−０を生成し、送信計算機１００に送信する（図２５の（４））。
【０１６７】
送信ＡＣＫ受信部１１０は、３つのＡＣＫパケット１２ａを受信し、前述と同様に受信したＡＣＫパケット１２ａのうち、受信確認空きエントリ数フィールド５１９の値が最大のＡＣＫパケット１２ａを選択する。
ここでは、受信したＡＣＫパケット１２ａのうち、受信確認空きエントリ数フィールド５１９の値が最大の「３」であるＡＣＫパケット１２ａが２つ有る。ここで、送信ＡＣＫ受信部１１０は、送信済データ保管部１０８を参照し、前述の例のように、送信元の受信計算機２００が送信済データ保管部１０８の空きエントリ数最大計算機１５４に設定されていないＡＣＫパケット１２ａとして、ＡＣＫパケット１２ａ−６−ｃ−０を選択する。
これにより、通信パケット１１の再送処理の負荷が、各受信計算機２００に分散される。
【０１６８】
送信ＡＣＫ受信部１１０は、選択したＡＣＫパケット１２ａ−６−ｃ−０の送信元「受信計算機２００ｃ」を送信済データ保管部１０８のシーケンス番号１５１「６」のセットの空きエントリ数最大計算機１５４に記憶させる。更に、送信ＡＣＫ受信部１１０は、選択したＡＣＫパケット１２ａ−６−ｃ−０の受信確認空きエントリ数フィールド５１９の値「３」を送信済データ保管部１０８のシーケンス番号１５１「６」のセットの空きエントリ数１５５に記憶させる。
【０１６９】
（図２６における通信システム５０の処理の説明）
次に図２６における通信システム５０の処理を説明する。
送信ＡＣＫ受信部１１０は、受信計算機２００ｃからＮＡＣＫパケット１２ｂ−５−ｃ−０を受信したので、シーケンス番号１５１「５」の通信パケット１１の再送処理を送信パケット再送部１０５に指示する。
送信パケット再送部１０５は、送信済データ保管部１０８からシーケンス番号１５１「５」の通信パケット１１を入力し（図２６の（１））、実施の形態１と同様の処理を行なった通信パケット１１−５−１をマルチキャスト送信する（図２６の（２））。
あるいは、送信パケット再送部１０５は、実施の形態１で説明のように、送信済データ保管部１０８のうち、送信パケット削除フラグ１５３が「削除不可」であるセットの通信パケット１１をマルチキャスト送信してもよい。
【０１７０】
ここで、シーケンス番号１５１「５」のセットの空きエントリ数最大計算機１５４には、「受信計算機２００ｂ」が設定されているので、送信パケット再送部１０５は、通信パケット１１−５−１のＡＣＫ送信先フィールド５１２に「受信計算機２００ｂ」を設定する。
【０１７１】
パケット受信部２０７ａは、通信パケット１１−５−１を受信すると、受信した通信パケット１１−５−１を実施の形態１と同様に、受信データ保管部２０９ａに上書きで記憶させる（図２６の（３））。もしくは、通信パケット１１−５−１のＡＣＫ送信先フィールド５１２に自計算機が設定されていないので、実施の形態１で説明のように、パケット受信部２０７ａは、通信パケット１１−５−１を破棄してもよい。
【０１７２】
パケット受信部２０７ｂは、通信パケット１１−５−１を受信すると、通信パケット１１−５−１のＡＣＫ送信先フィールド５１２に自計算機が設定されているので、受信した通信パケット１１−５−１を受信データ保管部２０９ｂに上書きで記憶させる（図２６の（４））。
【０１７３】
（図２７における通信システム５０の処理の説明）
次に図２７における通信システム５０の処理を説明する。
パケット受信部２０７ｂは、ＡＣＫ送信先フィールド５１２に自計算機（受信計算機２００ｂ）が設定された通信パケット１１−５−１を受信すると、通信パケット１１の受信を通知するＡＣＫパケット１２ａ―５−ｂ−１をＡＣＫ送信先フィールド５１２が示す計算機ではなく、送信計算機１００に送信する（図２７の（１））。
送信ＡＣＫ受信部１１０は、ＡＣＫパケット１２ａ―５−ｂ−１を受信すると、実施の懈怠１と同様に、シーケンス番号１５１「５」のセットの通信パケット１１−５−１のＡＣＫ送信先フィールド５１２に示される計算機が、ＡＣＫパケット１２ａ−５−ｂ−１の送信元と同じか否かを判定する。
ここでは、通信パケット１１−５−１のＡＣＫ送信先フィールド５１２は図２６に示す通り「受信計算機２００ｂ」であり、ＡＣＫパケット１２ａ−５−ｂ−１の送信元「受信計算機２００ｂ」と同じである。
そこで、送信ＡＣＫ受信部１１０は、シーケンス番号１５１「５」のセットの送信パケット削除フラグ１５３を「削除可」に変更すると共に、再送計算機が決定したことを示す「決定」を決定フラグ１５６に設定する（図２７の（２）、なお送信パケット削除フラグ１５３と決定フラグ１５６との図示は省略）。
【０１７４】
そして、パケット送信部１０４は、次のシーケンス番号１５１「７」の通信パケット１１−７−０生成時に、削除可能シーケンス番号フィールド５１７にシーケンス番号１５１「５」を設定する（図２７の（３））。
【０１７５】
（図２８における通信システム５０の処理の説明）
そして、図２８における通信システム５０の処理を説明する。
なお、図２８において送信計算機１００の図示は省略する。
【０１７６】
受信パケット再送部２０５ｂは、受信データ保管部２０９ｂからシーケンス番号１５１「５」のセットの通信パケット１１を入力する（図２８の（１））。
そして、受信パケット再送部２０５ｂは、再送回数フィールド５１３に「２」を設定した通信パケット１１−５−２を生成し、受信計算機２００ａと受信計算機２００ｃとに送信する（図２８の（２））。
【０１７７】
パケット受信部２０７ａは、通信パケット１１−５−２を受信すると、受信データ保管部２０９ａに上書きで記憶させる（図２８の（３））。
また、パケット受信部２０７ｃは、通信パケット１１−５−２を受信すると、アプリケーションデータ「Ｄ５」と「Ｄ６」とを受信アプリケーション部２０６ｃに出力し（図２８の（４））、通信パケット１１−５−２を受信データ保管部２０９ｃに記憶させる（図２８の（５））。
そして、パケット受信部２０７は、ＡＣＫパケット１２ａ−５−ｃ−２を受信計算機２００ｂに送信する（図２８の（６））。
ここで、以降の処理については、説明を省略する。
【０１７８】
（実施の形態２の効果）
実施の形態２の通信システム５０は、実施の形態１の効果に加え、受信データ保管部２０９の空きエントリ数１５５の大きい受信計算機２００を再送計算機として選択することにより、通信パケット１１の蓄積に伴う受信データ保管部２０９の空きエントリの枯渇を防ぐことが出来る。
【０１７９】
最後に、実施の形態１〜２に示した送信計算機１００と受信計算機２００とのハードウェア構成例について説明する。
図２９は、実施の形態１〜２に示した送信計算機１００（もしくは受信計算機２００）のハードウェア資源の一例を示す図である。
なお、図２９の構成は、あくまでも送信計算機１００（もしくは受信計算機２００）の一例を示すものであり、送信計算機１００（もしくは受信計算機２００）のハードウェア構成は図２９に記載の構成に限らず、他の構成であってもよい。
【０１８０】
図２９において、送信計算機１００（もしくは受信計算機２００）は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
実施の形態１〜２で説明した送信計算機１００の記憶装置、受信計算機２００の記憶装置、送信済データ保管部１０８、受信データ保管部２０９は、ＲＡＭ９１４、磁気ディスク装置９２０等により実現される。
通信ボード９１５、キーボード９０２、マウス９０３、ＦＤＤ９０４などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１などは、出力装置の一例である。
【０１８１】
通信ボード９１５は、図１に示すネットワーク９００に接続されている。
【０１８２】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【０１８３】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【０１８４】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
送信計算機１００（もしくは受信計算機２００）の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【０１８５】
上記プログラム群９２３には、実施の形態１〜２の説明において「〜部」（「〜記憶部」以外、以下同様）として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【０１８６】
ファイル群９２４には、実施の形態１〜２の説明において、「〜の判断」、「〜の計算」、「〜の比較」、「〜の照合」、「〜の参照」、「〜の検索」、「〜の抽出」、「〜の検査」、「〜の生成」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の入力」、「〜の受信」、「〜の作成」、「〜の判定」、「〜の定義」、「〜の算出」、「〜の更新」等として説明している処理の結果を示す情報やデータや信号値や変数値やパラメータが、「ファイル」や「データベース」の各項目として記憶されている。
「ファイル」や「データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断・削除などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示・制御・判定・識別・検知・判別・選択・算出・導出・更新・作成・取得・通知・指示・判断・削除などのＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１〜２で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【０１８７】
また、実施の形態１〜２の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１〜２で説明したフローチャートに示すステップ、手順、処理により、本発明に係るサービス実行管理方法（ソフトウェア実行方法）を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１〜２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１〜２の「〜部」の手順や方法をコンピュータに実行させるものである。
【０１８８】
このように、実施の形態１〜２に示す送信計算機１００（もしくは受信計算機２００）は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【０１８９】
１１  通信パケット、１２  受信確認パケット、１２ａ  ＡＣＫパケット、１２ｂ  ＮＡＣＫパケット、５０  通信システム、１００  送信計算機、１０３  送信アプリケーション部、１０４  パケット送信部、１０５  送信パケット再送部、１０８  送信済データ保管部、１１０  送信ＡＣＫ受信部、１５１  シーケンス番号、１５３  送信パケット削除フラグ、１５４  空きエントリ数最大計算機、１５５  空きエントリ数、１５６  決定フラグ、２００  受信計算機、２０５  受信パケット再送部、２０６  受信アプリケーション部、２０７  パケット受信部、２０８  再送ＡＣＫ受信部、２０９  受信データ保管部、２５３  受信パケット削除フラグ、２５４  再送フラグ、５１２  ＡＣＫ送信先フィールド、５１３  再送回数フィールド、５１４  ＡＣＫ受信フラグフィールド、５１５  シーケンス番号フィールド、５１６  アプリケーションデータフィールド、５１７  削除可能シーケンス番号フィールド、５１８  受信確認シーケンス番号フィールド、５１９  受信確認空きエントリ数フィールド、９００  ネットワーク、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  コンパクトディスク装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  オペレーティングシステム、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2013197776.tif 000003
【図２】
2013197776.tif 000004
【図３】
2013197776.tif 000005
【図４】
2013197776.tif 000006
【図５】
2013197776.tif 000007
【図６】
2013197776.tif 000008
【図７】
2013197776.tif 000009
【図８】
2013197776.tif 000010
【図９】
2013197776.tif 000011
【図１０】
2013197776.tif 000012
【図１１】
2013197776.tif 000013
【図１２】
2013197776.tif 000014
【図１３】
2013197776.tif 000015
【図１４】
2013197776.tif 000016
【図１５】
2013197776.tif 000017
【図１６】
2013197776.tif 000018
【図１７】
2013197776.tif 000019
【図１８】
2013197776.tif 000020
【図１９】
2013197776.tif 000021
【図２０】
2013197776.tif 000022
【図２１】
2013197776.tif 000023
【図２２】
2013197776.tif 000024
【図２３】
2013197776.tif 000025
【図２４】
2013197776.tif 000026
【図２５】
2013197776.tif 000027
【図２６】
2013197776.tif 000028
【図２７】
2013197776.tif 000029
【図２８】
2013197776.tif 000030
【図２９】
2013197776.tif 000031