"対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信する受信部と、前記第1および第2のパケットを記憶する記憶部と、前記第1および第2のパケットを前記対向装置に送信する送信部と、前記送信部が前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを前記受信部が受信した時刻までの時間である応答時間を測定する測定部と、前記送信部が前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記受信部が前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記記憶部から前記第2のパケットを取得すると共に、前記送信部に、前記第2のパケットを前記対向装置に再度送信させる再送部を備えることを特徴とする通信装置。前記送信部が前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記受信部が前記第2の応答メッセージと前記再送パケットのいずれも受信しない場合、前記第2のパケット以降に前記送信元装置から受信した前記対向装置宛のパケットは前記再送部が再送する対象であると判定するとともに、前記送信元装置を対象装置に指定する判定部と、前記対象装置から前記第2のパケットの後に送信された第3のパケットが前記送信部から送信された時刻から前記第3のパケットの再送を前記送信部に指示する時刻までの、前記再送部が待機する時間である待機時間を算出する算出部をさらに備え、前記第3のパケットに対する応答メッセージを、前記第3のパケットが前記送信部から送信された時刻から前記待機時間が経過しても受信しない場合、前記再送部は前記第3のパケットを前記対向装置に送信することを特徴とする請求項1に記載の通信装置。前記第3のパケットが前記送信部から前記対向装置に向けて送信された時刻から、前記送信元装置から再送された前記第3のパケットを前記受信部が受信するまでの時間が、前記待機時間よりも短い場合、前記判定部は、前記送信元装置が前記対象装置ではなくなったと判定することを特徴とする請求項2に記載の通信装置。前記送信元装置から前記対向装置へのデータの送信に用いられるコネクションの確立を検出すると共に、前記コネクションを介して送信されたパケットに含まれるデータの次に前記コネクションを介して送信されるデータを特定する第1の値を、前記コネクションと対応付けてコネクションテーブルに記録するコネクション検出部を備え、前記再送部は前記コネクションを介して送信される前記対向装置宛のパケットとして、前記受信部で受信されたパケットに含まれているデータの次に前記コネクションを介して送信されるデータを特定する第2の値が前記コネクションテーブルに記録されている値以下の場合、前記第2の値で特定されるデータを含むパケットが前記送信元装置から再送されたと認識することを特徴とする請求項2もしくは3に記載の通信装置。前記コネクション検出部は、前記コネクションテーブルに記録されている第1のコネクションを介して送受信されるパケットに含まれている制御ビットを確認することにより、前記第1のコネクションを介した通信の終了を検出すると、前記コネクションテーブルから前記第1のコネクションに関するエントリを削除することを特徴とする請求項4に記載の通信装置。対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信し、前記第1および第2のパケットを記憶し、前記第1および第2のパケットを前記対向装置に送信し、前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを受信した時刻までの間の時間である応答時間を測定し、前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記第2のパケットを前記対向装置に再度送信する処理を、前記送信元装置から送信された前記対向装置宛のパケットを中継する通信装置が実行することを特徴とする通信方法。対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信し、前記第1および第2のパケットを記憶し、前記第1および第2のパケットを前記対向装置に送信し、前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを受信した時刻までの間の時間である応答時間を測定し、前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記第2のパケットを前記対向装置に再度送信する処理をコンピュータに実行させることを特徴とする通信プログラム。ユーザ端末によっては、再送タイムアウトが固定値に設定されている場合がある。しかし、ユーザ装置から対向装置までの間のパケットの往復時間は、ネットワークの輻輳状態によって変化する。例えば、ネットワークを介して送受信されるパケットの数が少ない場合、往復時間は短くなる。従って、再送タイムアウトが固定値に設定されている場合、パケットが送信されてからそのパケットが再送されるまでの時間が長くなりすぎる場合がある。なお、背景技術では、ユーザ装置から送信されたデータが対向装置で処理される場合について述べたが、任意の複数の通信装置がWANを介してパケットを送受信する場合にも、同様の問題が生じる可能性がある。本発明は、再送タイムアウトが固定値に設定されている装置から送信されたパケットについて、再送が行われるまでの時間をパケットの往復時間に応じて変更することを目的とする。実施形態に係る通信装置は、受信部、記憶部、送信部、測定部、および、再送部を備える。受信部は、対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信する。記憶部は、前記第1および第2のパケットを記憶する。送信部は、前記第1および第2のパケットを前記対向装置に送信する。測定部は、前記送信部が前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを前記受信部が受信した時刻までの時間である応答時間を測定する。前記送信部が前記第2のパケットを前記対向装置に送信した時刻から前記応答時間より長い時間が経過しても、前記受信部が前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から再送パケットも受信しない場合、再送部が動作する。ここで、再送パケットは、前記送信元装置から前記第2のパケットを再送したパケットである。再送部は、前記記憶部から前記第2のパケットを取得すると共に、前記送信部に、前記第2のパケットを前記対向装置に再度送信させる。再送タイムアウトが固定値に設定されている装置から送信されたパケットについても、再送が行われるまでの時間がパケットの往復時間に応じて変更される。図1は、ある実施形態にかかる通信装置10の動作の例を説明する図である。通信装置10は、送信元装置2が対向装置6にむけて送信したパケットを中継する。送信元装置2が対向装置6にむけて送信したパケットについて、そのパケットが対向装置6で受信されたことが一定の時間に通知されず、さらに、送信元装置2からパケットが再送されないとき、通信装置10は、パケットを対向装置6に再送する。図1を参照しながら、送信元装置2から対向装置6にWAN4を介してパケットが送信される場合の通信装置10の動作について説明する。なお、以下の説明では、あるパケットが通信装置10から対向装置6に送信された時刻から、そのパケットの受信を通知する応答メッセージが通信装置10で受信される時刻までの時間を応答時間RoundTripTime、RTTと記載するものとする。さらに、送信元装置2から送信されたパケットが対向装置6に送信された後、通信装置10が同じパケットを対向装置6に再送するまで待機する時間を待機時間と記載することもある。1まず、送信元装置2は、対向装置6に向けて第1のパケットを送信する。通信装置10は、第1のパケットを受信すると、受信したパケットを複製し、複製した第1のパケットを、送信元装置2を識別する情報と通信装置10を識別する情報との組み合わせに関連付けて記憶する。2通信装置10は、第1のパケットをそのパケットの宛先である対向装置6に向けて送信する。さらに、通信装置10は、第1のパケットを送信した時刻を記憶する。3対向装置6は、第1のパケットを受信すると、第1のパケットを受信したことを通知する第1の応答メッセージを送信元装置2に向けて送信する。第1の応答メッセージが通信装置10に到達すると、通信装置10は、第1の応答メッセージを参照して、第1のパケットが対向装置6で受信されたことを認識する。次に、通信装置10は、第1のパケットを通信装置10から送信した時刻と、第1の応答メッセージの受信時刻の間の時間応答時間を求める。図1のAは応答時間を示す。4通信装置10は、第1の応答メッセージを送信元装置2に送信する。5次に、送信元装置2から送信された第2のパケットについて、通信装置10は、手順1と同様に第2のパケットを複製して記憶する。また、第2のパケットを対向装置6に送信した時刻も記憶する。6さらに、通信装置10は、第2のパケットを対向装置6に転送する。ここで、第2のパケットについて、WAN4でパケットロストが発生したとする。この場合、対向装置6は、第2のパケットを受信しないため、対向装置6は、第2のパケットの受信を通知する第2の応答メッセージを送信しない。7通信装置10は、手順3で求めた応答時間を用いて待機時間を計算する。ここで、待機時間は、図1のBに示すように、応答時間よりも長い時間である。待機時間の計算方法については後述する。通信装置10は、第2のパケットを対向装置6に送信した時刻から待機時間が経過するまで待機する。待機時間が経過しても、通信装置10が第2の応答メッセージを受信せず、さらに、送信元装置2から対向装置6に向けて再送された第2のパケットも受信しない場合、通信装置10は、記憶している第2のパケットを、対向装置6に送信する。8手順7で再送された第2のパケットを対向装置6が受信すると、対向装置6は、第2の応答メッセージを送信元装置2に送信する。通信装置10は、第2の応答メッセージを確認することにより、第2のパケットが対向装置6によって受信されたことを認識する。9通信装置10は、第2の応答メッセージを送信元装置2に送信する。このように、パケットの送信時刻から待機時間が経過するまでの間に対向装置6でのパケットの受信が確認できず、さらに、送信元装置2からパケットの再送も行われていない場合に、通信装置10は、対向装置6にパケットを再送する。ここで、待機時間は、応答時間を基にして計算されているので、応答時間の変動に応じて待機時間の長さも変動する。従って、通信装置10は、送信元装置2から送信されたパケットの再送のタイミングを応答時間に応じて変動させることができる。例えば、送信元装置2において、再送タイムアウトが固定値に設定されている場合でも、通信装置10は、応答時間に応じて計算されたタイミングでパケットの再送を行うことができる。すなわち、応答時間が短い場合は、通信装置10が動作することにより、パケットの送信時刻からそのパケットの再送時刻までの間隔が短くなる。このため、例えば、対向装置6で動作しているアプリケーションが送信元装置2から送信されたデータを処理している場合、パケットの送信に失敗しても、アプリケーションでの処理に間に合うようにパケットを再送できる確率が高くなる。<装置構成>図2は、通信装置10の構成の例を示す図である。通信装置10は、受信部11、送信部12、ルーチング部13、タイマ14、記憶部20、および、再送代替部30を備える。記憶部20は、直結機器テーブル21、コネクションテーブル22、通信パケットテーブル23、および、ルーティングテーブル24を備える。再送代替部30は、直結機器検出部31、コネクション検出部32、通信パケット確認部33、測定部34、算出部35、判定部36、および、再送部37を備える。受信部11は、送信元装置2からパケットを受信する。さらに、受信部11は、受信したパケットを直結機器検出部31、送信部12などに出力することができる。また、受信部11は、対向装置6から、パケットの受信を通知する応答メッセージを受信する。受信部11は、受信した応答メッセージを、直結機器検出部31、送信部12などに出力する。送信部12は、送信元装置2から受信したパケットを対向装置6に向けて送信する。また、送信部12は、パケットを対向装置6に送信した時刻から待機時間が経過したときに、通信パケットテーブル23を参照して、パケットを対向装置6に再送する。なお、後述するように、通信パケットテーブル23には、送信元装置2から対向装置6に送信されたが対向装置6での受信が確認されていないパケットと、そのパケットについての情報が記録されている。さらに、送信部12は、対向装置6から受信した応答メッセージを送信元装置2に送信する。ルーチング部13は、通信装置10が受信したパケットの転送先をルーティングテーブル24に基づいて決定し、送信部12に通知する。タイマ14は、直結機器検出部31、コネクション検出部32、通信パケット確認部33、測定部34、再送部37などに時刻情報を提供する。直結機器検出部31は、通信装置10と同じネットワークに所属する機器を検出し、検出した機器に関する情報を直結機器テーブル21に記録する。以下の説明では、通信装置10と同じネットワークに所属する通信装置を直結機器と記載することがある。直結機器は、送信元装置2となる可能性がある。例えば、通信装置Aが直結機器であり、さらに、通信装置Aが通信装置Bに向けてパケットを送信するとする。通信装置Aから通信装置Bに送信されたパケットが、通信装置10を経由して通信装置Bに送信される場合、通信装置Aは、図1に示す送信元装置2となる。直結機器テーブル21の例を図3に示す。図3の例では、直結機器テーブル21は、直結機器のMediaAccessControlMACアドレス、InternetProtocolIPアドレス、および、通信装置10との最新の通信時刻を格納する。なお、図3は、直結機器テーブル21の例であり、直結機器テーブル21に含まれる情報は、実装に応じて、適宜、変更される場合がある。コネクション検出部32は、送信元装置2と対向装置6の間でTransmissionControlProtocolTCPを用いた通信が行われる場合、送受信されるパケット中のTCPヘッダを参照する。コネクション検出部32は、TCPヘッダに含まれている情報に基づいて、コネクションの生成と消滅を監視し、通信が行われているコネクションに関する情報を、コネクションテーブル22に格納する。コネクションの監視の方法と、コネクションテーブル22の例については、後述する。通信パケット確認部33は、送信元装置2から受信したパケットに基づいて、コネクションテーブル22や通信パケットテーブル23を更新する。通信パケットテーブル23には、パケットの送信時間などの情報が記録される。測定部34は、通信パケットテーブル23に記録されているパケットについての応答メッセージが受信部11で受信された時刻と、パケットの送信時刻の差から、応答時間を求める。さらに、測定部34は、通信パケットテーブル23に記録されている情報のうち、対向装置6から応答メッセージを受信したパケットに関する情報を削除する。このため、通信パケットテーブル23は、通信装置10から対向装置6に送信されたパケットのうち、対向装置6からの応答メッセージが通信装置10で受信されていないパケットに関する情報が格納されている。算出部35は、あるパケットが送信部12から対向装置6に向けて送信された時刻から、再送部37がパケットの再送を送信部12に指示する時刻までの待機時間を、応答時間に基づいて計算する。待機時間の計算方法については、後述する。判定部36は、通信装置10が送信元装置2の代わりに対向装置6に対する再送を行うかを判定する。例えば、判定部36は、送信元装置2がパケットを送信してから同じパケットを再送するまでの時間が、待機時間より長いかを判定する。パケットの送信に待機時間より長い時間がかかると判定された送信元装置2については、パケットの再送を通信装置10が行う。また、以下の記載では、通信装置10が送信元装置2の代わりに対向装置6に対する再送を行う場合、その送信元装置2を対象装置と記載することがある。再送部37は、通信パケットテーブル23を参照して、対象装置から送信されたパケットのうち、パケットの送信時刻から待機時間が経過するまでに対向装置6からの応答メッセージが受信されていないパケットを特定する。また、再送部37は、通信パケットテーブル23に含まれているデータに基づいて、送信部12にパケットの再送を指示する。次に、通信装置10のハードウェア構成の例について述べる。通信装置10は、例えば、CentralProcessingUnitCPUなどのプロセッサ、メモリ、ネットワーク接続装置を備えることができる。この場合、ネットワーク接続装置は、通信装置10をネットワークに接続し、例えば、受信部11、送信部12として動作する。CPUは、再送代替部30、ルーチング部13、タイマ14などとして動作することができる。メモリは、記憶部20として動作する。例えば、通信装置10は、プロセッサ、メモリ、ネットワーク接続装置を備えたコンピュータであっても良い。なお、ここで述べた構成は一例であり、実装に応じて通信装置10の構成は変更される場合がある。<第1の実施形態>通信装置10は、直結機器の検出、応答時間の測定、コネクションの検出、直結機器から受信したパケットの保持、待機時間の算出、パケットの再送などを行う。以下、これらの動作の詳細について説明する。直結機器の検出通信装置10が起動されると、通信装置10は、まず、送信元装置2となる可能性のある装置直結機器を検出する。直結機器検出部31は、直結機器の検出に、AddressResolutionProtocolARP要求パケットを用いる。図4は、直結機器の検出方法の例を説明する図である。通信を開始しようとする装置は、通信先のIPアドレスを取得すると、そのIPアドレスを用いている装置のMACアドレスを取得するためにARP要求パケットを送信する。図4に、装置Aから送信されたARP要求パケットの例を示す。以下の例では、装置AのIPアドレスはIP1、MACアドレスはMAC1であるものとする。ARP要求パケットは、イーサネットヘッダとARPメッセージを含む。イーサネットヘッダには、送信先MACアドレス、送信元MACアドレス、および、Typeが記録される。ここでは、送信元MACアドレスは装置AのMACアドレス、TypeはARP要求を表す0806が記録される。さらに、ARP要求パケットの送信先MACアドレスはブロードキャストアドレスMAC_Bであるff:ff:ff:ff:ff:ffが用いられる。このため、ARP要求パケットは、装置Aが所属するネットワークと同じネットワークに所属する全ての通信装置に送信される。ARP要求パケットのARPメッセージには、Opcode、送信元MACアドレス、送信元IPアドレス、対象MACアドレス、対象IPアドレスが含まれる。ここで、対象IPアドレスはMACアドレスを取得しようとする装置で用いられているIPアドレスである。例えば、対象IPアドレスは、装置Aが通信する対象の装置のIPアドレスである。また、対象MACアドレスは、取得しようとするMACアドレスである。ARP要求パケットが生成されるときには、装置Aは対象MACアドレスを取得していないので、MACアドレスの代わりに0が記録される。Opcodeは、ARPメッセージがARP要求であるかを示す情報であり、ARP要求の場合は1である。送信元MACアドレスと送信元IPアドレスのフィールドには、装置AのMACアドレスとIPアドレスが格納されている。装置Aが図4に示すARP要求パケットをブロードキャストすると、装置Aと同じネットワークに所属する通信装置10は、ARP要求パケットを受信する。直結機器検出部31は、受信部11を介して受信されたパケットの種類を確認し、ARP要求パケットを取得する。さらに、直結機器検出部31は、取得したパケットのARPメッセージから送信元MACアドレスと送信元IPアドレスを抽出して、直結機器テーブル21図3に格納する。また、直結機器検出部31は、タイマ14を参照して、ARP要求パケットが受信された時刻を取得し、直結機器テーブル21に格納する。直結機器検出部31は、通信装置10がARP要求パケットを受信するたびに、ARP要求に含まれている送信元IPアドレス、送信元MACアドレス、およびARP要求パケットの受信時刻を取得し、直結機器テーブル21に格納する。すでに直結機器テーブル21に登録されている装置から再度ARP要求パケットを受信した場合、直結機器検出部31は、ARP要求パケットを送信した装置に関する記録の最終通信時刻を変更する。例えば、図3の直結機器テーブル21の1番上の欄には、すでに、装置Aとの通信について記録されている。そこで、直結機器検出部31は、装置AからARP要求パケットを受信すると、装置Aとの最終通信時刻をARP要求パケットの受信時刻に変更する。また、直結機器検出部31は、コネクションの生成要求や、既に確立されたコネクションを介して送信されたパケットなどを受信するたびに、それらのパケットの送信元アドレスに対応付けられた最終通信時刻を更新する。コネクションの検出次に、直結機器テーブル21に記録されている装置が対向装置6との間でコネクションを生成するときに、通信装置10で行われる動作の例を説明する。以下の説明では、送信元装置2のIPアドレスはIP1であり、対向装置6のIPアドレスはIP10であるものとする。なお、以下の説明では、図1に示すように、送信元装置2と対向装置6はWAN4を介して通信するものとする。パケットを受信すると、受信部11は受信パケットを直結機器検出部31に出力する。直結機器検出部31は、ARP要求パケット以外のパケットについて、IPヘッダを確認することにより、直結装置から送信されたパケットであるかを判定する。図5aに、IPヘッダの構成例を示す。図5aは、IPv4で用いられるIPヘッダを示す。IPv4ヘッダには、パケットの送信元IPアドレスと宛先IPアドレスが含まれている。さらに、IPv4ヘッダには、ヘッダ長フィールドとデータ長フィールドが含まれる。ヘッダ長フィールドは、IPヘッダの長さを示す。データ長フィールドは、IPヘッダとセグメントデータを合わせた長さを示す。さらに、IPv4ヘッダには、バージョン情報、サービスタイプ、識別番号、フラグ、フラグメントオフセット、TimeToLiveTTL、プロトコル、ヘッダチェックサム、オプション、パディングなどのフィールドが含まれる。ここではIPv4ヘッダについて述べたが、IPv6ヘッダにも送信元IPアドレスと宛先IPアドレスが含まれている。また、IPv6ヘッダには、ペイロード長フィールドが含まれている。ペイロード長フィールドには、IPv6パケットの全体の長さからIPv6ヘッダの長さを差し引いたペイロードの長さが記録される。直結機器検出部31は、受信したパケットのIPヘッダに含まれている送信元IPアドレスを、直結機器テーブル21に含まれているIPアドレスと比較する。受信されたパケットの送信元IPアドレスが直結機器テーブル21に記録されている場合、直結機器検出部31は、そのパケットの送信元の装置は、直結装置であると判定し、コネクション検出部32にパケットを出力する。コネクション検出部32は、直結機器検出部31から入力されたパケットのTCPヘッダを参照することにより、コネクションに関する情報を取得する。コネクション検出部32は、取得した情報をコネクションテーブル22に格納する。図5bは、TCPヘッダの構成例を示す図である。TCPヘッダには、送信元ポート番号、宛先ポート番号、シーケンス番号、確認応答番号、制御ビットが含まれる。さらに、TCPヘッダには、オプション、データオフセット、予約ビット、ウィンドウサイズ、チェックサム、緊急ポインタ、パディングも含まれる。データオフセットフィールドには、TCPヘッダの長さが記録されている。制御ビットには、URGurgent、ACKacknowledge、PSHpush、RSTreset、SYNsynchronize、FINfinisの6ビットが含まれる。通信装置10では、ACK、RST、SYN、FINの値を用いた制御が行われる。SYNビットは、コネクションの確立が要求されているかを示す。SYN=1のパケットは、宛先の装置に対してコネクションの確立を要求するために用いられる。以下の記載では、SYN=1のパケットを送信許可要求パケットと記載することがある。ACKビットは、パケットが応答メッセージであるかを示す。ACK=1のパケットは、あるパケットに対する応答メッセージとして用いられる。RSTとFINは、そのパケットの送信に用いられたコネクションの切断が要求されているかを示す。RSTかFINのいずれかが1であるパケットは、そのパケットの宛先の装置に対して、そのパケットの送信に用いられたコネクションの切断を要求する。コネクション検出部32は、直結機器検出部31から入力された各々のパケットについて、TCPヘッダ中の制御ビットのうちのRST、SYN、FINのそれぞれの値を確認する。ここでは、SYN=1、RST=0、FIN=0のパケットを通信装置10が受信したものとする。SYNが1の場合、コネクション検出部32は、送信元装置2から対向装置6に向けたコネクションが確立されると判断して、確立されるコネクションに関する情報をコネクションテーブル22に記録する。図6は、検出されたコネクションの記録方法の例を示す図である。コネクションテーブル22は、例えば、送信元装置2のIPアドレス、送信元ポート番号、対向装置6のIPアドレス、宛先ポート番号、次に送信されるセグメントのシーケンス番号NextSeqNoを記録する。さらに、応答時間から算出された再送タイムアウトRTO計算値、再送フラグ、最終通信時刻を格納する。以下の説明では、応答時間から算出された通信装置10での再送タイムアウトのことを、RTO計算値と記載することがある。ここで、再送フラグは、通信装置10がパケットの再送を行う送信元装置2を識別するために用いられる。再送フラグがONの場合、そのコネクションを介して送信されたパケットについて、通信装置10は、判定部36による判定を行わずに再送を行う。なお、再送フラグがONの場合とOFFの場合で、算出部35は、待機時間の算出方法を変更することができる。以下、図6を参照しながら、コネクション検出部32の動作について説明する。コネクション検出部32は、送信許可要求パケットを受信すると、そのパケットのIPヘッダから送信元IPアドレスと宛先IPアドレスを取得して、コネクションテーブル22に記録する。コネクション検出部32は、TCPヘッダの送信元ポート番号を送信元装置2でのポート番号とし、TCPヘッダの宛先ポート番号を対向装置6でのポート番号として、コネクションテーブル22に記録する。コネクション検出部32は、パケットを受信した時刻もコネクションテーブル22に記録する。次に、コネクション検出部32は、次に送信されるセグメントのシーケンス番号を計算する。コネクション検出部32は、IPv4パケットのデータ長フィールドに記録されている値からヘッダ長フィールドに記録されている値を差し引いて、セグメントデータの長さを求める。次に、コネクション検出部32は、TCPヘッダのデータオフセットフィールドの値を取得し、セグメントデータの長さからTCPヘッダの長さを差し引くことにより、パケットに含まれているデータの長さを求める。すなわち、パケットに含まれているデータ長をD、IPv4パケットのデータ長フィールドの値をIPd、IPヘッダ長をIPh、TCPヘッダ長をTCPhとすると、コネクション検出部32は、以下の計算によりデータ長Dを求める。D=IPd-IPh-TCPhさらに、コネクション検出部32は、通信装置10が受信したパケットに含まれているシーケンス番号Seqにデータ長を加えることにより、次に送信されるセグメントのシーケンス番号NextSeqを算出する。すなわち、次に送信されるセグメントのシーケンス番号は、次式により求められる。コネクション検出部32は、算出したNextSeqをコネクションテーブル22に記録する。NextSeq=SeqDコネクション検出部32は、図6に示すように、NextSeqをコネクションテーブル22に記録する。なお、送信許可要求パケットのように、データが含まれていないパケットに基づいてNextSeqの値が計算された場合、次に同じコネクションを介して送信されるパケットに含まれているデータのシーケンス番号はNextSeqの値より大きいことがある。例えば、コネクションを確立するために送信元装置2から対向装置6に送信される送信許可要求パケットには、送信元装置2から対向装置6への送信データが含まれていないので、データ長は0バイトになる。コネクションの確立のために送信されたパケットのシーケンス番号が2000であると、コネクション検出部32は、NextSeqを2000とする。しかし、送信許可要求パケットの次に送信されるパケットに含まれるシーケンス番号は、2000よりも大きい場合がある。さらに、コネクション検出部32は、時刻情報をタイマ14から取得してコネクションテーブル22に記録する。コネクションを確立する要求が送信元装置2から対向装置6に送信されたときには、まだ送信元装置2から対向装置6の間の応答時間が求められていないので、RTO計算値は記録されない。コネクション検出部32は、検出したコネクションについて、再送フラグをOFFに設定する。次に、送信許可要求パケットは、通信パケットテーブル23に格納される。図7に通信パケットテーブル23の例を示す。通信パケットテーブル23は、例えば、送信元装置2のIPアドレス、送信元ポート番号、対向装置6のIPアドレス、宛先ポート番号、そのパケットのシーケンス番号、データ長、再送回数、発信時刻を格納する。さらに、これらの情報に対応付けて、受信パケットが通信パケットテーブル23に格納される。コネクション検出部32は、送信許可要求パケットについて、送信元装置2のIPアドレス、送信元ポート番号、対向装置6のIPアドレス、宛先ポート番号、そのパケットのシーケンス番号、および、データ長を既に認識している。そこで、コネクション検出部32は、これらの情報を通信パケットテーブル23に格納し、通信パケット確認部33に送信許可要求パケットを出力する。通信パケット確認部33は、パケットを通信パケットテーブル23に登録するときは、再送回数を0に設定する。さらに、通信パケット確認部33は、タイマ14から時刻情報を取得し、そのパケットが送信部12から対向装置6に向けて出力される時刻も、通信パケットテーブル23に記録する。応答時間の測定とRTO計算値の算出次に、対向装置6から送信元装置2に向けてコネクションの送信を許可する応答メッセージが送信され、通信装置10が応答メッセージを受信した場合について説明する。受信部11は、対向装置6から受信したパケットを、直結機器検出部31に出力する。直結機器検出部31は、パケットのIPヘッダに含まれているIPアドレスを直結機器テーブル21に記録されているIPアドレスと比較する。宛先IPアドレスが直結機器テーブル21に記録されている場合、直結機器検出部31は、そのパケットを測定部34に出力する。従って、通信装置10を介して対向装置6に送信された送信許可要求パケットに対する応答パケットは、測定部34に出力される。測定部34は、直結機器検出部31から入力されたパケットのTCPヘッダ中のACKビットを参照して、応答メッセージを受信しているかを確認する。ACKビットの値が1である場合、測定部34は、応答メッセージを受信したと判断し、確認応答番号を参照する。確認応答番号には、対向装置6が送信元装置2から次に受信するデータを識別するシーケンス番号が記録されている。このため、測定部34は、確認応答番号よりもシーケンス番号が小さな値のデータを含むパケットが対向装置6で受信されたと認識する。ただし、コネクションが確立される段階では、そのコネクションに関連して通信パケットテーブル23に登録されているパケットは、送信元装置2から対向装置6に送信された送信許可要求パケットだけである。そこで、測定部34は、応答メッセージは送信許可要求パケットの受信を通知していると判断し、応答メッセージの受信時刻を取得する。次に、測定部34は、通信パケットテーブル23を参照することにより、応答メッセージの受信時刻から、送信許可要求パケットの発信時刻までの時間を差し引いた値を、応答時間とする。例えば、図7に示すように、送信許可要求パケットが通信装置10から対向装置6に送信された時刻は、12時0分0秒であり、応答メッセージの受信時刻が12時0分0.04秒であるとする。すると、測定部34は、12時0分0.04秒-12時0分0秒=0.04秒を応答時間とする。測定部34は、求めた応答時間を算出部35に出力する。さらに、測定部34は、通信パケットテーブル23から送信許可要求パケットについての記録を削除する。算出部35は、応答時間を用いて、RTO計算値と待機時間を算出する。算出部35は、コネクションについて初めて求められた応答時間を用いて1式に基づく計算を行い、RTO計算値RTOcalを求める。RTOcal=SRTTmaxG,K×RTTVAR1ここで、K=4SRTT=MRTTRTTVAR=MRTT/2であるものとする。MRTTMeasuredRTTは、測定部34が求めた応答時間である。RTTVARは、応答時間の2分の1である。また、Gは、通信装置10が応答時間の測定に使用するクロックの粒度分解能である。例えば、応答時間が0.04秒、クロックの分解能が0.05秒であるとすると、RTO計算値は以下のように求められる。RTTVAR=MRTT/2=0.04/20.02秒SRTT=MRTT=0.04秒RTOcal=0.04max0.05,4×0.02=0.12秒算出部35は、求めたRTO計算値をコネクションテーブル22に記録する。記録済みのコネクションを介して受信したパケットの保持次に、コネクションテーブル22に記録されているコネクションを介して送信元装置2から対向装置6に送信されるパケットを、通信装置10が受信した場合について、通信パケット確認部33などの動作の例を説明する。受信されたパケットがARP要求パケットではない場合、コネクション検出部32は、受信されたパケットのTCPヘッダを参照し、コネクションテーブル22に登録されているコネクションを介して送信されたパケットであるかを判定する。コネクションテーブル22に登録されているコネクションを介して送信元装置2から送信されたパケットを受信した場合、コネクション検出部32は、パケットを通信パケット確認部33に出力する。例えば、送信元装置2から対向装置6に送信されたパケットを受信すると、コネクション検出部32は、IPアドレスとポート番号を用いて、コネクションテーブル22に登録されているコネクションを介して送信されているかを確認する。登録されているコネクションを介して送信されたパケットであると、コネクション検出部32は、通信パケット確認部33にパケットを出力する。通信パケット確認部33は、入力されたパケットのシーケンス番号にデータ長を加えた値を、コネクションテーブル22のNextSeqNoに記録されている数値と比較する。ここで、データ長の求め方は、送信許可要求パケットの場合と同様である。通信パケット確認部33は、シーケンス番号とデータ長の和がNextSeqNoに記録されている数値よりも大きい場合、入力されたパケットは、送信元装置2から対向装置6に初めて送られるデータを含むと判定する。一方、通信パケット確認部33は、シーケンス番号とデータ長の和がNextSeqNoに記録されている数値以下の場合、入力されたパケットは再送パケットであると判定する。図8aは、通信パケットテーブル23の例を示す図である。図8aは、パケットP1~P3の3つのパケットが送信元装置2から対向装置6に送信された場合の通信パケットテーブル23を示す。以下の説明では、通信パケットテーブル23が図8aに示すように更新されたとき、パケットP1~P3は、いずれも初めて送られるデータを含むと判定されたとする。通信パケット確認部33は、コネクション検出部32から入力されたパケットのTCPヘッダに含まれているシーケンス番号とデータ長を通信パケットテーブル23に記録する。通信パケット確認部33は、送信元装置2および対向装置6のIPアドレス、送信元ポート番号、宛先ポート番号を、コネクション検出部32と同様にTCPヘッダなどを参照して取得し、通信パケットテーブル23に記録する。通信パケット確認部33は、パケットを通信パケットテーブル23に登録するときは、再送回数を0に設定する。さらに、通信パケット確認部33は、タイマ14から時刻情報を取得し、そのパケットが送信部12から対向装置6に向けて出力される時刻も、通信パケットテーブル23に記録する。通信パケット確認部33は、コネクション検出部32から入力されたパケットの情報に基づいて、これまでに送信元装置2から対向装置6に送信されたデータの次のデータを示すシーケンス番号を求め、コネクションテーブル22に記録する。さらに、通信パケット確認部33は、コネクションテーブル22の最終通信時刻も更新する。図8bは、パケットP1~P3が送信されたときのコネクションテーブル22の例を示す。パケットP1~P3はいずれも送信元装置2から対向装置6に同じコネクションを用いて送信されている。従って、そのコネクションでは、シーケンス番号2001から1000バイト分、シーケンス番号3001から1000バイト分、および、シーケンス番号3001から1000バイト分のデータが対向装置6に向けて送信されている。従って、パケットP1~P3のいずれも対向装置6で受信された場合、シーケンス番号5000までのデータが対向装置6に送信されていることになる。従って、パケットP1~P3が対向装置6で受信された場合、次に対向装置6に送信されるパケットは、シーケンス番号5001から始まるデータを含む。そこで、NextSeqNoには、5001が記録される。通信パケット確認部33は、コネクション検出部32からパケットを受信するたびに、パケットのシーケンス番号にデータ長を加えた値を、コネクションテーブル22のNextSeqNoに記録されている数値と比較する。シーケンス番号とデータ長の合計値が、コネクションテーブル22のNextSeqNoに記録されている数値よりも大きい場合、通信パケット確認部33は、NextSeqNoを、得られた合計値に変更する。待機時間の算出通信装置10は、通信パケットテーブル23に記録したパケットを、対向装置6に送信する。パケットP1~P3のようにデータを含むパケットが送信されると、算出部35は、コネクションテーブル22に記録されているRTO計算値を用いて、待機時間を算出する。再送回数をMとし、パケットの送信時刻からM回目の再送までの待機時間をRMとすると、算出部35は、待機時間を2式に従って計算する。RM=RTOcal×2M1×V22式において、Vは1以上の定数である。算出部35は、Vの値を決定する際に、通信パケットテーブル23の再送フラグの設定を参照することができる。再送フラグがONに設定されている場合、算出部35は、再送フラグがOFFに設定されている場合よりもVの値を小さくする。例えば、コネクションが確立されるときは、送信元装置2が対象装置であるかの判定が行われる前であるため、再送フラグがOFFに設定されている。そこで、送信元装置2が自律的に応答時間に応じた時間で再送を行うかを判定するために、算出部35は、Vの値を1より大きい値に設定して待機時間を計算する。例えば、算出部35は、対象装置であると判定されていない送信元装置2から送信されたパケットを再送するときの待機時間を、V=3として計算することができる。一方、再送フラグがONに設定されているコネクションについては、送信元装置2から対向装置6に送信されたパケットを通信装置10が再送することが決定されているので、算出部35は、Vの値を1として待機時間を計算できる。パケットの再送通信装置10は、送信元装置2から送信されたパケットが対向装置6で受信されたかを、応答メッセージ中の確認応答番号を参照することによって確認する。確認応答番号は、応答メッセージに対応するパケットに含まれているデータの次に対向装置6が受信するデータの先頭を表すシーケンス番号である。例えば、パケットP1を受信すると、対向装置6はシーケンス番号=2001のデータから1000バイト分を受信しているので、パケットP1に対する応答メッセージA1では、確認応答番号は3001となる。通信装置10に受信された応答メッセージA1は、受信部11と直結機器検出部31を介して測定部34に出力される。測定部34は、応答メッセージA1のTCPヘッダ中のACKビットの値が1であることを確認すると、確認応答番号を取得する。測定部34は、応答メッセージに含まれている確認応答番号よりも小さいシーケンス番号に対応付けられたパケットは、対向装置6に受信されたと判断し、確認応答番号よりも小さいシーケンス番号に対応するデータやパケットを削除する。さらに、測定部34は、受信した応答メッセージに対応するパケットと、応答メッセージに対応するパケットに関するデータを通信パケットテーブル23から削除する。図9に、応答メッセージA1に基づいてパケットP1に関する情報を削除した後の通信パケットテーブル23を示す。一方、パケットが対向装置6で受信されたという通知が待機時間以内に届かない場合、パケットの再送が行われる。通信装置10から対向装置6へのパケットの再送は、通信装置10に格納されているパケットが対向装置6に再送される場合と、送信元装置2がパケットを再送する場合とがある。各々の場合について、通信装置10の動作を説明する。Aケース1まず、通信装置10に格納されているパケットが対向装置6に再送される場合について説明する。判定部36は、再送フラグがOFFに設定されているコネクションの各々について、通信装置10から送信を行うかを判定する。判定部36は、タイマ14から現在時刻を取得し、通信パケットテーブル23に含まれている発信時刻との差を求める。得られた差が算出部35で求められた待機時間を超えていると判定部36は、通信装置10からパケットの再送を行うことを決定する。判定部36は、再送を行うパケットを再送部37に通知する。さらに、判定部36は、再送を行うことが決定されたパケットの送信に用いられるコネクションについて、コネクションテーブル22の再送フラグをONに設定する。例えば、送信元装置2IP1の1300番のポートから、対向装置6IP10の1400番のポートに向けたパケットの送信に用いられるコネクションにおいて、RTO計算値が0.12秒であるとする。また、算出部35で算出された1回目の待機時間は、0.12×2^0×3=0.36秒であるとする。判定部36が12時0分0.612秒に図9の通信パケットテーブル23を参照したとする。この場合、現在時刻と発信時刻の差は12時0分0.612秒-12時0分0.212秒=0.400秒である。そこで、判定部36は、パケットP2の再送を通信装置10で行うことを決定し、再送部37に通知する。さらに、判定部36は、コネクションテーブル22の再送フラグをONに設定する。すなわち、コネクションテーブル22は、図8bから図10aに示すように変更される。再送部37は、判定部36から通知されたパケットについて、通信パケットテーブル23の再送回数を1に変更し、再送を送信部12に指示する。さらに、再送部37は、通信パケットテーブル23の発信時刻を、パケットが再送される時刻に更新する。変更後の通信パケットテーブル23の例を図10bに示す。送信部12にパケットの再送を指示した後も、再送部37は、定期的に、再送フラグがONに設定されているコネクションを介して対向装置6に送信されたパケットについて、発信時刻から経過している時間を求める。再送部37は、発信時刻から経過した時間が2回目の待機時間を越えたパケットについて、送信部12に2回目の再送を指示する。その後も、発信時刻と再送部37が通信パケットテーブル23を確認する時刻の差が、待機時間を越えるたびに再送部37は、送信部12にパケットの再送を指示する。次に、再送フラグがONに設定されているコネクションを介して対向装置6に送信されたパケットの再送について説明する。再送フラグがONに設定されているコネクションを介して送信されたパケットの再送については、算出部35は、V=1として待機時間を算出することができる。算出部35は、得られた待機時間を、適宜、記憶部20に記憶する。この場合、再送部37は、発信時刻から2式でV=1として求められた待機時間を超えても通信パケットテーブル23に記録されているパケットについて、再送を送信部12に指示する。例えば、パケットP3については、再送部37は、そのコネクションについてV=1で計算された待機時間が経過した時刻に対向装置6に向けて再送を指示する。さらに、再送部37は、通信パケットテーブル23の発信時刻を、パケットが再送される時刻に更新する。なお、この例では、再送タイムアウトの3倍以上の時間が経過しても再送が行われないコネクションについて通信装置10が再送を行う場合の例を述べたが、通信装置10が再送を行うと決定するための基準は、実装に応じて任意に変更されることがある。算出部35は、通信装置10で再送が行われる基準に応じて待機時間を計算する。さらに、例えば3秒などの、予め決められた閾値よりも長い時間にわたって再送が行われないときに、判定部36は、通信装置10で再送を行うことを決定することもできる。この場合、算出部35で算出された待機時間ではなく、予め記憶している閾値の時間が経過しても再送が行われないコネクションについて、判定部36は、通信装置10で再送を行うことを決定する。Bケース2次に、送信元装置2がパケットを再送した場合の通信装置10の動作について説明する。まず、再送フラグの設定が行われていないときの動作から説明する。通信パケット確認部33は、入力されたパケットのシーケンス番号とデータ長の合計値をNextSeqNoと比較する。合計値がNextSeqNo以下であれば、通信パケット確認部33は、送信元装置2から再送されたパケットを取得したと判断する。すると、通信パケット確認部33は、取得したパケットとコネクションおよびシーケンス番号が同一であるエントリを通信パケットテーブル23から抽出し、抽出したエントリの再送回数の値を1つインクリメントする。次に、通信パケット確認部33は、送信元装置2から対向装置6に再送されたパケットを送信することと、再送するパケットを特定する情報を判定部36に通知する。判定部36は、通信パケット確認部33から通知を受け取った時刻をタイマ14から取得する。また、判定部36は、再送するパケットの前回の発信時刻を通信パケットテーブル23から取得し、タイマ14から得られた時刻との差実タイムアウト時間を求める。判定部36は、実タイムアウト時間と待機時間を比較する。待機時間の計算方法はケース1と同様である。実タイムアウト時間が待機時間よりも長い場合、判定部36は、そのコネクションについて、通信装置10からパケットの再送を行うことを決定し、コネクションテーブル22の再送フラグをONに設定する。判定部36が実タイムアウト時間を求めた後、通信パケット確認部33は、再送するパケットの送信を送信部12に指示し、送信を指示したパケットについて、通信パケットテーブル23中の発信時刻を更新する。例えば、図9の通信パケットテーブル23が生成された後で、通信装置10がパケットP2を再送する前に、送信元装置2が対向装置6にパケットP2を送信したとする。また、ここでは再送フラグがOFFに設定されているコネクションについて、V=2として2式から待機時間が計算されたとする。送信元装置2から再送されたパケットP2を通信装置10が対向装置6に転送した時刻が12時0分0.5秒であるとする。すると、通信パケット確認部33は、図8aに示すパケットP2のエントリについて、再送回数を1回インクリメントする。判定部36は、パケットP2の送信時刻が12時0分0.212秒であるので、12時0分0.5秒-12時0分0.212秒=0.288秒より、実タイムアウト時間が0.288秒であることを認識する。次に、判定部36は、そのコネクションについて計算されている待機時間と実タイムアウト時間を比較する。ここで、RTO計算値が0.12秒であるとすると、待機時間は、V=2なので、0.12×2^0×2=0.24秒である。従って、実タイムアウト時間は、待機時間より長い。そこで、判定部36は、パケットP2の送信に用いられているコネクションについて、通信装置10からパケットの再送を行うことを決定し、そのコネクションの再送フラグをONに設定する。その後、通信パケット確認部33は、パケットP2を対向装置6に向けて再送するように送信部12に指示する。また、パケットP2について、発信時刻を12時0分0.5秒に変更する。なお、この例では、実タイムアウトがRTO計算値の2倍以上の場合に通信装置10が再送を行う場合の例を述べたが、通信装置10が再送を行うと決定するための実タイムアウトとRTO計算値の割合は、実装に応じて任意に変更されることがある。さらに、例えば3秒などの、予め決められた時間よりも実タイムアウト時間が長いときに、判定部36は、通信装置10で再送を行うことを決定することもできる。次に、再送フラグがONに設定されているコネクションを介して対向装置6に送信されたパケットについては、ケース1と同様に処理される。従って、すでに再送フラグがONに設定されているコネクションについては、例えば、発信時刻から2式でV=1として求められた待機時間が経過したときに、通信装置10に格納されているパケットが対向装置6に再送される。RTO計算値の更新次に、RTO計算値の更新について説明する。ここでは、パケットP1が対向装置6に受信され、対向装置6から送信元装置2に向けてパケットP1についての応答メッセージA1が送信された場合を例として述べる。通信装置10に受信された応答メッセージA1は、前述のとおり、受信部11と直結機器検出部31を介して測定部34に出力される。測定部34は、確認応答番号よりもデータ長だけ小さな値のシーケンス番号を算出し、応答メッセージで受信が通知されたパケットを特定する。例えば、応答メッセージA1では確認応答番号が3001でデータ長が1000バイトであるので、測定部34は、3001-1000=2001のシーケンス番号のパケットに対する応答メッセージを受信したと認識する。すると、測定部34は、通信パケットテーブル23を参照することにより、応答メッセージを受け取ったパケットについて、送信部12から対向装置6に向けて送信した時刻発信時刻を求める。測定部34は、応答メッセージの受信時刻から、受信が通知されたパケットの発信時刻までの時間を差し引いた値を、応答時間とする。例えば、図8aに示すように、パケットP1が通信装置10から対向装置6に送信された時刻は、12時0分0.21秒である。測定部34は、応答メッセージA1の受信時刻をタイマ14から取得する。例えば、応答メッセージA1の受信時刻が12時0分0.41秒であるとする。すると、測定部34は、12時0分0.41秒-12時0分0.21秒=0.20秒を応答時間とする。測定部34は、求めた応答時間を算出部35に出力する。算出部35は、RTO計算値を更新するときは、3式によって更新値を求める。なお、3式において、N番目に算出されるRTO計算値をRTOcal,Nとする。RTOcal,N=SRTTNmaxG,K×RTTVARN3ここで、K=4RTTVARN=1-β×RTTVARN1β×|SRTTN1-MRTTN|SRTTN=1-α×SRTTN1α×MRTTNであるものとする。ここで、α=1/8、β=1/4であるものとする。Nは2以上の任意の整数である。MRTTNは、測定部34がN回目に求めた応答時間である。また、Gは、通信装置10が応答時間の測定に使用するクロックの粒度分解能である。更新後のRTO計算値に基づいた待機時間の求め方は前述のとおりである。算出部35により待機時間が算出されると、待機時間に基づいて再送処理が行われる。通信が終了したときの処理コネクション検出部32は、TCPヘッダ中のRSTかFINが1になっている場合、そのパケットが送信されてきたコネクションに対応する情報をコネクションテーブル22から消去する。従って、コネクションテーブル22には、確立されているコネクションが記録されており、消滅したコネクションや送信元装置2からの切断が要求されているコネクションは記録されていない。また、消去されるコネクションを介して送信されたパケットや、そのパケットに関する情報も、通信パケットテーブル23から消去される。さらに、前述のとおり、直結機器検出部31は、パケットを受信するたびに、受信パケットの送信元アドレスに対応付けられた最終通信時刻を更新する。そこで、直結機器検出部31は、最終通信時刻と現在の時刻の差が一定の時間以上になったエントリを直結機器テーブル21から削除する。図11Aと図11Bは、通信装置10がパケットを受信したときに行う動作の例を説明するフローチャートである。以下、図11Aと図11Bを参照しながら、通信装置10の動作を説明する。なお、図11Aと図11Bに示す通信装置10の動作は一例であり、実装に応じて変更される場合がある。例えば、ステップS3とS4は順序を入れ替えることができる。また、ステップS5は、ステップS14とS15の組み合わせと順序が変更される場合がある。また、ステップS17とS18の動作の組み合わせ、ステップS19とS20の組み合わせ、および、ステップS1とS2の組み合わせは、どの組み合わせの処理が最初に行われても良い。直結機器検出部31は、一定時間以上、通信装置10を介した通信が行われていない直結機器があるかを確認し、通信が行われていない直結機器の登録を直結機器テーブル21から削除するステップS1、S2。受信部11でパケットが受信されると、直結機器検出部31は、受信されたパケットはARPパケットであるかを確認するステップS3。受信されたパケットがARPパケットではない場合、直結機器検出部31は、受信されたパケットがTCPパケットであるかを確認するステップS4。受信されたパケットがTCPパケットである場合、直結機器検出部31は、送信元アドレスと直結機器テーブル21に記録されたアドレスを比較して、送信元の装置が直結装置であるかを確認するステップS5。送信元の装置が直結装置である場合、コネクション検出部32は、送信元装置2から対向装置6に向けて設定されているコネクションがコネクションテーブル22に登録されているかを確認するステップS5でYes、ステップS6。コネクションがコネクションテーブル22に登録されていない場合、コネクション検出部32は、コネクションテーブル22に送信元装置2から対向装置6にデータを送信するためのコネクションを登録するステップS6でNo、ステップS7。次に、通信パケット確認部33は、受信パケットのシーケンス番号とデータ長の合計値とコネクションテーブル22のNextSeqNoを比較することにより、受信したパケットが再送されたパケットであるかを確認するステップS8。通信パケット確認部33は、受信パケットのシーケンス番号とデータ長の合計値がNextSeqNo以下の場合、再送であると判断して、通信パケットテーブル23を更新するステップS8でYes、ステップS9。一方、受信パケットのシーケンス番号とデータ長の合計値がNextSeqNoより大きい場合、通信パケット確認部33は、処理対象のパケットは再送されたパケットではないと判断する。通信パケットテーブル23は、コネクションテーブル22のNextSeqNoを、受信パケットのシーケンス番号とデータ長の合計値に更新し、さらに、通信パケットテーブル23を更新するステップS8でNo、ステップS10。再送されたパケットを受信した場合、判定部36は、再送パケットを送信する時刻と最初に同じパケットを対向装置6に送信した時刻の間の時間実タイムアウト時間を求める。さらに、判定部36は、実タイムアウト時間が待機時間を超過しているかを判定するステップS11。実タイムアウト時間が待機時間を超過している場合、判定部36は、算出部35で計算された待機時間に合わせて対向装置6へのパケットの再送を行うことを決定し、再送フラグをONに設定するステップS11でYes、ステップS12。次に、通信装置10は、受信パケットが応答メッセージであるかを確認する。この処理は、受信パケットの送信元アドレスが直結機器テーブル21に登録されていない場合も行われるステップS5でNo、ステップS13。直結機器検出部31は、受信パケットの宛先アドレスが直結機器テーブル21に記録されているかを確認する。さらに、測定部34は、受信パケットのTCPヘッダ中のACKビットの値が1であるかを確認するステップS13。宛先アドレスが直結機器テーブル21に記録されていて、さらに、ACKが1になっている場合、測定部34は、受信パケットが応答メッセージであると判断する。さらに、測定部34は、応答メッセージにより対向装置6で受信されたことが通知されたパケットについての記録を、通信パケットテーブル23から削除するステップS14。その後、コネクションテーブル22の最終通信時刻を更新するステップS15。一方、受信パケットが応答メッセージではない場合も、コネクションテーブル22の最終通信時刻が更新されるステップS13でNo、ステップS15。さらに、コネクション検出部32は、コネクションテーブル22に含まれているコネクションの中で一定時間以上通信が行われていないコネクションがあるかを判定するステップS16。一定時間以上通信が行われていないコネクションがあれば、そのコネクションについて、コネクション検出部32はコネクションテーブル22のエントリを削除する。また、通信パケット確認部33は、通信が行われていないコネクションを介して送信されたパケットの記録を、通信パケットテーブル23から削除するステップS17。また、コネクション検出部32は、コネクションテーブル22に登録されているパケットのうちで、切断されるコネクションがあるかを確認するステップS18。この確認は、受信パケットのTCPヘッダに含まれているRSTビットかFINビットの値が1になっているかを確認することにより行われる。コネクション検出部32は、切断されるコネクションのエントリをコネクションテーブル22から削除する。また、また、通信パケット確認部33は、通信が行われていないコネクションを介して送信されたパケットの記録を、通信パケットテーブル23から削除するステップS19。一方、受信されたパケットがARPパケットである場合、直結機器検出部31は、ARPパケットの送信元の装置が直結機器テーブル21に登録されているかを確認するステップS20。ARPパケットの送信元の装置が直結機器テーブル21に登録されていない場合、直結機器検出部31は、送信元の装置のIPアドレスやMACアドレスなどを直結機器テーブル21に登録するステップS21。受信パケットがARPパケットである場合、ステップS21の処理の後は、ステップS15以降の処理が行われる。また、既に送信元アドレスが直結機器テーブル21に登録されている場合は、ステップS20の処理の後、ステップS15以降の処理が行われる。また、受信されたパケットの種類がTCPパケットでない場合も、ステップS15以降の処理が行われるステップS4でNo、ステップS15。図12は、通信装置10に格納されているパケットが対向装置6に再送される場合の動作の例を説明するフローチャートである。なお、図12は、動作の例であり、例えば、ステップS34とS35をステップS31の前に行うように順序が変更されるなどの変更が加えられる場合がある。また、図12は、判定部36が定期的に起動される場合の動作を示しているが、例えば、判定部36は通信装置10が起動している間、継続的に起動しているように変形されても良い。さらに、判定部36が起動される間隔は、任意の値に設定される。判定部36は、通信パケットテーブル23に含まれている発信時刻と現在時刻の差を求め、得られた差が待機時間を超えているパケットがあるかを確認するステップS31。ここで、待機時間は、RTO計算値に基づいて、2式から計算される。待機時間を越えても再送が行われていないパケットがあると、再送部37は、そのパケットの再送を送信部12に指示する。さらに、再送部37は、再送を指示したパケットについて、通信パケットテーブル23の発信時刻を更新するステップS31でYes、ステップS32。さらに、判定部36は、再送されたパケットの送信に用いられるコネクションについて、再送フラグをONに設定するステップS33。次に、再送部37は、再送フラグがONに設定されているコネクションを介して送信されたパケットについて、発信時刻からV=1として計算される待機時間を超過しても再送が行われていないパケットが通信パケットテーブル23に記録されているかを確認するステップS34。該当するパケットが通信パケットテーブル23に記録されている場合、再送部37は、そのパケットの再送を送信部12に指示する。さらに、再送部37は、再送を指示したパケットについて、通信パケットテーブル23の発信時刻を更新するステップS34でYes、ステップS35。図13は、対向装置6に送信されたパケットが送信されてから再送されるまでの時間の例を示すテーブルである。この例では、送信元装置2では、再送タイムアウトが3秒に固定されているものとする。すなわち、送信元装置2は、パケットの送信後3秒以上経過しなければパケットを再送しない。通信装置10からの再送を行わないと、送信元装置2からの再送は、Aに示すように、送信から3秒後に1回目の再送が行われる。1回目の再送を行った後でも応答メッセージが得られなければ、次の再送までの待ち時間を、1回目の再送のときの2倍の長さにして、送信元装置2は、最初のパケットの送信から9秒後に、2回目の再送を行う。一方、再送フラグがOFFのパケットについて、判定部36の判定に基づいて再送が行われる場合の待機時間をBに示す。ここで、コネクションの応答時間から計算されたRTO計算値は0.12秒であるとする。また、判定部36は、RTO計算値の3倍以内の時間に対向装置6での受信が確認できず、さらに、パケットの再送も行われていない場合、通信装置10がパケットの再送を行うことを決定するものとする。この場合、最初の再送は、最初にパケットを送信した後0.36秒で行われる。また、パケットを最初に送信してから1.08秒後に2回目の再送、2.52秒後に3回目の再送、5.4秒後に4回目の再送が行われる。従って、応答時間から算出されたRTO計算値に基づいて得られた待機時間に合わせて送信が行われると、Bに示すように最初にパケットを送信してから10秒以内に4回再送が行われる。一方、通信装置10が再送を行わない場合は、Aに示すように最初にパケットを送信してから10秒以内に2回までしか再送が行われない。さらに、再送フラグがONに設定されたコネクションについては、通信装置10は、送信元装置2の再送処理は、パケットが最初に送信されてからRTO計算値の3倍以上経過しないと行われないことを認識している。従って、算出部35は、待機時間を計算する際に2式などのVの値を1に設定することができ、Cに示すようなタイミングで再送が行われる。すると、最初にパケットを送信してから10秒以内に6回再送が行われる。このように、通信装置10が応答時間に合わせて待機時間を計算し、パケットの送信から待機時間が経過したときにパケットの再送を行うシステムでは、パケットロストが発生しても、早いタイミングで対向装置6に再送が行われる。送信元装置2から送信されたパケットに含まれているデータを対向装置6で動作しているアプリケーションで処理している場合、アプリケーションでのタイムアウトが発生する前にパケットを再送できることが望ましい。通信装置10に格納されているパケットを通信装置10から対向装置6に再送することにより、パケットの再送のタイミングを応答時間に合わせて設定することができる。そのため、応答時間が短い場合は、送信元装置2での再送タイムアウトが固定値になっていたとしても、通信装置10が再送を行うことで、アプリケーションがタイムアウトするまでのリトライ回数を増やすことができる。このような通信装置10は、例えば、クラウドコンピューティングシステムのクライアント装置が所属するネットワークに配置されると、送信元装置2で行われる再送のタイミングが固定であっても、リトライ回数を増やすことができる。さらに、送信元装置2の再送タイムアウトが固定値ではない場合でも通信装置10を用いることにより、リトライ回数を増やすことができる場合がある。例えば、通信装置10で計算される待機時間よりも長い時間待機してから送信元装置2がパケットを再送する場合、通信装置10が送信元装置2に代わってパケットを再送することにより、リトライ回数が増加する。<第2の実施形態>第1の実施形態では、パケットの再送を行うかをコネクションごとに通信装置10が決定する場合について説明したが、本実施形態では、通信装置10での再送を行うかがパケットごとに決定される。従って、通信装置10での再送を行うかは、送信元装置2が対向装置6に対して送信したパケットを再送するたびに判定される。図14Aと図14Bは、通信装置10がパケットを受信したときに行う動作の例を説明するフローチャートである。ステップS41~S50の処理は、図11Aと図11Bを参照しながら説明したステップS1~S10と同様に行われる。次に、判定部36は、送信元装置2から対向装置6に向けて送信されたパケットについて、実タイムアウト時間を求める。実タイムアウト時間は、再送される通信パケットテーブル23に記録されている送信時刻と再送するパケットの送信時刻の差である。判定部36は、実タイムアウト時間を、RTO計算値を用いて得られた待機時間と比較する。ステップS51。判定部36は、実タイムアウト時間が待機時間以下の場合、再送フラグをOFFに設定するステップS52。一方、実タイムアウト時間が待機時間より長い場合、判定部36は、再送フラグをONに設定するステップS53。ステップS54~S62の処理は、ステップS13~S21と同様である。本実施形態では、通信装置10での再送を行うかは、待機時間が経過するたびに判定されるので、例えば、誤って再送フラグがONに設定されたとしても、判定部36は、次のパケットについて再送を行うかを判定するときに再送フラグの設定を修正できるなお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。例えば、直結機器検出部31は、受信パケットのMACアドレスを用いて、送信元の装置が直結装置であるかを確認することもできる。この場合、直結機器検出部31は、受信パケットのイーサネットヘッダを確認する。上述の第1、第2の実施形態を含む各実施形態に対し、さらに以下の付記を開示する。付記1対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信する受信部と、前記第1および第2のパケットを記憶する記憶部と、前記第1および第2のパケットを前記対向装置に送信する送信部と、前記送信部が前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを前記受信部が受信した時刻までの時間である応答時間を測定する測定部と、前記送信部が前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記受信部が前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記記憶部から前記第2のパケットを取得すると共に、前記送信部に、前記第2のパケットを前記対向装置に再度送信させる再送部を備えることを特徴とする通信装置。付記2前記送信部が前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記受信部が前記第2の応答メッセージと前記再送パケットのいずれも受信しない場合、前記第2のパケット以降に前記送信元装置から受信した前記対向装置宛のパケットは前記再送部が再送する対象であると判定するとともに、前記送信元装置を対象装置に指定する判定部と、前記対象装置から前記第2のパケットの後に送信された第3のパケットが前記送信部から送信された時刻から前記第3のパケットの再送を前記送信部に指示する時刻までの、前記再送部が待機する時間である待機時間を算出する算出部をさらに備え、前記第3のパケットに対する応答メッセージを、前記第3のパケットが前記送信部から送信された時刻から前記待機時間が経過しても受信しない場合、前記再送部は前記第3のパケットを前記対向装置に送信することを特徴とする付記1に記載の通信装置。付記3前記第3のパケットが前記送信部から前記対向装置に向けて送信された時刻から、前記送信元装置から再送された前記第3のパケットを前記受信部が受信するまでの時間が、前記待機時間よりも短い場合、前記判定部は、前記送信元装置が前記対象装置ではなくなったと判定することを特徴とする付記2に記載の通信装置。付記4前記送信元装置から前記対向装置へのデータの送信に用いられるコネクションの確立を検出すると共に、前記コネクションを介して送信されたパケットに含まれるデータの次に前記コネクションを介して送信されるデータを特定する第1の値を、前記コネクションと対応付けてコネクションテーブルに記録するコネクション検出部を備え、前記再送部は前記コネクションを介して送信される前記対向装置宛のパケットとして、前記受信部で受信されたパケットに含まれているデータの次に前記コネクションを介して送信されるデータを特定する第2の値が前記コネクションテーブルに記録されている値以下の場合、前記第2の値で特定されるデータを含むパケットが前記送信元装置から再送されたと認識することを特徴とする付記2もしくは3に記載の通信装置。付記5前記コネクション検出部は、前記コネクションテーブルに記録されている第1のコネクションを介して送受信されるパケットに含まれている制御ビットを確認することにより、前記第1のコネクションを介した通信の終了を検出すると、前記コネクションテーブルから前記第1のコネクションに関するエントリを削除することを特徴とする付記4に記載の通信装置。付記6前記受信部が応答メッセージを受信すると、前記記憶部は、受信された応答メッセージに対応するパケットを削除することを特徴とする付記1~5のいずれか1項に記載の通信装置。付記7対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信し、前記第1および第2のパケットを記憶し、前記第1および第2のパケットを前記対向装置に送信し、前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを受信した時刻までの間の時間である応答時間を測定し、前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記第2のパケットを前記対向装置に再度送信する処理を、前記送信元装置から送信された前記対向装置宛のパケットを中継する通信装置が実行することを特徴とする通信方法。付記8対向装置宛ての第1および第2のパケットを送信し、前記対向装置での受信が確認できないパケットを前記対向装置に再送する送信元装置から、前記第1および第2のパケットを受信し、前記第1および第2のパケットを記憶し、前記第1および第2のパケットを前記対向装置に送信し、前記第1のパケットを前記対向装置に送信した時刻から、前記対向装置での前記第1のパケットの受信を通知する第1の応答メッセージを受信した時刻までの間の時間である応答時間を測定し、前記第2のパケットを前記対向装置に送信した時刻から、前記応答時間より長い時間が経過しても、前記対向装置での前記第2のパケットの受信を通知する第2の応答メッセージを受信せず、かつ、前記送信元装置から前記第2のパケットを再送したパケットである再送パケットも受信しない場合、前記第2のパケットを前記対向装置に再度送信する処理をコンピュータに実行させることを特徴とする通信プログラム。"