(57)【特許請求の範囲】
【請求項１】
通信ネットワークを介して他の通信装置と通信コネクションを確立し、前記通信コネクションを用いて第１情報に関するパケットの通信を行う通信部と、
前記通信ネットワークの特性情報に基づいて、前記第１情報と異なる第２情報に関するパケットの送信間隔を決定する決定部と、
少なくとも前記通信コネクションが確立されており、かつ前記第１情報に関するパケットの通信が停止している間、前記決定部で決定された送信間隔に従って、前記通信コネクションを用いて前記他の通信装置に、前記第２情報に関するパケットを送信するよう制御する接続維持部とを備え、
前記通信ネットワークは、自装置が接続される第１中継装置と、前記第１中継装置の上流ネットワークとを含み、
前記通信ネットワークの特性情報は、前記上流ネットワークのネットワーク事業者の識別情報および前記上流ネットワークのネットワークプロバイダの識別情報の少なくともいずれかを含む
通信装置。
【請求項２】
前記通信ネットワークの特性情報は、前記第１中継装置の情報を含む
請求項１に記載の通信装置。
【請求項３】
前記通信ネットワークの特性情報は、前記上流ネットワークにおいて前記他の通信装置との間の通信経路上に存在する中継装置の情報を含む
請求項１または２に記載の通信装置。
【請求項４】
前記決定部は、前記通信ネットワークの特性情報と、少なくとも１つの通信ネットワークの特性情報とパケット送信間隔とを関連づけた関連データに基づき前記送信間隔を決定する
請求項１ないし３のいずれか一項に記載の通信装置。
【請求項５】
前記他の通信装置との間の通信経路上の１つ以上の中継装置と通信することにより、前記通信ネットワークの特性情報を取得する取得部
をさらに備えた請求項１ないし４のいずれか一項に記載の通信装置。
【請求項６】
前記送信間隔が決定済みか否かを示す状態情報を記憶する記憶部を備え、
前記決定部は、前記記憶部から読み出した状態情報が、前記送信間隔が決定済みでないことを示すとき、前記取得部により取得された前記通信ネットワークの特性情報に基づいて、前記送信間隔を決定する処理を行う
請求項５に記載の通信装置。
【請求項７】
前記第２情報に関するパケットは、キープアライブパケットまたはハートビートパケットである
請求項１ないし６のいずれか一項に記載の通信装置。
【請求項８】
第１の通信装置と、
前記第１の通信装置と通信ネットワークを介して接続された第２の通信装置とを備え、
前記第１の通信装置は、前記第２の通信装置と通信コネクションを確立し、前記通信コネクションを用いて第１情報に関するパケットの通信を行う第１通信部と、
前記通信ネットワークの特性情報に基づいて、前記第１情報と異なる第２情報に関するパケットの送信間隔を決定する第１決定部と
少なくとも前記通信コネクションが確立されており、かつ前記第１情報に関するパケットの通信が停止している間、前記決定部で決定された送信間隔に従って、前記通信コネクションを用いて前記第２の通信装置に、前記第２情報に関するパケットを送信するよう制御する第１接続維持部と
を備え、
前記通信ネットワークは、前記第１の通信装置が接続される第１中継装置と、前記第１中継装置の上流ネットワークとを含み、
前記通信ネットワークの特性情報は、前記上流ネットワークのネットワーク事業者の識別情報および前記上流ネットワークのネットワークプロバイダの識別情報の少なくともいずれかを含む
通信システム。
【請求項９】
前記第２の通信装置は、
通信ネットワークの特性情報とパケット送信間隔とを関連づけた関連データを記憶する記憶部と、
前記第１の通信装置から、前記通信ネットワークの特性情報を含む取得要求メッセージを受信する第２通信部と、
前記取得要求メッセージに含まれる前記通信ネットワークの特性情報と前記関連データに基づいて、前記第１の通信装置に対する送信間隔を特定し、特定した送信間隔の指定情報を含む応答メッセージを、前記第１の通信装置に送信する第１情報提供部と、
を備えた請求項８に記載の通信システム。
【請求項１０】
前記第２の通信装置の第２通信部は、前記第１の通信装置から、前記第１の通信装置で決定された送信間隔の値と前記通信ネットワークの特性情報とを含むメッセージを受信し、
前記第２の通信装置は、前記メッセージに含まれる前記通信ネットワークの特性情報と前記送信間隔の値とを関連づけて前記記憶部に格納する情報登録部
をさらに備えた請求項９に記載の通信システム。
【請求項１１】
前記第２の通信装置は、前記記憶部に記憶されているデータを前記第１の通信装置に提供する第２情報提供部をさらに備え、
前記第１の通信装置は、前記第２の情報提供部から提供されたデータを記憶する記憶部を備え、
前記第１の通信装置の前記第１決定部は、前記通信ネットワークの特性情報と、前記記憶部に記憶されたデータに基づいて、前記送信間隔を決定する
請求項９または１０に記載の通信システム。
【請求項１２】
通信装置により実行する通信方法であって、
通信ネットワークを介して他の通信装置と通信コネクションを確立し、前記通信コネクションを用いて第１情報に関するパケットの通信を行う通信ステップと、
前記通信ネットワークの特性情報に基づいて、前記第１情報と異なる第２情報に関するパケットの送信間隔を決定する決定ステップと
少なくとも前記通信コネクションが確立されており、かつ前記第１情報に関するパケットの通信が停止している間、前記決定ステップで決定された送信間隔に従って、前記通信コネクションを用いて前記他の通信装置に、前記第２情報に関するパケットを送信するよう制御する接続維持ステップと、を備え、
前記通信ネットワークは、前記通信装置が接続される第１中継装置と、前記第１中継装置の上流ネットワークとを含み、
前記通信ネットワークの特性情報は、前記上流ネットワークのネットワーク事業者の識別情報および前記上流ネットワークのネットワークプロバイダの識別情報の少なくともいずれかを含む
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、通信装置、通信システムおよび通信方法に関する。
【背景技術】
【０００２】
確立した通信コネクションを維持し、双方向の低遅延通信を実現するＷｅｂ標準通信プロトコルとして、ＷｅｂＳｏｃｋｅｔが知られている。このＷｅｂＳｏｃｋｅｔとポーリング方式を併用する遠隔制御システム技術が、提案されている。ＷｅｂＳｏｃｋｅｔ通信では、無通信状態が一定時間つづくと、介在する中継装置（ブロードバンドルータ等）が通信コネクションを切断してしまう問題が知られている。上述の遠隔制御システム技術では、この問題を回避ないし解決する方法、具体的には、通信コネクションを長時間維持する機構は開示されていない。一般的には、通信コネクションを維持するためにキープアライブパケットを短周期（例えば１分）で送信し、通信コネクションを維持する仕組みが知られている。
短周期でキープアライブパケットを送信する方式では、多数のクライアントを収容する必要がある場合、キープアライブパケットの送信による通信コストやＣＰＵ負荷が無視できない。特に、昨今普及しているクラウドサービスでは、通信を従量課金制にしているものが多く、通信量の増大は直接運用費用に影響するため、可能な限り削減する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０３７９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施形態は、通信先の通信装置の負荷及び通信量を抑えつつ、通信コネクションを維持することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一態様としての通信装置は、通信部と、決定部と、接続維持部とを備える。前記通信部は、通信ネットワークを介して他の通信装置と通信コネクションを確立し、前記通信コネクションを用いて第１情報に関するパケットの通信を行う。前記決定部は、予め取得した前記通信ネットワークの特性情報に基づいて、前記第１情報と異なる第２情報に関するパケットの送信間隔を決定する。前記接続維持部は、少なくとも前記通信コネクションが確立されており、かつ前記第１情報に関するパケットの通信が停止している間、前記決定部で決定された送信間隔に従って、前記通信コネクションを用いて前記他の通信装置に、前記第２情報に関するパケットを送信するよう制御する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る通信システムを示す図。
【図２】中継装置に保持されているＮＡＴテーブルの例を示す図。
【図３】通信維持管理情報の一形態を示す図。
【図４】通信装置、中継装置およびサーバ装置間の通信シーケンスの一例を示す図。
【図５】通信装置、中継装置およびサーバ装置間の通信シーケンスの他の例を示す図。
【図６】第１の実施形態に係る通信装置の取得部の動作フローを示す図。
【図７】第１の実施形態に係る通信装置の決定部の動作フローを示す図。
【図８】第２の実施形態に係る通信システムを示す図。
【図９】第１および第２接続管理情報の例を示す図。
【図１０】第３の実施形態に係る通信システムを示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら、本発明の実施形態について説明する。
【０００８】
（第１の実施形態）
図１は、本発明の第１の実施形態に係る通信システムを示す。この通信システムは、通信装置１０１と、サーバ装置３０１とを備え、これらが通信ネットワーク５０１を介して接続されている。通信ネットワーク５０１は、中継装置２０１と、中継装置２０１の上流のネットワーク４０１とを含む。通信装置１０１は、中継装置２０１に無線または有線で接続される。サーバ装置３０１は、ネットワーク４０１に有線または無線で接続されている。ネットワーク４０１は、インターネット等の広域ネットワークでも、ローカルネットワークでもよい。またネットワーク４０１は、有線ネットワークでも、無線ネットワークでも、これらの複合ネットワークでもよい。本実施形態では、インターネットを想定する。通信装置１０１は、サーバ装置３０１と、Ｗｅｂ標準通信プロトコルとして知られているＷｅｂＳｏｃｋｅｔに従って通信できる。ＷｅｂＳｏｃｋｅｔでは、ＴＣＰコネクション上で、通信装置１０１およびサーバ装置３０１間でＨＴＴＰを利用してＷｅｂＳｏｃｋｅｔ接続を行うと、その後は、サーバ装置３０１および通信装置１０１のどちらからでも、そのＷｅｂＳｏｃｋｅｔ接続を利用して、任意のタイミングでデータを送信することができる。データ送信の度に、ＴＣＰコネクションを設定する必要はなく、一度設定したＴＣＰコネクションを利用し続けることができる。
【０００９】
サーバ装置３０１は、基本的には、ＣＰＵ、主記憶、補助記憶、通信インタフェースといった一般的な計算機のハードウェア構成を備える。サーバ装置３０１は、通信装置１０１の通信対象となる通信装置の一形態である。サーバ装置３０１は、ＰＣ、デジタルテレビ、ハードディスクレコーダ、あるいは、タブレット  やスマートフォン等のデジタル機器として実現されてもよい。サーバ装置３０１の構成について、ＣＰＵ、主記憶、補助記憶等の構成数、容量、接続インタフェース規格等に関して、様々な構成バリエーションをとり得る。サーバ装置３０１は、クラウドシステム上で動作する仮想マシンであってもよい。
【００１０】
通信装置１０１は、通信ネットワーク５０１を介して、すなわち、中継装置２０１とネットワーク４０１を介して、サーバ装置３０１と通信できる機能を備えた装置である。通信装置１０１は、基本的には、ＣＰＵ、主記憶部（揮発性または不揮発性のメモリ等）、補助記憶部（ＳＳＤ、ハードディスク等）、通信インタフェースといった、一般的な計算機のハードウェア構成を備える。通信装置１０１の具体例として、ＰＣ、ＳＴＢ、デジタルテレビ、ハードディスクレコーダ、あるいは、タブレットやスマートフォン等のデジタル機器が考えられる。通信装置１０１は、白物家電やセンサのような非力な機器であっても構わない。通信装置１０１は、サーバ装置３０１と通信できる機能を備える限り、どのような形態の装置であってもよい。例えば、通信装置１０１は、例えば、ブロードバンドルータのような中継装置であることも可能である。
【００１１】
中継装置２０１は、通信装置１０１とサーバ装置３０１との通信経路上に設置される機器である。例えば、公衆網上のルータ、宅内に設置されたブロードバンドルータやＯＮＵ、データセンター等のサーバ側のイントラネット内に設置されたロードバランサ、ファイアーウォール、プロキシなど、あらゆるタイプの機器が想定される。本実施形態では、中継装置２０１は、特に、通信装置１０１が直接通信可能なブロードバンドルータを想定する。
【００１２】
中継装置２０１は、図２の例に示すようなＮＡＴテーブル、および必要に応じて、図示しないルーティングテーブルに従って、内側から外側（アウトバウンド）、外側から内側（インバウンド）のパケットの入出力を制御する。すなわち、通信装置１０１側（内側）から受信したパケットのネットワーク４０１側（外側）へ転送、およびネットワーク４０１側から受信したパケットの通信装置１０１側への転送を制御する。
【００１３】
ＮＡＴテーブルの１つのエントリには、ローカルＩＰ、ローカルポート、グローバルＩＰ、グローバルポート、その他の項目が含まれる。本例ではローカルＩＰは、通信装置１０１のローカルのＩＰアドレス、ローカルポートは、通信装置１０１のアプリケーションが、サーバ装置３０１との通信に使用するポート番号である。グローバルＩＰは通信装置１０１のユーザに割り当てられたＩＰアドレス、グローバルポートは、ローカルポートの変換先のポート番号である。アウトバウンドのパケットの送信元ＩＰアドレスおよびポート番号、ＮＡＴテーブルの該当するエントリ（ローカルＩＰアドレスとローカルポート番号がマッチするエントリ）に従って、グローバルＩＰアドレスおよびグローバルポート番号に変換されて、出力インタフェースから出力される。パケットを出力する出力インタフェースがルーティングテーブルによって決められる構成もある。
【００１４】
エントリ内の「その他」の項目には、通信プロトコルの種別や、最後の通信のタイムスタンプや、内側／外側のＴＣＰコネクションの状態が含まれる。ＴＣＰコネクションの状態の例として、例えば、通信装置１０１とサーバ装置３０１とのＴＣＰコネクションの状態に関する値が設定される。例えば、ＴＣＰコネクションに関して、通信装置１０１およびサーバ装置３０１のいずれもＥＳＴＡＢＬＩＳＨＥＤになった場合（ＴＣＰコネクションが設定された場合）、内側および外側とも、ＥＳＴＡＢＬＩＳＨＥＤが設定される（内側／外側＝ＥＳＴＡＢＬＩＳＨＥＤ／ＥＳＴＡＢＬＩＳＨＥＤ）。
【００１５】
中継装置２０１は、例えば通信装置１０１からサーバ装置３０１へのＴＣＰコネクション確立要求のパケットを受信すると、ＮＡＴテーブルにエントリを生成するとともに、当該パケットを転送する。その後の、サーバ装置３０１および通信装置１０１間でやりとりされるパケットのＴＣＰフラグからＴＣＰコネクションの確立を検出すると、ＥＳＴＡＢＬＩＳＨＥＤを設定する。双方がＥＳＴＡＢＬＩＳＨＥＤにされたエントリが存在する間は、中継装置２０１では、通信装置１０１およびサーバ装置３０１の当該エントリのＴＣＰコネクションを維持し、通信装置１０１およびサーバ装置３０１、このＴＣＰコネクションを利用した通信（Ｗｅｂｓｏｃｋｅｔ通信、あるいは後述する計測用の通信など。なお、これらの通信はそれぞれ別々のＴＣＰコネクションでよい）が、中継装置２０１で遮断されることなく、可能である。
【００１６】
中継装置２０１は、例えば、最後の通信のタイムスタンプの時刻から一定期間、アウトバウンドまたはインバウンドの方向へ、このエントリのＴＣＰコネクションの通信がないと、タイムアウトとして、当該エントリを削除あるいはＴＣＰコネクションの状態をクローズ等（以下、これらのことを、中継装置でＴＣＰコネクションが切断されると表現することがある）する。この場合、通信装置１０１は、サーバ装置３０１と、確立済みのＴＣＰコネクションを利用して、Ｗｅｂｓｏｃｋｅｔで通信を行おうとしても、中継装置２０１で当該ＴＣＰコネクション切断されているため、中継装置２０１で通信が遮断され、このため、ＴＣＰコネクションの確立手続からやり直す必要が発生する。Ｗｅｂｓｏｃｋｅｔ通信であれば、現在のＷｅｂｓｏｃｋｅｔ接続を切断して、ＴＣＰコネクションの設定からやり直す必要がある。これを回避するために、Ｗｅｂｓｏｃｋｅｔ接続を確立後、中継装置２０１でのタイムアウト前にキープアライブパケットを送信すれば、最後の通信のタイムスタンプの時刻が更新されるため、中継装置２０１でのＴＣＰコネクションを維持することができる。
【００１７】
中継装置２０１におけるタイムアウト（接続維持期間）の設定は、アウトバウンドの通信と、インバウンドの通信とで異なってもよい。この場合、最後の通信のタイムスタンプの時刻を、アウトバウンドの通信と、インバウンドの通信とで別々に管理してもよい。
【００１８】
ここでは、ＮＡＴテーブルのエントリの「その他」のオプション項目で、ＴＣＰコネクションの状態を管理したが、ＮＡＴテーブル自体で管理しない方法も可能である。例えば、通信装置１０１とサーバ装置３０１のＴＣＰコネクション状態が、両方ともＥＳＴＡＢＬＩＳＥＤになった場合に、所定のテーブルにエントリを生成し、一方ないし双方のＴＣＰコネクション状態がＣＬＯＳＥＤになった場合に当該エントリを削除、あるいは、何らかのＮＡＴのタイムアウトポリシーに基づいて、当該エントリを削除するようにすることも可能である。
【００１９】
ネットワーク４０１にも、中継装置２０１とは別に、プロバイダやネットワーク提供事業者等の種々の中間ノード（事業者側の中継装置等）が存在し得る。事業者側の中継装置等も、ルータ、ロードバランサ、ファイアーウォール、プロキシなど、あらゆるタイプの機器が想定される。これらの事業者側の中継装置等も、テーブルにエントリを作成して、中継装置２０１と同様にＴＣＰコネクションを管理している場合もあり得る。タイムアウトが発生すれば、当該ＴＣＰコネクションに関するエントリを削除する可能性もある。タイムアウトは、インバウンドとアウトバウンドで別々に管理される場合もあり得る。事業者側の中継装置が、Ｆｉｒｅｗａｌｌ等のフィルタ機能を備える場合に、このフィルタ機能により一定期間、通信がないと、その通信がない方向のパケットを遮断する可能性もある。
【００２０】
図１の通信装置１０１は、通信部１１１、接続維持部１１２、取得部１１３、記憶部１１４および決定部１１５を備えている。接続維持部１１２、取得部１１３、決定部１１５および通信部１１１の一部は、ＣＰＵ等のプロセッサにコンピュータプログラムを実行させることで実現してもよい。
【００２１】
通信部１１１は、通信ネットワーク５０１を介して、サーバ装置３０１と通信コネクションを設定し、当該通信コネクションを用いてサーバ装置３０１と通信する。通信コネクションは、ＴＣＰコネクションが想定されるが、これに限定されず、中継装置２０１等でコネクション状態が管理される限り、別の通信プロトコルのコネクションも可能である。通信部１１１は、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）およびＴＣＰ／ＩＰ通信スタックを含む機能コンポーネントを含む。ＴＣＰ／ＩＰスタックは、ＮＩＣ上にハードウェアで実装されたものであっても良いし、オペレーティングシステム（ＯＳ）上に実装されたり、ドライバとして実装されるソフトウェアであってもよい。また、トランスポート層は、ＴＣＰに限定されるものではなく、ＵＤＰであってもよい。物理層・ＭＡＣ層は、イーサネット（登録商標）だけでなく、Ｗｉｆｉなどの無線、ＩｎｆｉｎｉＢａｎｄ等であってもよい。
【００２２】
接続維持部１１２は、中継装置２０１等によってＴＣＰコネクションが切断されないように、予め定めた方法に従ったタイミングで、接続を維持するためのパケット（キープアライブパケットまたはハートビートパケット。以下、キープアライブパケットに統一）を送信する。Ｗｅｂｓｏｃｋｔの通常のデータ通信のパケットを第１情報に関するパケットと呼び、キープアライブパケットは、第１情報とは異なる第２情報に関するパケットと呼ぶことができる。キープアライブパケットの送信のタイミングは、基本的には、定期的なタイミングが考えられるが、必ずしも一定である必要はない。キープアライブパケットの送信元ＩＰアドレス、送信元ポート番号、宛先ＩＰアドレス、宛先ポート番号は、上述の維持したい通信コネクションで使用するものと同じ値である。接続維持部１１２は、後述する決定部１１５からの指示に基づくタイミング、もしくは、後述する記憶部１１４に記憶された送信間隔情報に基づく一定周期のタイミングで、キープアライブパケットを送信する。
【００２３】
キープアライブパケットがサーバ装置３０１で受信されると、ＴＣＰに従ってＡＣＫパケットが返される。通信部１１１でＡＣＫパケットが受信され、通信部１１１からその旨の通知を受けることで、接続維持部１１２は、キープアライブパケットの送信に成功したと判断できる。ここでは、キープアライブパケットの送信成功の可否を、ＴＣＰでのＡＣＫパケットで確認したが、ＷｅｂＳｏｃｋｅｔプロトコルレベルで、応答パケットを返すようにし、この応答パケットで確認してもよい。例えば、ＷｅｂＳｏｃｋｅｔプロトコルのＰＩＮＧフレームを送信し、サーバ装置３０１が、これに対する応答として、ＰＯＮＧフレーム送信するようにしてもよい。
【００２４】
取得部１１３は、通信装置１０１およびサーバ装置３０１間の通信を維持するために必要な情報として、通信ネットワーク５０１の特性情報（以下、通信維持用情報と呼ぶ）を取得する。取得方法としては、通信部１１１を介した通信により取得、または外部からのユーザ入力、またはこれらの両方により取得する。通信ネットワーク５０１の特性情報（通信維持用情報）は、サーバ装置３０１と通信装置１０１との間に介在する中継装置２０１に関する情報（以降、中継装置情報）、中継装置２０１より上流のネットワーク４０１に関する情報、またはこれらの両方を含む。上流のネットワーク４０１に関する情報（ネットワーク情報）は、例えば契約ネットワークまたはプロバイダを特定できる情報を含み、上流のネットワーク４０１においてサーバ装置３０１との間の通信経路上に存在する中継装置の中継装置情報を含んでもよい。なお、中継装置２０１は、通信ネットワーク５０１においてサーバ装置３０１との間の通信経路上に存在する中継装置の１つである。ネットワーク情報は、上記中継装置情報と同時に取得してもよいし、あるいは別途、取得してもよい。取得部１１３は、取得した接続維持用情報を含む通信維持管理情報を生成し、生成した通信維持管理情報のエントリを、記憶部１１４に格納する。
【００２５】
以下、中継装置情報の具体例を示す。ここでは中継装置２０１の中継装置情報を例にとるが、上流ネットワーク４０１に存在する中継装置についても同様の形態が可能である。
（１−１）中継装置２０１を識別できる情報（ＵＵＩＤ、ＭＡＣアドレス、型名あるいは機種名＋製造番号。ホスト名またはＩＰアドレス、またはホスト名およびＩＰアドレスの一方とポート番号との組も可能である）
（１−２）中継装置２０１の機種を特定できる情報（機種名、型名）、ないし、推定できる情報（製造番号、ＭＡＣアドレス、メーカ情報、製造年月日情報）（以降、まとめて機種情報と呼ぶ）
（１−３）中継装置２０１における通信コネクションの切断タイミングが特定できる情報（ＴＣＰ通信のタイムアウト値など）
【００２６】
中継装置２０１の中継装置情報を、通信部１０１を介して取得する場合の方法として、一般的には、ＵＰｎＰ（Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ）を利用することを想定しているが、上記の中継装置２０１の情報が収集できる限りにおいては、通信プロトコルは問わない。
【００２７】
記憶部１１４は、取得部１１３により生成された通信維持管理情報を内部に記憶する。記憶部１１４は、ＳＳＤやハードディスク等の記憶装置でもよいし、ＤＲＡＭ等の不揮発性メモリでもよいし、ＭＲＡＭやＮＡＮＤ型フラッシュメモリ等の不揮発性メモリでもよい。または、記憶部１１４は、通信装置１０１に外付けされる外部記憶媒体（メモリカード、メモリスティックやハードディスク等）でもよい。
【００２８】
図３に、第１の実施形態に係る通信維持管理情報のエントリの例を示す。図３では、通信維持管理情報は、接続維持用情報（中継装置情報およびネットワーク情報）に加えて、エントリ識別情報、送信間隔情報および送信間隔状態情報を含む。
【００２９】
エントリ識別情報としては、中継装置２０１の識別情報（ＭＡＣアドレスやＵＵＩＤなど）が利用できる。ただし、エントリの識別は、必ずしも中継装置２０１のみに依存するわけではないので、中継装置２０１の識別情報と、ネットワーク情報の識別情報（契約ネットワーク識別情報＋契約プロバイダ識別情報）を合わせたものを利用しても良いし、別途生成した識別情報を利用しても良い。
【００３０】
送信間隔情報は、キープアライブパケットの送信間隔を表す数値データである。単位は分、秒、ミリ秒など、何でも構わない。
【００３１】
送信間隔状態情報は、キープアライブパケットの送信間隔が決定済みか否かを表す２値である。送信間隔状態情報は、必須ではない。
【００３２】
中継装置情報は、前述したように、中継装置（ここでは中継装置２０１）に関する情報である。機種名、型名等の各属性が個別カラムを形成していてもよいし、ＪＳＯＮやＸＭＬなどの構造化された形式で、１カラムに保存されていてもよい。
【００３３】
ネットワーク情報は、中継装置２０１より上流のネットワーク４０１に関する情報であり、上述したように、契約ネットワーク情報や契約プロバイダ情報、ネットワーク４０１に存在する中継装置の中継装置情報を含む。ネットワーク情報は、取得部１１３が取得してもよいし、ユーザが手動で登録してよい。後者の場合、通信装置１０１は、入力を行うためのＷｅｂページや、ＷｅｂＡＰＩなどのインタフェース、あるいは、物理的な入力インタフェースを備えていてもよい。
【００３４】
図３に示した通信維持管理情報の形態は一例であり、これに限定されるものではない。例えば、以下に示すバリエーションも可能である。
【００３５】
通信維持管理情報が、複数のタプル（すなわち複数のテーブル）に分割されていてもよい。一例として、図３の通信維持管理情報を、ネットワーク情報とそれ以外の情報とに分割してもよい。あるいは、中継装置情報、ネットワーク情報、それ以外の情報、の３つに分割してもよい。図３の通信維持管理情報における一部のカラムを削除してもよい。例えば、ネットワーク情報を削除してもよい。また、中継装置２０１に関する中継装置情報またはその上流の複数の中継装置に関するネットワーク情報が、これらの中継装置間の接続関係の情報（例えば、中継装置２０１Ａ−中継装置２０１Ｂ−通信装置１０１）を含んでもよい。複数の中継装置の中継装置情報が取得できる場合、１つのエントリに複数の中継装置情報を含め、エントリ識別情報をこれらの中継装置の識別子（ＭＡＣアドレス）の組としてもよい。
【００３６】
決定部１１５は、キープアライブパケットの送信間隔を決定する機能を有する。決定部１１５は、例えば、通信維持管理情報のエントリ自体が無い場合、エントリは存在するが当該エントリ内の送信間隔状態情報が未決定を表す値の場合、もしくは、送信間隔が決定されている状態（決定状態）から決定されていない状態（未決定状態）に移行した場合に、送信間隔の決定処理を行う。
【００３７】
具体的には、以下のような場合が、決定部１１５による送信間隔決定処理の動作開始の契機となる。
（２−１）通信装置１０１の初回起動時または再初期化時
（２−２）通信装置１０１の再起動時（停止時に送信間隔情報が消去される場合（例えば揮発性メモリに送信間隔情報を格納している場合）など）
（２−３）通信装置１０１における送信間隔リセット時（通信装置１０１が、リセットまたは再決定するためのインタフェースを備える）
（２−４）通信装置１０１が、中継装置２０１とは別の中継装置を検出した時
（２−５）サーバ装置３０１から送信間隔の再決定を行うことの指示メッセージを受信した時
（２−６）キープアライブパケット送信の失敗を検知した時（サーバ装置３０１からキープアライブパケット送信に対する応答を受信できなかった時）
【００３８】
キープアライブパケットの送信間隔を決定する方法として、例えば以下の方法が可能である。
（３−１）通信装置１０１の決定部１１５が、通信部１１１を用いて、接続維持用情報（中継装置情報と、あるいは、これに加えてネットワーク情報）をサーバ装置３０１に送信し、その応答として、サーバ装置３０１から送信間隔情報を取得する。決定部１１５は、取得した送信間隔情報に示される値を、キープアライブパケットの送信間隔に決定する。なお、サーバ装置３０１側の具体的な動作は、第２の実施形態で詳述するが、ここで簡単に説明すると、サーバ装置３０１が、中継装置２０１の中継装置情報（機種情報等）またはネットワーク情報に関連付けて送信間隔情報を管理しており、通信装置１０１から受信した接続維持用情報に基づいて、対応する送信間隔情報を応答する）。
（３−２）取得部１１３が、ユーザ入力手段または中継装置２０１等から送信間隔情報も取得し、これを利用する。
（３−３）決定部１１５が、送信間隔を変動させながら（例えば送信毎に一定時間延ばす）、キープアライブパケットを送信し、通信可否をチェックすることで、送信間隔を決定する。これには、通信装置１０１が単独で実施する場合と、サーバ装置３０１と連携して実施する場合の２通りが考えられる。詳細は、後述する。
【００３９】
図４に、通信装置１０１、中継装置２０１およびサーバ装置３０１間の通信シーケンスの一例を示す。この通信シーケンスの開始契機としては、通信装置１０１の初回起動時、再初期化時もしくは再起動時などがある。
【００４０】
通信装置１０１が機器探索メッセージを送信することで、中継装置２０１を探索する（ステップＳ１）。例えば、通信プロトコルとして、Ｕｐｎｐを用いる場合、探索（Ｓｅａｒｃｈ）プロトコルに従って探索を行うことができる。同等機能が実現される限りにおいては、他の通信プロトコルでもよい。
【００４１】
中継装置２０１が、機器情報広告メッセージを送信することで、通信装置１０１からの探索に対して応答する（ステップＳ２）。通信プロトコルがＵｐｎｐの場合、応答プロトコルとして、Ｕｐｎｐの広告（Ａｄｖｅｒｔｉｓｅｍｅｎｔ）プロプロトコルに従って応答を行うことができる。同等機能が実現される限りにおいては、他の通信プロトコルでもよい。
【００４２】
通信装置１０１の取得部１１３が、中継装置２０１から中継装置情報を取得する（ステップＳ３、Ｓ４）。具体的に、中継装置２０１に機器情報取得要求メッセージを送信し（Ｓ３）、中継装置２０１から機器情報応答メッセージを受信し（Ｓ４）、機器情報応答メッセージから中継装置情報を抽出する。通信プロトコルがＵｐｎｐの場合、Ｄｅｓｃｒｉｐｔｉｏｎ（ファイル）を含む応答メッセージを受信し、Ｄｅｓｃｒｉｐｔｉｏｎから中継装置情報を抽出できる。同等の機能が実現される限りにおいては、他の通信プロトコルでもよい。また、この際、中継装置情報の取得と並行して、ネットワーク情報を取得してもよい。たとえば、ＵＰｎＰのＤｅｓｃｒｉｐｔｉｏｎの場合、Ｄｅｓｃｒｉｐｔｉｏｎ（ＸＭＬメッセージ）に含まれるｍａｎｕｆａｃｔｕｒｅｒ属性に含まれる情報から、契約ネットワークを類推可能な情報（キャリア情報）を取得できる可能性がある。あるいは、Ｔｒａｃｅｒｏｕｔｅのような経路確認メッセージを送信し、この応答を取得することで、ネットワーク情報を取得することも考えられる。通信装置１０１は、取得した中継装置情報（およびネットワーク情報）を含む通信維持管理情報のエントリを生成して、記憶部１１４に登録する。すでにエントリが存在するときは、この登録処理は省略してもよいし、既に存在するエントリを、今回取得した中継装置情報（およびネットワーク情報）によって上書きしてもよい。
【００４３】
取得部１１３が中継装置情報（およびネットワーク情報）を取得でき、この時点で、キープアライブパケットの送信間隔が未定の場合、通信装置１０１は、サーバ装置３０１に対して、中継装置情報（およびネットワーク情報）を含む送信間隔情報取得要求メッセージを送信する（Ｓ５）。具体例として、ＨＴＴＰ  ＧＥＴリクエストを送信することが考えられる。ただし、同等の機能を実現できるプロトコルであれば、使用するプロトコルは、何でも構わない。サーバ装置３０１から応答メッセージを受信し、応答メッセージから送信間隔情報を抽出する（Ｓ６）。抽出した送信間隔情報の値を、記憶部１１４の該当するエントリ内に設定し、送信間隔状態情報を「決定」に設定する。
【００４４】
なお、この後、通信装置１０１は、サーバ装置３０１とＷｅｂｓｏｃｋｅｔ通信を開始した場合（もしくは、すでに開始している場合）、送信間隔情報の値に応じてキープアライブパケットを送信する。これにより、中継装置２０１等でコネクションが切断される（例えばＮＡＴテーブルからエントリが削除される）ことを阻止し、ＴＣＰコネクション（およびＷｅｂｓｏｃｋｅｔ接続）を維持することが期待できる（送信間隔情報の値が中継装置２０１等のタイムアウトの値以上であることが想定される）。なお、キープアライブパケットの送信は、少なくとも通信装置１０１とサーバ装置３０１間で該当のＴＣＰコネクションを利用したＷｅｂｓｏｃｋｅｔの通常のデータ通信が停止している間行う。この際、当該通信が最後に行われた時刻を監視しておき、当該最後の時刻を起点として、上記の送信間隔でキープアライブパケットの送信を行ってもよい。もっとも、Ｗｅｂｓｏｃｋｅｔの通常のデータ通信の実行有無とは独立して、キープアライブパケットの送信を行ってよい。
【００４５】
本通信シーケンスでは、機器探索メッセージを送信し、それに対する応答フレームを受信することで、中継装置２０１を発見したが、機器探索メッセージを送信せずに、中継装置２０１が定期的に送信する広告（Ａｄｖｅｒｔｉｓｅｍｅｎｔ）メッセージを受信することで、中継装置２０１を発見してもよい。また、ステップＳ４においてＤｅｓｃｒｉｐｔｉｏｎから取得する情報を、ステップＳ２で送信する広告メッセージに含めるように構成することで、ステップＳ３、Ｓ４の動作を省略してもよい。
【００４６】
図５に、通信装置１０１、中継装置２０１およびサーバ装置３０１間の通信シーケンスの他の例を示す。ステップＳ１〜Ｓ５までは、図４と同様であるため、これらのステップの説明は省略する。
【００４７】
ステップＳ５で、通信装置１０１が送信間隔情報取得要求メッセージを送信した後、サーバ装置３０１から、計測指示を含む応答メッセージを受信する（Ｓ７）。通信装置１０１は、応答メッセージに含まれる計測指示に従って、送信間隔計測処理を行うことにより、キープアライブパケットの送信間隔を決定する。送信間隔計測処理の詳細は、後に説明する。通信装置１０１は、決定した送信間隔の値を、記憶部１１４の該当するエントリ内の送信間隔情報に設定する。また、送信間隔状態情報の値として「決定」を設定する。
【００４８】
通信装置１０１は、送信間隔計測処理で決定した送信間隔の値を表す送信間隔情報を、サーバ装置３０１にフィードバック送信する（Ｓ８）。なお、送信間隔情報のフィードバックは、省略してもかまわない。
【００４９】
なお、この後、通信装置１０１は、サーバ装置３０１とＴＣＰコネクションの設定を含むＷｅｂｓｏｃｋｅｔの通信を開始した場合、該当するエントリ内の送信間隔の値に応じてキープアライブパケットを送信することで、中継装置２０１等でタイムアウト等により接続が切断される（例えばＮＡＴテーブルからエントリが削除される）ことを阻止できる。これにより、サーバ装置３０１との通信を維持できる。
【００５０】
図６は、通信装置１０１における取得部１１３の動作のフローチャートを示す。中継装置２０１の起動（初回起動、再起動、再初期化など）または送信間隔リセット（ユーザがインタフェース経由で指示など）により、本フローの動作が開始する。
【００５１】
取得部１１３は、通信部１１１を用いて、図４または図５のステップＳ１〜Ｓ４の通信シーケンスの動作を行うことで、中継装置情報を取得する（Ｓ１００１）。取得部１１３は、記憶部１１４にアクセスし、取得した中継装置情報に含まれる中継装置２０１の識別情報をキーに、該当する通信維持管理情報のエントリが存在するかを確認する（Ｓ１００２）。
【００５２】
エントリが存在しない場合は（Ｓ１００３のＮＯ）、ステップＳ１００１で取得した中継装置情報に基づき、新規に通信維持管理情報のエントリを追加する（Ｓ１００４）。ネットワーク情報を中継装置情報と並行して取得してもよく、その場合は、ネットワーク情報も併せて、エントリに含める。そして、決定部１１５に、送信間隔の決定処理を行うように指示する（Ｓ１００６）。
【００５３】
一方、エントリが存在する場合、当該エントリ内の送信間隔状態情報の値が「決定」および「未決定」のいずれであるかを確認し（Ｓ１００５）、「未決定」の場合は、決定部１１５に、送信間隔の決定処理を行うように指示する（Ｓ１００６）。「決定」の場合は、当該エントリ内に送信間隔情報の値が設定されていることから、その値の時間間隔で、キープアライブパケットの送信を行うように、接続維持部１１２に指示する（Ｓ１００７）。接続維持部１１２は、通信装置１０１とサーバ装置３０１間で、ＴＣＰコネクションの設定を含むＷｅｂｓｏｃｋｅｔ通信が開始された場合、当該コネクションに対して、ステップＳ１００７で指示された送信間隔で、キープアライブパケットを送信する。
【００５４】
ここで、ステップＳ１００７で接続維持部１１２への指示を省略することも可能である。この場合、接続維持部１１２は、例えば通信装置１０１とサーバ装置３０１間でＷｅｂｓｏｃｋｅｔ通信が開始されたことの通知を通信部１１１から受けて、記憶部１１４からエントリ内の送信間隔状態情報が「決定」を示すことを確認する。そして、エントリ内の送信間隔情報の値を読み出し、その値の時間間隔で、キープアライブパケットを送信する。
【００５５】
図７は、通信装置１０１における決定部１１５の動作フローチャートを示す。決定部１１５は、取得部１１３から送信間隔決定処理の実行の指示を受けることで動作を開始する。
【００５６】
決定部１１５が、取得部１１３または記憶部１１４から接続維持用情報（中継装置情報およびネットワーク情報の少なくとも一方）を取得する（Ｓ２００１）。決定部１１５は、取得した接続維持用情報に基づき、情報取得要求メッセージを生成して、サーバ装置３０１に送信し、サーバ装置３０１から応答メッセージを受信する（Ｓ２００２）。これは、図４のステップＳ５、Ｓ６または図５のステップＳ５、Ｓ７の通信シーケンスに対応する。
【００５７】
決定部１１５は、応答メッセージの内容を確認し（Ｓ２００３）、応答メッセージに送信間隔情報が含まれている場合は、当該送信間隔情報の値を記憶部１１４の該当するエントリ内に設定し、送信間隔状態情報の値を「未決定」から「決定」に変更する（Ｓ２００４）。
【００５８】
決定部１１５は、応答メッセージに計測指示が含まれている場合は、送信間隔計測処理（Ｓ２００５〜Ｓ２０１１）を行う。まず、決定部１１５は、接続維持部１１２にサーバ装置３０１との接続確立を指示し、送信間隔を初期値（例えば最小値）に設定する（Ｓ２００５）。このときの接続確立は、Ｗｅｂｓｏｃｋｅｔの接続確立でもよいし、その他、ＴＣＰコネクションの確立を伴うものであれば、他の通信プロトコルに従った接続確立でもよい。決定部１１５は、Ｓ２００５で設定した値の送信間隔の間、待機し、接続維持部１１２に当該確立したＴＣＰコネクションに基づき、キープアライブパケットの送信を指示する（Ｓ２００７）。ここでは、計測用に送信するパケットとして、キープアライブパケット（第２情報に関するパケット）を用いるが、送信先からの応答（ＡＣＫ等）が得られる限り、これとは別の種類のパケット（前述した第１情報および当該第２情報とは異なる第３情報に関するパケット）を用いてもよい。
【００５９】
決定部１１５は、キープアライブパケットの送信指示後、キープアライブパケットの送信に成功したかを判断する（Ｓ２００８）。例えば、サーバ装置３０１からキープアライブパケットに対する応答パケットが返ってきたら、送信は成功と判断する。もし中継装置２０１等でＴＣＰコネクション（ＮＡＴエントリ）がタイムアウト等で削除されていた場合、当該パケットが廃棄されるため応答パケットがサーバ装置３０１から返ってこない。または、中継装置２０１によっては、該当するＮＡＴエントリがない場合は、リセットパケットを返すため、リセットパケットを受信した場合は、キープアライブパケットの送信に失敗したと判断してもよい。
【００６０】
決定部１１５は、キープアライブパケットの送信に成功したと判断した場合は、現在の送信間隔の値に一定値を加算することで送信間隔を更新する（Ｓ２００９）。これにより送信間隔を一定時間延ばす。決定部１１５は、更新後の送信間隔の値が、上限値に達したかを判断する（Ｓ２０１０）。更新後の送信間隔の値が上限値に達していない場合は（ＮＯ）、更新後の送信間隔の間待機し（Ｓ２００６）、再び接続維持部１１２にキープアライブパケットの送信を指示する（Ｓ２００７）。
【００６１】
決定部１１５は、キープアライブパケットの送信に失敗したと判断した場合（ステップＳ２００８のＮＯ）、または、更新後の送信間隔の値が上限値に達した場合（ステップＳ２０１０のＹＥＳ）、１つ前の更新の送信間隔の値を、送信間隔の確定値とする（Ｓ２０１１）。１つ前の更新の送信間隔の値とは、ステップＳ２００８で送信に失敗されたと判断された送信間隔の１つ前に得られた（更新された）送信間隔の値、または、上限値に達したと判断された送信間隔の１つ前に得られた（更新された）送信間隔の値である。送信間隔の値が確定したら、送信間隔の確定値を記憶部１１４における該当するエントリ内に設定し、送信間隔状態情報の値を「未決定」から「決定」に変更する（Ｓ２００４）。
【００６２】
このように送信間隔計測処理では、送信間隔を初期値（例えば最小値）から徐々に増やし、送信に失敗したら、１つ前の送信間隔にフォールバックして、その値を、送信間隔に決定する。具体例を挙げると、最小送信間隔を１分とした場合に、この１分から開始して、２分、３分・・・と増やしていき、失敗したら、１つ前の送信間隔にフォールバックして、その値に決定する。途中で、ステップＳ２００９で更新された値が上限値に達したら、当該上限値に送信間隔を決定する。上限値の決定方法として、たとえば６０分より大きい値に送信間隔を広げたくない場合には、この６０分を上限値とする。
【００６３】
ここでは、上限値を設けたが、上限値を設けずに、送信が失敗するまで、送信間隔の更新およびキープアライブパケットの送信を繰り返し行ってもよい。
【００６４】
また、ステップＳ２００９では、送信間隔の更新のために一定値を加算したが、１分、２分、４分、８分というように、送信間隔の値を、指数的に増加させてもよい。
【００６５】
また、送信間隔の初期値を最小値とするのではなく、最も可能性の高い値を初期値としてもよい。一例として、中継装置情報にＴＣＰ通信のタイムアウト値が含まれるときは、このタイムアウト値を初期値として利用してもよい。このとき、最初のキープアライブパケットの送信が成功したら、送信に成功するごとに送信間隔の値を増していき、失敗したら１つ前の値に送信間隔を決定する。最初の送信に失敗したら、送信に成功するまで送信間隔の値を下げていき、成功したときの値を送信間隔として決定する。このとき、下限値および上限値を設けて、下限値または上限値に達した場合は、下限値または上限値を、送信間隔の値に決定してもよい。
【００６６】
なお、図７に示したフローチャートでは、図５のステップＳ８で行う送信間隔情報（計測結果）のフィードバックの処理は示していないが、当該フィードバックのステップを、図７の動作フロー（ステップＳ２００３、またはステップＳ２０１１の後）に追加してもよい。
【００６７】
また、図６のステップＳ１００１で取得部１１３が中継装置情報を取得できず、かつ記憶部１１４に通信維持管理情報のエントリが存在しない場合にも、決定部１１５は、送信間隔計測処理（Ｓ２００５〜Ｓ２０１１）を行うことで、キープアライブパケットの送信間隔の値を決定してもよい。そして、決定した送信間隔の値を、送信間隔情報に設定した通信維持管理情報エントリを記憶部１１４に登録してもよい。この場合、エントリに中継装置情報の値が設定されていなくてもよい。エントリ識別情報は、例えば中継装置２０１のＭＡＣアドレスを用いてもよい。
【００６８】
以上のように、本実施形態によれば、サーバ装置および通信装置間の接続を維持するために、中継装置２０１または上流のネットワークなど、通信経路の状態を考慮して、できるだけ長い値の送信間隔を決定する。これにより、従来のように通信装置が常に最小の送信間隔でキープアライブパケットを送る場合と比較して、サーバ装置側の負荷及び通信量を低減でき、通信コストを改善できる。例えば、送信間隔の最小値が１分の場合に、平均６０分（現状、ＴＣＰのタイムアウト時間が６０分以上に設定されている中継装置２０１（ブロードバンドルータ）が多く存在する）にまで送信間隔を広げることができれば、単純計算でコストを１／６０に削減できる。
【００６９】
（第２の実施形態）
図８は、第２の実施形態に係る通信システムを示す。図１と同一名称の要素には同一の符号を付し、拡張または変更された処理を除き、重複する説明を省略する。
【００７０】
システムの全体構成は第１の実施形態と同様であり、通信装置１０１の構成も、基本的に第１の実施形態と同様である。第１の実施形態との差分は、主にサーバ装置３０１の構成にある。本実施形態では、サーバ装置３０１と通信装置１０１とが協働して、キープアライブパケットの送信間隔を決定する形態を示す。
【００７１】
サーバ装置３０１は、通信部３１１、接続維持部３１２、送信間隔情報記憶部３１３、送信間隔情報登録部３１４、送信間隔情報提供部３１５を備える。通信部３１１は、通信装置１０１の通信部１１１と同様の機能を有する。
【００７２】
サーバ装置３０１の接続維持部３１２は、通信装置１０１の接続維持部１１２の動作の差分として、（そもそも取得部１１３がサーバ装置３０１側にないため）取得部１１３からの計測指示の契機が存在しない。
【００７３】
接続維持部３１２は、一例として、通信装置１０１の接続維持部１１２と連携して動作する。接続維持部１１２の動作を停止させた状態で、キープアライブパケットの送信を、送信間隔を変更しながら行うことで、第１の実施形態の通信装置１０１と同様にして、送信間隔の値（送信間隔の候補値）を測定により得る。そして、当該取得した値と、通信装置１０１が測定した値（送信間隔の候補値）に基づき、送信間隔を決定する。例えば両候補値のうち小さい方の値を採用し、通信装置１０１に当該値をキープアライブパケットの送信間隔として指定する指定情報を含むパケットを送信する。通信装置１０１は、サーバ装置３０１から通知された指定情報の値を、キープアライブパケットの送信間隔として用いる。なお、サーバ装置３０１の接続維持部３１２は、ネットワーク１０４での遅延やサーバ装置３０１での動作遅延を考慮して、上記の採用した値に一定のマージン値を加算した値を、送信間隔として決定してもよい。ここではサーバ装置３０１側で最終的な送信間隔を決定したが、通信装置１０１側（決定部１１５等）で行ってもよい。本動作例において、サーバ装置３０１の接続維持部３１２は、通信装置１０１とＷｅｂｓｏｃｋｅｔ通信を開始した後、キープアライブパケットの定期的な送信は行うようにしてもよいし、行わないようにしてもよい。サーバ装置３０１からもキープアライブパケットを送信する場合、サーバ装置３０１から通信装置１０１への導通性をより確実に確保できる。すなわち、ネットワーク４０１には、様々なタイプの装置等が存在し得、通信の方向でタイムアウトを区別したり、ＴＣＰのＡＣＫパケットはタイムアウトに影響しないと判断する装置構成もあり得るが、サーバ装置３０１からもキープアライブパケットを送信することで、このような場合も、サーバ装置３０１から通信装置１０１への導通性を確保できる。
【００７４】
また、サーバ装置３０１が、通信装置１０１からのキープアライブパケットの受信を契機として、キープアライブパケットを送信するバリエーションも可能である。例えば、通信装置１０１とサーバ装置３０１が、それぞれ交互に同じ送信間隔で、キープアライブパケットを送信し、双方からのキープアライブパケットの送信に成功して初めて、送信間隔を延ばすようにしてもよい（図７のステップＳ２００９参照）。具体的には、通信装置１０１からサーバ装置３０１にキープアライブパケットを送信し、サーバ装置３０１が応答パケットを返す。サーバ装置３０１が応答パケットの送信後、通信装置１０１と同じ送信間隔でキープアライブパケットを送信し、通信装置１０１から応答パケットを受信する。この場合、双方からのキープアライブパケットに成功したため、送信間隔を延ばして、同様の処理を繰り返す。通信装置１０１とサーバ装置３０１で用いる送信間隔の値の同期は、キープアライブパケット内に送信間隔の値を格納することで行ってもよいし、別の方法で行ってもよい。ここでは、通信装置１０１から契機となるキープアライブパケットを送信したが、順序を逆にして、サーバ装置３０１から契機となるキープアライブパケットを送信してもよい。
【００７５】
第１の実施形態では、通信装置１０１からサーバ装置３０１への導通性は保証できるが、必ずしも逆（すなわち、サーバ装置３０１から通信装置１０１への導通性）が担保できるわけでない。上述のようにサーバ装置３０１からの送信成功を確認することによって、初めて双方向の導通性が担保できる。
【００７６】
送信間隔情報記憶部３１３は、中継装置２０１の識別情報と送信間隔情報とを紐づけた第１接続管理情報を記憶する。また、ネットワーク情報（ネットワーク識別情報および契約プロバイダ識別情報の少なくとも一方）と送信間隔情報を関連づけた第２接続管理情報を記憶する。第１および第２接続管理情報の一方のみを記憶する構成も可能である。図９に第１接続管理情報（上段）および第２接続管理情報（下段）の例を示す。
【００７７】
多数の通信装置から送信間隔情報（計測結果）を収集し、確度の高い送信間隔の値を応答するために、第１または第２接続管理情報にサンプル数（計測結果を収集したユーザ数）を属性として持たせてもよい。図９の例では、サンプル数の属性も設けられている。多数の通信装置から返される送信間隔（計測結果）は、基本的に、値のオーダーが分単位などであれば、同じ値となることが想定されるが、一部異なる値が存在しても、所定割合以上のユーザのサンプル値、または所定割合以上の個数のサンプル値が同じであれば、その値を採用し、それ以外は外れ値として無視しても良い。あるいは、多数の通信装置から返された値の平均値または中央値などを、送信間隔情報の値とすることも可能である。
【００７８】
ネットワーク情報には、物理線を提供するネットワーク事業者と、上位サービスを提供するプロバイダが存在し、図９の第２接続管理情報の例では、前者に対応するネットワーク識別情報の項目と、後者に対応する契約プロバイダ識別情報の項目が設けられている。他の例として、ネットワーク識別情報と契約プロバイダ識別情報のそれぞれごとに、送信間隔情報を持つようにデータを構成してもよい。
【００７９】
送信間隔情報提供部３１５は、通信装置１０１から送信される情報取得要求メッセージの受信先（図４のステップＳ３で送信される機器情報取得要求メッセージの受信先）である。この要求メッセージに含まれる、中継装置情報（に含まれる機種情報）またはネットワーク情報（に含まれるネットワーク識別情報やプロバイダ識別情報）またはこれらの両方に基づき、送信間隔情報記憶部３１３から、該当する送信間隔情報を取得し、当該送信間隔情報を含む応答メッセージ（図４のステップＳ６参照）を通信装置１０１に送信する。
【００８０】
より詳細には、情報取得要求メッセージに中継装置情報のみが含まれていれば、該当する中継装置２０１に関連付けられた送信間隔情報を第１接続管理情報から特定して、通信装置１０１に応答する。ネットワーク情報のみが含まれていれば、該当ネットワーク情報に関連付けられた送信間隔情報を第２接続管理情報から特定して、通信装置１０１に応答する。これらの両方が含まれていれば、値の小さい方の送信間隔情報、値の大きい方の送信間隔情報、または、これらの両方を、通信装置１０１に応答する。
【００８１】
中継装置情報およびネットワーク情報の両方とも含まれていない場合、あるいは、片方のみしか含まれていない場合に、送信間隔の計測指示メッセージを通信装置１０１に送信してもよい。その他、サンプルが一定数に達しない間は、情報取得要求メッセージに中継装置情報またはネットワーク情報が含まれているか否かにかかわらず、計測指示を含む応答メッセージを通信装置１０１に送信（図５のステップＳ７参照）するように構成してもよい。
【００８２】
送信間隔情報登録部３１４は、通信装置１０１から送信される送信間隔情報（計測結果）のフィードバック先である（図５のステップＳ８参照）。このフィードバックメッセージに含まれる接続維持用情報と送信間隔情報を取得し、必要に応じて、送信間隔情報記憶部３１３を更新する。例えば、中継装置２０１と同じ機種に対応する第１接続管理情報のエントリが存在し、フィードバックされた送信間隔情報の値がエントリと同じ値の場合は、サンプル数を１だけ増加させる。なお、過去に同じ通信装置１０１（ユーザ）からのフィードバックがあった場合には、サンプル数を増加させないようにしてもよい。フィードバックされた送信間隔情報の値が、該当する第１接続管理情報のエントリと異なるときは、前述した方法によって、必要に応じて第１接続管理情報における送信間隔の値を更新することも可能である。
【００８３】
また、例えば、あるブロードバンドルータのタイムアウト時間（接続維持時間。すなわち、これによって決定される送信間隔が）が６０分であることが、多くのサンプル数によって明らかになっているとして、記憶部３１３に中継装置識別情報（機種情報）に関連づけられて登録されているとする。この場合に、このブロードバンドルータの配下にある通信装置１０１の送信間隔が計測により１５分とされ、ネットワーク１０４の環境のタイムアウト時間が不明であるとき、このネットワーク１０４の環境が、当該通信装置１０１の送信間隔を１５分に決定している要因になっている可能性が高いと判断できる。そこで、この値を記憶部３１３にネットワーク情報に関連付けて、第２接続管理情報のエントリとして登録してもよい。
【００８４】
以上のように、本実施形態によれば、実フィールドでの送信間隔の計測を通信装置に行わせ、計測結果をサーバ装置３０１に報告させることによって、ＴＣＰコネクションのタイムアウト時間が不明な中継装置や、当該タイムアウト時間が不明なネットワーク経路が存在する場合においても、サーバ装置３０１は、最適な送信間隔を決定できるようになる。また、本実施形態によれば、サーバ装置３０１から通信装置の方向への導通性も担保できるようになる。
【００８５】
（第３の実施形態）
図１０は、第３の実施形態に係る通信システムを示す。図１または図８と同一名称の要素には同一の符号を付し、拡張または変更された処理を除き、重複する説明を省略する。
【００８６】
通信装置１０１は、第１および第２の実施形態の構成に加えて、送信間隔情報記憶部１１７、および全送信間隔情報取得部１１６を備える。送信間隔情報記憶部１１７は、第２の実施形態で述べたサーバ装置３０１側の送信間隔情報記憶部１１７と同じデータを格納するための記憶部である。このデータは、通信装置１０１に予めプリセットされていてもよい。または、通信装置１０１で動作するファームウェアのアップデート等を契機とし、サーバ装置３０１側の全送信間隔情報提供部３１６と、通信装置１０１側の全送信間隔情報取得部１１６との動作によって、サーバ装置３０１の送信間隔情報記憶部３１３内のデータを通信装置１０１にダウンロードして、最新の情報が送信間隔情報記憶部１１７に反映されるようにしてもよい。
【００８７】
通信装置１０１の全送信間隔情報取得部１１６は、サーバ側から送信間隔情報記憶部１１７内の全データを取得する。これは、ファームウェアのアップデートという形で、他のシステム情報と共に取得するものであってもよいし、この送信間隔情報記憶部内のデータのみを取得するものであってもよい。取得タイミングも、ファームウェアアップデートのタイミングの他、様々なバリエーションが考えられる。例えば、接続維持している通信コネクションを介して、サーバ装置３０１から更新通知を受けたタイミングでもよいし、定期的にサーバ装置３０１にアクセスして送信間隔情報の更新が検知されたタイミングでもよい。
【００８８】
サーバ装置３０１は、第２の実施形態の構成に加えて、全送信間隔情報提供部３１６を備える。全送信間隔情報提供部３１６は、通信装置１０１に送信間隔情報記憶部１１７内の全データを提供する。通信装置１０１へ提供する最新ファームウェアに、当該全データを含めてもよく、この場合、全送信間隔情報提供部３１６は、サーバ側の管理者によって駆動されても良い。または、全送信間隔情報提供部３１６は、通信装置１０１の全送信間隔情報取得部１１６からの要求を契機として、駆動されて、送信間隔情報記憶部１１７内の全データを読み出して、通信装置１０１に提供しても良い。または、全送信間隔情報提供部３１６が、サーバ装置３０１側の送信間隔情報記憶部３１３の内容の変更を検知して、通信装置１０１に更新通知を行ってもよい。更新通知を行った後、通信装置１０１からの要求に応じて、送信間隔情報記憶部１１７内の全データを読み出して、通信装置１０１に提供してもよい。
【００８９】
通信装置１０１は、送信間隔情報記憶部１１７内のデータを利用して、送信間隔を決定することができる。取得部１１３によって取得された中継装置情報やネットワーク情報（ネットワーク情報はユーザによる手動入力でもよい）から、送信間隔情報記憶部１１７内のデータに基づき、決定部１１５により送信間隔を決定する。この動作の詳細は、第１または第２の実施形態の説明から自明であるため省略する。これにより、第１の実施形態における図４のステップＳ５、Ｓ６の動作は不要となり、通信コストも抑制できる。
【００９０】
尚、各実施形態に係る通信装置およびサーバ装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現可能である。すなわち、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現出来る。このとき、通信装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現することや、各種の記憶媒体に記憶、あるいはネットワークを介して上記のプログラムを配布、このプログラムをコンピュータ装置に適宜インストールすることで実現が出来る。また、通信装置内の各記憶部は、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【００９１】
本発明は上記実施形態そのままに限定されず、実施段階では要旨を逸脱しない範囲で構成要素を変形し具体化出来る。上記実施形態に開示されている複数の構成要素の適宜な組み合わせで、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除出来、異なる実施形態に渡る要素を適宜組み合わせることも出来る。
【符号の説明】
【００９２】
１０１：通信装置
２０１：中継装置
３０１：サーバ装置
４０１：ネットワーク
１１１：通信部
１１２：接続維持部
１１３：取得部
１１４：記憶部
１１５：決定部
１１６：送信間隔情報取得部
１１７：送信間隔情報記憶部
３１１：通信部
３１２：接続維持部
３１３：送信間隔情報記憶部
３１４：送信間隔情報登録部
３１５：送信間隔情報提供部
３１６：全送信間隔情報提供部
【図１】
0006290053.tif 000002
【図２】
0006290053.tif 000003
【図３】
0006290053.tif 000004
【図４】
0006290053.tif 000005
【図５】
0006290053.tif 000006
【図６】
0006290053.tif 000007
【図７】
0006290053.tif 000008
【図８】
0006290053.tif 000009
【図９】
0006290053.tif 000010
【図１０】
0006290053.tif 000011