(57)【要約】【課題】使用する通信インタフェースを切り替える際に、第三のノードを用いずに通信を継続でき、その際のセキュリティを高め、アプリケーション毎に適した通信環境を提供する。【解決手段】通信インタフェース切り替えマネージャ２０が、複数の通信インタフェースの中から、アプリケーション毎に使用通信インタフェースを選択して切り替える。仮想インタフェース４１は、アプリケーション部からノードＢに送信するデータを取得し、ノードＢから送信されたデータをアプリケーション部に提供する。アドレス切り替え部４２は、データに付加されているノードＡのアドレスを、アプリケーション毎の使用通信インタフェースのアドレスと仮想アドレスとの間で変換する。更に、エージェント３２は、切り替え時にノードＢに、切り替えの前後でノード自体は同一であることを証明する共有情報を提供する。【選択図】      図１
2004357252.tif 000002
【特許請求の範囲】
【請求項１】
データを相手装置と送受信する複数の通信インタフェースと、
該複数の通信インタフェースの中から、前記データの送受信に用いる使用通信インタフェースを選択して切り替える切り替え手段と、
ネットワーク層よりも上位層から、前記相手装置に送信するデータを取得し、前記相手装置から送信されたデータを、前記上位層に提供する仮想インタフェースと、
前記データに付加されている通信装置のアドレスを、前記使用通信インタフェースのアドレスと前記仮想インタフェースのアドレスとの間で変換する変換手段と、
前記使用通信インタフェースを切り替える際に、前記相手装置に、切り替えの前後で通信装置は同一であることを証明する証明情報を提供する証明情報提供手段とを備えることを特徴とする通信装置。
【請求項２】
前記証明情報提供手段は、前記切り替えの前に、前記証明情報として、前記相手装置と共有する共有情報を生成することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記相手装置が複数の通信インタフェースを備える場合に、前記相手装置から、該相手装置が前記使用通信インタフェースを切り替える際に、切り替えの前後で前記相手装置は同一であることを証明する相手装置証明情報を取得し、該取得した相手装置証明情報に基づいて前記相手装置を認証する認証手段を備えることを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
データを送受信する複数の通信インタフェースを備える相手装置から、該相手装置が前記データの送受信に用いる使用通信インタフェースを切り替える際に、切り替えの前後で前記相手装置は同一であることを証明する相手装置証明情報を取得し、該取得した相手装置証明情報に基づいて前記相手装置を認証する認証手段を備えることを特徴とする通信装置。
【請求項５】
データを相手装置と送受信する複数の通信インタフェースと、
該複数の通信インタフェースの中から、前記データの送受信に用いる使用通信インタフェースを、ネットワーク層よりも上位層で行うアプリケーション毎に選択して切り替える切り替え手段と、
前記上位層から、前記相手装置に送信するデータを取得し、前記相手装置から送信されたデータを、前記上位層に提供する仮想インタフェースと、
前記データに付加されている通信装置のアドレスを、前記アプリケーション毎の使用通信インタフェースのアドレスと前記仮想インタフェースのアドレスとの間で変換する変換手段とを備えることを特徴とする通信装置。
【請求項６】
前記切り替え手段が行う前記アプリケーション毎の使用通信インタフェースの切り替えを、前記相手装置に通知する通知手段を備えることを特徴とする請求項５に記載の通信装置。
【請求項７】
前記変換手段は、前記データに付加されている通信装置のアドレスを、前記アプリケーションで用いるセッション毎の使用通信インタフェースのアドレスと前記仮想インタフェースのアドレスとの間で変換することを特徴とする請求項５又は６に記載の通信装置。
【請求項８】
データに付加されている該データを送受信する複数の通信インタフェースを備える相手装置のアドレスを、前記相手装置が前記データの送受信に用いる使用通信インタフェースを切り替えた後の前記使用通信インタフェースのアドレスと、通信開始時の前記使用通信インタフェースのアドレスとの間で変換する相手アドレス変換手段を備えることを特徴とする通信装置。
【請求項９】
データを相手装置と送受信する複数の通信インタフェースと、
ネットワーク層よりも上位層から、前記相手装置に送信するデータを取得し、前記相手装置から送信されたデータを、前記上位層に提供する仮想インタフェースとを備える通信装置が、前記複数の通信インタフェースの中から、前記データの送受信に用いる使用通信インタフェースを選択して切り替え、
該切り替えの際に、前記相手装置に、切り替えの前後で前記通信装置は同一であることを証明する証明情報を提供し、
前記相手装置が、前記通信装置から取得した前記証明情報に基づいて前記通信装置を認証し、
該認証を受けた通信装置は、前記データに付加されている前記通信装置のアドレスを、前記使用通信インタフェースのアドレスと前記仮想インタフェースのアドレスとの間で変換することを特徴とする通信方法。
【請求項１０】
データを相手装置と送受信する複数の通信インタフェースと、ネットワーク層よりも上位層から、前記相手装置に送信するデータを取得し、前記相手装置から送信されたデータを、前記上位層に提供する仮想インタフェースとを備える通信装置が、前記複数の通信インタフェースの中から、前記データの送受信に用いる使用通信インタフェースを、前記上位層で行うアプリケーション毎に選択して切り替え、
前記データに付加されている前記通信装置のアドレスを、前記アプリケーション毎の使用通信インタフェースのアドレスと前記仮想インタフェースのアドレスとの間で変換することを特徴とする通信方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信装置及び通信方法に関する。
【０００２】
【従来の技術】
移動通信ノードが、異なるアドレス体系を持つサブネットワーク間を移動すると、そのアドレスは変更されてしまう。そのため、移動通信ノードのアドレスが移動により変更されても、通信を継続する技術が提案されている。例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークでは、ＲＦＣ（Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ）２００２で規定されているモバイルＩＰがある。
【０００３】
モバイルＩＰでは、どのネットワークに存在していても変わらない、移動通信ノードに固有のホームアドレスを、移動通信ノードに付与する。又、モバイルＩＰを用いた通信システムは、移動通信ノードと、ホームアドレスを含んでいるサブネットワーク内に設置されるホームエージェントと、移動通信ノードの移動先のサブネットワークにおいて、ホームエージェントと通信を行うフォーリンエージェントとを備える。
【０００４】
移動通信ノードは、ホームアドレスを含むサブネットワークでは、相手ノードとホームアドレスを用いて通信を行う。そして、移動通信ノードは、ホームアドレスを含むサブネットワークから、別のサブネットワークに移動した場合、ホームエージェントに移動先の位置情報を登録する。ホームエージェントは、相手ノードから、移動通信ノードのホームアドレス宛のデータを、移動通信ノードの代理として受信する。ホームエージェントは、移動通信ノードの移動先のサブネットワークに設置されたフォーリンエージェントに、受信したデータをカプセル化して送信する。フォーリンエージェントは、カプセル化されたデータからデータを取りだし、移動通信ノードに送信する。移動通信ノードは、送信元アドレスを自身のホームアドレスとして、ホームエージェントを経由することなく、相手ノード宛てに直接返信する。
【０００５】
このように、移動通信ノードのアドレスが、移動により、移動先のサブネットワークのアドレス体系に従ったアドレスに変更された場合であっても、ホームエージェントが移動通信ノードの移動先を把握しておくことにより、移動先のフォーリンエージェントにデータを転送できる。よって、相手ノードは、移動通信ノードが移動してもホームアドレス宛にデータを送っているだけで、移動通信ノードとの通信を継続できる。即ち、通信途中で移動通信ノードのアドレスが変更されても、移動通信ノードと相手ノードは、通信中のセッションを継続できる。尚、このフォーリンエージェントの機能を移動通信ノード自身が備えてもよい。
【０００６】
又、複数の通信インタフェースを備え、異なるアドレス体系を持つサブネットワーク間を移動した場合に、使用する通信インタフェースを切り替える移動通信ノードがある。このとき、各通信インタフェースのアドレスが異なることから、相手ノードからは、移動通信ノードのアドレスが変更されてしまったように見える。この場合にも、上記モバイルＩＰの技術を採用することにより、通信インタフェースが変更されても、相手ノードとの通信の継続を可能にできる（例えば、特許文献１参照）。
【０００７】
この使用する通信インタフェースの切り替えによるアドレスの変更を、上位層に対して隠蔽する技術も提案されている（例えば、特許文献２参照）。具体的には、ネットワークアドレス変換部が、パケットのアドレスについて、上位層の持つ論理ＩＰアドレスと、通信インタフェースが持つ物理ＩＰアドレスとを変換する。これにより、上位層は論理ＩＰアドレスだけを用いて通信できる。
【０００８】
【特許文献１】
特開２００２−２９０４４５号公報
【０００９】
【特許文献２】
特開２０００−３３２７７６号公報
【００１０】
【発明が解決しようとする課題】
しかしながら、移動通信ノードが使用する通信インタフェースを切り替える場合に、モバイルＩＰの技術を採用すると、移動通信ノードと相手ノードといった通信を行うエンドノード以外に、ホームエージェント、フォーリンエージェントといった第三の通信ノードが必要になる。その結果、ホームエージェントを経由することでデータの通信経路が冗長になる、ホームエージェントやフォーリンエージェントの故障により、モバイルＩＰを利用した通信ができなくなるため、通信システム全体の耐障害性が低下する、ホームエージェント、フォーリンエージェント間でデータをカプセル化することから、カプセル化に用いるヘッダ分のオーバーヘッドが発生する、経路の冗長化やオーバーヘッドの発生により、ネットワークに大きな負荷がかかるといった問題点があった。
【００１１】
通信経路が冗長になる点については、モバイルＩＰｖ６において改良が行われ、モバイルＩＰｖ６では、ホームエージェントやフォーリンエージェントを介在しないエンドツーエンドで通信を行うＢｉｎｄｉｎｇ  ｃａｃｈｅオプションが設けられている。しかし、モバイルＩＰｖ６でも、通信開始時はホームエージェントを経由する必要があり、耐障害性の問題は依然として存在していた。又、通信ノードに関する経路情報をヘッダにオプションとして加えることにより、余計なオーバーヘッドが発生するという新たな問題があった。
【００１２】
又、使用する通信インタフェースの切り替えによるアドレスの変更を、上位層に対して隠蔽する技術においても、以下のような問題点があった。使用する通信インタフェースの切り替えにより移動通信ノードのアドレスが変更された場合に、相手ノードは、切り替えの前後で同一の移動通信ノードであるか否かを確かめることができなかった。そのため、第三者によるなりすましによって、移動通信ノードと相手装置との間で通信中のセッションを容易に乗っ取られてしまったり、データを改ざんされてしまったりするおそれがあった。即ち、使用する通信インタフェースを切り替える際のセキュリティが低いという問題があった。
【００１３】
更に、上位層で行われる複数のアプリケーションが通信インタフェースの切り替えの度に使用できる通信インタフェースは、１つであった。即ち、通信インタフェースを切り替えると、上位層で行われる全てのアプリケーションは、切り替えられた単一の通信インタフェースを用いて通信を行っていた。そのため、アプリケーション毎に適した通信インタフェースが異なる場合には、各アプリケーションに適した通信環境を提供できなかった。
【００１４】
そこで、本発明の第一の目的は、使用する通信インタフェースを切り替える場合に、モバイルＩＰのように第三のノードを用いずに通信を継続でき、その際のセキュリティを高めることができる通信装置及び通信方法を提供することにある。又、本発明の第二の目的は、使用する通信インタフェースを切り替える場合に、モバイルＩＰのように第三のノードを用いずに通信を継続でき、上位層のアプリケーション毎に適した通信環境を提供できる通信装置及び通信方法を提供することにある。
【００１５】
【課題を解決するための手段】
本発明に係る通信装置は、データを相手装置と送受信する複数の通信インタフェースと、複数の通信インタフェースの中から、データの送受信に用いる通信インタフェース（以下「使用通信インタフェース」という）を選択して切り替える切り替え手段と、ネットワーク層よりも上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを、上位層に提供する仮想インタフェースと、データに付加されている通信装置のアドレスを、使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換する変換手段と、使用通信インタフェースを切り替える際に、相手装置に、切り替えの前後で通信装置は同一であることを証明する証明情報を提供する証明情報提供手段とを備えることを特徴とする。
【００１６】
このような通信装置によれば、切り替え手段が、複数の通信インタフェースの中から、使用通信インタフェースを選択して切り替える。仮想インタフェースは、ネットワーク層よりも上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを上位層に提供する。そして、変換手段が、データに付加されている通信装置のアドレスを、使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換する。そのため、通信装置は、使用通信インタフェースを切り替えることができる。しかも、通信装置は、使用通信インタフェースの切り替えを上位層に対して隠蔽することができ、上位層は、常に変わらない仮想インタフェースのアドレスを用いて通信できる。よって、通信装置の上位層では、使用通信インタフェースを切り替えても、モバイルＩＰのように第三のノードを用いずに通信を継続できる。
【００１７】
更に、証明情報提供手段は、使用通信インタフェースを切り替える際に、相手装置に、切り替えの前後で通信装置自体は同一であることを証明する証明情報を提供する。そのため、通信装置の使用通信インタフェースが切り替えられ、相手装置から見た通信装置のアドレスが変更されたときに、相手装置は、証明情報に基づいて、通信装置が切り替えの前後で同一の通信装置であるか否かを認証できる。よって、通信装置は、使用通信インタフェースを切り替える際のセキュリティを高めることができる。
【００１８】
又、証明情報提供手段は、切り替えの前に、証明情報として、相手装置と共有する共有情報を生成することが好ましい。これによれば、相手装置は、通信装置が使用通信インタフェースを切り替える前に、予め通信装置と相手装置との間で生成した共有情報に基づいて、通信装置を認証できる。よって、通信装置は、使用通信インタフェースを切り替える場合のセキュリティを、より高めることができる。
【００１９】
更に、通信装置は、相手装置が複数の通信インタフェースを備える場合に、相手装置から、その相手装置が使用通信インタフェースを切り替える際に、切り替えの前後で相手装置は同一であることを証明する相手装置証明情報を取得し、その取得した相手装置証明情報に基づいて相手装置を認証する認証手段を備えることが好ましい。
【００２０】
これによれば、相手装置も複数の通信インタフェースを備え、その切り替えを行う場合に、通信装置は、相手装置証明情報に基づいて、相手装置が切り替えの前後で同一の相手装置であるか否かを認証できる。よって、通信装置は、相手装置が使用通信インタフェースを切り替える場合のセキュリティについても、高めることができる。
【００２１】
又、他の通信装置は、データを送受信する複数の通信インタフェースを備える相手装置から、その相手装置が使用通信インタフェースを切り替える際に、切り替えの前後で相手装置は同一であることを証明する相手装置証明情報を取得し、その取得した相手装置証明情報に基づいて相手装置を認証する認証手段を備えることを特徴とする。
【００２２】
これによれば、相手装置の使用通信インタフェースが切り替えられ、通信装置から見た相手装置のアドレスが変更されたときに、通信装置は、相手装置証明情報に基づいて、相手装置が切り替えの前後で同一の相手装置であるか否かを認証できる。よって、通信装置は、使用通信インタフェースを切り替える際のセキュリティを高めることができる。
【００２３】
更に、他の通信装置は、データを相手装置と送受信する複数の通信インタフェースと、複数の通信インタフェースの中から、使用通信インタフェースを、ネットワーク層よりも上位層で行うアプリケーション毎に選択して切り替える切り替え手段と、上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを、上位層に提供する仮想インタフェースと、データに付加されている通信装置のアドレスを、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換する変換手段とを備えることを特徴とする。
【００２４】
このような通信装置によれば、切り替え手段が、複数の通信インタフェースの中から、アプリケーション毎に使用通信インタフェースを選択して切り替える。仮想インタフェースは、上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを上位層に提供する。そして、変換手段が、データに付加されているアドレスを、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換する。
【００２５】
そのため、通信装置は、アプリケーション毎に使用通信インタフェースを切り替えることができる。よって、上位層で行われる各アプリケーションは、各アプリケーションに適した通信インタフェースを用いて通信できる。その結果、通信装置は、アプリケーション毎に適した通信環境を提供できる。しかも、通信装置は、アプリケーション毎の使用通信インタフェースの切り替えを上位層に対して隠蔽することができ、上位層は、常に変わらない仮想インタフェースのアドレスを用いて通信できる。よって、通信装置の上位層では、使用通信インタフェースを切り替えても、モバイルＩＰのように第三のノードを用いずに通信を継続できる。
【００２６】
更に、通信装置は、切り替え手段が行うアプリケーション毎の使用通信インタフェースの切り替えを、相手装置に通知する通知手段を備えることが好ましい。
これによれば、通信装置は、相手装置に対して、アプリケーション毎の使用通信インタフェースの切り替えを事前に通知できる。そのため、相手装置では、通信装置における使用通信インタフェースの変更に伴う処理を適切に行うことができる。
【００２７】
又、変換手段は、データに付加されている通信装置のアドレスを、アプリケーションで用いるセッション毎の使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換することが好ましい。これによれば、通信装置は、セッション毎に使用通信インタフェースを切り替えることができる。よって、上位層で行われる各アプリケーションは、各セッションに適した通信インタフェースを用いて通信できる。その結果、通信装置は、各アプリケーションのセッション毎に適した通信環境を提供できる。尚、セッションとは、通信路を確立してから、その通信路を解放するまでの一連の処理をいう。
【００２８】
又、他の通信装置は、データに付加されている複数の通信インタフェースを備える相手装置のアドレスを、相手装置が使用通信インタフェースを切り替えた後の使用通信インタフェースのアドレスと、通信開始時の使用通信インタフェースのアドレスとの間で変換する相手アドレス変換手段を備えることを特徴とする。
このような通信装置によれば、相手装置が使用通信インタフェースを切り替えても、そのアドレスが常に変わらないように見せることができる。よって、通信装置では、相手装置が使用通信インタフェースを切り替えても、モバイルＩＰのように第三のノードを用いずに通信を継続できる。
【００２９】
本発明に係る通信方法は、データを相手装置と送受信する複数の通信インタフェースと、ネットワーク層よりも上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを、上位層に提供する仮想インタフェースとを備える通信装置が、複数の通信インタフェースの中から、使用通信インタフェースを選択して切り替え、その切り替えの際に、相手装置に、切り替えの前後で通信装置は同一であることを証明する証明情報を提供し、相手装置が、通信装置から取得した証明情報に基づいて通信装置を認証し、その認証を受けた通信装置は、データに付加されている通信装置のアドレスを、使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換することを特徴とする。
【００３０】
又、他の通信方法は、データを相手装置と送受信する複数の通信インタフェースと、上位層から、相手装置に送信するデータを取得し、相手装置から送信されたデータを、上位層に提供する仮想インタフェースとを備える通信装置が、複数の通信インタフェースの中から、使用通信インタフェースを、上位層で行うアプリケーション毎に選択して切り替え、データに付加されている通信装置のアドレスを、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェースのアドレスとの間で変換することを特徴とする。
【００３１】
【発明の実施の形態】
［第１の実施の形態］
通信システムは、図１に示すノードＡ１００と、図２に示すノードＢ２００とを備える。ノードＡ１００、ノードＢ２００は、データを送受信する通信装置である。ノードＡ１００は、ノードＢ２００にとっての相手装置となり、ノードＢ２００は、ノードＡ１００にとっての相手装置となる。尚、説明を簡単にするために、２つのノードＡ１００とノードＢ２００を用いて説明するが、通信システムには多数のノードが含まれる。
【００３２】
〔ノードＡ〕
ノードＡ１００は、移動通信を行う移動通信ノードである。図１に示すように、ノードＡ１００は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎと、通信インタフェース切り替えマネージャ２０と、セッションマネージャ３０と、アドレス変換ファンクション部４０と、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎとを備える。
【００３３】
通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎは、データを相手装置であるノードＢ２００と送受信する。通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎには、それぞれ通信可能なネットワークが存在する。通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎは、対応する通信可能なネットワークを介してノードＢ２００と通信する。各通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎには、アドレスが付与されている。通信インタフェース（＃１）１１には、アドレスとして「ａｄｄ＿Ａ１」が、通信インタフェース（＃２）１２には、アドレスとして「ａｄｄ＿Ａ２」が、通信インタフェース（＃Ｎ）１ｎには、アドレスとして「ａｄｄ＿Ａｎ」が付与されている。
【００３４】
通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎは、ノードＢ２００に送信するデータを、アドレス変換ファンクション部４０から取得する。通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎは、ノードＢ２００から受信したデータを、アドレス変換ファンクション部４０に入力する。又、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎは、セッションマネージャ３０から制御に必要な情報の入力を受け、ノードＢ２００に送信したり、制御に必要な情報をノードＢ２００から受信し、セッションマネージャ３０に入力したりする。
【００３５】
アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、ネットワーク層よりも上位層のアプリケーション層において、アプリケーションを行う。各アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、それぞれのアプリケーションを行う。アプリケーション部（＃１）５１は、アプリケーション（＃１）を行い、アプリケーション部（＃２）５２は、アプリケーション（＃２）を行い、アプリケーション部（＃Ｎ）５ｎは、アプリケーション（＃Ｎ）を行う。
【００３６】
アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、ノードＢ２００に送信するデータを、アドレス変換ファンクション部４０に入力する。アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、ノードＢ２００から送信されたデータを、アドレス変換ファンクション部４０から取得する。
【００３７】
通信インタフェース切り替えマネージャ２０と、セッションマネージャ３０と、アドレス変換ファンクション部４０は、プロトコルスタック中のネットワーク層において処理を行う。通信インタフェース切り替えマネージャ２０と、セッションマネージャ３０と、アドレス変換ファンクション部４０は、例えば、ノードＡ１００が、通信インタフェース切り替えマネージャ２０と、セッションマネージャ３０と、アドレス変換ファンクション部４０として機能するミドルウェアをネットワーク層に実装し、そのミドルウェアを実行することにより実現される。
通信インタフェース切り替えマネージャ２０は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、データの送受信に用いる使用通信インタフェースを選択して切り替える切り替え手段である。通信インタフェース切り替えマネージャ２０は、切り替え判断部２１と、メモリ２２と、切り替え指示部２３とを備える。
【００３８】
切り替え判断部２１は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態を常に検出することにより、監視する。切り替え判断部２１は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎから、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの電波強度や在圏状況などの通信環境の状況、故障状況などを取得し、取得した通信環境の状況、故障状況などに基づいて、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態を検出する。
【００３９】
切り替え判断部２１は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態を、図３に示すように、「通信中」、「通信待機」、「通信不可能」の３種類に分類する。「通信中」は、通信インタフェースをデータの送受信に使用している状態であり、通信インタフェースにデータを入力して通信している状態である。「通信待機」は、通信インタフェースは通信可能な状態にあるが、データの送受信に使用していない状態である。即ち、「通信待機」は、通信インタフェースは通信可能な状態にあるが、実際には通信を行っていない状態である。「通信不可能」は、通信インタフェースまで電波が届かない、ノードＡ１００がサービスエリア外に存在する、通信インタフェースが故障しているなど、物理的な理由によって、通信インタフェースを使用できない状態である。即ち、「通信不可能」は、通信インタフェースが物理的に通信できない状態を示す。
【００４０】
「通信中」と「通信待機」は、使用通信インタフェースを選択する選択基準である切り替えポリシーによって区別される。又、「通信待機」と「通信不可能」は、電波強度や在圏状況などの通信環境の状況、故障状況などによって区別される。更に、「通信中」から「通信不可能」への移行は、以下のようにして判断する。通信中にデータの送受信が突然途切れる場合がある。切り替え判断部２１は、まず、故障状況に基づいて、通信インタフェースの故障が原因と判断した場合には、直ちに「通信不可能」と判断する。切り替え判断部２１は、通信インタフェースの故障が原因ではないと判断した場合には、相手装置であるノードＢ２００にデータを送信できない、ノードＢ２００からデータを受信できないといったデータの送受信が途切れている時間（以下「切断時間」という）を計測する。
【００４１】
切り替え判断部２１は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの電波強度や在圏状況などの通信環境の状況と切断時間に基づいて、通信が切断されたか否かを判断する。通信が切断されたか否かを判断する基準となる電波強度や切断時間の基準値や、在圏状況に基づく切断されたか否かの判断基準を、ノードのユーザや切り替え判断部２１が設定する。あるいは、予めデフォルトの値や条件を設定しておく。例えば、切り替え判断部２１は、電波強度が、基準値よりも小さい場合や、切断時間が基準値よりも長い場合、サービスエリア外となった場合に、通信が切断されたと判断できる。
【００４２】
切り替え判断部２１は、通信が切断されたと判断した場合には、電波強度や在圏状況などの通信環境の状況に基づいて、その原因がノードＡ１００にあるか否かを判断する。切り替え判断部２１は、例えば、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの電波強度が小さい場合や、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎがそのサービスエリア外に存在する場合には、その原因がノードＡ１００にあると判断する。原因がノードＡ１００にあると判断した場合には、切り替え判断部２１は、その通信インタフェースの状態が「通信中」から「通信不可能」になったと判断する。
【００４３】
一方、切り替え判断部２１は、例えば、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの電波強度が大きい場合や、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎがそのサービスエリア内に存在する場合には、その原因がノードＡ１００にはなく、相手装置であるノードＢ２００にあると判断する。切り替え判断部２１は、通信が切断されていないと判断した場合や、その原因がノードＡ１００にないと判断した場合には、状態は「通信中」のままとする。
【００４４】
切り替え判断部２１は、通信開始時や、ノードＡ１００の移動により、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの在圏状況や電波強度などの通信環境が変化し、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態変化を検出した時に、使用通信インタフェースを選択する。
【００４５】
切り替え判断部２１は、切り替えポリシーに基づいて、使用通信インタフェースを選択する。切り替えポリシーは、ネットワーク層よりも上位層で行う複数のアプリケーション毎に設定してもよい。その場合、切り替え判断部２１は、アプリケーション毎の切り替えポリシーに基づいて、アプリケーション毎に使用通信インタフェースを選択する。切り替えポリシーは、例えば、通信コスト、通信速度、セキュリティ、ノードＡ１００の移動時における通信の連続性など、移動ノードＡ１００において優先する項目や、各アプリケーションにおいて優先する項目に基づいて、設定できる。
【００４６】
切り替えポリシーとしては、例えば、図４に示すように、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎに、使用する優先順位を付与した条件を設定できる。又、切り替えポリシーは、複数のアプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎに、使用する優先順位を付与した条件を設定できる。
【００４７】
例えば、ノードＡ１００のユーザが、各通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの優先順位を直接決定することにより、優先順位を設定できる。あるいは、まず、ユーザが、通信コスト、通信速度、セキュリティ、移動時における通信の連続性など、移動ノードＡ１００において優先する項目や、各アプリケーションにおいて優先する項目を決定して切り替え判断部２１に入力する。そして、切り替え判断部２１が、入力された項目に基づいて、通信インタフェースの優先順位を決定することにより、優先順位を設定できる。即ち、切り替え判断部２１が、ユーザが優先する項目と、各通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態や性能に基づいて、自動的に優先順位を決定する。
【００４８】
切り替えポリシーは、上記したようにノードＡ１００のユーザが設定したり、切り替え判断部２１が自動的に設定したり、あるいは、予めデフォルトの条件を設定しておいたりできる。メモリ２２が、切り替えポリシーを保持する。このようにして、通信インタフェース切り替えマネージャ２０は、切り替えポリシーの設定、記憶を行い、切り替えポリシーを制御する。
【００４９】
切り替え判断部２１は、選択した使用通信インタフェースが、現在使用している通信中の通信インタフェースと同一の場合には、使用通信インタフェースの切り替えを行わないと判断する。一方、切り替え判断部２１は、選択した使用通信インタフェースが、現在使用している通信中の通信インタフェースと異なる場合には、使用通信インタフェースの切り替えを行うと判断する。このとき、切り替え判断部２１は、アプリケーション毎に使用通信インタフェースの切り替えを判断してもよい。
【００５０】
尚、状態変化が「通信中」から「通信不可能」への移行の場合には、切り替え判断部２１は、状態が「通信待機」である使用可能な通信インタフェースが存在するか否かを判断する。切り替え判断部２１は、使用可能な通信インタフェースが存在する場合には切り替えを行うと判断し、使用通信インタフェースを選択する。一方、使用可能な通信インタフェースが存在しない場合には、ノードＡ１００は通信不可能である。そのため、切り替え判断部２１は、切り替えを行わずに、通信を中断すると判断する。
【００５１】
使用通信インタフェースの切り替えを行うと判断した場合、切り替え判断部２１は、セッションマネージャ３０に、切り替えの実行と、その切り替えの内容を通知する。切り替えの内容には、切り替えの対象となる現在使用中の通信インタフェースと、新しく選択した切り替え先の通信インタフェースが含まれる。このようにして、切り替え判断部２１は、使用通信インタフェースを切り替えることに伴う処理を行うように、セッションマネージャ３０に指示する。又、切り替え判断部２１は、通信開始時に、選択した通信インタフェースをセッションマネージャ３０に通知する。アプリケーション毎に使用通信インタフェースを選択したり、切り替えを行ったりする場合には、切り替え判断部２１は、アプリケーション毎に、切り替えの実行と切り替えの内容を通知したり、選択した通信インタフェースを通知したりする。即ち、切り替え判断部２１は、アプリケーションを特定して、使用通信インタフェースを切り替えることに伴う処理を行うように、セッションマネージャ３０に指示する。
【００５２】
更に、切り替え判断部２１は、通信を中断すると判断した場合には、セッションマネージャ３０に通信の中断を通知する。又、切り替え判断部２１は、通信が切断されたと判断した場合であって、その原因が相手装置であるノードＢ２００にあると判断した場合には、セッションマネージャ３０に通信の切断を通知する。
【００５３】
更に、切り替え判断部２１は、切り替え指示部２３に、切り替えの実行と、その切り替えの内容を通知し、使用通信インタフェースを切り替えるように指示する。一方、使用通信インタフェースの切り替えを行わないと判断した場合、切り替え判断部２１は、切り替えに関する処理は行わない。尚、切り替え判断部２１は、状態変化が「通信中」から「通信不可能」への移行した場合であって、切り替えを行わない場合には、切り替え指示部２３に、「通信不可能」と判断した通信インタフェースを通知する。又、切り替え判断部２１は、通信開始時には、切り替え指示部２３に、選択した通信インタフェースを通知し、その通信インタフェースを用いて通信を開始するように指示する。更に、切り替え判断部２１は、セッションマネージャ３０からの通知に基づいて、切り替え指示部２３に指示する。
【００５４】
切り替え指示部２３は、使用通信インタフェースの切り替えを行う。具体的には、切り替え指示部２３は、切り替え判断部２１から通知された切り替えの内容に基づいて切り替えを行う。切り替え指示部２３は、新しく選択した切り替え先の通信インタフェースを起動し、状態を「通信中」に変更する。切り替えの対象となる現在使用中の通信インタフェースを終了させ、通信可能な通信インタフェースについては状態を「通信待機」に変更する。尚、切り替えを行わない場合でも、切り替え指示部２３は、「通信不可能」と判断された通信インタフェースについては終了する。又、切り替え指示部２３は、通信開始時には、選択した通信インタフェースを起動し、「通信中」に変更する。更に、切り替え指示部２３は、セッションマネージャ３０からの通知に基づく指示により、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎを起動したり、終了したりする。
【００５５】
アドレス変換ファンクション部４０は、仮想インタフェース４１と、アドレス切り替え部４２と、バッファ４３とを備える。仮想インタフェース４１は、ネットワーク層よりも上位層から、相手装置であるノードＢ２００に送信するデータを取得し、相手装置であるノードＢ２００から送信されたデータを上位層に提供する。仮想インタフェース４１は、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎから、ノードＢ２００に送信するデータを取得し、ノードＢ２００から送信されたデータを、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに提供する。
【００５６】
仮想インタフェース４１には、アドレスが付与されている。仮想インタフェース４１には、使用通信インタフェースに依存しない固定の仮想アドレス「ａｄｄ＿Ｖ」が付与されている。尚、仮想インタフェース４１が、データの取得、提供を行う上位層はアプリケーション層に限られず、ネットワーク層よりも上位層のトランスポート層、セション層、プレゼンテーション層のいずれであってもよい。
【００５７】
アドレス切り替え部４２は、データに付加されているアドレスを、使用通信インタフェースのアドレスと、仮想インタフェース４１の仮想アドレスとの間で変換する変換手段である。アドレス切り替え部４２は、使用通信インタフェースの切り替えにあわせて、変換する使用通信インタフェースのアドレスを、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎのアドレス「ａｄｄ＿Ａ１」〜「ａｄｄ＿Ａｎ」間で切り替える。即ち、使用通信インタフェースが切り替えられると、アドレス切り替え部４２は、仮想インタフェース４１の仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、切り替え先の通信インタフェースのアドレスに変更する。
【００５８】
アドレス切り替え部４２は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎのアドレス「ａｄｄ＿Ａ１」〜「ａｄｄ＿Ａｎ」を保持する。アドレス切り替え部４２は、保持している各通信インタフェースのアドレスの中から、使用通信インタフェースのアドレスを選択し、仮想インタフェース４１の仮想アドレスとの変換を行う。尚、アドレス切り替え部４２は、通信インタフェース切り替えマネージャ２０がアプリケーション毎に使用通信インタフェースを選択したり、切り替えを行ったりする場合には、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとの間で変換を行う。
【００５９】
更に、アドレス切り替え部４２は、使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとを変換することに伴って、変更が必要なアドレス以外の通信パラメータも変換する。又、アドレス切り替え部４２は、使用通信インタフェースが切り替えられた場合にも、使用通信インタフェースが切り替えられることに伴って変更が必要なアドレス以外の通信パラメータを変換する。尚、アドレス切り替え部４２は、ノードＢ２００のアドレスについては変換しない。アドレス切り替え部４２は、仮想インタフェース４１やバッファ４３からデータを取得して、通信パラメータを変換する。アドレス切り替え部４２は、通信パラメータを変換したデータをバッファ４３や仮想インタフェース４１に入力する。
【００６０】
このようにして、アドレス変換ファンクション部４０は、仮想インタフェース４１を提供し、切り替えにより変化する使用通信インタフェースのアドレスを含む通信パラメータと、切り替えにより変化しない仮想インタフェース４１の仮想アドレスを含む通信パラメータとを、ネットワーク層において通信ができるように変換する。そのため、アドレス変換ファンクション部４０は、上位層であるアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに対して、常に変わらない仮想インタフェース４１の仮想アドレスで通信を行っているように見せることができる。よって、アドレス変換ファンクション部４０は、ネットワーク層において、ノードＡ１００の上位層とノードＢ２００の上位層との間で行っている通信、即ち、上位層間のセッションの維持を保証する。
【００６１】
バッファ４３は、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎがノードＢ２００に送信するデータを、アドレス切り替え部４２から入力され、保持する。バッファ４３は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎが受信したデータを、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎから入力され、保持する。
【００６２】
セッションマネージャ３０は、使用通信インタフェースの切り替えに伴う処理を制御する。更に、セッションマネージャ３０は、アドレス変換ファンクション部４０におけるアドレスの変換を制御する。そのために、セッションマネージャ３０は、アドレス変換ファンクション部４０が行うアドレスの変換や、変換する使用通信インタフェースのアドレスの切り替えに関する詳細な動作内容を把握し、使用通信インタフェースを切り替えるときのアドレス変換ファンクション部４０の処理を制御する。
【００６３】
セッションマネージャ３０は、切り替え指示部３１と、エージェント３２と、タイマ３３とを備える。切り替え指示部３１は、通信インタフェース切り替えマネージャ２０の切り替え判断部２１から、切り替えの実行とその切り替えの内容の通知を受ける。又、切り替え指示部３１は、通信開始時に、切り替え判断部２１から、選択した通信インタフェースの通知を受ける。そして、切り替え指示部３１は、エージェント３２に、切り替えの内容や選択した通信インタフェースを通知し、使用通信インタフェースの切り替え時や通信開始時の処理を行うように指示する。
【００６４】
又、切り替え指示部３１は、ノードＡ１００の上位層とノードＢ２００の上位層との間のセッションの維持を制御する。具体的には、切り替え指示部３１は、切り替え判断部２１から、通信の中断を通知された場合には、エージェント３２にセッションの切断を指示する。又、切り替え指示部３１は、切り替え判断部２１から、通信の切断を通知された場合、即ち、切り替え判断部２１が、通信が切断されたと判断した場合であって、その原因が相手装置であるノードＢ２００にあると判断した場合には、タイマ３３を起動する。タイマ３３は、セッションを維持するセッション維持時間を計測する。
【００６５】
又、切り替え指示部３１は、エージェント３２から、新たなデータの受信の通知を受ける。切り替え指示部３１は、タイマ３３のタイマ値が満了する以前に、即ち、セッション維持時間内に、エージェント３２から新たなデータの受信の通知を受けた場合には、セッションを維持すると判断する。一方、切り替え指示部３１は、タイマ３３のタイマ値が満了しても、エージェント３２から新たなデータの受信の通知を受けなかった場合、即ち、セッション維持時間内にエージェント３２から新たなデータの受信の通知を受けなかった場合、セッションを切断し、通信を中断すると判断する。そして、切り替え指示部３１は、エージェント３２にセッションの切断を指示する。
【００６６】
エージェント３２は、切り替え指示部３１から、切り替えの内容や選択した通信インタフェースの通知を受ける。そして、エージェント３２は、使用通信インタフェースの切り替え時や通信開始時の処理を行う。
【００６７】
まず、エージェント３２は、切り替え先の新しい使用通信インタフェースにセキュリティ上安全に切り替え、これまでの通信を継続するためのネゴシエーションをノードＢ２００と行う。エージェント３２は、切り替え前である通信開始時に、ノードＡ１００の上位層とノードＢ２００の上位層との間のセッションを証明する証明書を生成する。セッションの証明書は、使用通信インタフェースを切り替えても、同一のセッションを扱う同一のノードＡ１００、ノードＢ２００であることを証明する。よって、セッションの証明書は、切り替えの前後で通信装置は同一であることを証明する証明情報や、相手装置が同一であることを証明する相手装置証明情報となる。
【００６８】
エージェント３２は、セッションの証明書を、ノードＢ２００と共有する共有情報として生成する。エージェント３２は、ノードＡ１００とノードＢ２００のみが知り得る共有情報を生成する。エージェント３２は、生成した共有情報を保持する。エージェント３２は、共有情報をノードＡ１００自体は同一であることを証明する証明情報として用いる。エージェント３２は、使用通信インタフェースを切り替える際に、切り替え先の新しい使用通信インタフェースを経由して、ノードＢ２００に共有情報を提供する。そして、エージェント３２は、ノードＢ２００の認証を受け、通信を継続する。このように、エージェント３２は、使用通信インタフェースを切り替える際に、相手装置であるノードＢ２００に、切り替えの前後でノードＡ１００自体は同一であることを証明する証明情報を提供する証明情報提供手段として機能する。
【００６９】
エージェント３２は、通信開始時に、アドレス変換ファンクション部４０に、仮想インタフェース４１の仮想アドレスの変換相手となる使用通信インタフェースのアドレスを通知し、変換を指示する。エージェント３２は、使用通信インタフェースを切り替える際に、アドレス変換ファンクション部４０に、仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、新しい切り替え先の通信インタフェースのアドレスに変更するように指示する。尚、エージェント３２は、通信インタフェース切り替えマネージャ２０がアプリケーション毎に使用通信インタフェースを選択したり、切り替えを行ったりする場合には、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとの間の変換を指示する。
【００７０】
又、エージェント３２は、通信インタフェース切り替えマネージャ２０が行う使用通信インタフェースの切り替えを、相手装置であるノードＢ２００に通知する通知手段としても機能する。エージェント３２は、通信インタフェース切り替えマネージャ２０がアプリケーション毎に使用通信インタフェースを選択したり、切り替えを行ったりする場合には、アプリケーション毎の使用通信インタフェースの切り替えを、ノードＢ２００に通知する。具体的には、エージェント３２は、切り替えをノードＢ２００に要求し、新しい切り替え先の通信インタフェースのアドレスを通知する。更に、エージェント３２は、切り替えの際に、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに代わって、ノードＢ２００にデータの続きを要求する。
【００７１】
エージェント３２は、アドレス変換ファンクション部４０のバッファ４３を管理する。エージェント３２は、バッファ４３が保持しているデータを把握しておく。そして、エージェント３２は、バッファ４３に保持されているデータの続きをノードＢ２００に要求する。又、エージェント３２は、バッファ４３に新しいデータが到着すると、切り替え指示部３１に、ノードＢ２００からのデータの受信を通知する。
【００７２】
エージェント３２は、切り替え指示部３１より、ノードＡ１００の上位層とノードＢ２００の上位層との間のセッションの切断を指示される。エージェント３２は、アドレス切り替えファンクション部４０に、そのセッションに関する処理を終了するように指示して、セッションを切断する。尚、エージェント３２は、切り替え指示部３１に、新たなデータの受信を通知する。エージェント３２は、共有情報の生成や提供、データの続きの要求を行う際に、制御に必要な情報を通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎを介して、ノードＢ２００と送受信する。
【００７３】
〔ノードＢ〕
ノードＢ２００は、サーバなどの固定ノードである。図２に示すように、ノードＢは、通信インタフェース６０と、セッションマネージャ７０と、アドレス変換ファンクション部８０と、複数のアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎとを備える。
【００７４】
ノードＢ２００は、単一の通信インタフェース６０を備える。そのため、ノードＡ１００と異なり、通信インタフェース切り替えマネージャ２０を備えない。通信インタフェース６０は、データを相手装置であるノードＡ１００と送受信する。通信インタフェース６０には、アドレス「ａｄｄ＿Ｂ」が付与されている。通信インタフェース６０は、ノードＡ１００に送信するデータを、アドレス変換ファンクション部８０から取得する。通信インタフェース６０は、ノードＡ１００から受信したデータを、アドレス変換ファンクション部８０に入力する。又、通信インタフェース６０は、セッションマネージャ７０から制御に必要な情報の入力を受け、ノードＡ１００に送信したり、制御に必要な情報をノードＡ１００から受信し、セッションマネージャ７０に入力したりする。
【００７５】
アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎは、アプリケーション層においてアプリケーションを行う。各アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎは、それぞれのアプリケーション（＃１）〜（＃Ｎ）を行う。アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎは、ノードＡ１００に送信するデータを、アドレス変換ファンクション部８０に入力する。アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎは、ノードＡ１００から送信されたデータを、アドレス変換ファンクション部８０から取得する。
【００７６】
セッションマネージャ７０と、アドレス変換ファンクション部８０は、プロトコルスタック中のネットワーク層において処理を行う。セッションマネージャ７０と、アドレス変換ファンクション部８０は、例えば、ノードＢ２００が、セッションマネージャ７０と、アドレス変換ファンクション部８０として機能するミドルウェアをネットワーク層に実装し、そのミドルウェアを実行することにより実現される。
【００７７】
アドレス変換ファンクション部８０は、仮想インタフェース８１と、アドレス切り替え部８２とを備える。仮想インタフェース８１は、ネットワーク層よりも上位層から、相手装置であるノードＡ１００に送信するデータを取得し、相手装置であるノードＡ１００から送信されたデータを上位層に提供する。仮想インタフェース８１は、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎから、ノードＡ１００に送信するデータを取得し、ノードＡ１００から送信されたデータを、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに提供する。
【００７８】
仮想インタフェース８１には、アドレスが付与されている。ノードＢ２００は、単一の通信インタフェース６０しか持たないため、使用通信インタフェースは常に一つである。そのため、仮想インタフェース８１に、使用通信インタフェースに依存しない固定の仮想アドレスを付与する必要がない。よって、仮想インタフェース８１には、通信インタフェース６０と同一のアドレス「ａｄｄ＿Ｂ」が付与されている。尚、仮想インタフェース８１が、データの取得、提供を行う上位層はアプリケーション層に限られず、ネットワーク層よりも上位層のトランスポート層、セション層、プレゼンテーション層のいずれであってもよい。
【００７９】
アドレス切り替え部８２は、データに付加されている相手装置であるノードＡ１００のアドレスを、ノードＡ１００が使用通信インタフェースを切り替えた後の使用通信インタフェースのアドレス（以下「切り替え先アドレス」という）と、通信開始時のノードＡ１００の使用通信インタフェースのアドレス（以下「開始時アドレス」という）との間で変換する相手アドレス変換手段である。
【００８０】
アドレス切り替え部８２は、ノードＡ１００が行う使用通信インタフェースの切り替えにあわせて、変換する切り替え先アドレスを変更する。即ち、ノードＡ１００の使用通信インタフェースが切り替えられると、アドレス切り替え部８２は、開始時アドレスの変換相手となる切り替え先アドレスを、切り替え先の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎのアドレスに変更する。尚、アドレス切り替え部８２は、ノードＡ１００がアプリケーション毎に使用通信インタフェースを切り替える場合には、アプリケーション毎の切り替え先アドレスとアプリケーション毎の開始時アドレスとの間の変換を行う。
【００８１】
更に、アドレス切り替え部８２は、切り替え先アドレスと開始時アドレスとを変換することに伴って、変更が必要なアドレス以外の通信パラメータも変換する。又、アドレス切り替え部４２は、ノードＡ１００の使用通信インタフェースが複数回切り替えられ、切り替え先アドレスが切り替えられることに伴って変更が必要なアドレス以外の通信パラメータを変換する。アドレス切り替え部４２は、通信インタフェース６０や仮想インタフェース８１からデータを取得して、通信パラメータを変換する。アドレス切り替え部８２は、通信パラメータを変換したデータを通信インタフェース６０や仮想インタフェース８１に入力する。
【００８２】
尚、アドレス切り替え部８２は、ノードＢ２００のアドレスについては変換しない。又、アドレス切り替え部８２は、ノードＡ１００が使用通信インタフェースを切り替えない間は、ノードＡ１００のアドレスについても変換しない。その間は、アドレス切り替え部８２は、仮想インタフェース８１と通信インタフェース６０との間で、データの受け渡しを行うだけとなる。このように複数の通信インタフェースを備えない通信装置では、仮想インタフェース８１のアドレスとして、通信インタフェース６０と同一のアドレスを用い、自身のアドレスについては変換を行わないことにより、制御負荷を軽減できる。
【００８３】
このようにして、アドレス変換ファンクション部８０は、仮想インタフェース８１を提供し、相手装置であるノードＡ１００が使用通信インタフェースの切り替えを行うことにより変化する切り替え先アドレスを含む通信パラメータと、開始時アドレスを含む通信パラメータとを、ネットワーク層において通信ができるように変換する。そのため、アドレス変換ファンクション部８０は、上位層であるアプリケーション部（＃１）８１〜アプリケーション部（＃Ｎ）８ｎに対して、ノードＡ１００のアドレスが常に変わらないように見せることができる。よって、アドレス変換ファンクション部８０は、ネットワーク層において、ノードＡ１００の上位層とノードＢ２００の上位層との間で行っている通信、即ち、上位層間のセッションの維持を保証する。即ち、ノードＢ２００は、開始時アドレスを、ノードＡ１００の使用通信インタフェースの切り替えに依存しない固定の仮想アドレスとして用いることにより、ノードＡ１００との通信を継続できる。
【００８４】
セッションマネージャ７０は、ノードＡ１００が行う使用通信インタフェースの切り替えに伴う処理を制御する。更に、セッションマネージャ７０は、アドレス変換ファンクション部８０におけるアドレスの変換を制御する。セッションマネージャ７０は、制御部７１と、エージェント７２と、タイマ７３とを備える。
【００８５】
制御部７１は、ノードＢ２００の上位層とノードＡ１００の上位層との間のセッションの維持を制御する。具体的には、制御部７１は、通信の切断を判断する。制御部７１は、通信中にデータの送受信が突然途切れ、通信インタフェース６０の故障が原因ではないと判断した場合、制御部７１は、切断時間を計測する。又、通信インタフェース６０が無線の場合には、通信インタフェース６０の電波強度や在圏状況などの通信環境の状況も通信インタフェース６０から取得する。制御部７１は、切断時間に基づいて通信が切断されたか否かを判断する。通信インタフェース６０が無線の場合には、通信環境の状況と切断時間に基づいて、通信が切断されたか否かを判断する。
【００８６】
制御部７１は、通信が切断されたと判断すると、タイマ７３を起動する。タイマ７３は、セッション維持時間を計測する。又、制御部７１は、エージェント７２からネゴシエーションに関する情報や新たなデータの受信の通知を受ける。制御部７１は、タイマ７３のタイマ値が満了する以前に、エージェント７２から受信の通知を受けた場合には、タイマ７３を停止する。一方、制御部７１は、タイマ７３のタイマ値が満了しても、エージェント７２から受信の通知を受けなかった場合、セッションを切断すると判断する。そして、制御部７１は、エージェント７２にセッションの切断を指示する。
【００８７】
エージェント７２は、相手装置であるノードＡ１００が使用通信インタフェースを切り替えた時や通信開始時の処理を行う。まず、エージェント７２は、切り替え先の新しい使用通信インタフェースにセキュリティ上安全に切り替え、これまでの通信を継続するためのネゴシエーションをノードＡ１００と行う。エージェント７２は、切り替え前である通信開始時に、ノードＢ２００の上位層とノードＡ１００の上位層との間のセッションを証明する証明書を生成する。エージェント７２は、セッションの証明書を、ノードＡ１００と共有する共有情報として生成する。エージェント７２は、ノードＢ２００とノードＡ１００のみが知り得る共有情報を生成する。エージェント７２は、生成した共有情報を保持する。エージェント７２は、共有情報を相手装置であるノードＡ１００自体は同一であることを証明する相手装置証明情報として用いる。
【００８８】
エージェント７２は、ノードＡ１００から、使用通信インタフェースの切り替えの通知を受ける。エージェント７２は、ノードＡ１００に対して共有情報を要求する。そして、エージェント７２は、通信インタフェース６０を介して、ノードＡ１００から共有情報を取得し、取得した共有情報に基づいてノードＡ１００を認証する。このように、エージェント７２は、相手装置であるノードＡ１００が使用通信インタフェースを切り替える際に、切り替えの前後でノードＡ１００自体は同一であることを証明する相手装置証明情報を取得し、取得した相手装置証明情報に基づいてノードＡ１００を認証する認証手段として機能する。
【００８９】
エージェント７２は、ノードＡ１００から、使用通信インタフェースの切り替えの通知を受けた際に、アドレス変換ファンクション部８０に、切り替え先アドレスと開始時アドレスとの変換を指示する。エージェント７２は、ノードＡ１００の使用通信インタフェースが複数回切り替えられる場合には、切り替え先アドレスの変更を指示する。尚、エージェント７２は、ノードＡ１００がアプリケーション毎に使用通信インタフェースを切り替える場合には、アプリケーション毎の切り替え先アドレスとアプリケーション毎の開始時アドレスとの間の変換を指示する。
【００９０】
エージェント７２は、制御部７１より、ノードＢ２００の上位層とノードＡ１００の上位層との間のセッションの切断を指示される。エージェント７２は、アドレス切り替えファンクション部８０に、そのセッションに関する処理を終了するように指示して、セッションを切断する。尚、エージェント７２は、切り替え指示部７１に、ネゴシエーションに関する情報や新たなデータの受信を通知する。又、エージェント７２は、共有情報の生成や要求、取得を行う際や、使用通信インタフェースの切り替えの通知を受ける際など、制御に必要な情報を通信インタフェース６０を介して、ノードＡ１００と送受信する。
【００９１】
次に、ノードＡ１００とノードＢ２００とが行う通信方法について、通信開始時、使用通信インタフェース切り替え時、通信切断発生時に分けて説明する。
【００９２】
〔通信開始時〕
ノードＡ１００の切り替え判断部２１は、状態が「通信待機」である通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、メモリ２２が保持する切り替えポリシーに基づいて、使用通信インタフェースを選択する。通信インタフェース（＃１）１１が選択された場合を例にとって説明する。切り替え判断部２１から、使用通信インタフェースの通知を受けた切り替え指示部２３は、選択された通信インタフェース（＃１）１１を起動し、「通信中」にする。
【００９３】
又、切り替え判断部２１から、使用通信インタフェースの通知を受けた切り替え指示部３１は、エージェント３２に選択された通信インタフェース（＃１）１１を通知する。そして、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２との間で、共有情報として、ノードＡ１００とノードＢ２００との間のセッションの証明書を生成するネゴシエーションを行う。以下、通信開始時に行うネゴシエーションを「オプション１」という。このとき、ノードＡ１００は、通信インタフェース（＃１）１１を用いて通信する。
【００９４】
図５に示すように、まず、ノードＡ１００、ノードＢ２００間において暗号化通信を行うために、鍵交換を行う。具体的には、通信を開始させるノードＡ１００が開始を要求し、３ウェイハンドシェークによりノードＢ２００との間に通信路を確立し、セッションを開始する。ノードＡ１００のエージェント３２は、ノードＢ２００に鍵交換を要求する。このとき、エージェント３２は、鍵交換のためのパラメータ（以下「鍵交換パラメータ」という）を提案し、ノードＡ１００のノード識別子をノードＢ２００に通知する（Ｓ１０１）。
【００９５】
ノードＢ２００のエージェント７２は、共有情報を生成するか否かを判断する。ノードＢ２００は、オプション１を処理する機能を備えるため、共有情報を生成すると判断する。尚、オプション１を処理する機能を備えないノードの場合には、共有情報を生成しないと判断し、オプション１の処理を中止することをノードＡ１００に通知する。ノードＢ２００のエージェント７２は、ノードＡ１００から提案された鍵交換パラメータの中から鍵交換パラメータを選択する。エージェント７２は、選択した鍵交換パラメータと、その鍵交換パラメータに合致するノードＡ１００に公開する情報を、ノードＡ１００に送信する（Ｓ１０２）。
【００９６】
ノードＡ１００のエージェント３２は、ノードＢ２００が選択した鍵交換パラメータに合致するノードＢ２００に公開する情報を、ノードＢ２００に送信する（Ｓ１０３）。そして、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、お互いに公開した情報に基づいて、鍵交換アルゴリズムを用いて共有鍵を生成する（Ｓ１０４）。
【００９７】
共有鍵生成後のオプション１の処理、ステップ（Ｓ１０５）〜（Ｓ１０９）は、生成した共有鍵を用いた暗号化通信により行われる。ノードＡ１００のエージェント３２は、共有情報である証明書の生成に用いる情報（以下「生成元情報」という）を、ノードＢ２００に送信する。生成元情報としては、通信装置を識別する通信装置識別情報、相手装置を識別する相手装置識別情報、通信装置のユーザを識別する通信装置ユーザ識別情報、相手装置のユーザを識別する相手装置ユーザ識別情報、通信装置の通信インタフェースのアドレス、通信装置の仮想インタフェースの仮想アドレス、相手装置の通信インタフェースのアドレス、相手装置の仮想インタフェースの仮想アドレス、データを識別するデータ識別情報、又は、通信装置と相手装置との共有鍵の少なくとも１つを用いることができる。
【００９８】
そのため、例えば、ノードＡ１００のエージェント３２は、通信装置識別情報であるノードＡ１００のドメイン名などのノード識別子、ノードＡ１００の使用通信インタフェースのアドレスや仮想インタフェース４１の仮想アドレスなどのＩＰアドレス、データ識別情報であるノードＡ１００が送信するパケットの開始シーケンスナンバー、共有鍵の少なくとも１つを選択し、生成元情報としてノードＢ２００に送信する（Ｓ１０５）。
【００９９】
ノードＢ２００のエージェント７２も、ノードＡ１００と同様に生成元情報をノードＡ１００に送信する。例えば、ノードＢ２００のエージェント７２は、相手装置識別情報であるノードＢ２００のノード識別子、ノードＢ２００の通信インタフェース６０のアドレス、ノードＢ２００が送信するパケットの開始シーケンスナンバー、共有鍵の少なくとも１つを選択し、生成元情報としてノードＡ１００に送信する（Ｓ１０６）。尚、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、ネゴシエーションにより生成元情報を選択し、選択した生成元情報を送信しあうようにしてもよい。
【０１００】
ノードＡ１００のエージェント３２は、ノードＢ２００に送信したノードＡ１００の生成元情報と、ノードＢ２００から受信したノードＢ２００の生成元情報を用いてセッションの証明書を生成する。具体的には、エージェント３２は、ノードＡ１００の生成元情報とノードＢ２００の生成元情報を入力値として、一方向関数に入力し、出力値を得る。得られた出力値が証明書、即ち、共有情報となる。一方向関数としては、例えば、ハッシュ関数などを用いることができる。ノードＡ１００のエージェント３２は、得られた出力値を共有情報としてノードＢ２００に送信する（Ｓ１０７）。
【０１０１】
同様に、ノードＢ２００のエージェント７２は、ノードＡ１００に送信したノードＢ２００の生成元情報と、ノードＡ１００から受信したノードＡ１００の生成元情報を用いてセッションの証明書を生成する。エージェント７２は、ノードＡ１００の生成元情報とノードＢ２００の生成元情報を入力値として、一方向関数に入力して得た出力値を、共有情報としてノードＡ１００に送信する（Ｓ１０８）。このようにして、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、お互いに共有情報を生成し、生成した共有情報を交換しあう。そして、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、お互いに生成した共有情報が一致し、誤りがないことを確認する。最後に、エージェント３２，７２は、共有情報に有効期限を設定する（Ｓ１０９）。以上の処理により、オプション１が終了する。
【０１０２】
エージェント３２，７２は、生成した共有情報を保持しておく。エージェント７２は、生成したノードＡ１００との共有情報を、ステップ（Ｓ１０１）において通知されたノードＡ１００のノード識別子と対応付けて保持しておく。
【０１０３】
このように、ノードＡ１００、ノードＢ２００間で生成した共有情報を交換する際には、予め鍵交換アルゴリズムを用いて生成した共有鍵で、ノードＡ１００、ノードＢ２００間の通信を暗号化する。そして、ノードＡ１００、ノードＢ２００は、共有情報をその通信路上で交換する。
【０１０４】
エージェント３２，７２は、オプション１終了後の通信について、そのまま暗号化通信を行うか、否かを決定する。エージェント３２，７２は、そのまま暗号化通信を行う場合には、同じ共有鍵をそのまま使用するか、更に強力な共有鍵を生成し、ノードＡ１００、ノードＢ２００間で交換して使うかについても決定する。
【０１０５】
そして、オプション１終了後、図６に示すようにして、ノードＡ１００の通信インタフェース（＃１）１１と、ノードＢ２００の通信インタフェース６０との間でデータの送受信を開始し、ノードＡ１００のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎと、ノードＢ２００のアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎとの間でセッションを実行する。
【０１０６】
仮想インタフェース４１は、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎから、ノードＢ２００に送信するデータを取得する。仮想インタフェース４１は、ノードＡ１００のアドレス（以下「ノードＡアドレス」という）として仮想インタフェース４１の仮想アドレス「ａｄｄ＿Ｖ」を、ノードＢ２００のアドレス（以下「ノードＢアドレス」という）として仮想インタフェース８１のアドレス「ａｄｄ＿Ｂ」を用いたヘッダをデータに付加してパケット１ａを作成し、アドレス切り替え部４２に入力する。
【０１０７】
エージェント３２は、使用通信インタフェースが通信インタフェース（＃１）１１であることをアドレス切り替え部４２に通知する。アドレス切り替え部４２は、パケット１ａを取得し、ノードＡアドレスを、仮想アドレス「ａｄｄ＿Ｖ」から、エージェント３２から通知された通信インタフェース（＃１）１１のアドレス「ａｄｄ＿Ａ１」に変換し、パケット１ｂに変換する。アドレス切り替え部４２は、アドレスを変換したパケット１ｂをバッファ４３に入力する。使用通信インタフェースである通信インタフェース（＃１）１１は、バッファ４３からパケット１ｂを取得し、ノードＢ２００に送信する。
【０１０８】
ノードＢ２００の通信インタフェース６０は、パケット１ｂを受信し、アドレス切り替え部８２に入力する。アドレス切り替え部８２は、通信インタフェース６０から取得したパケット１ｂを、そのまま仮想インタフェース８１に入力する。仮想インタフェース８１は、パケット１ｂからデータを取りだし、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに提供する。
【０１０９】
又、仮想インタフェース８１は、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎから、ノードＡ１００に送信するデータを取得する。仮想インタフェース８１は、ノードＡアドレスとして、ノードＡ１００から受信したパケットに含まれているノードＡアドレス「ａｄｄ＿Ａ１」を用い、ノードＢアドレスとして仮想インタフェース８１のアドレス「ａｄｄ＿Ｂ」を用いたヘッダをデータに付加してパケット１ｂを作成し、アドレス切り替え部８２に入力する。この通信開始時に受信したノードＡ１００からのパケット１ｂに含まれるノードＡアドレス「ａｄｄ＿Ａ１」が、開始時アドレスとなる。
【０１１０】
アドレス切り替え部８２は、取得したパケット１ｂをそのまま通信インタフェース６０に入力する。通信インタフェース６０は、パケット１ｂをノードＡ１００に送信する。ノードＡ１００の通信インタフェース（＃１）１１は、パケット１ｂを受信し、バッファ４３に入力する。アドレス切り替え部４２は、バッファ４３からパケット１ｂを取得し、パケット１ｂのノードＡアドレスを、「ａｄｄ＿Ａ１」から仮想アドレス「ａｄｄ＿Ｖ」に変換し、パケット１ａに変換する。
アドレス切り替え部４２は、パケット１ａを仮想インタフェース４１に入力する。仮想インタフェース４１は、パケット１ａからデータを取りだし、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに提供する。
【０１１１】
通信継続中に、共有情報の有効期限が経過すると、ノードＡ１００、ノードＢ２００は、図７に示す手順に従い、共有情報を更新するネゴシエーションを行う。以下、共有情報更新時に行うネゴシエーションを「オプション２」という。ノードＡ１００のエージェント３２は、共有情報の有効期限が経過すると、共有情報であるセッションの証明書の更新を要求する（Ｓ２０１）。要求を受けたノードＢ２００のエージェント７２は、新たな共有鍵を生成するための鍵交換パラメータを通知すると共に、その鍵交換パラメータに合致するノードＡ１００に公開する情報を、ノードＡ１００に送信する（Ｓ２０２）。
【０１１２】
ノードＡ１００のエージェント３２は、ノードＢ２００より通知された新たな鍵交換パラメータに合致するノードＢ２００に公開する情報を、ノードＢ２００に送信する（Ｓ２０３）。そして、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、お互いに新たに公開した情報に基づいて、鍵交換アルゴリズムを用いて新たな共有鍵を生成する（Ｓ２０４）。
【０１１３】
新たな共有鍵生成後のオプション２の処理、ステップ（Ｓ２０５）〜（Ｓ２０９）は、生成した新たな共有鍵を用いた暗号化通信により行われる。ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、図５に示したオプション１のステップ（Ｓ１０５）〜（Ｓ１０９）と同様にして、ステップ（Ｓ２０５）〜（Ｓ２０９）の処理を行う。
【０１１４】
即ち、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、お互いに生成元情報を交換する。そして、エージェント３２，７２は、ノードＡ１００の生成元情報とノードＢ２００の生成元情報を入力値として、一方向関数に入力し、出力値を得る。得られた出力値が新たな証明書、即ち、新たな共有情報となる。ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、生成した新たな共有情報を交換しあい、お互いに生成した共有情報が一致し、誤りがないことを確認する。最後に、エージェント３２，７２は、新たな共有情報に有効期限を設定する。
【０１１５】
エージェント３２，７２は、新たに生成した共有情報を保持しておく。エージェント７２は、新たに生成したノードＡ１００との共有情報を、通信開始時に通知されたノードＡ１００のノード識別子と対応付けて保持しておく。
【０１１６】
以上の処理により、オプション２が終了する。エージェント３２，７２は、オプション１終了後の場合と同様に、オプション２終了後の通信について、そのまま暗号化通信を行うか否かや、用いる共有鍵について決定する。そして、ノードＡ１００とノードＢ２００は通信を再開する（Ｓ２１０）。尚、図７では、ノードＡ１００が更新を要求する場合を例にとって説明したが、要求はノードＡ１００、ノードＢ２００のいずれが行ってもよい。尚、ノードＡ１００がアプリケーション毎に使用通信インタフェースを選択する場合には、ノードＡ１００は、これらの使用通信インタフェースの選択、通信インタフェースの起動、オプション１、データの送受信、オプション２などの処理を、アプリケーション毎に行う。
【０１１７】
〔使用通信インタフェース切り替え時〕
通信開始後、例えば、ノードＡ１００のユーザが、ノードＡ１００を持って移動することで、ノードＡ１００が移動する。ノードＡ１００の移動により、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの在圏状況や電波強度などの通信環境が変化する。そのため、状態が「通信不可能」から「通信待機」に変化する通信インタフェースや、状態が「通信待機」や「通信中」から「通信不可能」に変化する通信インタフェースが発生する。ノードＡ１００の切り替え判断部２１は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態変化を検出し、状態が「通信待機」になり、新たに利用可能な通信インタフェースを検出した場合や、「通信中」の通信インタフェース（＃１）１１が「通信不可能」になった場合や、「通信不可能」になると予測した場合には、使用通信インタフェースを選択する。「通信不可能」になった場合については、通信切断発生時において説明し、ここでは、新たに利用可能な通信インタフェースが検出された場合や「通信不可能」になると予測した場合について説明する。
【０１１８】
切り替え判断部２１は、状態が「通信待機」である通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、メモリ２２が保持する切り替えポリシーに基づいて、使用通信インタフェースを選択する。切り替え判断部２１は、選択した使用通信インタフェースが、現在使用している通信中の通信インタフェース（＃１）１１と同一の場合には、使用通信インタフェースの切り替えを行わないと判断する。そして、ノードＡ１００は、通信インタフェース（＃１）１１を使用した通信をそのまま継続する。
【０１１９】
一方、切り替え判断部２１は、選択した使用通信インタフェースが、現在使用している通信中の通信インタフェース（＃１）１１と異なる場合には、使用通信インタフェースの切り替えを行うと判断する。ここでは、切り替え判断部２１が、通信インタフェース（＃２）１２を選択し、使用通信インタフェースの切り替えを行うと判断した場合を例にとって説明する。切り替え判断部２１は、セッションマネージャ３０と切り替え指示部２３に、切り替えの実行と、切り替えの対象が通信インタフェース（＃１）１１であり、切り替え先が通信インタフェース（＃２）１２であることを通知する。
【０１２０】
通知を受けると、図８に示すように、切り替え指示部２３は、切り替え先の通信インタフェース（＃２）１２を起動する。そして、ノードＡ１００のエージェント３２が、ノードＢ２００に使用通信インタフェースの切り替えを要求する。
要求を受けたノードＢ２００のエージェント７２は、ノードＡ１００に共有情報を要求する。そして、ノードＡ１００のエージェント３２が、切り替え先の通信インタフェース（＃２）１２を経由して、ノードＢ２００に、通信開始時や共有情報更新時に生成し、保持している共有情報を提供する。
【０１２１】
具体的には、エージェント３２は、ノードＡアドレスとして、通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を、ノードＢアドレスとして通信インタフェース６０のアドレス「ａｄｄ＿Ｂ」を用いたヘッダを共有情報に付加してパケット１ｃを作成し、通信インタフェース（＃２）１２に入力する。通信インタフェース（＃２）１２は、ノードＢ２００にパケット１ｃを送信する。このように、共有情報を提供するパケット１ｃにおけるノードＡアドレスを、切り替え先の通信インタフェース（＃２）１２のアドレスとすることにより、エージェント３２は、切り替え先の通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を、ノードＢ２００に通知する。
【０１２２】
ノードＢ２００の通信インタフェース６０は、パケット１ｃを受信し、エージェント７２に入力する。エージェント７２は、取得した共有情報に基づいてノードＡ１００を認証する。又、エージェント７２は、パケット１ｃから、切り替え先の通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を取得する。
【０１２３】
このエージェント３２，７２間で共有情報を用いた認証を行っている間も、ノードＡ１００の現在の使用通信インタフェースである通信インタフェース（＃１）１１と、ノードＢ２００の通信インタフェース６０は、図６と同様にして、データを含むパケット１ｂの送受信を行う。
【０１２４】
このように、使用通信インタフェースを切り替える際には、共有情報を用いて認証するネゴシエーションをエージェント３２，７２間で行う。以下、使用通信インタフェース切り替え時に行うネゴシエーションを「オプション３」という。オプション３は、詳細には図９に示す手順に従って行う。ノードＡ１００の切り替え指示部２３が新しい使用通信インタフェースとなる通信インタフェース（＃２）１２を起動させる（Ｓ３０１）。ノードＡ１００のエージェント３２は、通信中の使用通信インタフェースの切り替えをノードＢ２００に要求する。このとき、エージェント３２は、ノードＡ１００のノード識別子と共に要求を送信する（Ｓ３０２）。
【０１２５】
ノードＢ２００のエージェント７２は、通知されたノード識別子によって該当するセッションを検知し、通信相手を把握する。そして、共有情報であるセッションの証明書を要求する（Ｓ３０３）。ノードＡ１００のエージェント３２は、共有情報の更新前であればオプション１、共有情報の更新後であればオプション２において生成した共有鍵で、共有情報であるセッションの証明書を暗号化して、ノードＢ２００に送信する（Ｓ３０４）。
【０１２６】
ノードＢ２００のエージェント７２は、ノードＡ１００から受信した共有情報を共有鍵で復号する。そして、エージェント７２は、エージェント７２が、ステップ（Ｓ３０２）において通知されたノード識別子と対応付けて保持している共有情報と、復号して得られた共有情報とが一致するか否かを判断する。エージェント７２は、両者が一致する場合、使用通信インタフェースの切り替えの前後でノードＡ１００自体は同一であり、通信インタフェース（＃２）１２は、正当な通信相手であると判断する。そして、エージェント７２は、新しい通信インタフェース（＃２）１２を用いた通信を許可する。エージェント７２は、使用通信インタフェースを通信インタフェース（＃２）１２に切り替えることの許可を、認証結果としてノードＡ１００に通知する（Ｓ３０５）。ステップ（Ｓ３０５）も暗号化通信により行われる。
【０１２７】
以上の処理により、オプション３が終了する。オプション３終了後、使用通信インタフェースの切り替え処理が行われ（Ｓ３０６）、切り替え先の通信インタフェース（＃２）１２を用いた通信が開始される（Ｓ３０７）。尚、ステップ（Ｓ３０５）において、エージェント７２は、提供された共有情報を共有鍵で復号できない場合、提供された共有情報がエージェント７２が保持する共有情報と一致しない場合には、新しい通信インタフェース（＃２）１２を用いた通信を許可しない。この場合、エージェント７２は、使用通信インタフェースの切り替えを許可できないことを、認証結果としてノードＡ１００に通知する。このように、正当な通信相手である場合にのみ切り替えが行われる。
【０１２８】
尚、オプション１〜オプション３で用いる情報は、ＩＰヘッダのオプションフィールドに記述する。そして、オプションフィールドに記述があるパケットは、全てエージェント３２，７２宛とする。これにより、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎ、通信インタフェース６０は、オプションフィールドを参照して、エージェント３２，７２宛のパケットであるか、アプリケーション部（＃１）５１，９１〜アプリケーション部（＃Ｎ）５ｎ，９ｎ宛のパケットであるかを判断する。
【０１２９】
認証の結果、ノードＡ１００のエージェント３２は、ノードＢ２００により切り替えの許可を受けると、切り替え指示部３１に通知する。切り替え指示部３１は、切り替え判断部２１に切り替えの許可を通知する。更に、切り替え判断部２１が、切り替え指示部２３に切り替えの許可を通知する。切り替え指示部２３は、切り替えの許可を受けると、現在使用中の通信インタフェース（＃１）を終了させ、「通信待機」に変更する。これにより、データの送受信が一時的に停止する。又、切り替え指示部２３は、切り替え先の通信インタフェース（＃２）１２を、「通信中」に変更する。
【０１３０】
図１０に示すように、データの送受信が一時的に停止している間は、アドレス切り替え部４２は、これまでに受信し、バッファ４３内に保持されているパケット１ｂを取り出す。そして、アドレス切り替え部４２は、ノードＡアドレスを通信インタフェース（＃１）のアドレス「ａｄｄ＿Ａ１」から、仮想インタフェース４１の仮想アドレス「ａｄｄ＿Ｖ」に変換し、パケット１ａに変換する。そして、仮想インタフェース４１が、パケット１ａからデータを取りだして、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに提供する。このように、アドレス切り替え部４２は、データの送受信が一時的に停止している間は、バッファ４３内のデータを上位層に対して提供する。
【０１３１】
又、データの送受信が一時的に停止すると、ノードＡ１００のエージェント３２が、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに代わって、ノードＢ２００のアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎにデータの続きを要求する。エージェント３２は、バッファ４３に保持されているデータの続きをノードＢ２００に要求する。
【０１３２】
更に、ノードＡ１００がデータの送受信を一時的に停止させた時に、ノードＢ２００では、エージェント７２が、アドレス切り替え部８２に、切り替え先アドレスと開始時アドレスとの変換を指示する。エージェント７２は、認証の際に、共有情報を提供するパケット１ｃから切り替え先アドレスとして、通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を取得している。そのため、エージェント７２は、切り替え先アドレス「ａｄｄ＿Ａ２」と開始時アドレス「ａｄｄ＿Ａ１」とを変換するように、アドレス切り替え部８２に指示する。
【０１３３】
具体的には、エージェント３２は、ノードＡアドレスとして、通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を、ノードＢアドレスとして通信インタフェース６０のアドレス「ａｄｄ＿Ｂ」を用いたヘッダを、データを要求する制御情報に付加してパケット１ｄを作成し、通信インタフェース（＃２）１２に入力する。通信インタフェース（＃２）１２は、ノードＢ２００にパケット１ｄを送信する。
【０１３４】
ノードＢ２００の通信インタフェース６０は、パケット１ｄを受信し、アドレス切り替え部８２に入力する。アドレス切り替え部８２は、取得したパケット１ｄのノードＡアドレスを、エージェント７２からの指示に従い、切り替え先アドレス「ａｄｄ＿Ａ２」から、開始時アドレス「ａｄｄ＿Ａ１」に変換し、パケット１ｅに変換する。アドレス切り替え部８２は、パケット１ｅを仮想インタフェース８１に入力する。仮想インタフェース８１は、パケット１ｅからデータを要求する制御情報を取りだし、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに提供する。
【０１３５】
このように、相手装置であるノードＢ２００において、切り替え先アドレスと開始時アドレスとを変換することにより、ノードＢ２００の上位層のアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに対して、ノードＡ１００における使用通信インタフェースの切り替えを隠蔽することができる。これにより、ノードＢ２００のアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに対して、同一のセッションにおいて同一のノードＡ１００から、データの続きを要求されたと認識させることができる。
【０１３６】
データの要求を受けたノードＢ２００がデータの続きを送信することで、ノードＡ１００とノードＢ２００との間の通信が再開される。図１１に示すように、アプリケーション部（＃１）９１〜アプリケーション部（＃９ｎ）が、要求に応じて、ノードＡ１００に送信する続きのデータを仮想インタフェース８１に入力する。仮想インタフェース８１は、アプリケーション部（＃１）９１〜アプリケーション部（＃９ｎ）から取得したノードＡ１００に送信するデータに、ノードＡアドレスとして、開始時アドレス「ａｄｄ＿Ａ１」を、ノードＢアドレスとして「ａｄｄ＿Ｂ」を用いたヘッダを付加してパケット１ｂを作成する。仮想インタフェース８１は、作成したパケット１ｂをアドレス切り替え部８２に入力する。
【０１３７】
アドレス切り替え部８２は、取得したパケット１ｂのノードＡアドレスを、開始時アドレス「ａｄｄ＿Ａ１」から切り替え先アドレス「ａｄｄ＿Ａ２」に変換し、パケット１ｆに変換する。アドレス切り替え部８２は、パケット１ｆを通信インタフェース６０に入力する。通信インタフェース６０は、パケット１ｆをノードＡ１００に送信する。
【０１３８】
ノードＡ１００では、切り替えられて使用通信インタフェースとなっている通信インタフェース（＃２）１２が、パケット１ｆを受信する。通信インタフェース（＃２）１２は、パケット１ｆをバッファ４３に入力する。エージェント３２は、通信インタフェース（＃２）１２がパケット１ｆを受信すると、アドレス切り替え部４２に、仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、新しい切り替え先の通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」に変更するように指示する。
【０１３９】
そして、アドレス切り替え部４２は、バッファ４３からパケット１ｆを取得し、パケット１ｆのノードＡアドレスを、「ａｄｄ＿Ａ２」から仮想アドレス「ａｄｄ＿Ｖ」に変換し、パケット１ａに変換する。アドレス切り替え部４２は、パケット１ａを仮想インタフェース４１に入力する。仮想インタフェース４１は、パケット１ａからデータを取りだし、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに提供する。尚、ノードＡ１００は、受信したパケットをバッファ４３に一時的に保存しておくことで、使用通信インタフェースを切り替える際のデータの連続性を保証する。
【０１４０】
尚、ノードＡ１００がアプリケーション毎に使用通信インタフェースを切り替える場合には、ノードＡ１００は、これらの切り替え先の使用通信インタフェースの選択、切り替え先の通信インタフェースの起動、オプション３、バッファ４３内のデータの提供、データの続きの要求、使用通信インタフェースのアドレスと仮想アドレスとの変換を、アプリケーション毎に行う。又、ノードＢ２００も、ノードＡ１００が行うアプリケーション毎の使用通信インタフェースの切り替えにあわせて、アプリケーション毎に、切り替え先アドレスと開始時アドレスとの変換を行う。
【０１４１】
〔通信切断発生時〕
ノードＡ１００は、通信が切断され、「通信中」であった使用通信インタフェースが「通信不可能」になった場合、状態が「通信待機」である使用可能な通信インタフェースが存在するか否かを判断する。ノードＡ１００は、使用可能な通信インタフェースが存在しない場合には通信不可能であるため、セッションを切断する。
【０１４２】
一方、状態が「通信待機」である使用可能な通信インタフェースが存在する場合には、切り替え判断部２１は、「通信待機」である通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、使用通信インタフェースを選択する。切り替え指示部２３は、選択された通信インタフェースを起動する。
そして、ノードＡ１００は、選択された通信インタフェースを用いてオプション３を実行する。
【０１４３】
認証の結果、切り替えの許可を受けると、切り替え指示部２３が、その通信インタフェースの状態を「通信中」にする。そして、ノードＡ１００のアドレス切り替え部４２は、仮想インタフェース４１の仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、新たに選択した通信インタフェースのアドレスに変更する。又、ノードＢのアドレス切り替え部８２は、新たに選択した通信インタフェースのアドレスを切り替え先アドレスとし、開始時アドレスとの変換を開始する。そして、ノードＡ１００のエージェント３２が、通信が切断するまでに受信したデータの続きをノードＢ２００に要求する。そして、ノードＢ２００からデータが送信され、通信が再開される。
【０１４４】
ノードＢ２００の制御部７１は、通信が切断されたと判断した場合、タイマ７３を起動する。そして、ノードＢ２００は、セッションを維持したまま、ノードＡ１００からのオプション３における使用通信インタフェースの切り替えの要求や、新たなデータを待つ。ノードＢ２００は、タイマ７３のタイマ値が満了する以前のセッション維持時間内に、使用通信インタフェースの切り替えの要求を受信した場合には、ノードＡ１００とオプション３の処理を行う。ノードＢ２００は、切り替えの前後でノードＡ１００が同一であることを認証できた場合には、セッションを維持したまま通信を再開する。又、ノードＢ２００は、セッション維持時間内に、新たなデータを受信した場合、即ち、ノードＡ１００が使用通信インタフェースを切り替えなかった場合には、そのまま通信を再開する。一方、ノードＢ２００は、タイマ７３のタイマ値が満了し、セッション維持時間を超えても、ノードＡ１００から使用通信インタフェースの切り替えの要求や、新たなデータを受信しなかった場合には、セッションを切断する。
【０１４５】
尚、ノードＡ１００がアプリケーション毎に使用通信インタフェースを切り替える場合には、ノードＡ１００、ノードＢ２００は、これらの通信切断発生時の対応についても、アプリケーション毎に行う。
【０１４６】
〔通信パラメータの変換〕
次に、アドレス変換に伴って変更が必要な通信パラメータの変換について、図１２を用いて詳細に説明する。変換する通信パラメータには、アドレス、パケットの識別子、チェックサムなどがある。図１２では、具体的に、仮想アドレス「ａｄｄ＿Ｖ」を「１０．０．０．１」、通信インタフェース（＃１）１１のアドレス「ａｄｄ＿Ａ１」を「１０．０．１．１」、通信インタフェース（＃２）１２のアドレス「ａｄｄ＿Ａ２」を「１０．０．２．１」、通信インタフェース６０のアドレス「ａｄｄ＿Ｂ」を「１０．１．０．１」と示している。又、ＩＰｖ４の場合を例にとって説明する。
【０１４７】
ノードＡ１００の使用通信インタフェースが通信インタフェース（＃１）１１の場合に、ノードＡ１００はノードＢ２００からパケット１ｂを受信する。アドレス切り替え部４２は、ＩＰヘッダに含まれる宛先アドレスを、使用通信インタフェースである通信インタフェース（＃１）１１のアドレス「１０．０．１．１」から、仮想インタフェース４１の仮想アドレス「１０．０．０．１」に変換する。アドレス切り替え部４２は、ＩＰヘッダに含まれる通信インタフェース（＃１）１１のアドレス「１０．０．１．１」を用いて計算されたチェックサムを、変換後の仮想アドレス「１０．０．０．１」を用いて再計算し、その再計算した値に変換する。アドレス切り替え部４２は、変換後の仮想アドレス「１０．０．０．１」を用いて作成されたチェックサムを再計算し、ＴＣＰヘッダのチェックサムをその再計算した値に変換する。アドレス切り替え部４１は、ＩＰヘッダに含まれるパケットの識別子、データを含むペイロードについては変換せずにそのまま用いる。このようにして、アドレス切り替え部４２は、使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとを変換することに伴って、変更が必要な通信パラメータを変換し、パケット１ｂをパケット１ａに変換する。
【０１４８】
ノードＡ１００の使用通信インタフェースを通信インタフェース（＃１）１１から、通信インタフェース（＃２）１２に切り替える場合、アプリケーション部（＃１）１１〜アプリケーション部（＃Ｎ）１ｎと、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎとの間のセッションを維持するために、まず、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２との間で、ノードＡ１００の通信インタフェース（＃２）１２とノードＢ２００の通信インタフェース６０との間の通信路を確立する。エージェント３２は、図１２中一点鎖線で囲まれた、通信インタフェース（＃１）１１と通信インタフェース６０との間の通信路を解放し、通信インタフェース（＃２）１２と通信インタフェース６０との間の通信路を確立するための制御情報を処理する。このように、エージェント３２，７２間で、新たな通信インタフェース間の通信路の確立を行うことによっても、アプリケーション部（＃１）１１〜アプリケーション部（＃Ｎ）１ｎ、アプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに、使用通信インタフェースの切り替えを隠蔽できる。
【０１４９】
そして、ノードＡ１００の使用通信インタフェースが、通信インタフェース（＃１）１１から、通信インタフェース（＃２）１２に切り替えられると、ノードＡ１００はノードＢ２００からパケット１ｆを受信する。アドレス切り替え部４２は、ＩＰヘッダに含まれるパケットの識別子を、切り替えの前後で同一となるように変換する。切り替え後のパケット１ｆのパケットの識別子「９９９」を、切り替え前のパケット１ｂのパケットの識別子「１００」に変換する。アドレス切り替え部４２は、ＩＰヘッダに含まれる宛先アドレスを、切り替え先の通信インタフェース（＃２）１２のアドレス「１０．０．２．１」から仮想アドレス「１０．０．０．１」に変換する。
【０１５０】
アドレス切り替え部４２は、ＩＰヘッダに含まれる切り替え先の通信インタフェース（＃２）１２のアドレス「１０．０．２．１」を用いて計算されたチェックサムを、変換後の仮想アドレス「１０．０．０．１」を用いて再計算し、その再計算した値に変換する。アドレス切り替え部４２は、変換後の仮想アドレス「１０．０．０．１」を用いて作成されたチェックサムを再計算し、ＴＣＰヘッダのチェックサムをその再計算した値に変換する。アドレス切り替え部４１は、データを含むペイロードについては変換せずにそのまま用いる。このようにして、アドレス切り替え部４２は、使用通信インタフェースが切り替えられることに伴って変更が必要な通信パラメータと、使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとを変換することに伴って変更が必要な通信パラメータを変換し、パケット１ｆをパケット１ａに変換する。
【０１５１】
ノードＢ２００においても同様に、ノードＡ１００の使用通信インタフェースが、通信インタフェース（＃１）１１から、通信インタフェース（＃２）１２に切り替えられると、アドレス切り替え部８２は、切り替え先アドレス「１０．０．２．１」と開始時アドレス「１０．０．１．１」とを変換することに伴って、変更が必要なアドレス、パケットの識別子、チェックサムなどの通信パラメータを変換する。又、ノードＡ１００の使用通信インタフェースが複数回切り替えられ、切り替え先アドレスが切り替えられた場合にも、それに伴って変更が必要な通信パラメータを変換する。ノードＡ１００，ノードＢ２００は、このように、使用通信インタフェースが切り替えられた後もセッションが継続できるように、通信パラメータを変換する。
【０１５２】
〔効果〕
このようなノードＡ１００、ノードＢ２００及び通信方法によれば、ノードＡ１００の通信インタフェース切り替えマネージャ２０が、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、使用通信インタフェースを選択して切り替える。仮想インタフェース４１は、ネットワーク層よりも上位層のアプリケーション部（＃１）５１〜アプリケーション部（＃１ｎ）５ｎから、ノードＢ２００に送信するデータを取得し、ノードＢ２００から送信されたデータを上位層のアプリケーション部（＃１）５１〜アプリケーション部（＃１ｎ）５ｎに提供する。
【０１５３】
そして、アドレス切り替え部４２が、データに付加されているノードＡ１００のアドレスを、使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとの間で変換する。そのため、ノードＡ１００は、使用通信インタフェースを切り替えることができる。しかも、ノードＡ１００置は、使用通信インタフェースの切り替えを上位層のアプリケーション部（＃１）５１〜アプリケーション部（＃１ｎ）５ｎに対して隠蔽することができ、上位層のアプリケーション部（＃１）５１〜アプリケーション部（＃１ｎ）５ｎは、常に変わらない仮想インタフェース４１の仮想アドレスを用いて通信できる。
【０１５４】
よって、ノードＡ１００の上位層では、使用通信インタフェースを切り替えても、モバイルＩＰのように第三のノードを用いずに通信を継続できる。即ち、通信環境の変化などにより、ノードＡ１００が使用するアドレスに変更があっても、ノードＡ１００とノードＢ２００は、アプリケーション部（＃１）５１〜アプリケーション部（＃１ｎ）５ｎと、アプリケーション部（＃１）９１〜アプリケーション部（＃１ｎ）９ｎとの間でのセッションを維持し、通信を継続できる。
【０１５５】
更に、ノードＡ１００のエージェント３２は、使用通信インタフェースを切り替える際に、ノードＢ２００に、切り替えの前後でノード自体は同一であることを証明するセッションの証明書を提供する。一方、ノードＢ２００のエージェント７２は、相手装置であるノードＡ１００から、使用通信インタフェースを切り替える際に、セッションの証明書を取得し、取得したセッションの証明書に基づいてノードＡ１００を認証する。
【０１５６】
そのため、ノードＡ１００の使用通信インタフェースが切り替えられ、ノードＢ２００から見たノードＡ１００のアドレスが変更されたときに、ノードＢ２００は、セッションの証明書に基づいて、ノードＡ１００が切り替えの前後で同一のノードであるか否かを認証できる。よって、ノードＡ１００、ノードＢ２００は、使用通信インタフェースの切り替えの際に、第三者によるなりすましによって、ノードＡ１００とノードＢ２００との間で通信中のセッションを容易に乗っ取られてしまったり、データを改ざんされてしまったりすることを防止できる。
その結果、ノードＡ１００とノードＢ２００は、使用通信インタフェースを切り替える際のセキュリティを高めることができる。
【０１５７】
又、ノードＡ１００のエージェント３２と、ノードＢ２００のエージェント７２は、切り替えの前に、証明情報として両者で共有する共有情報を生成し、お互いに交換する。そして、お互いの共有情報が一致することを確認しておく。そのため、ノードＢ２００は、ノードＡ１００が使用通信インタフェースを切り替える前に、予めノードＡ１００とノードＢ２００との間で生成した確かな共有情報に基づいて、ノードＡ１００を認証できる。よって、ノードＡ１００は、使用通信インタフェースを切り替える場合のセキュリティを、より高めることができる。
【０１５８】
又、通信インタフェース切り替えマネージャ２０は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、アプリケーション毎に使用通信インタフェースを選択して切り替えることができる。そして、アドレス切り替え部４２は、データに付加されているノードＡ１００のアドレスを、アプリケーション毎の使用通信インタフェースのアドレスと仮想インタフェース４１の仮想アドレスとの間で変換できる。
【０１５９】
そのため、ノードＡ１００は、アプリケーション毎に使用通信インタフェースを切り替えることができる。よって、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、上位層で行われる各アプリケーション（＃１）〜アプリケーション（＃Ｎ）を、各アプリケーションに適した通信インタフェースを用いて通信できる。その結果、利用形態などによって通信速度を重視するアプリケーション、セキュリティを重視するアプリケーション、ノードＡ１００の移動時の通信の連続性を重視するアプリケーションなど、重視したい項目がアプリケーション毎に異なる場合であっても、ノードＡ１００は、アプリケーション毎に適した良好な通信路を提供できる。
【０１６０】
例えば、ノードＡ１００によれば、従来のように、通信装置単位で使用通信インタフェースの切り替えを行う結果、切り替え先の使用通信インタフェースの特性が、特定のアプリケーションにとっては、切り替え前の使用通信インタフェースよりも、セキュリティ強度やモビリティサポート上好ましくないといった状況を招くことがない。そのため、ノードＡ１００によれば、切り替えを行うことが好ましいアプリケーションに関してのみ使用通信インタフェースを切り替えることができる。
【０１６１】
その結果、ノードＡ１００は、移動による通信環境の変化においても、ノードＡ１００全体だけでなく、全てのアプリケーション毎に適した通信環境を提供できる。
【０１６２】
更に、ノードＡ１００のエージェント３２は、通信インタフェース切り替えマネージャ２０が行う使用通信インタフェースの切り替えを、ノードＢ２００に通知する。エージェント３２は、切り替えがアプリケーション毎の場合には、使用通信インタフェースのアプリケーション毎の切り替えを通知する。そのため、ノードＡ１００は、ノードＢ２００に対して、使用通信インタフェースの切り替えを事前に通知できる。そのため、ノードＢ２００では、ノードＡ１００における使用通信インタフェースの変更に伴う処理を適切に行うことができる。
【０１６３】
又、ノードＢ２００のアドレス切り替え部８２は、データに付加されているノードＡ２００のアドレスを、切り替え先アドレスと、開始時アドレスとの間で変換する。そのため、ノードＢ２００は、相手装置であるノードＡ１００が使用通信インタフェースを切り替えても、上位層であるアプリケーション部（＃１）９１〜アプリケーション部（＃Ｎ）９ｎに対して、ノードＡ１００のアドレスが常に変わらないように見せることができる。よって、ノードＢ２００では、ノードＡ１００が使用通信インタフェースを切り替えても、モバイルＩＰのように第三のノードを用いずに通信を継続できる。
【０１６４】
［第２の実施の形態］
通信システムは、図１３に示すノードＣ３００と、図２に示すノードＢ２００とを備える。ノードＣ３００は、データを送受信する通信装置である。ノードＣ３００は、ノードＢ２００にとっての相手装置となり、ノードＢ２００は、ノードＣ３００にとっての相手装置となる。尚、説明を簡単にするために、２つのノードＣ３００とノードＢ２００を用いて説明するが、通信システムには多数のノードが含まれる。
【０１６５】
〔ノードＣ〕
ノードＣ３００は、移動通信ノードである。図１３に示すように、ノードＣ３００は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎと、通信インタフェース切り替えマネージャ３２０と、セッションマネージャ３３０と、アドレス変換ファンクション部３４０と、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎとを備える。
【０１６６】
通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎと、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎは、図１に示す通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎと、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎと同様である。
【０１６７】
通信インタフェース切り替えマネージャ３２０と、セッションマネージャ３３０と、アドレス変換ファンクション部３４０は、プロトコルスタック中のネットワーク層において処理を行う。通信インタフェース切り替えマネージャ３２０と、セッションマネージャ３３０と、アドレス変換ファンクション部３４０は、例えば、ノードＣ３００が、通信インタフェース切り替えマネージャ３２０と、セッションマネージャ３３０と、アドレス変換ファンクション部３４０として機能するミドルウェアをネットワーク層に実装し、そのミドルウェアを実行することにより実現される。
【０１６８】
通信インタフェース切り替えマネージャ３２０は、複数の通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの中から、使用通信インタフェースを、アプリケーション毎に選択して切り替える。通信インタフェース切り替えマネージャ３２０は、切り替え判断部３２１と、メモリ３２２と、切り替え指示部３２３とを備える。
【０１６９】
切り替え判断部３２１は、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎに、複数のアプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に、使用する優先順位を定めた切り替えポリシーに基づいて、アプリケーション毎に使用通信インタフェースを選択する。切り替えポリシーは、例えば、通信コスト、通信速度、セキュリティ、ノードＣ３００の移動時における通信の連続性など、各アプリケーションにおいて優先する項目に基づいて、設定できる。
【０１７０】
以下、各アプリケーション（＃１）〜アプリケーション（＃Ｎ）がそれぞれ、１つのセッションを用いる場合を例にとって説明する。又、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎが、ＩＭＴ−２０００（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ−２０００）に対応した通信インタフェースと、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ  Ｐｈｏｎｅ  Ｓｙｓｔｅｍ）に対応した通信インタフェースと、無線ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に対応した通信インタフェースの三種類のいずれかに分類される場合を例にとって説明する。
【０１７１】
アプリケーション（＃１）では、無線ＬＡＮに対応した通信インタフェース、ＰＨＳに対応した通信インタフェース、ＩＭＴ−２０００に対応した通信インタフェースの順に、高い優先順位が付与されている。アプリケーション（＃２）では、ＩＭＴ−２０００に対応した通信インタフェース、ＰＨＳに対応した通信インタフェース、無線ＬＡＮに対応した通信インタフェースの順に、高い優先順位が付与されている。アプリケーション（＃３）では、ＰＨＳに対応した通信インタフェース、ＩＭＴ−２０００に対応した通信インタフェース、無線ＬＡＮに対応した通信インタフェースの順に、高い優先順位が付与されている。
【０１７２】
例えば、ノードＣ３００のユーザが、各通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの優先順位を、アプリケーション毎に直接決定することにより、優先順位を設定できる。あるいは、まず、ユーザが、通信コスト、通信速度、セキュリティ、移動時における通信の連続性など、各アプリケーションにおいて優先する項目を決定して切り替え判断部３２１に入力する。そして、切り替え判断部３２１が、入力された項目に基づいて通信インタフェースの優先順位を決定することにより、優先順位を設定できる。メモリ２３２が、図１４に示す切り替えポリシーを保持する。
【０１７３】
切り替え判断部３２１は、アプリケーション毎に使用通信インタフェースの切り替えを判断する。使用通信インタフェースの切り替えを行うと判断した場合、切り替え判断部３２１は、セッションマネージャ３３０に、切り替えの実行と、その切り替えの内容を、切り替えを実行すると判断したアプリケーション毎に通知する。即ち、切り替え判断部３２１は、アプリケーションを指定して、使用通信インタフェースを切り替えることに伴う処理を行うように、セッションマネージャ３３０に指示する。又、切り替え判断部３２１は、各セッションの通信開始時に、選択したアプリケーション毎の通信インタフェースを、選択したアプリケーション毎に、セッションマネージャ３３０に通知する。
【０１７４】
更に、切り替え判断部３２１は、切り替え指示部３２３に、切り替えの実行とその切り替えの内容をアプリケーション毎に通知し、アプリケーション毎に使用通信インタフェースを切り替えるように指示する。又、切り替え判断部３２１は、各セッションの通信開始時には、切り替え指示部３２３に、アプリケーション毎に選択した通信インタフェースを通知し、アプリケーション毎にその通信インタフェースを用いて通信を開始するように指示する。
【０１７５】
切り替え指示部３２３は、アプリケーション毎に使用通信インタフェースの切り替えを行う。切り替え指示部３２３は、新しく選択した切り替え先の通信インタフェースを起動し、状態を「通信中」に変更する。このとき、選択した通信インタフェースが、既に他のセッションで使用されている場合には、その起動は不要である。切り替え指示部３２３は、切り替えの対象となる現在使用中の通信インタフェースを終了させ、通信可能な通信インタフェースについては状態を「通信待機」に変更する。このとき、選択した通信インタフェースが、他のセッションで使用されている場合には、その終了は不要である。又、切り替え指示部３２３は、各セッションの通信開始時には、選択した通信インタフェースを起動し、「通信中」に変更する。
【０１７６】
尚、切り替え指示部３２３は、切り替え判断部３２１が、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの状態変化を検出し、指示を出した場合に、その指示に従って使用通信インタフェースの切り替えを行う。そのため、切り替え指示部３２３は、アプリケーション又はセッションと、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎの対応関係を把握する必要がない。これらの点以外は、切り替え判断部３２１、切り替え指示部３２３は、図１に示した切り替え判断部２１、切り替え指示部２３と同様である。このように、通信インタフェース切り替えマネージャ３２０は、セッションを意識しない。
【０１７７】
アドレス変換ファンクション部３４０は、セッション（＃１）仮想インタフェース４１１、セッション（＃２）仮想インタフェース４１２〜セッション（＃Ｎ）仮想インタフェース４１ｎと、セッション（＃１）アドレス切り替え部４２１、セッション（＃２）アドレス切り替え部４２２〜セッション（＃Ｎ）アドレス切り替え部４２ｎと、バッファ３４３と、セッションテーブル管理部３４４とを備える。
【０１７８】
ノードＣ３００では、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが同時に通信を行うため、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが用いる複数のセッション（＃１）〜セッション（＃Ｎ）に対応するセッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎを備える。
【０１７９】
セッション（＃１）仮想インタフェース４１１は、アプリケーション部（＃１）５１から、アプリケーション部（＃１）５１のセッション（＃１）において、ノードＢ２００に送信するデータを取得し、セッション（＃１）においてノードＢ２００から送信されたデータを、アプリケーション部（＃１）５１に提供する。セッション（＃２）仮想インタフェース４１２は、アプリケーション部（＃２）５２から、アプリケーション部（＃２）５２のセッション（＃２）において、ノードＢ２００に送信するデータを取得し、セッション（＃２）においてノードＢ２００から送信されたデータを、アプリケーション部（＃２）５２に提供する。セッション（＃Ｎ）仮想インタフェース４１ｎは、アプリケーション部（＃Ｎ）５ｎから、アプリケーション部（＃Ｎ）５ｎのセッション（＃Ｎ）において、ノードＢ２００に送信するデータを取得し、セッション（＃Ｎ）においてノードＢ２００から送信されたデータを、アプリケーション部（＃Ｎ）５ｎに提供する。
【０１８０】
セッション（＃１）仮想インタフェース４１１には、使用通信インタフェースに依存しない固定の仮想アドレス「ａｄｄ＿Ｖ１」が付与されている。セッション（＃２）仮想インタフェース４１２には、使用通信インタフェースに依存しない固定の仮想アドレス「ａｄｄ＿Ｖ２」が付与されている。セッション（＃Ｎ）仮想インタフェース４１ｎには、使用通信インタフェースに依存しない固定の仮想アドレス「ａｄｄ＿Ｖｎ」が付与されている。これらの点以外は、セッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎは、図１に示した仮想インタフェース４１と同様である。
【０１８１】
バッファ３４３は、アプリケーション（＃１）〜アプリケーション（＃Ｎ）毎のアプリケーション別バッファを備える。アプリケーション別バッファには、各アプリケーション（＃１）〜アプリケーション（＃Ｎ）が用いるセッションのセッションＩＤ「＃１」〜「＃Ｎ」が付与される。セッションＩＤは、セッションを識別する識別情報である。
【０１８２】
各アプリケーション別バッファは、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎがノードＢ２００に送信するデータを、セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎから入力され、アプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に保持する。各アプリケーション別バッファは、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎが受信したデータを、通信インタフェース（＃１）１１〜通信インタフェース（＃Ｎ）１ｎから入力され、アプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に保持する。
【０１８３】
バッファ３４３は、複数のセッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎを備える。セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎ毎に、セッションＩＤ「＃１」〜「＃Ｎ」が付与される。各セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎはそれぞれ、各セッション（＃１）〜セッション（＃Ｎ）に関する情報を保持する。図１５にセッションテーブルの例を示す。セッションテーブルは、セッションに関する情報として、例えば、セッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎの仮想アドレスを用いて示される各セッション（＃１）〜セッション（＃Ｎ）の送信元ＩＰアドレス、送信先アドレス、送信元ポート番号、送信先ポート番号、ＩＰヘッダに含まれるオプションなど、各セッション（＃１）〜セッション（＃Ｎ）の通信パラメータを保持する。
【０１８４】
セッションテーブル管理部３４４は、各アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが用いる各セッション（＃１）〜セッション（＃Ｎ）を、セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎを用いて管理する。セッションテーブル管理部３４４は、セッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎを介して、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎから、送信元ＩＰアドレス、送信先ＩＰアドレス、使用している送信元ポート番号、送信先ポート番号など、各アプリケーション（＃１）〜アプリケーション（＃Ｎ）の通信パラメータを取得する。そして、セッションテーブル管理部３４４は、各セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎに、各セッション（＃１）〜セッション（＃Ｎ）に関する情報を格納する。
【０１８５】
セッションテーブル管理部３４４は、バッファ３４３から、セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎが保持する各セッション（＃１）〜セッション（＃Ｎ）に関する情報を取得し、セッションマネージャ３３０に提供する。又、セッションテーブル管理部３４４は、アプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に、アプリケーション別バッファを作成する。セッションテーブル管理部３４４は、セッションマネージャ３３０からの指示により、アプリケーション別バッファを作成する。セッションテーブル管理部３４４は、作成したアプリケーション別バッファ部に、セッションＩＤ「＃１」〜「＃Ｎ」を付与する。
【０１８６】
ノードＣ３００では、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが同時に通信を行うため、複数のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが用いる複数のセッション（＃１）〜セッション（＃Ｎ）に対応するセッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎを備える。これにより、ノードＣ３００は、セッション単位にアドレスを変換できる。
【０１８７】
セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎは、データに付加されているアドレスを、セッション毎の使用通信インタフェースのアドレスと、セッション毎のセッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎの仮想アドレスとの間で変換する。即ち、セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎは、セッション毎にアドレスの変換を行う。
【０１８８】
各セッションにおいて使用通信インタフェースが切り替えられると、セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎは、セッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎの仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、各セッションの切り替え先の通信インタフェースのアドレスに変更する。セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎは、セッションマネージャ３３０からのセッションを指定した指示に従って、変換相手となる使用通信インタフェースのアドレスを変更する。これらの点以外は、セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎは、図１に示したアドレス切り替え部４２と同様である。
【０１８９】
セッションマネージャ３３０は、切り替え指示部３３１と、エージェント３３２と、タイマ３３とを備える。切り替え指示部３３１は、各アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎから、送信元ＩＰアドレス、送信先ＩＰアドレス、使用している送信元ポート番号、送信先ポート番号など、各アプリケーション（＃１）〜アプリケーション（＃Ｎ）の通信パラメータを取得する。又、切り替え指示部３３１は、セッションテーブル管理部３４４から、セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎが保持する各セッション（＃１）〜セッション（＃Ｎ）に関する情報として、各セッション（＃１）〜セッション（＃Ｎ）の通信パラメータと、セッションＩＤ「＃１」〜「＃Ｎ」を取得する。
【０１９０】
切り替え指示部３３１は、取得した各アプリケーション（＃１）〜アプリケーション（＃Ｎ）の通信パラメータと、各セッション（＃１）〜セッション（＃Ｎ）の通信パラメータとを比較して、通信パラメータが一致するアプリケーション（＃１）〜アプリケーション（＃Ｎ）とセッション（＃１）〜セッション（＃Ｎ）とを対応付ける。そして、切り替え指示部３３１は、セッションＩＤ「＃１」〜「＃Ｎ」と、そのセッションＩＤのセッションを用いるアプリケーション（＃１）〜アプリケーション（＃Ｎ）とを対応付けるマッピングを行う。このようにして、切り替え指示部３３１は、どのアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが、どのセッション（＃１）〜セッション（＃Ｎ）を用いるかを把握する。これにより、セッションマネージャ３３０は、セッションＩＤとアプリケーションのマッピングを行うことができる。
【０１９１】
切り替え指示部３３１は、切り替え判断部３２１から、切り替えの実行と、その切り替えの内容を、切り替えを実行すると判断したセッションを含むアプリケーション毎に通知を受ける。即ち、切り替え指示部３３１は、切り替え判断部３２１から、アプリケーションを指定した指示を受ける。又、切り替え指示部３３１は、各セッションの通信開始時に、切り替え判断部３２１から、選択した通信インタフェースの通知をアプリケーション毎に受ける。切り替え指示部３３１は、セッションＩＤとアプリケーションとのマッピングを参照し、切り替え判断部３２１からの指示が、どのセッションに関する指示であるかを判断する。そして、切り替え指示部３３１は、切り替え判断部３２１からのアプリケーションを指定した指示を、セッションを指定した指示に変換する。
【０１９２】
そして、切り替え指示部３３１は、エージェント３３２に、切り替えの内容や選択した通信インタフェースを通知し、使用通信インタフェースの切り替え時やセッションの通信開始時の処理を行うように、セッション毎に指示する。又、切り替え指示部３３１は、セッションＩＤとアプリケーションとのマッピングをエージェント３３２に通知する。このようにして、セッションマネージャ３３０においても、セッションを管理する。又、切り替え指示部３３１は、セッションテーブル管理部３４４に、アプリケーション（＃１）〜アプリケーション（＃Ｎ）毎に、アプリケーション別バッファを作成するように指示する。
【０１９３】
エージェント３３２は、切り替え指示部３３１から、切り替えの内容や選択した通信インタフェースの通知を、セッション毎に受ける。そして、エージェント３３２は、使用通信インタフェースの切り替え時やセッションの通信開始時の処理を、セッション毎に行う。エージェント３３２は、セッションの通信開始時に、アドレス変換ファンクション部３４０に、セッション（＃１）仮想インタフェース４１１〜セッション（＃Ｎ）仮想インタフェース４１ｎの仮想アドレスの変換相手となるセッション毎の使用通信インタフェースのアドレスを通知し、変換を指示する。エージェント３３２は、使用通信インタフェースを切り替える際に、アドレス変換ファンクション部３４０に、仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、セッション毎の新しい切り替え先の通信インタフェースのアドレスに変更するように指示する。
【０１９４】
又、エージェント３３２は、通信インタフェース切り替えマネージャ３２０が行うセッション毎の使用通信インタフェースの切り替えを、相手装置であるノードＢ２００に通知する。更に、エージェント３３２は、切り替えの際に、アプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎに代わって、ノードＢ２００にデータの続きをセッション毎に要求する。
【０１９５】
エージェント３３２は、バッファ３４３を管理する。エージェント３３２は、バッファ３４３内のアプリケーション別バッファが保持しているデータを、セッションＩＤとアプリケーションとのマッピングを参照して、セッション毎に把握しておく。そして、エージェント３３２は、アプリケーション別バッファに保持されているデータの続きを、セッション毎にノードＢ２００に要求する。これらの点以外は、切り替え指示部３３１、エージェント３３２、タイマ３３は、図１に示した切り替え指示部３１、エージェント３２、タイマ３３と同様である。
【０１９６】
次に、状態が「通信待機」になり、新たに利用可能な通信インタフェースを検出した場合と、「通信中」の通信インタフェースが「通信不可能」に移行する場合について、詳細に説明する。
【０１９７】
〔新たに利用可能な通信インタフェースの検出〕
切り替え判断部３２１は、状態が「通信待機」となり、新たに利用可能な通信インタフェースを検出した場合、アプリケーション毎に切り替えの判断を行う。
切り替え判断部３２１は、新たに利用可能な通信インタフェースの優先順位が、「通信中」の使用インタフェースよりも高い場合には、新たに利用可能な通信インタフェースを使用通信インタフェースに選択する。そのため、切り替え判断部３２１は、切り替えを実行すると判断する。切り替え判断部３２１は、新たに利用可能な通信インタフェースの優先順位が、「通信中」の使用通信インタフェースよりも低い場合には、「通信中」の使用通信インタフェースを、再度、使用通信インタフェースに選択する。そのため、切り替え判断部３２１は、切り替えを実行しないと判断する。
【０１９８】
例えば、ノードＣ３００のアプリケーション部（＃１）５１〜アプリケーション部（＃Ｎ）５ｎが、「無線ＬＡＮ」に対応した通信インタフェースを使用して移動している。このとき、切り替え判断部３２１が、「ＩＭＴ−２０００」に対応した通信インタフェースが「通信待機」状態となったことを検出する。切り替え判断部３２１は、メモリ３２２に保持された切り替えポリシーに基づいて、アプリケーション毎に使用通信インタフェースを選択する。図１４に示すように、アプリケーション（＃２）とアプリケーション（＃３）では、「ＩＭＴ−２０００」の優先順位が「無線ＬＡＮ」の優先順位よりも高い。そのため、切り替え判断部３２１は、アプリケーション（＃２）、アプリケーション（＃３）の使用通信インタフェースとして、「ＩＭＴ−２０００」に対応した通信インタフェースを選択し、切り替えを実行すると判断する。
【０１９９】
そして、切り替え判断部３２１は、切り替え指示部３２３に、切り替えの実行と切り替えの内容を通知する。又、切り替え判断部３２１は、セッションマネージャ３３０の切り替え指示部３３１に、アプリケーション（＃２）、アプリケーション（＃３）を指定して、切り替えの実行と切り替えの内容を通知し、指示する。切り替え指示部３２３は、「ＩＭＴ−２０００」に対応した通信インタフェースを起動して、「通信中」に変更する。
【０２００】
セッションマネージャ３３０の切り替え指示部３３１は、セッションＩＤとアプリケーションとのマッピングを参照し、切り替え判断部３２１からの指示がどのセッションに関する指示であるかを判断する。そして、切り替え指示部３３１は、切り替え判断部３２１からのアプリケーションを指定した指示を、セッションを指定した指示に変換する。
【０２０１】
そして、切り替え指示部３３１は、エージェント３３２にセッションＩＤと対応付けて切り替えを指示する。エージェント３３２は、切り替え指示部３３１から、セッションＩＤと対応付けられた切り替えの指示を受ける。そして、エージェント３３２は、アドレス変換ファンクション部３４０に、仮想アドレスの変換相手となる使用通信インタフェースのアドレスを、セッション毎の新しい切り替え先の通信インタフェースのアドレスに変更するように、セッションＩＤを指定して指示する。この結果、アドレス変換ファンクション部３４０は、アプリケーションを意識することはない。アドレス変換ファンクション部３４０では、セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎのうち、指定されたセッションＩＤのアドレス変換を行うアドレス切り替え部が、使用通信インタフェースのアドレスを切り替え先の使用通信インタフェースのアドレスに変更して、使用通信インタフェースのアドレスと仮想アドレスとの間の変換を行う。
【０２０２】
〔「通信中」の通信インタフェースの「通信不可能」への移行〕
切り替え判断部３２１は、「通信中」の使用通信インタフェースが、「通信不可能」に移行すると予測した場合、状態が「通信中」又は「通信待機」の通信インタフェースを検出する。状態が「通信中」又は「通信待機」の通信インタフェースが、「通信不可能」に移行すると予測した使用通信インタフェース以外に１つしかない場合には、切り替え判断部３２１は、その通信インタフェースへの切り替えを実行すると判断する。
【０２０３】
一方、状態が「通信中」又は「通信待機」の通信インタフェースが複数ある場合、切り替え判断部３２１は、それらの中から、切り替えポリシーに基づいて、各アプリケーションについて優先順位の高い使用通信インタフェースを選択し、各アプリケーションの使用通信インタフェースを選択する。そして、切り替え判断部３２１は、選択した各アプリケーションの使用通信インタフェースへの切り替えを実行すると判断する。
【０２０４】
例えば、全ての通信インタフェースの状態が「通信中」又は「通信待機」であり、「無線ＬＡＮ」に対応した通信インタフェースが「通信不可能」に移行すると予測した場合、「ＩＭＴ−２０００」又は「ＰＨＳ」に対応した通信インタフェースの中から、アプリケーション毎に優先順位の高い通信インタフェースを選択する。そして、切り替え判断部３２１は、選択した通信インタフェースへの切り替えを実行すると判断する。
【０２０５】
又、「通信中」の使用通信インタフェースが、突然「通信不可能」に移行した場合も同様に、切り替え判断部３２１は、状態が「通信中」又は「通信待機」である通信インタフェースを検出する。そして、切り替え判断部３２０は、状態が「通信中」又は「通信待機」である通信インタフェースの中に、各アプリケーションにとってより適切な通信インタフェースがあれば、各アプリケーションの使用通信インタフェースとして選択し、切り替えを実行すると判断する。一方、全ての通信インタフェースの状態が「通信不可能」の場合には、切り替え判断部３２１は、通信を中断すると判断する。
【０２０６】
切り替え判断部３２１は、切り替えを実行すると判断した場合、切り替え指示部３２３、セッションマネージャ３３０に切り替えの実行を指示する。そして、使用通信インタフェースの切り替えが行われる。
【０２０７】
〔効果〕
このようなノードＣ３００及び、ノードＣ３００を用いた通信方法によれば、通信インタフェース切り替えマネージャ３２０が、使用通信インタフェースを、アプリケーション毎に選択して切り替える。そして、セッション（＃１）切り替え部４２１〜セッション（＃Ｎ）切り替え部４２ｎは、データに付加されているノードＣ３００のアドレスを、セッション毎の使用通信インタフェースのアドレスと、セッション毎のセッション（＃１）仮想インタフェース〜セッション（＃Ｎ）仮想インタフェース４１ｎのアドレスとの間で変換する。
【０２０８】
よって、ノードＣ３００は、セッション毎に使用通信インタフェースを切り替えることができる。そのため、上位層で行われる各アプリケーション（＃１）〜アプリケーション（＃Ｎ）は、各セッション（＃１）〜セッション（＃Ｎ）に適した通信インタフェースを用いて通信できる。その結果、ノードＣ３００は、各アプリケーションのセッション毎に適した通信環境を提供できる。
【０２０９】
［変更例］
本発明は、上記第１、第２の実施の形態に限定されるものではなく、種々の変更が可能である。図１３では、バッファ３４３においてセッションＩＤを保持しているが、バッファ３４３においてセッションＩＤを保持するのではなく、セッションテーブル管理部３４４が、セッションテーブル（＃１）４３１〜セッションテーブル（＃Ｎ）４３ｎを保持し、管理してもよい。又、バッファ３４３に入力されたデータをセッションテーブル管理部３４４の指示により、各セッション（＃１）アドレス切り替え部４２１〜各セッション（＃Ｎ）アドレス切り替え部４２ｎに振り分ける機能を、バッファ３４３が備えるようにしてもよい。
【０２１０】
更に、バッファ３４３をセッション毎や、アプリケーション毎に設けるようにしてもよい。その場合には、セッション毎又はアプリケーション毎に仮想インタフェース、アドレス切り替え部、バッファを設け、それらに対応したセッションテーブルを作成する。
【０２１１】
又、図１３では、仮想インタフェースがセッション毎に設けられているが、セッション毎に設ける必要はない。例えば、１つのノードが、１つの仮想インタフェースを備え、１つの仮想アドレスを用いるようにしてもよい。この場合、各セッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎにデータを振り分ける手段を、仮想インタフェースとセッション（＃１）アドレス切り替え部４２１〜セッション（＃Ｎ）アドレス切り替え部４２ｎとの間に設け、セッションテーブル管理部３４４の指示により、データを振り分けるようにしてもよい。
【０２１２】
又、セッションマネージャ３３０が、セッションテーブル管理部を備えるようにし、そのセッションテーブル管理部が、セッションＩＤ「＃１」〜「＃Ｎ」と、そのセッションＩＤのセッションを用いるアプリケーション（＃１）〜アプリケーション（＃Ｎ）とを対応付けるマッピングを行ってもよい。
【０２１３】
相手装置が、ノードＢ２００のように、セッションマネージャ７０と、アドレス変換ファンクション部８０として機能するミドルウェアを実装しておらず、ノードＡ１００、ノードＣ３００が行う使用通信インタフェースの切り替えに対応していない場合がある。この場合、ノードＡ１００、ノードＣ３００は、使用通信インタフェースを切り替える際に、実行中のセッションを切断する。そして、ノードＡ１００、ノードＣ３００は、新たなセッションにおいて、相手装置との通信を再開する。この場合であっても、ノードＡ１００、ノードＣ３００は、相手装置のアプリケーションに応じて、相手装置と、セッション切断前のデータの続きを、継続して送受信することができる。
【０２１４】
又、ノードＡ１００同士、ノードＣ３００同士、ノードＡ１００とノードＣ３００など、複数の通信インタフェースを備える通信装置同士が通信を行う場合がある。この場合、通信装置が、ほぼ同時に使用通信インタフェースの切り替えを実行しようとした際には、先に切り替えを要求した方の使用通信インタフェースの切り替えを優先して処理する。例えば、先に切り替えを要求した通信装置が、切り替えの要求を送信後、相手装置からの切り替えの要求を拒否する。そして、切り替えの要求を拒否された方の通信装置は、相手装置の切り替え処理終了後、自身の使用通信インタフェースの切り替えを実行する。
【０２１５】
又、複数の通信インタフェースを備える通信装置同士が通信を行う場合、双方の通信装置は、ノードＡ１００のエージェント３２の証明情報提供手段の機能と、ノードＢ２００のエージェント７２の認証手段の機能とを備える必要がある。
そして、双方の通信装置は、自身の相手装置から、その相手装置が使用通信インタフェースを切り替える際に、セッションの証明書のような共有情報を、切り替えの前後で相手装置は同一であることを証明する相手装置証明情報として取得し、その取得した相手装置証明情報に基づいて相手装置を認証する。
【０２１６】
これによれば、相手装置も複数の通信インタフェースを備え、その切り替えを行う場合に、通信装置は、相手装置証明情報に基づいて、相手装置が切り替えの前後で同一の相手装置であるか否かを認証できる。よって、通信装置は、相手装置が使用通信インタフェースを切り替える場合のセキュリティについても、高めることができる。
【０２１７】
又、このように通信装置と相手装置の双方が認証手段の機能を備える場合には、使用通信インタフェースを切り替える際に、生成した共有情報をお互いに交換し、お互いにその内容を検証することができる。これにより、通信装置は、お互いに相手装置の認証を行うことができる。
【０２１８】
更に、第２の実施の形態では、各アプリケーションが１つのセッションを用いる場合について説明したが、ノードＣ３００は、各アプリケーションが複数のセッションを用いる場合にも利用できる。この場合、セッションマネージャ３３０の切り替え指示部３３１は、各アプリケーションに対して複数のセッションを対応付けておく。即ち、切り替え指示部３３１は、１つのアプリケーションと複数のセッションＩＤとを対応付けるマッピングを行う。そして、使用通信インタフェースを切り替える際に、切り替え指示部３３１は、第２の実施の形態と同様に、各アプリケーションと複数のセッションＩＤとのマッピングを参照して、セッション毎の切り替えの指示に変換する。又、エージェント３３２が、アドレス変換ファンクション部３４０に対して、各アプリケーションの複数のセッションについて、まとめて切り替えを指示してもよい。
【０２１９】
各アプリケーションが複数のセッションを用いる場合であっても、アドレス切り替え部は、複数のアプリケーションの数だけ備えるようにしてもよい。そして、各アプリケーションのアドレス切り替え部が、各アプリケーションのセッション毎に仮想アドレスの変換相手である使用通信インタフェースの変更を行ってもよい。このように、ノードＣ３００は、各アプリケーションが複数のセッションを用いる場合であっても、そのセッション毎に使用通信インタフェースを切り替えることができる。
【０２２０】
又、セッションマネージャ３３０ではなく、アドレス変換ファンクション部３４０が、アプリケーションとセッションＩＤとの対応付けを行ってもよい。この場合、セッションマネージャ３３０は、アプリケーションを指定した指示を行う。そして、アドレス変換ファンクション部３４０が、セッションを指定した指示に変換するようにしてもよい。
【０２２１】
更に、通信インタフェース切り替えマネージャ３２０のような切り替え手段が、セッション毎の切り替えポリシーに基づいて、使用通信インタフェースをセッション毎に選択して切り替えてもよい。
【０２２２】
【発明の効果】
以上説明したように、本発明によれば、使用する通信インタフェースを切り替える場合に、モバイルＩＰのように第三のノードを用いずに通信を継続でき、その際のセキュリティを高めたり、上位層のアプリケーション毎に適した通信環境を提供したりできる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るノードＡの構成を示すブロック図である。
【図２】本発明の第１の実施の形態に係るノードＢの構成を示すブロック図である。
【図３】本発明の第１の実施の形態に係る通信インタフェースの状態を示す図である。
【図４】本発明の第１の実施の形態に係る切り替えポリシーを示す図である。
【図５】本発明の第１の実施の形態に係るオプション１の手順を示すフロー図である。
【図６】本発明の第１の実施の形態に係る通信開始時の通信の様子を示す図である。
【図７】本発明の第１の実施の形態に係るオプション２の手順を示すフロー図である。
【図８】本発明の第１の実施の形態に係る切り替えを実行すると判断した時の様子を示す図である。
【図９】本発明の第１の実施の形態に係るオプション３の手順を示すフロー図である。
【図１０】本発明の第１の実施の形態に係るデータの続きを要求する際の様子を示す図である。
【図１１】本発明の第１の実施の形態に係るデータの送受信を再開した時の様子を示す図である。
【図１２】本発明の第１の実施の形態に係る通信パラメータの変換を示す図である。
【図１３】本発明の第２の実施の形態に係るノードＣの構成を示すブロック図である。
【図１４】本発明の第２の実施の形態に係る切り替えポリシーを示す図である。
【図１５】本発明の第２の実施の形態に係るセッションテーブルを示す図である。
【符号の説明】
１１，１２，１ｎ  通信インタフェース（＃１）、通信インタフェース（＃２）、通信インタフェース（＃Ｎ）
２０，３２０  通信インタフェース切り替えマネージャ
２１，３２１  切り替え判断部
２２，３２２  メモリ
２３，３２３  切り替え指示部
３０，３３０  セッションマネージャ
３１，３３１  切り替え指示部
３２，３３２  エージェント
３３  タイマ
４０，３４０  アドレス変換ファンクション部
４１  仮想インタフェース
４２  アドレス切り替え部
４３，３４３  バッファ
５１，５２，５ｎ  アプリケーション部（＃１）、アプリケーション部（＃２）、アプリケーション部（＃Ｎ）
６０  通信インタフェース
７０  セッションマネージャ
７１  制御部
７２  エージェント
７３  タイマ
８０  アドレス変換ファンクション部
８１  仮想インタフェース
８２  アドレス切り替え部
９１，９２，９ｎ  アプリケーション部（＃１）、アプリケーション（＃２）、アプリケーション部（＃Ｎ）
１００  ノードＡ
２００  ノードＢ
３００  ノードＣ
３４４  セッションテーブル管理部
４１１，４１２，４１ｎ  セッション（＃１）仮想インタフェース、セッション（＃２）仮想インタフェース、セッション（＃Ｎ）仮想インタフェース
４２１，４２２，４２ｎ  セッション（＃１）アドレス切り替え部、セッション（＃２）アドレス切り替え部、セッション（＃Ｎ）アドレス切り替え部
４３１，４３ｎ  セッションテーブル（＃１）、セッションテーブル（＃Ｎ）
【図１】
2004357252.tif 000003
【図２】
2004357252.tif 000004
【図３】
2004357252.tif 000005
【図４】
2004357252.tif 000006
【図５】
2004357252.tif 000007
【図６】
2004357252.tif 000008
【図７】
2004357252.tif 000009
【図８】
2004357252.tif 000010
【図９】
2004357252.tif 000011
【図１０】
2004357252.tif 000012
【図１１】
2004357252.tif 000013
【図１２】
2004357252.tif 000014
【図１３】
2004357252.tif 000015
【図１４】
2004357252.tif 000016
【図１５】
2004357252.tif 000017