(57)【特許請求の範囲】
【請求項１】
複数の通信インタフェースを有する通信装置であって、
通信インタフェースとネットワークを識別するネットワーク識別子とを対応付けて記憶部に保持させる保持手段と、
他の通信装置から第１の通信インタフェースを介してパケットを受信した場合に、前記他の通信装置が属するネットワーク識別子と前記第１の通信インタフェースとは異なる第２の通信インタフェースとが対応付けられている場合、前記第１の通信インタフェースと前記他の通信装置を識別する識別情報とを対応付けて前記記憶部に登録する登録手段と、
前記登録手段により登録された前記対応付けに基づいて、前記第１の通信インタフェースを介して前記他の通信装置にパケットを送信する送信手段と、
を有することを特徴とする通信装置。
【請求項２】
前記ネットワーク識別子はＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）層におけるネットワークアドレスであることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記送信手段は、前記登録手段により登録された対応付けに基づいて、前記他の通信装置から受信したパケットに対する応答パケットを前記第１の通信インタフェースを介して送信することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記他の通信装置から受信したパケットに対する応答パケットを送信するか否かを判別する判別手段を更に有し、
前記送信手段は、前記判別手段により前記応答パケットを送信すると判別された場合に、当該応答パケットを送信することを特徴とする請求項３に記載の通信装置。
【請求項５】
前記他の通信装置と切断した場合、前記登録手段により登録された対応付けを前記記憶部から削除する削除手段を更に有することを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項６】
前記登録手段により登録されてから所定時間が経過すると、前記登録手段により登録された対応付けを前記記憶部から削除する削除手段を更に有することを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項７】
前記他の通信装置と所定時間、通信が無かった場合、前記登録手段により登録された対応付けを前記記憶部から削除する削除手段を更に有することを特徴とする請求項１から４のいずれか１項に記載の通信装置。
【請求項８】
複数の通信インタフェースを有する通信装置の制御方法であって、
通信インタフェースとネットワークを識別するネットワーク識別子とを対応付けて記憶部に保持させる保持工程と、
他の通信装置から第１の通信インタフェースを介してパケットを受信した場合に、前記他の通信装置が属するネットワーク識別子と前記第１の通信インタフェースとは異なる第２の通信インタフェースとが対応付けられている場合、前記第１の通信インタフェースと前記他の通信装置を識別する識別情報とを対応付けて前記記憶部に登録する登録工程と、
登録された前記対応付けに基づいて、前記第１の通信インタフェースを介して前記他の通信装置にパケットを送信する送信工程と、
を有することを特徴とする制御方法。
【請求項９】
コンピュータを請求項１から７のいずれか１項に記載の通信装置が有する各手段として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して所定のプロトコルにて通信を行う、通信装置及びその制御方法、コンピュータプログラムに関する。
【背景技術】
【０００２】
複数の通信インタフェースを備えた通信機器が、通信に使用する通信インタフェースを選択する構成が知られている。例えば、特許文献１には、機器が複数の通信インタフェースを持つ場合、通信インタフェースの使用頻度を管理し、使用頻度の低い通信インタフェースを選択する構成が記載されている。
【０００３】
特許文献２には、機器が複数の通信インタフェースを持つ場合、通信インタフェースに対応付けられた誘引力に応じて、通信インタフェースの選択を行う構成が記載されている。ここで、誘因力とは、伝送経路における通信トラフィック量を反映したパラメータであり、トラフィック量が大きいほど大きな値をとる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−２０２９４３号公報
【特許文献２】特開２０１０-２０６４６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記従来の構成においては、通信機器が同一のネットワークアドレスが割り当てられた複数のネットワークに接続されている場合、この通信機器は、ネットワークを適切に選択して通信することができなかった。
【０００６】
例えば、通信機器が２つのネットワークに接続しており、これらのネットワークのネットワークマスク長が２４で、ネットワークアドレスが１９２．１６８．１．０である場合を考える。この場合、通信機器が１９２．１６８．１．１５４へパケットを送信するときは、宛先に対応するルーティングエントリが複数存在することになるため、どちらが選択されるかは実装に依存することとなる。そのため、一方のネットワーク上の端末から送信された要求パケットに通信機器が応答する場合に、この端末が存在しないルーティングエントリが選択されたときは、この機器にパケットを返信することができない。
【０００７】
このように、従来の構成においては、通信機器が同一のネットワークアドレスを有する複数のネットワークに接続している場合、通信機器は、一方のネットワークからの要求パケットに対して応答できない可能性があった。
【０００８】
本発明は上記課題に鑑みなされたものであり、複数の通信インタフェースを備えた装置が、通信インタフェースを適切に選択可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
また、本発明の別の側面の通信装置は、複数の通信インタフェースを有する通信装置であって、通信インタフェースとネットワークを識別するネットワーク識別子とを対応付けて記憶部に保持させる保持手段と、他の通信装置から第１の通信インタフェースを介してパケットを受信した場合に、前記他の通信装置が属するネットワーク識別子と前記第１の通信インタフェースとは異なる第２の通信インタフェースとが対応付けられている場合、前記第１の通信インタフェースと前記他の通信装置を識別する識別情報とを対応付けて前記記憶部に登録する登録手段と、前記登録手段により登録された前記対応付けに基づいて、前記第１の通信インタフェースを介して前記他の通信装置にパケットを送信する送信手段と、を有する。
【発明の効果】
【００１２】
本発明によれば、複数の通信インタフェースを備えた装置が、通信インタフェースを適切に選択可能とする技術を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】通信システムのネットワーク構成例を示すネットワークトポロジ図
【図２】通信装置が保持するルーティングテーブルの一例を示す図
【図３】通信システムのネットワーク構成例を示すネットワークトポロジ図
【図４】通信装置が保持するルーティングテーブルの一例を示す図
【図５】通信システムのネットワーク構成例を示すネットワークトポロジ図
【図６】通信装置が保持するルーティングテーブルの一例を示す図
【図７】通信装置の構成例を示すブロック図
【図８】通信装置が保持するルーティングテーブルの一例を示す図
【図９】通信装置が実行する処理の処理手順を示すフローチャート
【図１０】通信装置が保持するルーティングテーブルの一例を示す図
【図１１】通信システムのネットワーク構成例を示すネットワークトポロジ図
【図１２】通信装置が保持するルーティングテーブルの一例を示す図
【図１３】通信装置が実行する処理の処理手順を示すフローチャート
【図１４】通信装置が実行する処理の処理手順を示すフローチャート
【図１５】通信装置が保持するルーティングテーブルの一例を示す図
【図１６】コネクション切断の際の処理の処理手順を示すフローチャート
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して本発明の実施の形態を詳細に説明する。
【００１５】
＜＜実施形態１＞＞
（ルーティング）
インターネット通信では、一般に、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ、インターネットプロトコル）プロトコルが使用されている。また、インターネット通信では、パケットを送信する際、送信する通信インタフェース（ネットワークＩ／Ｆ）を決定するために、ルーティングテーブルが使用されている。ルーティングテーブルとは、機器から送信するパケットの経路を示すテーブルである。送信するパケットをどの通信インタフェースから送信するか、直接相手に送信するのか、ルータを経由するのかなどを検索するために使用する。
【００１６】
ルーティングテーブルのエントリには、ＩＰアドレス（宛先ＩＰアドレス）、ゲートウェイＩＰアドレス（ゲートウェイアドレス）、ネットワークマスク長（サブネットマスク）、通信インタフェースなどの情報が含まれる。ルーティングを行う際は、まず、送信するパケットの宛先ＩＰアドレスとルーティングテーブルのエントリのネットワークマスク長を用いて、ネットワークＩＰアドレスを求める。すなわち、宛先のＩＰアドレスの最上位ビットからマスク長のビットを切り出し、この切り出したビットに０を連結したものをネットワークＩＰアドレスとする。そして、このネットワークＩＰアドレスとルーティングテーブルのエントリのＩＰアドレスのネットワークアドレスとを比較する。一致したものが存在した場合、そのＩＰアドレスをルーティングの転送先として決定する。一致したものが複数存在した場合は、ネットワークマスク長が最も長いＩＰアドレスを転送先として決定する。
【００１７】
なお、ルーティングテーブルのエントリにデフォルトエントリがある場合がある。これは、ルーティングテーブルの他のエントリのどれにも一致しなかった場合に転送先として決定されるエントリである。また、ルーティングテーブルにおいて、ルーティングの優先順位を示すメトリックが規定されている場合、ルーティングテーブルのエントリのＩＰアドレスと一致するものが複数存在したときは、その優先順位に従って転送先を決定する。
【００１８】
一例として、図１の通信装置（機器）１００１がＰＣ−Ａ１００３に送信する場合について説明する。通信装置１００１には、図２のようなルーティングテーブル１０８が設定されているとする。ＰＣ−Ａ１００３のＩＰアドレスは１９２．１６８．１．３０であり、ルーティングエントリ２０１２のネットワークマスク長が２４ビットなので、そのマスクを適用したネットワークアドレスは１９２．１６８．１．０となる。１９２．１６８．１．０のネットワークアドレスは、ルーティングエントリ２０１２の宛先ＩＰアドレスと一致する。ルーティングエントリ２０１２の通信インタフェースはネットワークＡであり、また、ゲートウェイのＩＰアドレスが設定されていないので、送信する通信インタフェースはネットワークＡである。したがって、通信装置１００１は、ネットワークＡを介して、ＰＣ−Ａ１００３へ直接送信することが分かる。
【００１９】
次に、図１の通信装置１００１が、ＰＣ−Ｂ１００２へ送信する場合について説明する。ＰＣ−ＢのＩＰアドレスは１９２．１６８．２５．６４であり、ルーティングエントリ２０１２のネットワークマスク長が２４ビットなので、そのマスクを適用した宛先のネットワークアドレスは１９２．１６８．２５．０となる。１９２．１６８．２５．０のネットワークアドレスは、ルーティングエントリ２０１２の宛先ＩＰアドレスと一致しない。そして、ルーティングテーブル１０８はデフォルトエントリ２０１３以外に他のエントリを持たないので、デフォルトエントリ２０１３が転送先として採用される。
【００２０】
ルーティングエントリ２０１３の通信インタフェースはネットワークＡであり、ゲートウェイのＩＰアドレスが設定されている。このため、送信したいパケットをネットワークＡからルータ１００４に送信し、ルータ１００４により中継されることになる。
【００２１】
（複数の通信インタフェースを有する場合）
図３のように、モバイル端末１００５が一時的に通信装置１００１と直接ネットワーク接続し、通信する場合がある。この場合、通信装置１００１は２つの通信インタフェースでネットワークＡとネットワークＣの２つのネットワークに同時に接続されることになる。このような場合、通信装置１００１において、図４のようなルーティングテーブルが生成される。この場合も同様に、ＰＣ−Ａ１００３に送信する場合はＰＣ−Ａ１００３のＩＰアドレス１９２．１６８．１．３０から図４のルーティングエントリ２０１２が選択され、通信インタフェースはネットワークＡが選択される。
【００２２】
図３のＰＣ−Ｂ１００２に送信する場合には、ＰＣ−ＢのＩＰアドレス１９２．１６８．２５．６４から図４のルーティングエントリ２０１３が選択され、通信インタフェースはネットワークＡが選択される。モバイル端末１００５に送信する場合には、モバイル端末１００５のＩＰアドレス１７２．２３．４３．１５４から図４のルーティングエントリ２０１７が選択され、通信インタフェースはネットワークＣが選択される。
【００２３】
図５のように通信装置１００１が複数の通信インタフェースに接続されているとする。この場合、通信装置１００１に対して、ネットワークＡとネットワークＣで同じネットワークアドレスが割り当てられると、ルーティングテーブル１０８に同じ宛先アドレスのルーティングエントリが設定されてしまう（図６の２０１２、２０１４）。
【００２４】
例えば、１９２．１６８．１．１５４へパケットを送信する場合、図６のルーティングテーブル１０８のルーティングエントリのうち、ルーティングエントリ２０１２とルーティングエントリ２０１４とが一致する。ネットワークマスク長も２４と同じであるので、どちらが選択されるかは実装依存となる。そのため、モバイル端末１００５から送信された要求パケットに通信装置１００１が応答する場合、ルーティングエントリ２０１４が選択されたときは、正しくモバイル端末１００５に応答を送信できる。しかし、ルーティングエントリ２０１２が選択された場合は、モバイル端末１００５宛の応答パケットがネットワークＡから送信されてしまうことになる。このように、従来の構成においては、複数のネットワークに接続する通信装置１００１は、パケットを送出すべきネットワークを適切に選択することができない可能性があった。
【００２５】
本実施形態に係る通信装置は、ネットワークを通じて要求データを受信した場合、その要求データの送信元アドレス（送信元の通信装置の識別情報）と要求データを受信した通信インタフェースとを対応付けてルーティングテーブルに登録する。これにより要求データに対して応答を行う際に、ルーティングテーブルを参照して、要求データを受信した通信インタフェースを選択して応答データを送信することができ、応答データを要求データの送信元へ到達させることが可能となる。
【００２６】
（ネットワークトポロジ）
図５は、本発明の一実施形態（実施形態１）に係る通信システムのネットワーク構成を示すネットワークトポロジ図である。本実施形態では、通信装置（機器）１００１が、ＰＣ−Ａ１００３、ＰＣ−Ｂ１００２、ないし、モバイル端末１００５と通信する場合を一例として説明する。
【００２７】
通信装置１００１は複数の通信インタフェースを備えた通信機器である。通信装置１００１は、ルーティングテーブルに従い通信インタフェースを選択してパケットを送出する。本実施形態では、通信装置１００１は、ネットワークＡとネットワークＣとに接続している。ＰＣ−Ａ１００３は、ネットワークＡに接続されたパーソナルコンピュータ（ＰＣ）である。１００４はルータであり、ネットワークＡとネットワークＢとの間で必要に応じてパケットを中継する。ＰＣ−Ｂ１００２はネットワークＢに接続されたＰＣである。モバイル端末１００５は、通信装置１００１に一時的に接続されうる。
【００２８】
図５の例では、ネットワークＡとネットワークＢは、Ｅｔｈｅｒｎｅｔ（登録商標）などの有線ネットワークで構成されている。ネットワークＣは、通信装置１００１とモバイル端末１００５が接続された時のネットワークであり、無線ＬＡＮ等の無線ネットワークにより実現される。
【００２９】
図５のように、通信装置１００１は、ネットワークＡにおいてはＩＰアドレス１９２．１６８．１．２が割り当てられ、ネットワークＣにおいてはＩＰアドレス１９２．１６８．１．５が割り当てられている。モバイル端末１００５は、ネットワークＣにおいて、ＩＰアドレス１９２．１６８．１．１５４が割り当てられている。ＰＣ−Ａ１００３は、ネットワークＡにおいて、ＩＰアドレス１９２．１６８．１．３０が割り当てられている。ルータ１００４は、ネットワークＡにおいてはＩＰアドレス１９２．１６８．１．１が割り当てられ、ネットワークＢにおいてはＩＰアドレス１９２．１６８．２５．１が割り当てられている。ＰＣ−Ｂ１００２は、ネットワークＢにおいて、ＩＰアドレス１９２．１６８．２５．６４が割り当てられている。
【００３０】
図１は、モバイル端末１００５が接続されていない場合のネットワークトポロジ図である。図１では、図５と異なり、モバイル端末１００５及びネットワークＣが存在しない。
【００３１】
（通信装置の構成）
図７は本実施形態に係る通信装置１００１の構成例を示すブロック図である。通信装置１００１は、例えば、パーソナルコンピュータ（ＰＣ）やタブレット端末、スマートフォン等の情報処理装置により実現される。
【００３２】
１０２はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央演算処理装置）である。ＣＰＵ１０２は、オペレーティングシステム（ＯＳ）やアプリケーションプログラム等のコンピュータプログラムに基づいて他の構成要素と協働し、通信装置１００１全体の動作を制御する。１０３はＤＲＡＭ（書込み可能メモリ）であり、ワークメモリ（記憶部）として機能する。
【００３３】
１０４は有線ＬＡＮモジュールであり、Ｅｔｈｅｒｎｅｔ（登録商標）１１０などの有線ネットワークを介した通信を行う通信部として機能する。有線ＬＡＮモジュール１０４は、インタフェース（インタフェースＡという）を介してＥｔｈｅｒｎｅｔ（登録商標）１１０と接続されている。１０５は無線ＬＡＮモジュールであり、無線ネットワークを介した無線通信を行う通信部として機能する。無線ＬＡＮモジュール１０５は、インタフェース（インタフェースＢという）を介してアンテナ１１１と接続されている。
【００３４】
１０６は検索部（ルーティングテーブル検索部）であり、所定の条件に従い後述するルーティングテーブル１０８を検索（探索）する。１０７は設定部（ルーティングテーブル設定部）であり、ルーティングテーブル１０８に対して値を設定する。
【００３５】
１０８はルーティングテーブルであり、通信インタフェースとネットワークを識別するネットワークアドレス（ネットワーク識別子）との対応関係を少なくとも示すルーティングエントリを複数有する。ルーティングテーブル１０８は、図７の例では、ＤＲＡＭ１０３に配置・保持されている。ルーティングテーブルの具体例については後述する。なお、本ブロック図では、説明の容易のため、検索部１０６、設定部１０７が独立したブロックとして書かれているが、ＣＰＵ１０２で実行されるプログラムにより実現してもよい。
【００３６】
１０９はＲＯＭ（読出し専用メモリ）であり、ＣＰＵ１０２が実行するプログラムなどを格納する。１１１は無線ＬＡＮのアンテナである。
【００３７】
なお、本実施形態では、一例として、通信装置１００１が、有線ＬＡＮと無線ＬＡＮの２つの通信方式により通信可能な場合を説明するが、通信装置１００１が備える通信インタフェースはこれらに限られない。例えば、有線ＬＡＮと無線ＬＡＮのいずれか一方の通信インタフェースを複数設けるようにしてもよい。また、通信方式は、有線ＬＡＮや無線ＬＡＮに限られない。例えば、無線通信方式として、Ｂｌｕｅｔｏｏｔｈ（登録商標）や、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）を用いるようにしてもよい。また、以上の各装置と同等の機能を実現するソフトウェアにより、ハードウェア装置の代替として構成することもできる。
【００３８】
（ルーティングテーブル）
図８は、本実施形態の説明で使用するルーティングテーブル１０８の一例を示す図である。図８において、２０１２、２０１３、２０１５はルーティングテーブルのルーティングエントリである。ルーティングエントリ２０１２には、宛先ＩＰアドレス１９２．１６８．１．０、マスク長  ２４、ＭＴＵ（Ｍａｘｉｍｕｍ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｕｎｉｔ）  １５００、ネットワークＡの通信インタフェースが設定されている。ルーティングエントリ２０１３には、宛先ＩＰアドレスとしてデフォルト、ゲートウェイアドレス１９２．１６８．１．１、ＭＴＵ  １５００、ネットワークＡの通信インタフェースが設定されている。ルーティングエントリ２０１５には、宛先ＩＰアドレス１９２．１６８．１．１５４、マスク長  ３２、ＭＴＵ  １５００、ネットワークＣの通信インタフェースが設定されている。
【００３９】
図２は、モバイル端末１００５が接続されていない場合のルーティングテーブルの図である。図２のルーティングテーブル１０８では、図８と異なり、ネットワークＣに対応するルーティングエントリ２０１５が存在しない。
【００４０】
（通信装置の動作）
通信装置１００１の動作について、図１、図２、図５、図７、図８、図９を用いて説明する。図９は、本実施形態に係る通信装置１００１の動作手順を表すフローチャートである。図９の各ステップは、通信装置１００１のＣＰＵ１０２の制御に基づき実行される。
【００４１】
まず、図１のように、通信装置１００１がネットワークＡにのみ接続されているとする。この状態におけるルーティングテーブル１０８の構成は、図２のようになる。次に、モバイル端末１００５が通信装置１００１に接続し、通信装置１００１とモバイル端末１００５にＩＰアドレスが割り当てられ、図５に示すようにネットワークＣが構成されたとする。これにより、通信装置１００１は、ネットワークＡとネットワークＣに同時に接続される。図５に示すように、ネットワークＡとネットワークＣが同じネットワークアドレスで構成されたとする。この状態において、モバイル端末１００５が通信装置１００１にパケットを送信した場合の通信装置１００１の動作について、図９のフローチャートに従い説明する。
【００４２】
通信装置１００１は、パケットを受信すると（Ｓ２０１）、パケットの送信元アドレスをキーにルーティングテーブルを検索する（Ｓ２０２）。すなわち、Ｓ２０１、Ｓ２０２では、複数の通信インタフェースのいずれかを介してパケットを受信したことに応じて、当該パケットの送信元アドレスが属するネットワークに係るルーティングエントリを、ルーティングテーブルにおいて検索する。検索の結果、デフォルトエントリを除くルーティングエントリが発見されたか否かを判定する（Ｓ２０３）。発見された場合（Ｓ２０３でＹＥＳ）はＳ２０４へ進み、発見されなかった場合（Ｓ２０３でＮＯ）はＳ２０６へ進む。図５の例では、送信元アドレスは１９２．１６８．１．１５４であるから、図２のルーティングテーブル１０８においては、ルーティングエントリ２０１２がこの送信元アドレスに対応するエントリとして発見される。送信元アドレスの最上位ビットからマスク長の２４ビットを切り出した１９２．１６８．１．０は、ルーティングエントリ２０１２の宛先ＩＰアドレスに一致するためである。
【００４３】
Ｓ２０４では、パケットを受信した通信インタフェースと、Ｓ２０３で発見したルーティングテーブルエントリの通信インタフェースとを比較する。これらが同一である場合（Ｓ２０５でＹＥＳ）はＳ２０７へ進み、異なる場合（Ｓ２０５でＮＯ）はＳ２０６へ進む。上記の例では、図２のルーティングエントリ２０１２の通信インタフェースはネットワークＡであるのに対し、受信したパケットの通信インタフェースはネットワークＣであり、両者は異なる。そこで、Ｓ２０６へ進む。
【００４４】
Ｓ２０６では、受信したパケットの送信元アドレスに対応するルーティングエントリをルーティングテーブル１０８に登録する。上記の例では、図８のように、ルーティングエントリ２０１５を登録する。なお、パケットの受信に応じてルーティングエントリを登録する場合、ネットワークアドレスでなく機器のＩＰアドレスそのもので比較できるように、ネットワークマスク長を３２ビットとして登録する。このように、送信元が属するネットワークに係るルーティングエントリがルーティングテーブルにおいて発見されたものの、そのネットワークＩ／Ｆとパケットを受信したネットワークＩ／Ｆとが一致しない場合は新たなルーティングエントリを追加する。すなわち、パケットを受信した通信インタフェースと送信元アドレスとを対応付けたルーティングエントリを前記ルーティングテーブルに登録する。これにより、ルーティングテーブルを参照して、パケットを受信した通信インタフェースから、当該パケットに対する応答パケットを送出することが可能となる。
【００４５】
次に、図８のようにルーティングエントリ２０１５が登録された後に、さらに、通信装置１００１がモバイル端末１００５のパケットを受信したの動作について、図９に従い説明する。
【００４６】
Ｓ２０１でモバイル端末１００５のパケットを受信すると、通信装置１００１は、パケットの送信元アドレスをキーにルーティングテーブルを検索する（Ｓ２０２）。この例では、図８に示すルーティングエントリ２０１５が発見される（Ｓ２０３でＹＥＳ）。
【００４７】
そこで、Ｓ２０４へ進み、パケットを受信した通信インタフェースとルーティングエントリ２０１５の通信インタフェースを比較する。この例では通信インタフェースが同じなので（Ｓ２０５でＹＥＳ）、ルーティングエントリを登録せずに、Ｓ２０７へ進んで受信処理を継続する。
【００４８】
次に、図８のようにルーティングエントリ２０１５が登録された後に、通信装置１００１がパケットをモバイル端末１００５へ送信する際の通信インタフェースの選択について、図５と図８を用いて説明する。
【００４９】
前述のように、モバイル端末１００５のＩＰアドレスは、１９２．１６８．１．１５４である。そして、図８のルーティングテーブル１０８は、２０１２、２０１３、２０１５と３つのルーティングエントリがある。ルーティングエントリ２０１２のネットワークマスク長は２４ビットなので、ルーティングエントリ２０１２におけるモバイル端末１００５が接続しているネットワークＣのネットワークアドレスは、１９２．１６８．１．０である。アドレス１９２．１６８．１．０は、ルーティングエントリ２０１２の宛先ＩＰアドレスの上位２４ビットと一致する。続いてルーティングエントリ２０１５とも比較すると、このエントリのネットワークマスク長は３２ビットなので、ルーティングエントリ２０１５におけるモバイル端末１００５についてのネットワークアドレスは、１９２．１６８．１．１５４となる。このネットワークアドレスは、ルーティングエントリ２０１５の宛先ＩＰアドレスと一致する。そして、ルーティングエントリ２０１２のネットワークマスク長が２４ビット、ルーティングエントリ２０１５のネットワークマスク長が３２ビットであるので、より長いビット長でビットが一致しているルーティングエントリ２０１５が選択される。ルーティングエントリ２０１５の通信インタフェースはネットワークＣであり、ゲートウェイのＩＰアドレスが設定されていない。そのため、送信する通信インタフェースはネットワークＣであり、モバイル端末１００５に直接送信することが分かる。
【００５０】
次に、図８のようにルーティングエントリ２０１５が登録された後に、通信装置１００１がＰＣ−Ａ１００３へパケットを送信する場合の通信インタフェースの選択について説明する。
【００５１】
ＰＣ−Ａ１００３のＩＰアドレスは、１９２．１６８．１．３０である。ルーティングエントリ２０１２との比較では、ＰＣ−Ａ１００３が接続しているネットワークＡのネットワークアドレスが１９２．１６８．１．０であるから、ルーティングエントリ２０１２の宛先アドレスは１９２．１６８．１．０で一致する。ルーティングエントリ２０１５との比較では、ＰＣ−Ａ１００３についてのネットワークアドレスが１９２．１６８．１．３０であるから、これはルーティングエントリ２０１５の宛先アドレス１９２．１６８．１．１５４と一致しない。そのため、ルーティングエントリ２０１２が選択され、通信インタフェースはネットワークＡが選択される。
【００５２】
上記のように、通信装置１００１は、パケットを受信した際に、パケットの送信元ＩＰアドレスからルーティングテーブルを検索する。該当するルーティングエントリが存在した場合は、そのルーティングエントリの通信インタフェースとパケットを受信した通信インタフェースとを比較する。比較した結果、これらの通信インタフェースが異なる場合、受信したパケットの送信元ＩＰアドレスをルーティングテーブルのエントリとして登録する。このように通信装置１００１において、送信元ＩＰアドレスと通信インタフェースとが関連付けられてルーティングテーブルに登録されるため、パケットを受信した通信インタフェースから、応答パケットを送信できるようになる。
【００５３】
また、パケットを受信した際に、パケットの送信元ＩＰアドレスからルーティングテーブルを検索し、該当するルーティングエントリが見つからなかった場合は、送信元ＩＰアドレス宛のルーティングテーブルのエントリを登録する。このように、パケットの送信元ＩＰアドレスに対応するルーティングエントリがルーティングテーブルに登録されていない場合においても、送信元ＩＰアドレスと通信インタフェースとが関連付けられてルーティングテーブルに登録される。したがって、送信相手が送信したパケットを受信した通信インタフェースから、送信できるようになる。
【００５４】
次に、図３に示すように、ネットワークＡ、ネットワークＢ、ネットワークＣのネットワークアドレスが全てが異なる場合の動作例について、図２、図３、図９、図１０を用いて説明する。この状態において、通信装置１００１のルーティングテーブル１０８は、図２のように、ネットワークＣについてのルーティングエントリが登録されておらず、モバイル端末１００５が通信装置１００１にパケットを送信したとする。通信装置１００１は、パケットを受信すると（図９のＳ２０１）、パケットの送信元アドレスをキーにルーティングテーブルを検索する（Ｓ２０２）。図２のルーティングテーブル１０８ではデフォルトエントリを除くルーティングエントリが発見されないので（Ｓ２０３でＮＯ）、図１０のルーティングエントリ２０２０を登録する（Ｓ２０６）。すなわち、検索の結果、送信元が属するネットワークに係るルーティングエントリが発見されなかったときは、パケットを受信した通信インタフェースと送信元アドレスとを対応付けたルーティングエントリをルーティングテーブルに登録する。これにより、以後、ネットワークＣを経由して、モバイル端末１００５に対してパケットを送信することが可能となる。
【００５５】
次に、図１１のように、ネットワークＢとネットワークＣのネットワークアドレスが同一の場合に、通信装置１００１が、モバイル端末１００５へパケットを送信する際の通信インタフェースの選択について、図１１と図１２を用いて説明する。図１１の例では、モバイル端末１００５のＩＰアドレスは、１９２．１６８．２５．１５４である。また、この例では、通信装置１００１は、図１２に示されるルーティングテーブル１０８を保持している。この場合、ルーティングエントリ２０１２との比較では、モバイル端末１００５が接続しているネットワークＣのネットワークアドレス１９２．１６８．２５．０は、このエントリの宛先アドレス１９２．１６８．１．０と一致しない。ルーティングエントリ２０１６との比較では、モバイル端末１００５についてのネットワークアドレス１９２．１６８．２５．１５４は、このエントリの宛先アドレス１９２．１６８．２５．１５４と一致する。そのため、ルーティングエントリ２０１６が選択され、通信インタフェースはネットワークＣが選択される。よって、図１１のように、ネットワークＢとネットワークＣのネットワークアドレスが同一の場合であっても、ネットワークＣを経由して、モバイル端末１００５に対してパケットを送信することが可能となる。
【００５６】
次に、図１１のように、ネットワークＢとネットワークＣのネットワークアドレスが同一の場合に、通信装置１００１がＰＣ−Ｂ１００２へパケットを送信する際の通信インタフェースの選択について、図１１と図１２を用いて説明する。図１１の例では、ＰＣ−Ｂ１００２のＩＰアドレスは、１９２．１６８．２５．６４である。ルーティングエントリ２０１２との比較では、ＰＣ−Ｂ１００２のネットワークアドレス１９２．１６８．２５．０は、このエントリの宛先アドレス１９２．１６８．１．０と一致しない。ルーティングエントリ２０１６との比較でも、ＰＣ−Ｂ１００２のネットワークアドレスは、このエントリの宛先アドレス１９２．１６８．２５．１５４と一致しない。そして、他に一致するルーティングエントリもないため、デフォルトルーティングエントリ２０１３が選択され、送信するパケットをネットワークＡに接続されているルータ１００４へ送信し、ルータ１００４がパケットを中継することになる。したがって、ＰＣ−Ｂ１００２へパケットを到達することが可能である。
【００５７】
以上のように、通信装置１００１は、パケットを受信した際に、パケットの送信元ＩＰアドレスからルーティングテーブルを検索する。該当するルーティングエントリが存在する場合、そのルーティングエントリの通信インタフェースとパケットを受信した通信インタフェースを比較する。比較の結果、通信インタフェースが異なる場合は、通信装置１００１は、送信元ＩＰアドレス宛のルーティングテーブルのエントリを登録する。これにより、ルータを越えた先のネットワークと、受信したパケットの送信元ＩＰアドレスのネットワークアドレスが同一になる場合でも、通信装置１００１は、パケットを受信した通信インタフェースから、応答パケットを送信することができる。
【００５８】
＜＜実施形態２＞＞
本実施形態では、受信したパケットに対する応答の要否を判別し、応答が必要な場合にのみルーティングエントリの登録を行うことで、不必要なルーティングテーブルの更新を行わない構成を説明する。本実施形態に係る通信装置１００１の動作について、図１、図２、図５、図８、図１３を用いて説明する。図１３は、本実施形態に係る通信装置１００１の動作手順を表すフローチャートである。図１３の各ステップは、通信装置１００１のＣＰＵ１０２の制御に基づき実行される。
【００５９】
まず、図１のように、通信装置１００１がネットワークＡにのみ接続されているとする。この状態におけるルーティングテーブル１０８の構成は、図２のようになっている。次に、モバイル端末１００５が接続し、モバイル端末１００５にＩＰアドレスが割り当てられ、図５に示すようにネットワークＣが構成されたとする。これにより、通信装置１００１は、ネットワークＡとネットワークＣに同時に接続される。
【００６０】
そして、図５に示すように、ネットワークＡとネットワークＣが同じネットワークアドレス（１９２．１６８．１．０）で構成されたとする。機器１００１がパケットを受信すると（図１３のＳ１６０１）、Ｓ１６０２において要求パケットかどうか調べる。ここでいう要求パケットとは、要求パケットの送信側が受信側に対して応答を要求するパケットである。要求パケットの例としては、ＴＣＰの接続要求であるＴＣＰ  ＳＹＮパケット、ＩＣＭＰ  Ｅｃｈｏパケットなどがある。ＴＣＰのＳＹＮパケットを受信した場合、ＴＣＰ  ＳＹＮ  ＡＣＫパケットを応答することで接続の受け付けることを通知する。ＩＣＭＰ  Ｅｃｈｏパケットの受信した場合は、ＩＣＭＰ  Ｅｃｈｏ  Ｒｅｐｌｙパケットを送信する。このようにして、Ｓ１６０２では、受信したパケットに対して応答をする必要があるか否かを判定する。応答が必要な場合、すなわち、受信したパケットが要求パケットである場合（Ｓ１６０２でＹＥＳ）はＳ１６０３へ進む。必要でない場合、すなわち、要求パケットでない場合（Ｓ１６０２でＮＯ）はＳ１６０８へ進み、ルーティングテーブルの登録・更新を行わずに、受信処理を継続する。
【００６１】
Ｓ１６０３以降の処理は、図９の各ステップと同様である。すなわち、Ｓ１６０３では、パケットの送信元アドレスをキーにルーティングテーブルを検索する。検索の結果、デフォルトエントリを除くルーティングエントリが発見されたか否かを判定する（Ｓ１６０４）。発見された場合（Ｓ１６０４でＹＥＳ）はＳ１６０５へ進み、発見されなかった場合（Ｓ１６０４でＮＯ）はＳ１６０７へ進む。上記の例では、送信元アドレスは１９２．１６８．１．１５４であるから、図２のルーティングテーブル１０８においては、ルーティングエントリ２０１２がこの送信元アドレスに対応するエントリとして発見される。
【００６２】
Ｓ１６０５では、パケットを受信した通信インタフェースと、検索により発見されたルーティングテーブルエントリ（上記の例では２０１２）の通信インタフェースとを比較する。これらが同一の場合（Ｓ１６０５でＹＥＳ）はＳ１６０８へ進み、異なる場合（Ｓ１６０５でＮＯ）はＳ１６０７へ進む。上記の例では、図２のルーティングエントリ２０１２では通信インタフェースはネットワークＡであり、受信したパケットの通信インタフェースはネットワークＣであるから、両者は異なる。そこでＳ１６０７へ進むことになる。
【００６３】
Ｓ１６０７では、パケットの送信元アドレスと通信インタフェースを対応付けたルーティングエントリをルーティングテーブル１０８に登録する。上記の例では、図８のルーティングエントリ２０１５を登録することになる。
【００６４】
以上のように、本実施形態では、通信装置が受信したパケットに応答する必要があるか否かを判定し、必要な場合のみ、ルーティングテーブルにルーティングエントリを追加する。このため、送信する必要のない受信パケットに対して、ルーティングエントリを追加することがなくなり、誤動作や不要な処理を防ぐことが可能となる。
【００６５】
＜＜実施形態３＞＞
本実施形態では、パケットの受信に応じて登録したルーティングエントリを、パケットの送信元とのコネクション終了等に応じて、ルーティングテーブルから削除する構成を説明する。本実施形態に係る通信装置１００１の動作について、図１４、図１５、図１６を用いて説明する。図１４は、パケットを受信した場合のフローチャート、図１５は本実施形態におけるルーティングテーブル１０８の例、図１６はコネクション切断時のフローチャートである。図１４、図１６の各ステップは、通信装置１００１のＣＰＵ１０２の制御に基づき実行される。
【００６６】
（ルーティングテーブル）
図１５は、本実施形態におけるルーティングテーブル１０８の例を示す図である。本実施形態では、ルーティングエントリにフラグと参照カウンタの項目が追加されている。フラグは、ＴＣＰ  ＳＹＮパケットを受信したことにより追加されたエントリかどうかを判定するために使用される。参照カウンタは、ＴＣＰ  ＳＹＮパケットを受信し、ルーティングエントリを使用する場合にインクリメントするカウンタである。
【００６７】
（パケット受信の際の動作）
図１４のＳ７０１においてパケットを受信すると、通信装置１００１は、受信したパケットの送信元ＩＰアドレスでルーティングテーブル１０８を検索する（Ｓ７０２）。
【００６８】
ルーティングエントリが発見されなかった場合（Ｓ７０３でＮＯ）は、Ｓ７０６へ進み、受信したパケットが接続要求（ＴＣＰ  ＳＹＮ）パケットかどうかを判定する。ルーティングエントリが発見された場合（Ｓ７０３でＹＥＳ）は、受信したパケットの通信インタフェースとルーティングエントリの通信インタフェースを比較する（Ｓ７０４）。両者が異なる場合（Ｓ７０５でＮＯ）はＳ７０６へ進み、同一である場合（Ｓ７０５でＹＥＳ）はＳ７０８へ進む。
【００６９】
Ｓ７０６では、Ｓ７０１で受信したパケットが接続要求（ＴＣＰ  ＳＹＮ）パケットかどうか判断する。これにより、受信したパケットが接続要求（ＴＣＰ  ＳＹＮ）パケットであると判定された場合（Ｓ７０６でＹＥＳ）は、Ｓ７０７へ進む。Ｓ７０７では、参照カウンタを１に、フラグにＳＹＮを設定し、ルーティングエントリを登録する。そして、Ｓ７１２へ進んで受信処理を継続する。
【００７０】
Ｓ７０６において、受信したパケットが接続要求（ＴＣＰ  ＳＹＮ）パケットではないと判定された場合（Ｓ７０６でＮＯ）は、Ｓ７１１へ進む。Ｓ７１１では、参照カウンタとフラグを設定せずにルーティングエントリを登録する。そして、Ｓ７１２へ進んで受信処理を継続する。
【００７１】
Ｓ７０８では、Ｓ７０１で受信したパケットが接続要求パケット（ＴＣＰ  ＳＹＮ）かどうか判定する。接続要求パケット（ＴＣＰ  ＳＹＮ）でない場合（Ｓ７０８でＮＯ）は、Ｓ７１２へ進んで受信処理を継続する。接続要求パケット（ＴＣＰ  ＳＹＮ）である場合（Ｓ７０８でＹＥＳ）は、ルーティングエントリのフラグにＳＹＮマークがあるかどうかを判定する（Ｓ７０９）。ＳＹＮマークがない場合（Ｓ７０９でＮＯ）は、Ｓ７１２へ進んで受信処理を継続する。ＳＹＮマークがあった場合（Ｓ７０９でＹＥＳ）は、ルーティングエントリの参照カウンタをインクリメントする（Ｓ７１０）。そして、Ｓ７１２へ進み、受信処理を継続する。
【００７２】
（コネクション切断の動作）
次に、ＴＣＰ通信を終え、ＴＣＰのコネクションを切断し、ＴＣＰのコネクション情報を削除する場合の動作について、図１６を用いて説明する。コネクションが削除されると（Ｓ９０１）、Ｓ９０２へ進む。ＴＣＰのコネクション情報は、宛先ＩＰアドレス、送信元ＩＰアドレス、宛先ポート番号、送信元ポート番号の組み合わせを含んでいる。Ｓ９０２では、ＴＣＰのコネクション情報の中の宛先ＩＰアドレスをキーとして、ルーティングテーブル１０８を検索する。発見されなかった場合（Ｓ９０３でＮＯ）は、Ｓ９０８へ進んで、コネクション情報削除処理を継続する。発見された場合（Ｓ９０３でＹＥＳ）は、Ｓ９０４へ進む。
【００７３】
Ｓ９０４では、発見されたルーティングエントリのフラグにＳＹＮのマークがあるかどうかを判定する。ＳＹＮマークが存在しない場合（Ｓ９０４でＮＯ）は、Ｓ９０８へ進んで、コネクション情報削除処理を継続する。ＳＹＮマークが存在した場合（Ｓ９０４でＹＥＳ）は、Ｓ９０５へ進む。
【００７４】
Ｓ９０５では、ルーティングエントリの参照カウンタをデクリメントする。そして、Ｓ９０６において、ルーティングエントリの参照カウンタが０かどうかを判定する。０でない場合（Ｓ９０６でＮＯ）は、Ｓ９０８へ進んで、コネクション情報削除処理を継続する。０である場合（Ｓ９０６でＹＥＳ）は、Ｓ９０７へ進む。Ｓ９０７では、参照カウンタが０のルーティングエントリを削除し（Ｓ９０７）、Ｓ９０８へ進んでコネクション情報削除処理を継続する。
【００７５】
以上のように、本実施形態では、コネクション切断後、コネクション情報を削除する場合に、接続要求パケットによって追加されたルーティングエントリを削除する。このため、不要なルーティングエントリを削除して誤作動を防ぎ、必要なルーティングエントリのみをルーティングテーブルに保持することが可能となる。
【００７６】
なお、ルーティングエントリをルーティングテーブルから削除するのは、受信したパケットの送信元とのコネクションが終了した場合に限られない。例えば、ルーティングテーブルにルーティングエントリを登録してから所定時間が経過したことに応じて、当該ルーティングエントリをルーティングテーブルから削除するようにしてもよい。具体的には、例えば、ＵＤＰやＩＣＭＰなど接続を持たないプロトコルにおいて、ルーティングエントリを削除するためのタイマを設け、当該タイマが一定時間を計時したことに応じて切断処理を行ってもよい。
【００７７】
以上の各実施形態では、複数の通信インタフェースを備えた通信装置において、通信インタフェースのいずれかを介してデータを受信した場合、データを受信した通信インタフェースから、データに対する応答データを送出する。具体的には、受信したパケットの送信元ＩＰアドレスからルーティングテーブルを検索し、検索したルーティングエントリの通信インタフェースがパケットを受信したインタフェースと異なる場合は、送信元のルーティングエントリを登録する。これにより、ルーティングテーブルを用いて、通信インタフェースを適切に選択し、送信するパケットの宛先ＩＰアドレスに応じた適切な通信インタフェースからパケットを送信することが可能となる。
【００７８】
＜＜その他の実施形態＞＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７９】
１００１：通信装置、１０２：ＣＰＵ、１０３：ＤＲＡＭ、１０４：有線ＬＡＮモジュール、１０５：無線ＬＡＮモジュール、１０６：検索部、１０７：設定部、１０８：ルーティングテーブル、１０９：ＲＯＭ、１１０：ＬＡＮ、１１１：アンテナ
【図１】
0006470640.tif 000002
【図２】
0006470640.tif 000003
【図３】
0006470640.tif 000004
【図４】
0006470640.tif 000005
【図５】
0006470640.tif 000006
【図６】
0006470640.tif 000007
【図７】
0006470640.tif 000008
【図８】
0006470640.tif 000009
【図９】
0006470640.tif 000010
【図１０】
0006470640.tif 000011
【図１１】
0006470640.tif 000012
【図１２】
0006470640.tif 000013
【図１３】
0006470640.tif 000014
【図１４】
0006470640.tif 000015
【図１５】
0006470640.tif 000016
【図１６】
0006470640.tif 000017