(57)【特許請求の範囲】
【請求項１】
第１のコンピュータ及び第２のコンピュータを含む通信制御システムであって、
前記第１のコンピュータは、
転送対象のデータと、前記転送対象のデータの特徴を示す第１の特徴データと、を前記第２のコンピュータに送信する送信部と、を含み、
前記第２のコンピュータは、
前記第１のコンピュータから受信したデータを記憶する記憶領域が確保された第２の記憶部と、
前記第１のコンピュータから受信したデータに基づいて、前記第１のコンピュータからのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記第１のコンピュータから通知される正常終了か異常終了かを示すステータスの受信を待たず前記記憶領域を解放する制御を行なう制御部と、
を含み、
前記第１の特徴データは前記転送対象のデータに基づいて算出された第１のハッシュ値であり、
前記第２の特徴データは前記記憶領域に記憶されたデータに基づいて算出された第２のハッシュ値である
ことを特徴とする通信制御システム。
【請求項２】
前記第２のコンピュータは、さらに、
前記第１の特徴データと前記第２の特徴データとが一致しない場合に、前記第１のコンピュータに、ファイル転送に失敗した旨の通知を行なう通知部、
を含むことを特徴とする請求項１に記載の通信制御システム。
【請求項３】
前記送信部は、さらに、
前記通知部から、前記通知を受信した場合に、前記転送対象のデータと、前記第１の特徴データと、を前記第２のコンピュータに再送する、
ことを特徴とする請求項２に記載の通信制御システム。
【請求項４】
前記第１の特徴データは、
前記転送対象のデータよりもデータサイズが小さい、
ことを特徴とする請求項１〜３のいずれか１項に記載の通信制御システム。
【請求項５】
前記第１の特徴データは、
前記転送対象のデータに基づく所定の演算により算出され、
前記第２の特徴データは、
前記記憶領域に記憶されたデータに基づく前記所定の演算により算出される、
ことを特徴とする請求項１〜４のいずれか１項に記載の通信制御システム。
【請求項６】
前記第２の特徴データは、
前記第１のコンピュータから、前記転送対象のデータの送信が終了した旨を示す情報を受信した場合に、受信したデータを記憶する前記記憶領域に記憶されたデータに基づいて算出される、
ことを特徴とする請求項１〜５のいずれか１項に記載の通信制御システム。
【請求項７】
前記第１の特徴データは、前記第２のコンピュータにおいて、前記第１のコンピュータからのデータ送信が終了したと判断されるよりも前に、前記第２のコンピュータに受信される、
ことを特徴とする請求項１〜６のいずれか１項に記載の通信制御システム。
【請求項８】
前記制御部は、
前記第１の特徴データと前記第２の特徴データとが一致すると、前記記憶領域に格納されたデータを他の記憶領域に格納した後、前記記憶領域の解放を行なう、
ことを特徴とする請求項１〜７のいずれか１項に記載の通信制御システム。
【請求項９】
送信元装置から送信された転送対象データと、前記転送対象データの特徴を示す第１の特徴データとを受信した場合に、受信した前記転送対象データを所定の記憶領域内に記憶する記憶部と、
前記送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記送信元装置から通知される正常終了か異常終了かを示すステータスの受信を待たず前記記憶領域を解放する制御を行なう制御部と、
を含み、
前記第１の特徴データは前記転送対象データに基づいて算出された第１のハッシュ値であり、
前記第２の特徴データは前記記憶領域に記憶されたデータに基づいて算出された第２のハッシュ値である
ことを特徴とする通信制御装置。
【請求項１０】
コンピュータに、
送信元装置から送信された転送対象データと、前記転送対象データの特徴を示す第１の特徴データとを受信した場合に、受信した前記転送対象データを所定の記憶領域内に記憶し、
前記送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記送信元装置から通知される正常終了か異常終了かを示すステータスの受信を待たず前記記憶領域を解放する制御を行なうことを実行させる通信制御方法であって、
前記第１の特徴データは前記転送対象データに基づいて算出された第１のハッシュ値であり、
前記第２の特徴データは前記記憶領域に記憶されたデータに基づいて算出された第２のハッシュ値である
ことを実行させることを特徴とする通信制御方法。
【請求項１１】
コンピュータに、
送信元装置から送信された転送対象データと、前記転送対象データの特徴を示す第１の特徴データとを受信した場合に、受信した前記転送対象データを所定の記憶領域内に記憶し、
前記送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記送信元装置から通知される正常終了か異常終了かを示すステータスの受信を待たず前記記憶領域を解放する制御を行なうことを実行させる通信制御プログラムであって、
前記第１の特徴データは前記転送対象データに基づいて算出された第１のハッシュ値であり、
前記第２の特徴データは前記記憶領域に記憶されたデータに基づいて算出された第２のハッシュ値である
ことを実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、方法、プログラムおよびシステムに関する。
【背景技術】
【０００２】
トランスポート層の通信プロトコルにＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）を用い、アプリケーション層の通信プロトコルにＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）を用いて行われるファイル転送においては、脱送が生じる可能性がある。脱送とは、送信側のコンピュータからファイルの一部分しか受信側に送信されず、受信側のコンピュータでは、その一部分がファイル全体であると判断してしまうことである。そのため、ファイル転送後に送信側と受信側とで正常終了したか否かのステータスを通知しあうことで脱送を検知する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０６−３０１６０８号公報
【特許文献２】特開２０００−１７２５３９号公報
【特許文献３】特開平０２−１５７９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
受信側のコンピュータは、データ転送処理によりファイルを受信した後に、受信したファイルをクローズし、受信したファイルを格納していたバッファを解放する。送信側コンピュータから異常終了のステータスが通知された場合には、受信側コンピュータは、クローズしたファイルを破棄する。ここで、受信したファイルをクローズする前に異常終了を示すステータス通知を受信すると、受信側コンピュータは、ファイルのクローズを行なうまでもなく、バッファを解放できる。送信側コンピュータからデータ転送処理が終了するとともにステータス通知が送信されたとしても、例えば遅延などにより、異常終了を示すステータス通知が、ファイルのクローズ処理が行なわれた後に受信側コンピュータに届くこともある。ファイルのクローズ処理が行なわれている間は、バッファは、受信したデータを格納しておくために確保されたままである。
【０００５】
本発明の一側面において、ファイル送信側のコンピュータにエラーが生じた場合に、受信側のコンピュータで、受信したファイルを格納するバッファが確保され続けることを抑制することを目的とする。
【課題を解決するための手段】
【０００６】
本願の通信制御システムは、第１のコンピュータ及び第２のコンピュータを含み、前記第１のコンピュータは、転送対象のデータと、前記転送対象のデータの特徴を示す第１の特徴データと、を前記第２のコンピュータに送信する送信部と、を含み、前記第２のコンピュータは、前記第１のコンピュータから受信したデータを記憶する記憶領域が確保された第２の記憶部と、前記第１のコンピュータから受信したデータに基づいて前記第１のコンピュータからのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう制御部と、を含む。
【０００７】
本願の通信制御装置は、データと、前記データの特徴を示す第１の特徴データと、受信した場合に、受信した前記データを所定の記憶領域内に記憶する記憶部と、前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了した旨の通知の受信に応じてと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう制御部と、を含む。
【０００８】
本願の通信制御方法では、コンピュータに、データと、前記データの特徴を示す第１の特徴データと、受信した場合に、受信した前記データを所定の記憶領域内に記憶し、前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう、ことを実行させる。
【０００９】
本願の通信制御プログラムは、コンピュータに、データと、前記データの特徴を示す第１の特徴データと、受信した場合に、受信した前記データを所定の記憶領域内に記憶し、前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう、ことを実行させる。
【発明の効果】
【００１０】
本発明の一態様によって、ファイル送信側のコンピュータにエラーが生じた場合に、受信側のコンピュータで、受信したファイルを格納するバッファが確保され続けることを抑制する。
【図面の簡単な説明】
【００１１】
【図１】図１は、ファイル転送処理のシーケンス図を示す。
【図２】図２は、ＴＣＰに基づくシーケンス図を示す。
【図３】図３は、送信側と受信側のバッファメモリの関係を示す。
【図４】図４は、本実施形態におけるシステム１の構成例を示す。
【図５】図５は、送信側コンピュータ２のソフトウェア構成例を示す。
【図６】図６は、送信側コンピュータ２のハードウェア構成例を示す。
【図７】図７は、ステータス通知のデータ構造例を示す。
【図８】図８は、ファイル転送の成否判定のフローチャートを示す。
【図９】図９は、ファイル転送の成否判定のフローチャートを示す。
【発明を実施するための形態】
【００１２】
あるコンピュータ（送信側）から他のコンピュータ（受信側）にファイル転送を行なう場合には、例えば、アプリケーション層のプロトコルにＦＴＰなどを用いてファイル転送処理が行われる。さらに、ＦＴＰ等を用いたファイル転送において、トランスポート層のプロトコルに、例えば、ＴＣＰなどのプロトコルが用いられることがある。
【００１３】
図１は、ファイル転送処理の例を示す。ここでは、ストリームモードでファイルをアップロードする場合を例示する。
【００１４】
まず、送信側コンピュータと受信側コンピュータとで制御コネクションを確立する（Ｃ１）。Ｃ１において、制御コネクションは３ウェイ・ハンドシェイクの手順に従って確立される。受信側コンピュータへの認証の手順については説明を割愛する。送信側コンピュータから送信ファイルのデータタイプを指定するコマンド（ＴＹＰＥ）が送信され（Ｃ２）、受信側コンピュータからコマンドが正常に受け入れられた旨のレスポンスコード（２００）が返送される（Ｃ３）。さらに送信側コンピュータはＩＰアドレス及びポートを指定するコマンド（ＰＯＲＴコマンド）を送信し（Ｃ４）、そのポートを待ち受け状態にする。ポート（またはポート番号）とは、コンピュータがデータ通信を行う際に通信先のプログラムを特定するための番号のことである。受信側コンピュータは、ＰＯＲＴコマンドを受信すると、そのコマンドが正常に受け入れられた旨のレスポンスコード（２００）を返送する（Ｃ５）。さらに、送信側コンピュータは、ＳＴＯＲコマンドを用いて、受信側コンピュータに送信するファイルの情報を送信する（Ｃ６）。受信側コンピュータは、ＳＴＯＲコマンドを受信すると、データコネクションを確立する要求をＰＯＲＴコマンドで指定されたポートに対して行なう。データコネクションを用いたデータ転送（Ｃ８〜Ｃ１５）は、例えば、ＴＣＰの手順に従って行なわれる。
【００１５】
図２はＴＣＰに基づくデータ転送のシーケンスを示す。送信側コンピュータでは、図２に示す手順で関数が呼び出される（ｆ０，ｆ３，ｆ６，ｆ７）。また、受信側コンピュータでも図２に示す手順で関数が呼び出される（ｆ１，ｆ２，ｆ４，ｆ５，ｆ８，ｆ９）。手順を追って説明すると、まず、送信側コンピュータに、アプリケーションプログラムに基づきファイル転送が要求された場合に、ｓｏｃｋｅｔ関数が呼び出され、送信側コンピュータにソケットが生成される（ｆ０）。ソケットは、通信を行うアプリケーションプログラムがＴＣＰを扱うための仮想的なインターフェースである。受信側のコンピュータでも、ｓｏｃｋｅｔ関数が呼び出され、ｓｏｃｋｅｔ関数により生成されたソケットが待機状態にある（ｆ１）。次に、受信側コンピュータでｃｏｎｎｅｃｔ関数が呼び出され、３ウェイ・ハンドシェイクの手順に従って送信側コンピュータと受信側コンピュータとで、データコネクションが確立される（ｆ２）。その後、送信側コンピュータから受信側コンピュータに、送信対象のファイルに含まれるデータが送信される。
【００１６】
データの送信は、それぞれのコンピュータの下記の制御により行われる。まず、送信側コンピュータにおいて、ｗｒｉｔｅ関数が呼び出される（ｓｅｎｄ関数でもよい）。すると、送信側コンピュータのアプリケーションプログラムに割り当てられたバッファから送信バッファにデータがコピーされ、送信バッファにコピーされたデータが受信側コンピュータに送信される（ｆ３）。受信側コンピュータは、受信したデータを受信バッファに書き込む。受信側コンピュータは、ｒｅａｄ関数（ｒｅｃｖ関数でもよい）を呼び出しており、受信バッファにデータが書き込まれると、受信バッファからデータを読みだして、受信側コンピュータで動作するアプリケーションプログラムのバッファに書込む（ｆ４）。ｒｅａｄ関数が実行されると、受信側コンピュータは、ａｃｋを送信側コンピュータに送信する。すなわち、ｗｒｉｔｅ関数によりａｃｋメッセージを送信バッファに書き込む（ｆ５）。送信側コンピュータは、受信側コンピュータから送信されたａｃｋを受信バッファに書込む。送信側コンピュータは、ｒｅａｄ関数を呼び出しており、受信バッファに書き込まれたａｃｋを読みだす（ｆ６）。ｒｅａｄ関数によりａｃｋを読みだすと、送信側コンピュータは、送信バッファに書き込まれている送信済みデータを削除し、再度ｗｒｉｔｅ関数を呼び出し、アプリケーションプログラムのバッファから送信バッファにデータをコピーする。送信側コンピュータと受信側コンピュータとが、上記の処理を繰り返し、送信対象のファイルに含まれるデータの転送を行なう。
【００１７】
アプリケーションプログラムのバッファから読み出すデータが無くなった場合に、送信側コンピュータでは、ｃｌｏｓｅ関数（ｓｈｕｔｄｏｗｎ関数でもよい）を呼び出し、受信側コンピュータにデータ転送を終了する旨を示す情報（ヘッダ中のＦＩＮフラグが立ったメッセージ）を送信する（ｆ７）。受信側コンピュータではＦＩＮ含むメッセージを受信すると、０バイトのデータを受信バッファに書き込む。受信側コンピュータではｒｅａｄ関数を呼び出しており、０バイトデータが読み出される（ｆ８）と、受信側コンピュータでもｃｌｏｓｅ関数が呼び出される（ｆ９）。受信側コンピュータでｃｌｏｓｅ関数が実行されると、受信側コンピュータからさらにＦＩＮを含むメッセージが送信側コンピュータに送信され、送信側コンピュータからａｃｋが返される。
【００１８】
図２に示すＴＣＰに基づくファイル転送が行われると、ＦＴＰの手順に従って受信側コンピュータから送信側コンピュータに、データ転送が終了した旨のメッセージ（レスポンスコード２２６：転送完了を示す）が送信される（Ｃ１６）。ＦＴＰの手順においては、データ転送が終了した旨のメッセージ（レスポンスコード２２６：転送完了を示す）が通信された後に、送信側コンピュータから通信の終了を示すコマンド（ＱＵＩＴ）が送信される（Ｃ１９）。さらに、受信側コンピュータはＱＵＩＴコマンドを受信すると、通信の終了を了解した旨のレスポンスコード（２２１：ｂｙｅ）を返送する（Ｃ２０）。
【００１９】
図２に示すように、ストリームモードでファイルをアップロードすると、受信側は、受信するファイルの終わりを、接続が閉じたか否か（０バイトデータの読み出しか否か）で判断することになる。ファイル転送の接続は、例えば、送信側コンピュータでＣｌｏｓｅ関数やＳｈｕｔｄｏｗｎ関数が実行されることで閉じられる。このようなファイルアップロードでは、例えば、送信側コンピュータで動作するアプリケーションプログラムのバッファへのデータ書き込みの途中でエラーにより、送信対象のファイルの一部しか書き込まれないことがある。すると、アプリケーションプログラムのバッファに書き込まれた一部のデータが、受信側コンピュータに送信される。さらに、送信側コンピュータにおいてＣｌｏｓｅ関数が呼び出されて接続が閉じられると、受信側コンピュータにおいては、受信したデータが送信対象のファイルの全てであると判断し、正常終了してしまう。
【００２０】
例えば図３に示すように、送信側コンピュータは、アプリケーションプログラムのバッファＢ１に格納されたファイル（太線の枠内）のデータをｗｒｉｔｅ関数の実行により送信バッファＢ３に書き込む。しかしながら、エラーにより、ファイルの一部（斜線部分）しか送信バッファＢ３への書き込みが行なえなかった場合には、受信側コンピュータのアプリケーションプログラムのバッファＢ２に書き込まれるデータは、バッファＢ１から読み出されたファイルの一部（斜線部分）のみである。
【００２１】
受信側コンピュータにデータ転送処理が正常終了したと判断されると、受信側コンピュータのアプリケーションプログラムに基づく処理に、通信が途中で打ち切られたことにより一部欠落しているファイルが用いられてしまう。さらに、送信側コンピュータは、エラーの発生に応じて、ファイル転送を要求したアプリケーションプログラムによりファイルの再送要求が行なわれた場合には、ファイルの再送処理を行なう。これにより、受信側コンピュータが、多重で受信したファイルのそれぞれを用いて多重処理を行なってしまう危険性がある。
【００２２】
これに対して、例えば、通信の手順の追加によるＦＴＰの拡張が行なわれる。例えば、ファイル転送が正常終了したか（もしくは、正常終了したと判断したか否か）否かを示すステータスを、送信側コンピュータと受信側コンピュータとで互いに通知する手順（図１に示すＣ１７，ｃ１８）が追加される。この追加手順により、送信側コンピュータが異常終了であると判断しているにも関わらず、受信側コンピュータが正常終了と判断して、受信したデータを用いて処理を行なってしまう危険性が回避される。
【００２３】
さらに、データ転送後のファイルクローズにおいてエラーが生じる可能性もあるが、ステータス通知（図１に示すＣ１７，Ｃ１８）をファイルクローズの後に行うことより、通信相手に発生したファイルクローズのエラーも検知される。
【００２４】
例えば、送信側コンピュータの処理が正常終了した旨のステータス情報が、送信側コンピュータから受信側コンピュータに通知されれば、受信側コンピュータは、上記の危険性が回避されていることを確認できる。また、例えば、送信側コンピュータの処理が異常終了した旨のステータス情報が、送信側コンピュータから受信側コンピュータに通知されると、受信側コンピュータは、上記の危険性があることを確認できる。逆に、例えば、受信側コンピュータの処理が正常終了した旨のステータス情報が、受信側コンピュータから送信側コンピュータに通知されると、送信側コンピュータは、ファイルを再送する必要がないことを確認できる。また、例えば、受信側コンピュータの処理が異常終了した旨のステータス情報が、受信側コンピュータから送信側コンピュータに通知されると、送信側コンピュータは、ファイルの再送が必要であることを確認できる。
【００２５】
しかしながら、例えば、ステータス情報の通知自体が遅延すると、ファイル転送処理が正常終了したか否かの確認がとれないので、送信側コンピュータも受信側コンピュータもファイル転送のトランザクションを終了できなくなってしまう。遅延によりステータス通知があまりにも長い期間届かない場合には、例えば、ステータス情報の送信を行なってから所定の時間経過するまでにステータスの通知を再送する方法も考えられる。しかし、その場合には、さらに所定の時間経過するまでファイル転送のトランザクションを終了できなくなってしまう。その場合には、実質的に処理が終わっているにも関わらず、受信側コンピュータでアプリケーションプログラムに基づいて受信したファイルを処理することはできない。さらには、ファイル転送のためにアプリケーションに割り当てられた確保されたメモリ領域（例えば、図３に示すＢ２）を解放することができない。
【００２６】
さらに、例えば、送信側コンピュータが異常終了のステータス通知を受信側に送信する場合には、結果的に受信側コンピュータはアプリケーションプログラムのバッファに格納したファイルを破棄することになる。しかし、受信側コンピュータは、異常終了のステータス通知を受信するまでは、ファイル転送処理が成功したか否かの判断ができないため、アプリケーションプログラムのバッファに格納したファイルを破棄することができない。さらに、受信側コンピュータは、送信側コンピュータから送信される異常終了のステータス通知が遅延した場合には、遅延した期間においてもアプリケーションプログラムのバッファに格納したファイルを破棄することができない。
【００２７】
そこで、例えば、受信側コンピュータは、ファイルに含まれるデータの特徴を示す情報を、ファイルに含まれるデータが送信側コンピュータから受信側コンピュータに転送されきるまでに、ファイル転送処理と並行して送信側コンピュータから受信し（図１に示すＣ２１）、さらに、受信したファイルの特徴を示す情報を算出し、特徴を示す情報同士の比較を行なう。比較の結果、特徴を示す情報が異なっている場合には、脱送の可能性があるため、受信側コンピュータは、アプリケーションプログラムのバッファの解放を行なう。例えば、さらに、受信側コンピュータは、異常終了のステータスを送信側コンピュータに送信する（図１に示すＣ２２）。これにより、脱送などによって、転送されたファイルが送信対象のファイルと異なってしまった場合に、早期に受信側コンピュータの負荷を軽減（メモリ領域を解放）できる。特に、異常終了のステータス通知が遅延することにより、受信側コンピュータのメモリ領域が確保され続けることが回避される。ちなみに、送信ファイルの特徴を示す情報は、例えば、ファイルサイズや、送信ファイルを引数として所定のハッシュ関数に代入して得られたハッシュ値などである。
【００２８】
ステータスの通知と、ファイルの特徴量の比較とを併用する方法もある。送信側コンピュータから送信されたステータスの通知が遅延した場合に、送信側コンピュータは、ファイルの特徴量が一致している場合には、正常終了と判断し、ステータスの通知の再送を抑制してもよい。これにより、ステータスの再送により、さらに所定の待ち時間が発生することが抑制される。
【００２９】
特に、複数のクライアントコンピュータからサーバコンピュータにファイルがアップロードされる形態においては、サーバコンピュータに負荷が集中するため、あるクライアントコンピュータとの通信にメモリを確保し続けることにより、他のクライアントコンピュータとの通信を遅らせる原因にもなり得る。そのため、バッファメモリを解放することによって、サーバコンピュータは、解放されたリソースを他の通信に用いることができる。
【００３０】
ファイル転送の成否について、例えば、ファイルＦそのものを多重で送信し、受信側コンピュータが、多重で受信したファイルＦ同士が同一か否かによって判定することも考えられる。その一方で、バッファ内のデータに基づくハッシュ値又はデータサイズ値を送信することで、ファイル転送の成否判定のための通信量が抑制され、ＦＴＰにおいて制御コネクションに割り当てられる程度の細い帯域でも対応できる。そのため、制御コネクションによりファイル転送の成否判定のための通信を行なうことによって、データコネクションの帯域を大幅に削減する必要はない。
【００３１】
図４は、本実施形態における通信システムの構成例を示す。通信システム１は、送信側コンピュータ２及び受信側コンピュータ３を含み、送信側コンピュータ２と受信側コンピュータ３とで互いに通信を行なう。送信側コンピュータ２は通信部１１、処理部１２及び記憶部１３を含み、受信側コンピュータ３は、通信部１４、処理部１５及び記憶部１６を含む。処理部１２はアプリ処理部１２１及び通信処理部１２２を含み、処理部１５はアプリ処理部１５１及び通信処理部１５２を含む。また、図４においては、送信側コンピュータ２及び受信側コンピュータ３が１台ずつ示されているが、これに台数を限定するものではない。例えば、送信側コンピュータ２がクライアントであって、受信側コンピュータ３がサーバであるとすると、サーバにデータを送信するクライアントが複数存在してもよいし、クライアントから送信されたデータを複数のサーバのいずれかが受信してもよい。また、通信システム１は、中継装置４、５及びネットワーク６を有する。
【００３２】
通信部１１は、処理部１２の制御により他の装置との通信処理を行なう。すなわち、処理部１２の制御により記憶部１３からデータを読み出して指示された他の装置に送信し、データを受信した場合に、受信したデータを処理部１２に送る。処理部１２は、図５に示すプログラムに従って、通信部１１及び記憶部１３の制御、並びに演算処理を行なう。記憶部１３は、処理の指示に応じてデータの書き込み又は読み出しを行なう。アプリ処理部１２１は、アプリケーションプログラム（例えば、図５に示すアプリケーションプログラム２３および制御プログラム２４）に基づく処理を行なう。通信処理部１２２は、アプリ処理部１２１から通信を要求された場合に、通信制御のプログラム（例えば、図５に示すソケットＡＰＩ２２ｃ、プロトコルスタック２２ｂ及びデバイスドライバなど）に基づいて、演算及び通信部１１の制御を行なう。アプリ処理部１２１及び通信処理部１２２が行なう処理については後述する。
【００３３】
受信側コンピュータ３も送信側コンピュータ２の通信部１１、処理部１２及び記憶部１６の機能を有する。通信部１４は通信部１２と同様の処理を行ない、処理部１５は処理部１２と同様の処理を行ない、記憶部１６は記憶部１３と同様の処理を行なう。
【００３４】
アプリ処理部１２１及び１５１並びに通信処理部１２２及び１５２による通信処理について、さらに説明する。
【００３５】
アプリ処理部１２１は、上述の通り、図５に示すアプリケーションプログラム２３および制御プログラム２４に基づく処理を行なう。例えば、アプリケーションプログラム２３に基づいてファイルＦの転送が要求されると、アプリ処理部１２１は、転送先との制御コネクションの確立を通信処理部１２２に要求する。アプリ処理部１２１は、記憶部１３にバッファＢ１を設け、送信対象であるファイルＦをバッファＢ１に書き込む。そして、アプリ処理部１２１は、図２に示す手順で通信処理部１２２に処理を実行させる。具体的には、アプリ処理部１２１は、ｓｏｃｋｅｔ関数、ｃｏｎｎｅｃｔ関数、ｗｒｉｔｅ関数、ｒｅａｄ関数、ｃｌｏｓｅ関数などを図２に示す順序で呼び出す。通信処理部１２２は、アプリ処理部１２１から呼び出された各々の関数に基づいて処理を行なう。
【００３６】
アプリ処理部１５１は、通信処理部１２２でｃｏｎｎｅｃｔ関数が実行されたことにより、通信処理部１５２がデータコネクションを確立した場合に、図２に示す手順で関数を呼び出す。さらに、アプリ処理部１５１は、受信したデータを格納するバッファＢ２を記憶部１６に設ける。具体的に、ｒｅａｄ関数、ｗｒｉｔｅ関数及びｃｌｏｓｅ関数などが呼び出される。通信処理部１５２は、アプリ処理部１５１から呼び出された各々の関数に基づいて処理を行なう。通信処理部１５２は、ｒｅａｄ関数を実行して、受信バッファに格納されたデータを読み出すと、読み出したデータをバッファＢ２に格納する。
【００３７】
上述のアプリ処理部１２１及び１５１、並びに通信処理部１２２及び１５２の処理により、送信側コンピュータ２のバッファＢ１に格納されたファイルＦが、受信側コンピュータ３のバッファＢ２に転送される。
【００３８】
アプリ処理部１２１は、バッファＢ１に送信対象のファイルＦを読み出すと、さらに、ファイルＦに含まれるデータに基づいてファイルＦの特徴を示すデータＤを生成する。このデータＤは、例えば、所定のハッシュ関数にファイルＦに含まれるデータを代入して得られるハッシュ値や、ファイルＦのサイズを示すデータなどである。さらに、アプリ処理部１２１は、上述の通りファイルＦの転送処理を行なうとともに、例えば制御コネクションを用いて、受信側コンピュータ３（アプリ処理部１５１）にデータＤ及びファイルＦの識別情報（例えば、ファイル名など）を送信する。
【００３９】
一方、アプリ処理部１５１は、データＤ及びファイルＦの識別情報を送信側コンピュータ２から受信すると、記憶部１６に記憶する。また、通信処理部１５２は、ｒｅａｄ関数を実行した結果、０バイトのデータ読み出しが行なわれた場合（図２に示すｆ８）に、アプリ処理部１２１にファイルＦの転送終了を通知する。ＴＣＰにおいては、ＦＩＮを含むデータを受信すると、受信バッファに０バイトのデータが格納された状態となり、そこにｒｅａｄ関数により０バイトのデータ読み出しが行なわれた場合に、送信側から送信対象の全てのデータが届いたことが検知される。アプリ処理部１５１は、通信処理部１５２からファイルＦの転送終了を通知されると、バッファＢ２に格納されたデータに基づいて、そのデータの特徴を示すデータＤ´を算出する。このデータＤ´は、データＤと同様の方法で算出される。例えば、バッファＢ２に格納されたデータを所定のハッシュ関数に代入して得られたハッシュ値や、バッファＢ２に格納されたデータのサイズを示すデータなどである。さらに、アプリ処理部１５１は、記憶部１６に記憶したデータＤを読み出して、算出したデータＤ´と合致するか否か判定する。判定の結果、合致しない場合には、バッファＢ２を解放し、データＤとデータＤ´とが合致しない旨を送信側コンピュータ２（アプリ処理部１２１）に、例えば制御コネクションを介して通知する。
【００４０】
さらに、アプリ処理部１２１及び１５１は、ファイル転送が正常終了されたか否かを示す情報（ステータス）を、お互いに通知する。この通知は、例えば、制御コネクションを介して行なわれる。
【００４１】
図５は、通信システム１に含まれる送信側コンピュータ２のソフトウェア構成例を示す。受信側コンピュータ３も同様のソフトウェア構成を有する。ハードウェア２１（図６参照）は、ＯＳ２２（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）に示される手順に従って動作する。ネットワークデバイス２１ａ（通信カードなど）はネットワークデバイス２１ａのデバイスドライバ２２ａ（通信カードドライバなど）に示される手順に従って動作する。デバイスドライバ２２ａは、プロトコルスタック２２ｂ（トランスポートプロトコル・ソフトウェア。例えば、ＴＣＰ／ＩＰなどのプロトコルについてのプロトコルスタック）に示される手順に従って、ネットワークデバイス２１ａの動作制御の手順を示す。プロトコルスタック２２ｂは、プロトコルに定められた処理をネットワークデバイスに処理させる手順を示す。ソケットＡＰＩ２２ｃ（アプリケーション・トランスポート層インターフェース）は、アプリケーションプログラム２３（もしくは制御ミドルウェア２４）において、どのようにプロトコルスタックの機能が用いられるかが定められた関数群である。制御ミドルウェア２４は、アプリケーションプログラム２３に用いられる通信の手順を示す。この手順は、例えば、アプリケーションプログラム２３が用いるファイルの転送などの通信においては、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などのプロトコルに基づく手順である。制御プログラム２４は、アプリケーションプログラム２３に含まれてもよい。
【００４２】
図６は、システム１に含まれる送信側コンピュータ２のハードウェア構成例を示す。受信側コンピュータ３も同様のハードウェア構成を有する（但し、受信側コンピュータ３に含まれる通信Ｉ／Ｆは中継装置５に接続される）。送信側コンピュータ２は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記録媒体３０５、通信インターフェース（Ｉ／Ｆ）３０６（図５に示すネットワークデバイス２２ａ）、入力インターフェース（Ｉ／Ｆ）３０７、出力インターフェース（Ｉ／Ｆ）３０８などを含む。それぞれのハードウェアはバス３０９を介して接続している。通信Ｉ／Ｆ３０６は中継装置４を介して通信を行なうＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）などの装置である。入力インターフェース３０７は、入力装置３１０と接続されており、入力装置３１０から受信した入力信号をプロセッサ３０１に伝達する。出力インターフェース３０８は、出力装置３１１と接続されており、出力装置３１１に、プロセッサ３０１の指示に応じた出力を実行させる。
【００４３】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭ以外にもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記録媒体３０５に記録された情報の読み出しと書き込みとの少なくともいずれか一方を行なう装置である。記録媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記録媒体３０５は、例えば、ハードディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記録媒体である。また、例えば、送信側コンピュータ２は、複数種類の記録媒体それぞれについて、ドライブ装置３０４及び記録媒体３０５を設ける。
【００４４】
入力装置３１０は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードや送信側コンピュータ２の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力装置は、送信側コンピュータ２の制御に応じて情報を出力する装置である。出力装置は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力装置３１０及び出力装置３１１として用いられる。
【００４５】
プロセッサ３０１は、ＲＯＭ３０３や記録媒体３０５に記憶されたプログラム（図４参照）をＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って処理部１１の処理を行なう。その際に、ＲＡＭ３０２はプロセッサのワークエリアとして用いられ、記憶部１３の機能が実現される。アプリ処理部１２１の機能は、プロセッサ３０１がアプリケーションプログラム２３又は制御プログラム２４の手順に従って処理を行なうことにより実現される。通信処理部１２２の機能は、プロセッサ３０１が、ソケットＡＰＩ２２ｃ、プロトコルスタック２２ｂ及びデバイスドライバ２２ａに示される手順に従って処理を行なうことにより実現される。
【００４６】
受信側コンピュータ３のソフトウェア構成及びハードウェア構成は、図５及び図６に示す送信側コンピュータ２のソフトウェア構成及びハードウェア構成と同等である。受信側コンピュータ３に含まれる通信部１４、処理部１５、記憶部１６、アプリ処理部１５１及び通信処理部１５２の機能も、図６に示すハードウェアが図５に示すプログラムを、送信側コンピュータ２と同様に実行することにより実現される。
【００４７】
送信側コンピュータ２及び３の上述の処理により、ファイル送信側のコンピュータにエラーが生じた場合に、受信側のコンピュータで、受信したファイルを格納するバッファが確保され続けることが抑制される。
【００４８】
図７は、ステータス通知のデータ構造例を示す。ステータス通知は、例えば、メッセージ種別の識別子、業務番号、リプライコードおよび診断情報などを含む。識別子は、例えば、ステータスの通知であることを識別させる情報である。業務番号は、例えば、制御コネクションを確立する際の認証においてＵＳＥＲコマンド（不図示）で指定された情報などが含まれる。リプライコードは、例えば、ファイル転送が正常終了したか否かを示す情報、一時的なエラーであるか永久的なエラーであるかを示す情報、及び制御コネクションやデータコネクションに関するエラーであるか、ユーザ認証に関するエラーであるか、ファイルに関するエラーであるか、それ以外のエラーであるかを示す情報を含む。診断情報は、さらに詳細な情報を送信する場合に用いられる。診断情報は、転送されるファイルの特徴量を示す情報であり、例えば、誤り識別子、長さ、種別及び詳細情報などの少なくとも１つを含む。詳細情報は、エラーの原因に関する情報が含まれる。システム障害が発生した際の対応などに用いられる。誤り識別子は、詳細情報の誤り識別子を示し、長さは、詳細情報のデータサイズを示し、診断情報に含まれる種別は、詳細情報のデータタイプを示す。この形式のステータス通知を互いに送受信することで、送信側コンピュータ２及び３は、通信相手がデータ転送を正常終了したと判断しているか否かを判断可能となる。
【００４９】
さらに、以下にファイル転送の成否判定について説明する。図８は、送信側送信側コンピュータ２におけるファイル転送の成否判定のフローを示す。まず、アプリ処理部１２１は、バッファＢ１に送信対象のファイルが格納される（Ｓ１００）と、バッファＢ１に格納されたデータに基づいて、データＤを算出する（Ｓ１０１）。データＤとは、例えば、バッファＢ１に格納されたデータを所定のハッシュ関数に代入して得られたハッシュ値や、バッファＢ１に格納されたデータのサイズを示す情報などである。さらにアプリ処理部１２１は、ファイル送信先のコンピュータに、Ｓ１０１で算出したデータＤを送信する（Ｓ１０２）。Ｓ１０２の処理後、受信側コンピュータ３から異常終了を示すステータス通知を受信したか否かを判定する（Ｓ１０３）。Ｓ１０３の判定は、アプリ処理部１２１が受信側コンピュータ３からデータＤ´を受信し、受信したデータＤ´とＳ１０２で算出したデータＤとが合致しない場合に、ＹＥＳと判定するようにしてもよい。受信側コンピュータ３から異常終了を受信した場合（Ｓ１０３：ＹＥＳ）には、後述のＳ１０９の処理を行なう。受信側コンピュータ３からデータコネクションを閉じるまでにステータス通知を受信しないか、正常終了を示すステータス通知を受信した場合（Ｓ１０３：ＮＯ）には、アプリ処理部１２１は、データコネクションが閉じられたか否かを判定する（Ｓ１０４）。データコネクションが閉じられていない場合（Ｓ１０４：ＮＯ）には、アプリ処理部１２１は、再度Ｓ１０４の判定を行なう。データコネクションが閉じられている場合（Ｓ１０４：ＹＥＳ）には、アプリ処理部１２１は、ステータスの通知を受信側コンピュータ３に対して行なう（Ｓ１０５）。Ｓ１０５で送信されるステータスの通知は、データコネクションを閉じられた段階でファイル転送処理が正常に行なわれた否かを示す。例えば、バッファＢ１に格納されたデータが送信バッファに格納されないなどのエラーが生じた場合には、アプリ処理部１２１は、異常終了を示すステータス通知を送信する。Ｓ１０５の処理後、受信側コンピュータ３からステータス通知を受信する（Ｓ１０６）と、アプリ処理部１２１は、Ｓ１０６で受信したステータス通知が正常終了を示すか否かを判定する（Ｓ１０７）。Ｓ１０６で受信したステータス通知が正常終了を示す場合（Ｓ１０７：ＹＥＳ）は、アプリ処理部１２１は、アプリケーションプログラム２３のファイル転送要求に対して、正常終了の返答を行なう（Ｓ１０８）。Ｓ１０６で受信したステータス通知が正常終了を示さない（異常終了を示す）場合（Ｓ１０７：ＮＯ）にはＳ１０９の処理を行なう。Ｓ１０９では、アプリ処理部１２１は、アプリケーションプログラム２３のファイル転送要求に対して、異常終了の返答を行なう（Ｓ１０９）。Ｓ１０８又はＳ１０９の処理を行なうと、アプリ処理部１２１は、ファイル転送の成否判定を終了する（Ｓ１１０）。
【００５０】
図９は、受信側受信側コンピュータ３におけるファイル転送の成否判定のフローを示す。送信側送信側コンピュータ２からＳＴＯＲコマンドを受け付けると、アプリ処理部１５１は、ファイル転送の成否判定処理を開始する（Ｓ２００）。まず、送信側送信側コンピュータ２で算出されたデータＤを受信する（Ｓ２０１）。その後、アプリ処理部１５１は、通信処理部１５２により実行されるｒｅａｄ関数の結果０バイトのデータが読み出されたか否かを判定する（Ｓ２０２）。Ｓ２０２の結果、０バイトのデータが読み出されていない場合（Ｓ２０２：ＮＯ）には、さらに、Ｓ２０２の処理が行なわれる。Ｓ２０２において０バイトデータが読み出された場合（Ｓ２０２：ＹＥＳ）に、アプリ処理部１５１は、バッファＢ２に格納されたデータの特徴を示すデータＤ´を算出する（Ｓ２０３）。前述の通り、例えば、バッファＢ２に格納されたデータを所定のハッシュ関数に代入して得られたハッシュ値や、バッファＢ２に格納されたデータのサイズを示す情報などである。アプリ処理部１５１は、送信側送信側コンピュータ２のアプリ処理部１２１でデータＤの算出に用いられたハッシュ関数と同じハッシュ関数を用いる。次に、アプリ処理部１５１は、Ｓ２０１で受信したデータＤと、Ｓ２０３で算出したデータＤ´とが同一であるか否かを判定する（Ｓ２０４）。Ｓ２０４の結果、データＤとデータＤ´とが一致しない場合（Ｓ２０４：ＮＯ）には、アプリ処理部１５１は、ファイルの受信のために確保されたバッファＢ２を解放する（Ｓ２０５）。次に、アプリ処理部１５１は、ファイル転送が異常終了した旨のステータス通知を送信側コンピュータ２に送信する（Ｓ２０６）。さらに、アプリ処理部１５１は、コンピュータＳ２０７からステータス通知を受信する（Ｓ２０７）した場合に、送信側コンピュータ２に異常終了を示すステータス通知を送信する（Ｓ２０８）。Ｓ２０６か、Ｓ２０７及びＳ２０８かのいずれか一方が行なわれることとしてもよい。さらに、アプリ処理部１５１は、受信側コンピュータ３で動作するアプリケーションプログラム２３に対して、異常終了の通知を行なう（Ｓ２０９）。その後アプリ処理部１５１は、ファイル転送の成否判定を終了する（Ｓ２１６）。
【００５１】
一方、Ｓ２０４の結果、データＤとデータＤ´とが一致した場合（Ｓ２０４：ＹＥＳ）に、アプリ処理部１５１は、送信側コンピュータ２からステータス通知を受信する（Ｓ２１０）。次に、アプリ処理部１５１は、Ｓ２１０で通知されたステータスが正常終了を示すか否かを判定する（Ｓ２１１）。Ｓ２１１において、Ｓ２１０で受信した通知が正常終了を示す場合（Ｓ２１１：ＹＥＳ）には、アプリ処理部１５１は、正常終了を示すステータスの通知を送信側コンピュータ２に送信する（Ｓ２１２）。その後、アプリ処理部１５１は、受信側コンピュータ３で動作するアプリケーションプログラム２３に対して、正常終了の通知を行なう（Ｓ２１３）。さらに、アプリ処理部１５１は、ファイル転送の成否判定を終了する（Ｓ２１６）。
【００５２】
また、Ｓ２１１の結果、Ｓ２１０で受信した通知が異常終了を示す場合（Ｓ２１１：ＮＯ）には、アプリ処理部１５１は、異常終了を示すステータスの通知を送信側コンピュータ２に送信する（Ｓ２１４）。その後、アプリ処理部１５１は、受信側コンピュータ３で動作するアプリケーションプログラム２３に対して、異常終了の通知を行なう（Ｓ２１５）。さらに、アプリ処理部１５１は、ファイル転送の成否判定を終了する（Ｓ２１６）。
【００５３】
図９及び図１０に示されるファイル転送の成否判定において、例えば、アプリ処理部１２１が、Ｓ１０５の処理後、所定時間経過するまでにＳ１０６の処理が行なわれない場合に、Ｓ１０８の処理を行なうこととしてもよい。Ｓ１０６及びＳ１０７の処理を行なわないのは、例えば、Ｓ２０８、Ｓ２１２又はＳ２１４で送信されるステータス通知（図１のｃ１８）がネットワーク負荷などの事情により遅延した場合にも、転送されるファイルそのものが受信側受信側コンピュータ３のバッファＢ２に格納されたことがＳ１０３において確認されているためである。そのため、ステータス通知の遅延により、データ転送終了が遅れることが抑制される。
【００５４】
以上の実施形態に関し、さらに以下の付記を開示する。
（付記１）
第１のコンピュータ及び第２のコンピュータを含む通信制御システムであって、
前記第１のコンピュータは、
転送対象のデータと、前記転送対象のデータの特徴を示す第１の特徴データと、を前記第２のコンピュータに送信する送信部と、を含み、
前記第２のコンピュータは、
前記第１のコンピュータから受信したデータを記憶する記憶領域が確保された第２の記憶部と、
前記第１のコンピュータから受信したデータに基づいて、前記第１のコンピュータからのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう制御部と、
を含むことを特徴とする通信制御システム。
（付記２）
前記第２のコンピュータは、さらに、
前記第１の特徴データと前記第２の特徴データとが一致しない場合に、前記第１のコンピュータに、ファイル転送に失敗した旨の通知を行なう通知部、
を含むことを特徴とする付記１に記載の通信制御システム。
（付記３）
前記送信部は、さらに、
前記通知部から、前記通知を受信した場合に、前記転送対象のデータと、前記第１の特徴データと、を前記第２のコンピュータに再送する、
ことを特徴とする付記２に記載の通信制御システム。
（付記４）
前記第１の特徴データは、
前記転送対象のデータよりもデータサイズが小さい、
ことを特徴とする付記１〜３のいずれか１つに記載の送信制御プログラム。
（付記５）
前記第１の特徴データは、
前記転送対象のデータに基づく所定の演算により算出され、
前記第２の特徴データは、
前記記憶領域に記憶されたデータに基づく前記所定の演算により算出される、
ことを特徴とする付記１〜４のいずれか１つに記載の通信制御システム。
（付記６）
前記第２の特徴データは、
前記第１のコンピュータから、前記転送対象のデータの送信が終了した旨を示す情報を受信した場合に、受信したデータを記憶する前記記憶領域に記憶されたデータに基づいて算出される、
ことを特徴とする付記１〜５のいずれか１つに記載の通信制御システム。
（付記７）
前記第１の特徴データは、前記第２のコンピュータにおいて、前記第１のコンピュータからのデータ送信が終了したと判断されるよりも前に、前記第２のコンピュータに受信される、
ことを特徴とする付記１〜６のいずれか１つに記載の通信制御システム。
（付記８）
前記制御部は、
前記第１の特徴データと前記第２の特徴データとが一致すると、前記記憶領域に格納されたデータを他の記憶領域に格納した後、前記記憶領域の解放を行なう、
ことを特徴とする付記１〜７のいずれか１つに記載の通信制御システム。
（付記９）
データと、前記データの特徴を示す第１の特徴データと、を受信した場合に、受信した前記データを所定の記憶領域内に記憶する記憶部と、
前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう制御部と、
を含むことを特徴とする通信制御装置。
（付記１０）
コンピュータに、
データと、前記データの特徴を示す第１の特徴データと、を受信した場合に、受信した前記データを所定の記憶領域内に記憶し、
前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう、
ことを実行させることを特徴とする通信制御方法。
（付記１１）
コンピュータに、
データと、前記データの特徴を示す第１の特徴データと、受信した場合に、受信した前記データを所定の記憶領域内に記憶し、
前記データの送信元装置から受信したデータに基づいて、前記送信元装置からのデータ送信が終了したと判断された場合に、前記記憶領域に記憶されたデータの特徴を示す第２の特徴データと、受信した前記第１の特徴データとが不一致であれば前記記憶領域を解放する制御を行なう、
ことを実行させることを特徴とする通信制御プログラム。
【符号の説明】
【００５５】
１      通信システム
２      送信側コンピュータ
３      受信側コンピュータ
４      中継装置
５      中継装置
６      ネットワーク
１１    通信部
１２    処理部
１３    記憶部
１４    通信部
１５    処理部
１６    記憶部
１２１  アプリ処理部
１２２  通信処理部
１５１  アプリ処理部
１５２  通信処理部
【図１】
0005987445.tif 000002
【図２】
0005987445.tif 000003
【図３】
0005987445.tif 000004
【図４】
0005987445.tif 000005
【図５】
0005987445.tif 000006
【図６】
0005987445.tif 000007
【図７】
0005987445.tif 000008
【図８】
0005987445.tif 000009
【図９】
0005987445.tif 000010