(57)【要約】【課題】  ＳＩＰサーバを介さずにコマンドを送信することによって、目的の端末装置と電話通信を再開させることができる技術を提供すること。【解決手段】  第２端末装置１００は、第１端末装置６０と１回目の電話通信を行なう際に、第１端末装置６０のグローバルアドレスと公開鍵とを記憶する。第２端末装置１００は、第１端末装置６０と電話通信を再開させるべき際に、上記のグローバルアドレスを送信先としてＩＮＶＩＴＥを送信する。第２端末装置１００は、上記のグローバルアドレスを用いて第１端末装置６０と実際に電話通信することができるのか否かを、２００  ＯＫに含まれる受信側レスポンスコードと上記の公開鍵とを利用して判断する。肯定的な判断結果が得られた場合に、第２端末装置１００は、上記のグローバルアドレスを送信先としてＡＣＫを送信する。【選択図】  図１
2010212793.tif 000002
【特許請求の範囲】
【請求項１】
接続管理サーバと第１端末装置と第２端末装置とを含むシステムで利用される前記第２端末装置であって、
前記第１端末装置の第１アドレスを用いて前記第１端末装置と第１データを通信するための第１コマンドを、前記接続管理サーバを介して、前記第１端末装置に送信する第１コマンド送信部と、
前記第１端末装置の第１認証情報を取得する認証情報取得部と、
前記第１アドレスと前記第１認証情報とを記憶部に保持させる記憶制御部と、
前記第１データの通信が終了した後に、前記第１端末装置と第２データを通信すべき際に、第２コマンドを、前記接続管理サーバを介さずに、前記記憶部に保持されている前記第１アドレスを送信先として送信する第２コマンド送信部と、
前記第２コマンドの送信先である特定の端末装置が、目的の前記第１端末装置であるのか否かを、前記特定の端末装置が前記第２コマンドに応じて送信する第１レスポンスデータと、前記記憶部に保持されている前記第１認証情報と、を利用して判断する判断部と、
前記特定の端末装置が目的の前記第１端末装置であると前記判断部によって判断される場合に、前記第１端末装置と前記第２データを通信するための第３コマンドを、前記接続管理サーバを介さずに、前記第１アドレスを送信先として送信する第３コマンド送信部と、
を備える第２端末装置。
【請求項２】
前記特定の端末装置が目的の前記第１端末装置でないと前記判断部によって判断される場合に、前記第１端末装置に前記第１アドレスに代えて現在割り当てられている第２アドレスを用いて、前記第１端末装置と前記第２データを通信するための第４コマンドを、前記接続管理サーバを介して、前記第１端末装置に送信する第４コマンド送信部
をさらに備えることを特徴とする請求項１に記載の第２端末装置。
【請求項３】
前記第２コマンド送信部は、第１チャレンジデータを含む前記第２コマンドを送信し、
前記第１レスポンスデータは、前記特定の端末装置が自身の秘密鍵を利用して前記第１チャレンジデータを暗号化することによって、生成されるデータであり、
前記第１認証情報は、前記第１端末装置の第１公開鍵を含み、
前記判断部は、前記第１レスポンスデータを前記第１公開鍵で復号化することによって第１復号化データを生成し、前記第１復号化データと前記第１チャレンジデータとが一致する場合に、前記特定の端末装置が目的の前記第１端末装置であると判断する
ことを特徴とする請求項１又は２に記載の第２端末装置。
【請求項４】
前記判断部は、さらに、前記第１レスポンスデータが受信されない場合に、前記特定の端末装置が目的の前記第１端末装置でないと判断する
ことを特徴とする請求項３に記載の第２端末装置。
【請求項５】
前記第１コマンドは、前記第１端末装置と前記第２端末装置との間で通信セッションを確立するためのコマンドであり、
前記認証情報取得部は、前記通信セッションが確立された直後に、前記第１認証情報を取得する
ことを特徴とする請求項１から４のいずれかに記載の第２端末装置。
【請求項６】
前記記憶制御部は、
前記認証情報取得部が前記第１認証情報を取得することができる場合に、前記第１アドレスと前記第１認証情報とを前記記憶部に保持させ、
前記認証情報取得部が前記第１認証情報を取得することができない場合に、前記第１アドレスを前記記憶部に保持させない
ことを特徴とする請求項１から５のいずれかに記載の第２端末装置。
【請求項７】
前記特定の端末装置が目的の前記第１端末装置であると前記判断部によって判断される場合に、前記第２端末装置の第２公開鍵を、前記第１アドレスを送信先として送信する公開鍵送信部と、
前記第１端末装置が前記第２端末装置の第３アドレスを送信先として送信する第２チャレンジデータを受信し、前記第２端末装置の秘密鍵を利用して前記第２チャレンジデータを暗号化することによって第２レスポンスデータを生成し、前記第２レスポンスデータを前記第１端末装置に送信するチャレンジデータ通信部と、
前記第１端末装置が前記第２レスポンスデータを前記第２公開鍵で復号化することによって生成する第２復号化データと、前記第２チャレンジデータと、が一致する場合に、前記第１端末装置が前記第３アドレスを送信先として送信する第５コマンドであって、前記第１端末装置と第３データを通信するための前記第５コマンドを受信するコマンド受信部と、
をさらに備えることを特徴とする請求項１から６のいずれかに記載の第２端末装置。
【請求項８】
前記接続管理サーバと、前記第１端末装置と、請求項１から７のいずれかに記載の前記第２端末装置と、を備えるシステム。
【請求項９】
接続管理サーバと第１端末装置と第２端末装置とを含むシステムで利用される前記第２端末装置のためのコンピュータプログラムであって、
前記第１端末装置の第１アドレスを用いて前記第１端末装置と第１データを通信するための第１コマンドを、前記接続管理サーバを介して、前記第１端末装置に送信する第１コマンド送信処理と、
前記第１端末装置の第１認証情報を取得する認証情報取得処理と、
前記第１アドレスと前記第１認証情報とを記憶部に保持させる記憶制御処理と、
前記第１データの通信が終了した後に、前記第１端末装置と第２データを通信すべき際に、第２コマンドを、前記接続管理サーバを介さずに、前記記憶部に保持されている前記第１アドレスを送信先として送信する第２コマンド送信処理と、
前記第２コマンドの送信先である特定の端末装置が、目的の前記第１端末装置であるのか否かを、前記特定の端末装置が前記第２コマンドに応じて送信する第１レスポンスデータと、前記記憶部に保持されている前記第１認証情報と、を利用して判断する判断処理と、
前記特定の端末装置が目的の前記第１端末装置であると前記判断処理によって判断される場合に、前記第１端末装置と前記第２データを通信するための第３コマンドを、前記接続管理サーバを介さずに、前記第１アドレスを送信先として送信する第３コマンド送信処理と、
をコンピュータに実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、別の端末装置と通信する端末装置に関する。
【背景技術】
【０００２】
一対の端末装置の間で目的のデータの通信を行なうために、接続管理サーバが利用されることがある。例えば、下記の特許文献１には、ＳＩＰ（Session Initiation Protocol）を利用したデータ通信システムが開示されている。ＳＩＰを利用したシステムでは、ＳＩＰサーバと呼ばれる接続管理サーバが利用される。各端末装置は、自身のＩＤ（例えばＳＩＰＵＲＩ）と自身のＩＰアドレスとを接続管理サーバに登録する。例えば、第１端末装置と目的のデータの通信を行なうべき第２端末装置は、通常、第１端末装置のＩＰアドレスを保持していない。従って、第２端末装置は、ＩＮＶＩＴＥ、２００  ＯＫ、及び、ＡＣＫ等のコマンドを、接続管理サーバを介して、第１端末装置と通信する。この過程において、第２端末装置は、第１端末装置のＩＰアドレスを取得する。この結果、第２端末装置は、第１端末装置のＩＰアドレスを用いて、第１端末装置と目的のデータ（例えば音声データ等）の通信を行なうことができる。特許文献１の技術では、第２端末装置は、第１端末装置と１回目のデータ通信を行なう際に第１端末装置のＩＰアドレスを取得し、そのＩＰアドレスを１回目のデータ通信の終了後も保持しておく。１回目のデータ通信が終了した後に、２回目のデータ通信を行なうべき際に、第２端末装置は、コマンドを、接続管理サーバを介さずに、保持している第１端末装置のＩＰアドレスを送信先として送信する。接続管理サーバを介さずにコマンドを送信することができるために、接続管理サーバの処理負荷を低減させることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３０４７１１号公報
【特許文献２】特開２００６−１４０９０３号公報
【特許文献３】特開２００８−１６９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１回目のデータ通信の際に取得された第１端末装置のＩＰアドレスは、第２端末装置が２回目のデータ通信を行なうべき際に、別のＩＰアドレスに変わっている可能性がある。この場合、１回目のデータ通信の際に取得された第１端末装置のＩＰアドレスを送信先としてコマンドを送信しても、第２端末装置は、目的の第１端末装置とデータ通信を行なうことができない。即ち、特許文献１の技術では、接続管理サーバを介さずにコマンドを送信する場合に、目的の端末装置と目的のデータを通信することができない可能性がある。本明細書では、接続管理サーバを介さずにコマンドを送信する場合であっても、目的の端末装置と目的のデータを確実に通信することができる技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書で開示される一つの技術は、接続管理サーバと第１端末装置と第２端末装置とを含むシステムで利用される第２端末装置である。この第２端末装置は、第１コマンド送信部と認証情報取得部と記憶制御部と第２コマンド送信部と判断部と第３コマンド送信部とを備える。第１コマンド送信部は、第１端末装置の第１アドレスを用いて第１端末装置と第１データを通信するための第１コマンドを、接続管理サーバを介して、第１端末装置に送信する。なお、上記の「通信」は、送信及び／又は受信を意味する。以下でも、「通信」という用語を使用する場合は同様である。なお、上記の「第１アドレス」は、例えば、ＩＰアドレス（グローバルＩＰアドレス又はローカルＩＰアドレス）であってもよいし、ＩＰアドレスとポート番号との組合せであってもよい。なお、第２端末装置は、第１コマンドが送信された後に第１アドレスを取得してもよいし（例えば第１コマンドに対するレスポンスに第１アドレスが含まれていてもよい）、第１コマンドが送信される前に第１アドレスを取得してもよい。また、上記の「第１端末装置の第１アドレスを用いて第１端末装置と第１データを通信する」という文章は、「第１端末装置の第１アドレスを送信先として第１データを送信する」と言い換えてもよい。認証情報取得部は、第１端末装置の第１認証情報を取得する。なお、認証情報取得部は、例えば、第１端末装置から第１認証情報を取得してもよいし、接続管理サーバから第１認証情報を取得してもよい。
【０００６】
記憶制御部は、第１データの通信が終了した後に、第１アドレスと第１認証情報とを記憶部に保持させる。なお、上記の「第１データの通信が終了した後」という文章は、「第１データを通信するための通信セッションが切断された後」と言い換えてもよい。また、上記の「第１データの通信が終了した後に・・・保持させる」という文章は、第１データの通信の終了後の期間に少なくとも保持させることを意味している。従って、上記の文章は、第１データの通信の終了前から終了後の期間に亘って継続して保持させることを含む。なお、上記の文章は、「第１アドレスと第１認証情報とが取得された場合に、・・・保持させる」と言い換えてもよい。また、記憶制御部は、例えば、第１データの通信が終了してから所定期間が経過するまで第１アドレスを保持させてもよいし、ユーザによって所定の操作（例えば第１アドレスの削除操作）が実行されるまで第１アドレスを保持させてもよいし、第１データの通信が終了してから第１端末装置以外の端末装置とデータの通信が開始されるまで第１アドレスを保持させてもよい。
【０００７】
第２コマンド送信部は、第１データの通信が終了した後に、第１端末装置と第２データを通信すべき際に、第２コマンドを、接続管理サーバを介さずに、記憶部に保持されている第１アドレスを送信先として送信する。判断部は、第２コマンドの送信先である特定の端末装置が、目的の第１端末装置であるのか否かを、上記の特定の端末装置が第２コマンドに応じて送信する第１レスポンスデータと、記憶部に保持されている第１認証情報と、を利用して判断する。第３コマンド送信部は、特定の端末装置が目的の前記第１端末装置であると判断部によって判断される場合に、第１端末装置と第２データを通信するための第３コマンドを、接続管理サーバを介さずに、第１アドレスを送信先として送信する。
【０００８】
上記の構成によると、第２端末装置は、第１端末装置と第２データを通信すべき際に、第１アドレスを用いて第１端末装置と実際に通信することができるのか否かを、第２コマンドに対する第１レスポンスデータと第１認証情報とを利用して判断する。ここで肯定的な判断結果が得られた場合に、第２端末装置は、第１アドレスを送信先として第３コマンドを送信する。この結果、第２端末装置は、目的の第１端末装置と目的の第２データを通信することができる。上記の第２コマンド及び第３コマンドは、接続管理サーバを介さずに第１端末装置に送信される。第２端末装置は、接続管理サーバを介さずにコマンドを送信する場合に、目的の第１端末装置と目的の第２データを確実に通信することができる。
【０００９】
第２端末装置は、上記の特定の端末装置が目的の第１端末装置でないと判断部によって判断される場合に、第１端末装置に第１アドレスに代えて現在割り当てられている第２アドレスを用いて第１端末装置と第２データを通信するための第４コマンドを、接続管理サーバを介して、第１端末装置に送信する第４コマンド送信部をさらに備えていてもよい。この構成によると、第１アドレスを用いて第１端末装置と通信することができない場合に、接続管理サーバを介して第４コマンドを送信することによって、第１端末装置に現在割り当てられている第２アドレスを用いて第１端末装置と第２データを通信することができる。
【００１０】
第２コマンド送信部は、第１チャレンジデータを含む第２コマンドを送信してもよい。第１レスポンスデータは、上記の特定の端末装置が自身の秘密鍵を利用して第１チャレンジデータを暗号化することによって、生成されるデータであってもよい。第１認証情報は、第１端末装置の第１公開鍵を含んでいてもよい。判断部は、第１レスポンスデータを第１公開鍵で復号化することによって第１復号化データを生成し、第１復号化データと第１チャレンジデータとが一致する場合に、上記の特定の端末装置が目的の第１端末装置であると判断してもよい。この構成によると、上記の特定の端末装置が目的の第１端末装置であるのか否かを確実に判断することができる。
【００１１】
判断部は、さらに、第１レスポンスデータが受信されない場合に、上記の特定の端末装置が目的の第１端末装置でないと判断してもよい。
【００１２】
第１コマンドは、第１端末装置と第２端末装置との間で通信セッションを確立するためのコマンドであってもよい。この場合、認証情報取得部は、通信セッションが確立された直後に、第１認証情報を取得してもよい。なお、上記の「通信セッションが確立された直後に」という文章は、「第１コマンドが送信された後に」と言い換えてもよい。また、上記の文章は、「第１コマンドが送信された後であって第１データが通信される前に」と言い換えてもよい。
【００１３】
記憶制御部は、認証情報取得部が第１認証情報を取得することができる場合に、第１アドレスと第１認証情報とを記憶部に保持させてもよい。また、記憶制御部は、認証情報取得部が第１認証情報を取得することができない場合に、第１アドレスを記憶部に保持させなくてもよい。この構成によると、目的の端末装置と目的のデータを通信することができるのか否かを確認できないアドレスが記憶部に保持されないために、そのようなアドレスによって記憶部の残存メモリ容量が圧迫されるのを抑制することができる。
【００１４】
第２端末装置は、公開鍵送信部とチャレンジデータ通信部と第５コマンド受信部とをさらに備えていてもよい。公開鍵送信部は、上記の特定の端末装置が目的の第１端末装置であると判断部によって判断される場合に、第２端末装置の第２公開鍵を、第１アドレスを送信先として送信してもよい。チャレンジデータ通信部は、第１端末装置が第２端末装置の第３アドレスを送信先として送信する第２チャレンジデータを受信し、第２端末装置の秘密鍵を利用して第２チャレンジデータを暗号化することによって第２レスポンスデータを生成し、第２レスポンスデータを第１端末装置に送信してもよい。第５コマンド受信部は、第１端末装置が第２レスポンスデータを第２公開鍵で復号化することによって生成する第２復号化データと、第２チャレンジデータと、が一致する場合に、第１端末装置が第３アドレスを送信先として送信する第５コマンドであって、第１端末装置と第３データを通信するための第５コマンドを受信してもよい。上記の構成によると、第１端末装置は、第３アドレスを用いて目的の第２端末装置と目的の第３データを通信することができるのか否かを、第２公開鍵を利用して判断することができる。ここで肯定的な判断結果が得られた場合に、第１端末装置は、第５コマンドを送信することができる。この結果、第１端末装置と第２端末装置との間で第３データを通信することができる。
【００１５】
なお、上記の第１〜第５コマンドは、互いに異なる種類のコマンドであってもよいし、そうでなくてもよい。例えば、第１コマンドと第２コマンドが同じ種類のコマンドであってもよいし、第１コマンドと第３コマンドが同じ種類のコマンドであってもよい。
【００１６】
なお、上記の接続管理サーバと上記の第１端末装置と上記の第２端末装置とを備えるシステムも、新規で有用である。また、上記の第２端末装置を実現するための制御方法及びコンピュータプログラムも新規で有用である。
【図面の簡単な説明】
【００１７】
【図１】電話ネットワークシステムの構成の一例を示す。
【図２】ＳＩＰサーバの構成の一例を示す。
【図３】第１端末装置の構成の一例を示す。
【図４】第２端末装置の構成の一例を示す。
【図５】第２端末装置がＳＩＰサーバを介して第１端末装置にＩＮＶＩＴＥを送信する場合のシーケンス図を示す。
【図６】第２端末装置がＳＩＰサーバを介さずに第１端末装置にＩＮＶＩＴＥを送信する場合（第２端末装置のみがチャレンジ認証を実行する場合）のシーケンス図を示す。
【図７】第２端末装置がＳＩＰサーバを介さずに第１端末装置にＩＮＶＩＴＥを送信する場合（第１端末装置と第２端末装置の両方がチャレンジ認証を実行する場合）のシーケンス図を示す。
【図８】端末装置のＩＮＶＩＴＥ送信処理のフローチャートを示す。
【図９】図８の続きのフローチャートを示す。
【図１０】端末装置のＩＮＶＩＴＥ受信処理のフローチャートを示す。
【図１１】図１０の続きのフローチャートを示す。
【発明を実施するための形態】
【００１８】
ここでは、以下の実施例に記載の技術の一部を列挙しておく。
（形態１）第１端末装置と第２端末装置との間では、接続要求コマンド（例えばＩＮＶＩＴＥ）と、接続要求コマンドに対するレスポンスコマンド（例えば２００  ＯＫ）と、レスポンスコマンドが受信された場合に送信される受信確認コマンド（例えばＡＣＫ）が通信されてもよい。この場合、受信確認コマンドが通信されることによって、第１端末装置と第２端末装置との間で通信セッションが確立されてもよい。
【００１９】
（形態２）第２端末装置は、接続管理サーバを介して、第１端末装置に接続要求コマンドを送信する接続要求コマンド送信部をさらに備えていてもよい。この場合、上記の第１コマンドは、接続要求コマンドに対するレスポンスコマンドが受信された場合に送信される受信確認コマンドであってもよい。また、第２コマンドは、接続要求コマンドであってもよい。第１レスポンスデータは、レスポンスコマンドに含まれていてもよい。第３コマンドは、受信確認コマンドであってもよい。第４コマンドは、接続要求コマンドであってもよい。また、第５コマンドは、受信確認コマンドであってもよい。
【００２０】
（形態３）接続要求コマンドに対するレスポンスコマンドは、第１端末装置の第１アドレスを含んでいてもよい。この形態によると、第２端末装置は、レスポンスコマンドを受信することによって、第１端末装置の第１アドレスを取得することができる。
【００２１】
（形態４）第２チャレンジデータは、接続要求コマンドに含まれていてもよい。第２レスポンスデータは、レスポンスコマンドに含まれていてもよい。
【００２２】
（形態５）記憶制御部は、第１アドレスと第１認証情報とを所定期間継続して記憶部に保持させてもよい。即ち、記憶制御部は、上記の所定期間が経過すると、第１アドレスと第１認証情報とを削除することを許容してもよい。第２コマンド送信部は、第１データの通信が終了した後に、第１端末装置と第２データを通信すべき際に、第１アドレスと第１認証情報とが記憶部に保持されている場合に、記憶部に保持されている第１アドレスを送信先として第２コマンドを送信してもよい。
【実施例】
【００２３】
（システムの構成）
図面を参照して実施例を説明する。図１は、本実施例の電話ネットワークシステム２の概略図を示す。電話ネットワークシステム２は、インターネット４とＳＩＰサーバ１０とＳＴＵＮ（Simple Traversal of UDP through NATs）サーバ４０と複数のローカルネットワーク５０，１５０等を有する。インターネット４には、ＳＩＰサーバ１０とＳＴＵＮサーバ４０と複数のローカルネットワーク５０，１５０とが接続されている。
【００２４】
（ＳＩＰサーバ１０の構成）
図２は、ＳＩＰサーバ１０の構成の一例を示す。ＳＩＰサーバ１０は、制御部１２とネットワークインターフェイス１４とプログラム記憶領域１６と登録データ記憶領域１８とを備える。制御部１２は、プログラム記憶領域１６に記憶されているプログラムに従って処理を実行する。ネットワークインターフェイス１４は、インターネット４に接続されている。プログラム記憶領域１６は、制御部１２によって実行されるべきプログラムを記憶する。プログラム記憶領域１６は、プログラム記憶媒体からインストールされたプログラムを記憶してもよいし、インターネット４等からダウンロードされたプログラムを記憶してもよい。
【００２５】
登録データ記憶領域１８は、登録データ２０，２２を記憶する。登録データ２０は第１端末装置６０に関するデータであり、登録データ２２は第２端末装置１００に関するデータである。各登録データ２０，２２は、ＳＩＰＵＲＩ３０と、グローバルＩＰ＋ポート３２とが対応づけられたものである。ＳＩＰＵＲＩ３０は、ＳＩＰを利用する個々の端末装置に割り当てられるユニークなＵＲＩである。本実施例では、例えば、第１端末装置６０にＳＩＰＵＲＩ「ｓｉｐ：ｔ１＠ｓｅｒｖｅｒ．ｃｏｍ」が割り当てられている。第１端末装置６０と同様に、第２端末装置１００にもＳＩＰＵＲＩが割り当てられている。
【００２６】
グローバルＩＰ＋ポート３２は、グローバルＩＰアドレスとグローバルポート番号との組合せである。例えば、第１端末装置６０には、グローバルＩＰアドレスＧ１とグローバルポート番号ＧＰ１との組合せが割り当てられている。なお、以下では、グローバルＩＰアドレスとグローバルポート番号との組合せのことを「グローバルアドレス」と呼ぶことがある。また、第２端末装置１００には、グローバルＩＰアドレスＧ２とグローバルポート番号ＧＰ２との組合せが割り当てられている。
【００２７】
各端末装置６０，１００は、自身のＳＩＰＵＲＩと自身のグローバルアドレスとを登録するようにＳＩＰサーバ１０に定期的に指示する。ＳＩＰサーバ１０は、各端末装置６０，１００からの指示に従って、登録データ２０，２２を登録する。
【００２８】
（ＳＴＵＮサーバ４０の構成）
ＳＴＵＮサーバ４０は、ローカルネットワーク５０，１５０から送信される問い合わせコマンドを受信する。ＳＴＵＮサーバ４０は、上記の問い合わせコマンドを解析することによって、上記の問い合わせコマンドの送信元（例えば第１端末装置６０）のグローバルＩＰアドレスとグローバルポート番号との組合せ（即ちグローバルアドレス）を取得する。ＳＴＵＮサーバ４０は、グローバルアドレスを上記の問い合わせコマンドの送信元に送信する。これにより、上記の問い合わせコマンドの送信元は、自身に割り当てられているグローバルアドレスを知ることができる。
【００２９】
（ローカルネットワーク５０の構成）
図１に示されるように、ローカルネットワーク５０は、第１ＮＡＴルータ５２を介してインターネット４に接続されている。第１ＮＡＴルータ５２は、インターネット４に接続されているとともに、ＬＡＮ５４に接続されている。ローカルネットワーク５０は、ＬＡＮ５４に接続されている各端末装置によって構成されている。本実施例では、第１端末装置６０がＬＡＮ５４に接続されている。
【００３０】
第１ＮＡＴルータ５２は、ＮＡＴ（Network Address Translation）と呼ばれるアドレス変換処理を実行する。第１ＮＡＴルータ５２は、ローカルＩＰアドレスとローカルポート番号との第１の組合せを送信元としてローカルネットワーク５０から送信されてくるデータをインターネット４に送信する。この際に、第１ＮＡＴルータ５２は、送信元である上記の第１の組合せを、グローバルＩＰアドレスとグローバルポート番号との第２の組合せに変換する。逆に、上記の第２の組合せを送信先としてインターネット４から送信されてくるデータが存在する場合、第１ＮＡＴルータ５２は、送信先である上記の第２の組合せを上記の第１の組合せに変換する。
【００３１】
（第１端末装置６０の構成）
図３は、第１端末装置６０の構成の一例を示す。第１端末装置６０は、制御部６２とネットワークインターフェイス６４とマイク６６とスピーカ６８と記憶部７０等を備える。なお、図示省略しているが、第１端末装置６０は、表示部や操作部等も備える。制御部６２は、記憶部７０に記憶されているプログラムに従って処理を実行する。ネットワークインターフェイス６４は、ＬＡＮ５４に接続されている。また、第１端末装置６０のユーザは、マイク６６とスピーカ６８を利用して電話通信（音声データの通信）を実行することができる。
【００３２】
記憶部７０は、複数の記憶領域７２〜９２を備える。グローバルＩＰ＋ポート記憶領域７２は、第１端末装置６０に割り当てられているグローバルアドレス（Ｇ１＋ＧＰ１）を記憶する。第１端末装置６０は、ＳＴＵＮサーバ４０に定期的に問い合わせコマンドを送信する。これにより、第１端末装置６０は、自身に割り当てられているグローバルアドレスを取得することができ、グローバルＩＰ＋ポート記憶領域７２にグローバルアドレスを記憶させることができる。ローカルＩＰ＋ポート記憶領域７４は、第１端末装置６０に割り当てられているローカルアドレス（Ｌ１＋ＬＰ１）を記憶する。鍵記憶領域７６は、第１端末装置６０の秘密鍵Ｊ１と公開鍵Ｋ１とを記憶する。ＳＩＰＵＲＩ記憶領域７８は、第１端末装置６０に割り当てられているＳＩＰＵＲＩ（ｓｉｐ：ｔ１＠ｓｅｒｖｅｒ．ｃｏｍ）を記憶する。通信情報記憶領域８０は、通信情報８２を記憶する。通信情報８２は、過去に通信が実行された通信相手に関する情報である。通信情報８２は、ＳＩＰＵＲＩ８４とグローバルＩＰ＋ポート８６と公開鍵８８とが対応づけられたものである。図３の例では、通信情報８２は、第２端末装置１００に関する情報である。これは、第１端末装置６０は、第２端末装置１００を通信相手として過去に通信したことを意味する。プログラム記憶領域９０は、制御部６２によって実行されるべきプログラムを記憶する。プログラム記憶領域９０は、プログラム記憶媒体からインストールされたプログラムを記憶してもよいし、インターネット４等からダウンロードされたプログラムを記憶してもよい。記憶領域９２は、上記の記憶領域７２〜９０に記憶されるべき情報以外の情報を記憶する。記憶領域９２に記憶されるべき情報の内容については、必要に応じて後で説明する。
【００３３】
（ローカルネットワーク１５０の構成）
図１に示されるように、ローカルネットワーク１５０は、第２ＮＡＴルータ１５２を介してインターネット４に接続されている。第２ＮＡＴルータ１５２は、インターネット４に接続されているとともに、ＬＡＮ１５４に接続されている。ローカルネットワーク１５０は、ＬＡＮ１５４に接続されている各端末装置によって構成されている。本実施例では、第２端末装置１００がＬＡＮ１５４に接続されている。
【００３４】
（第２端末装置１００の構成）
図４は、第２端末装置１００の構成の一例を示す。第２端末装置１００は、第１端末装置６０と同様の構成１０２，１０４，１０６，１０８，１１０を有する。記憶部１１０の記憶領域１１２〜１３２も、第１端末装置６０と同様である。各記憶領域１１２，１１４，１１６，１１８には、第２端末装置１００に関する情報が記憶される。例えば、ローカルＩＰ＋ポート記憶領域１１４のＬ２＋ＬＰ２は、第２端末装置１００のローカルアドレスである。また、鍵記憶領域１１６のＪ２は、第２端末装置１００の秘密鍵であり、Ｋ２は、第２端末装置１００の公開鍵である。図４の例では、通信情報記憶領域１２０の通信情報１２２は、第１端末装置６０に関する情報１２４，１２６，１２８である。
【００３５】
（ＩＮＶＩＴＥ送信処理の概要）
続いて、第２端末装置１００がＳＩＰサーバ１０を介して第１端末装置６０にＩＮＶＩＴＥを送信する場合の処理について説明する。図５は、この処理のシーケンス図を示す。第２端末装置１００のユーザは、第２端末装置１００の操作部（図示省略）を操作することによって、第１端末装置６０のＳＩＰＵＲＩを入力することができる。これにより、第２端末装置１００は、図５に示される処理を開始する。
【００３６】
第２端末装置１００の記憶領域１３２（図４参照）は、ＳＩＰサーバ１０のアドレスを記憶している。第２端末装置１００は、ＳＩＰサーバ１０のアドレスを送信先として、ＩＮＶＩＴＥ２００を送信する。ＩＮＶＩＴＥ２００は、送信先である第１端末装置６０のＳＩＰＵＲＩと、送信元である第２端末装置１００のＳＩＰＵＲＩと、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２とを含む。
【００３７】
ＳＩＰサーバ１０は、ＩＮＶＩＴＥ２００を受信する。ＳＩＰサーバ１０は、登録データ記憶領域１８（図２参照）を参照することによって、ＩＮＶＩＴＥ２００に含まれる送信先のＳＩＰＵＲＩ（第１端末装置６０のＳＩＰＵＲＩ）に対応づけられているグローバルアドレスＧ１＋ＧＰ１を特定する。ＳＩＰサーバ１０は、特定されたグローバルアドレスＧ１＋ＧＰ１を送信先として、ＩＮＶＩＴＥ２０２を送信する。ＩＮＶＩＴＥ２０２は、ＩＮＶＩＴＥ２００と同様の内容を含む。ＳＩＰサーバ１０は、第２端末装置１００からのＩＮＶＩＴＥ２００を第１端末装置６０に転送すると表現することもできる。
【００３８】
第１端末装置６０は、ＩＮＶＩＴＥ２０２を受信する。これにより、第１端末装置６０は、自身宛に電話がかけられたことを知ることができる。第１端末装置６０は、例えば、所定の音を出力させたり、所定の光を発光させたりする。以下では、これらの動作のことを通話要求通知と呼ぶ。通話要求通知が実行されることによって、ユーザは、電話がかけられたことを知ることができる。通話要求通知が実行されている間に、ユーザによって通話開始操作（例えばフックキーの操作）が実行された場合に、第１端末装置６０は、ＳＩＰサーバ１０に“２００  ＯＫ”２０４を送信する。２００  ＯＫ２０４は、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を含む。ＳＩＰサーバ１０は、２００  ＯＫ２０４を受信すると、２００  ＯＫ２０６を第２端末装置１００に転送する。
【００３９】
第２端末装置１００は、２００  ＯＫ２０６を受信すると、ＳＩＰサーバ１０にＡＣＫ２０８を送信する。ＳＩＰサーバ１０は、ＡＣＫ２０８を受信すると、ＡＣＫ２１０を第１端末装置６０に転送する。第１端末装置６０は、ＡＣＫ２１０を受信する。第１端末装置６０がＡＣＫ２１０を受信すると、第１端末装置６０と第２端末装置１００との間でＲＴＰ（（Ｒｅａｌ−ｔｉｍｅ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）通信セッションが確立される。
【００４０】
第１及び第２端末装置６０，１００は、ＲＴＰ通信セッションが確立されている間は、グローバルアドレスＧ１＋ＧＰ１，Ｇ２＋ＧＰ２を送信先又は送信元としてデータを通信する。例えば、第１端末装置６０は、ＩＮＶＩＴＥ２０２を受信することによって、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２を取得することができる。第１端末装置６０は、ＲＴＰ通信セッションが確立されている間は、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２を送信先として、データ（例えば後述のレスポンス２１４や音声データ）を送信する。また、第２端末装置１００は、２００  ＯＫ２０６を受信することによって、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を取得することができる。第２端末装置１００は、ＲＴＰ通信セッションが確立されている間は、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を送信先として、データ（例えば後述の公開鍵取得要求２１２や音声データ）を送信する。ＲＴＰ通信セッションが確立されている間に第１端末装置６０と第２端末装置１００との間で通信されるデータは、ＳＩＰサーバ１０を経由しない。
【００４１】
第２端末装置１００は、ＲＴＰ通信セッションが確立された直後に、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を送信先として、公開鍵取得要求２１２を送信する。公開鍵取得要求２１２は、第２端末装置１００の公開鍵Ｋ２を含む。第１端末装置６０は、公開鍵取得要求２１２を受信すると、第２端末装置１００のＳＩＰＵＲＩと、グローバルアドレスＧ２＋ＧＰ２と、公開鍵Ｋ２とが対応づけられた通信情報８２（図３参照）を通信情報記憶領域８０に記憶させる記憶処理を実行する（Ｓ２）。
【００４２】
次いで、第１端末装置６０は、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２を送信先として、レスポンス２１４を送信する。レスポンス２１４は、第１端末装置６０の公開鍵Ｋ１を含む。第２端末装置１００は、レスポンス２１４を受信すると、第１端末装置６０のＳＩＰＵＲＩと、グローバルアドレスＧ１＋ＧＰ１と、公開鍵Ｋ１とが対応づけられた通信情報１２２（図４参照）を通信情報記憶領域１２０に記憶させる記憶処理を実行する（Ｓ４）。
【００４３】
第１端末装置６０は、音声データ通信処理を実行する（Ｓ６）。即ち、第１端末装置６０は、マイク６６に入力された音声データを第２端末装置１００に送信するととともに、第２端末装置１００からの音声データをスピーカ６８から出力する。同様に、第２端末装置１００も、音声データ通信処理を実行する（Ｓ８）。これにより、第１端末装置６０と第２端末装置１００との間で電話通信を実行することができる。
【００４４】
続いて、図５で確立されたＲＴＰ通信セッションが切断された後（即ち電話通信が終了した後）に、第２端末装置１００が第１端末装置６０にＩＮＶＩＴＥを再度送信する処理について説明する。図６は、この処理のシーケンス図を示す。第２端末装置１００のユーザは、第２端末装置１００の操作部（図示省略）を操作することによって、第１端末装置６０のＳＩＰＵＲＩを入力することができる。これにより、第２端末装置１００は、図６に示される処理を開始する。
【００４５】
第２端末装置１００は、ユーザによって入力された第１端末装置６０のＳＩＰＵＲＩを含む通信情報１２２（図４参照）が通信情報記憶領域１２０に記憶されているのか否かを判断する。ここで肯定的に判断された場合、第２端末装置１００は、送信側チャレンジコード２２４を生成する。次いで、第２端末装置１００は、通信情報１２２に含まれるグローバルアドレスＧ１＋ＧＰ１を送信先として、ＩＮＶＩＴＥ２２０を送信する。ＩＮＶＩＴＥ２２０は、ＳＩＰサーバ１０を経由しない。ＩＮＶＩＴＥ２２０は、送信先である第１端末装置６０のＳＩＰＵＲＩと、送信元である第２端末装置１００のＳＩＰＵＲＩと、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２と、フラグ２２２と、送信側チャレンジコード２２４とを含む。フラグ２２２は、ＳＩＰサーバ１０を介さずに、ＩＮＶＩＴＥ、２００  ＯＫ、及び、ＡＣＫを通信する機能（以下では直接通信機能と呼ぶ）を有することを示すフラグである。
【００４６】
第１端末装置６０は、ＩＮＶＩＴＥ２２０を受信する。第１端末装置６０は、通話要求通知（例えば所定の音の出力）を実行する。通話要求通知が実行されている間に、ユーザによって通話開始操作が実行された場合に、第１端末装置６０は、レスポンスコード生成処理を実行する（Ｓ１０）。即ち、第１端末装置６０は、自身の秘密鍵Ｊ１（図３参照）を利用して、ＩＮＶＩＴＥ２２０に含まれる送信側チャレンジコード２２４を暗号化することによって、受信側レスポンスコード２３０を生成する。次いで、第１端末装置６０は、ＩＮＶＩＴＥ２２０に含まれるグローバルアドレスＧ２＋ＧＰ２を送信先として、２００  ＯＫ２２６を送信する。２００  ＯＫ２２６は、ＳＩＰサーバ１０を経由しない。２００  ＯＫ２２６は、直接通信機能に対応することを示すフラグ２２８と、受信側レスポンスコード２３０とを含む。
【００４７】
第２端末装置１００は、２００  ＯＫ２２６を受信する。第２端末装置１００は、通信情報１２２（図４参照）に含まれる公開鍵Ｋ１を利用して、２００  ＯＫ２２６に含まれる受信側レスポンスコード２３０を復号化することによって、復号化データを生成する。次いで、第２端末装置１００は、上記の送信側チャレンジコード２２４と復号化データとが一致するのか否かを判断する判断処理を実行する（Ｓ１２）。２つのデータが一致する場合、第２端末装置１００は、グローバルアドレスＧ１＋ＧＰ１を送信先として、ＡＣＫ２３２を送信する。ＡＣＫ２３２は、ＳＩＰサーバ１０を経由しない。ＡＣＫ２３２は、直接通信機能に対応することを示すフラグ２３４を含む。
【００４８】
第１端末装置６０は、ＡＣＫ２３２を受信する。これにより、第１端末装置６０と第２端末装置１００との間でＲＴＰ通信セッションが確立される。第１端末装置６０と第２端末装置１００は、音声データ通信処理を実行する（Ｓ１４，Ｓ１６）。
【００４９】
上記の図６の例では、ＩＮＶＩＴＥを送信する側の第２端末装置１００は、チャレンジ認証を実行するが、ＩＮＶＩＴＥを受信する側の第１端末装置６０は、チャレンジ認証を実行しない。本実施例では、ＩＮＶＩＴＥを受信する側の第１端末装置６０がチャレンジ認証を実行することがある。例えば、第１端末装置６０のユーザは、第１端末装置６０の操作部（図示省略）を操作することによって、ＩＮＶＩＴＥの送信元（例えば第２端末装置１００）に対してチャレンジ認証を実行するのか否かを選択することができる。チャレンジ認証を実行することが選択された場合、第１端末装置６０の記憶領域９２（図３参照）にチェック設定としてＯＮが記憶される。一方において、チャレンジ認証を実行しないことが選択された場合、第１端末装置６０の記憶領域９２にチェック設定としてＯＦＦが記憶される。チェック設定がＯＮの場合、ＩＮＶＩＴＥを受信する側の第１端末装置６０がチャレンジ認証を実行する。図７は、この場合の処理のシーケンス図を示す。なお、第１端末装置６０と同様に、第２端末装置１００の記憶領域１３２（図４参照）にもチェック設定が記憶されている。
【００５０】
第２端末装置１００がフラグ２４２や送信側チャレンジコード２４４等を含むＩＮＶＩＴＥ２４０を送信する点は、図６の例の場合と同様である。また、第１端末装置６０がレスポンスコード生成処理（Ｓ１８）を実行して受信側レスポンスコード２５０を生成する点も、図６の例の場合と同様である。図６の例の場合と異なり、第１端末装置６０は、受信側チャレンジコード２５２をさらに生成する。次いで、第１端末装置６０は、直接通信機能に対応することを示すフラグ２４８と、受信側レスポンスコード２５０と、受信側チャレンジコード２５２とを含む２００  ＯＫ２４６を第２端末装置１００に送信する。
【００５１】
第２端末装置１００が判断処理（Ｓ２０）を実行する点も、図６の例の場合と同様である。図６の例の場合と異なり、第２端末装置１００は、レスポンスコード生成処理を実行する（Ｓ２２）。即ち、第２端末装置１００は、自身の秘密鍵Ｊ２（図４参照）を利用して、２００  ＯＫ２４６に含まれる受信側チャレンジコード２５２を暗号化することによって、送信側レスポンスコード２５８を生成する。次いで、第２端末装置１００は、直接通信機能に対応することを示すフラグ２５６と、送信側レスポンスコード２５８とを含むＡＣＫ２５４を第１端末装置６０に送信する。
【００５２】
第１端末装置６０は、ＡＣＫ２５４を受信する。第１端末装置６０は、通信情報８２（図３参照）に含まれる公開鍵Ｋ２を利用して、ＡＣＫ２５４に含まれる送信側レスポンスコード２５８を復号化することによって、復号化データを生成する。次いで、第１端末装置６０は、上記の受信側チャレンジコード２５２と復号化データとが一致するのか否かを判断する判断処理を実行する（Ｓ２４）。２つのデータが一致する場合、第１端末装置６０は、データ（具体的には音声データ）を通信することを開始する。即ち、Ｓ２４の判断処理において肯定的に判断された場合に、ＲＴＰ通信セッションが確立されることになる。第１端末装置６０と第２端末装置１００は、音声データ通信処理を実行する（Ｓ２６，Ｓ２８）。
【００５３】
（端末装置のＩＮＶＩＴＥ送信処理）
続いて、第２端末装置１００の制御部１０２（図４参照）が実行する処理について、詳しく説明する。なお、第１端末装置６０の制御部６２（図３参照）は、第２端末装置１００の制御部１０２と同様の処理を実行する。まず、制御部１０２が実行するＩＮＶＩＴＥ送信処理について説明する。図８及び図９は、ＩＮＶＩＴＥ送信処理のフローチャートを示す。図８及び図９の処理は、ＩＮＶＩＴＥの送信先のＳＩＰＵＲＩがユーザによって入力されたことをトリガとして開始される。
【００５４】
制御部１０２は、ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩを含む通信情報が通信情報記憶領域１２０（図４参照）に記憶されているのか否かを判断する（Ｓ６０）。ここでＹＥＳの場合、図９のＳ１００に進み、ＮＯの場合、Ｓ６２に進む。Ｓ６２では、制御部１０２は、ＩＮＶＩＴＥをＳＩＰサーバ１０に送信する。
【００５５】
制御部１０２は、Ｓ６２で送信されたＩＮＶＩＴＥに対するレスポンスとしてエラーレスポンスが受信されることを監視している（Ｓ６４）。ここでＹＥＳの場合、制御部１０２は、図示省略の表示部にエラーを表示させる（Ｓ６６）。この場合、ＩＮＶＩＴＥ送信処理が終了する。
【００５６】
制御部１０２は、Ｓ６２で送信されたＩＮＶＩＴＥに対するレスポンスとして２００  ＯＫが受信されることを監視している（Ｓ６８）。ここでＹＥＳの場合、制御部１０２は、ＡＣＫをＳＩＰサーバ１０に送信する（Ｓ７０）。この結果、ＩＮＶＩＴＥの送信先（例えば第１端末装置６０）と第２端末装置１００との間でＲＴＰ通信セッションが確立される。なお、Ｓ６８で受信された２００  ＯＫは、ＩＮＶＩＴＥの送信先のグローバルアドレスを含んでいる。制御部１０２は、ＲＴＰ通信セッションが確立されている間は、このグローバルアドレスを送信先として、データ（例えばＳ７２の公開鍵取得要求やＳ８０の音声データ）を送信する。
【００５７】
制御部１０２は、第２端末装置１００の公開鍵Ｋ２を含む公開鍵取得要求を送信する（Ｓ７２）。制御部１０２は、Ｓ７２で送信された公開鍵取得要求に対するレスポンスとしてエラーレスポンスが受信されることを監視している（Ｓ７４）。また、Ｓ７４では、制御部１０２は、Ｓ７２で公開鍵取得要求が送信されてから所定時間が経過することを監視している。Ｓ７４でＹＥＳの場合、後述のＳ７８をスキップしてＳ８０に進む。
【００５８】
制御部１０２は、Ｓ７２で送信された公開鍵取得要求に対するレスポンスとして公開鍵を含むレスポンスが受信されることを監視している（Ｓ７６）。ここでＹＥＳの場合、制御部１０２は、ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩと、Ｓ６８で受信された２００  ＯＫに含まれるＩＮＶＩＴＥの送信先のグローバルアドレスと、Ｓ７６で受信されたレスポンスに含まれる公開鍵とが対応づけられた通信情報（例えば通信情報１２２（図４参照））を通信情報記憶領域１２０に記憶する（Ｓ７８）。Ｓ７８を終えると、Ｓ８０に進む。Ｓ８０では、制御部１０２は、確立されたＲＴＰ通信セッションを利用して、音声データを通信する。
【００５９】
上述したように、Ｓ６０でＹＥＳの場合（ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩが通信情報記憶領域１２０（図４参照）に記憶されている場合）、図９のＳ１００に進む。Ｓ１００では、制御部１０２は、通信情報記憶領域１２０を参照することによって、ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩに対応づけられているグローバルアドレスを特定する。また、制御部１０２は、ランダムに数値を取得することによって、送信側チャレンジコードを生成する。次いで、制御部１０２は、特定されたグローバルアドレスを送信先として、ＩＮＶＩＴＥを送信する。このＩＮＶＩＴＥは、直接通信機能に対応していることを示すフラグと、送信側チャレンジコードとを含む。
【００６０】
制御部１０２は、Ｓ１００で送信されたＩＮＶＩＴＥに対するレスポンスとしてエラーレスポンスが受信されることを監視している（Ｓ１０２）。また、Ｓ１０２では、制御部１０２は、Ｓ１００でＩＮＶＩＴＥが送信されてから所定時間が経過することを監視している。Ｓ１０２でＹＥＳの場合、制御部１０２は、図８のＳ６２に進み、ＩＮＶＩＴＥをＳＩＰサーバ１０に送信する。
【００６１】
制御部１０２は、Ｓ１００で送信されたＩＮＶＩＴＥに対するレスポンスとして２００  ＯＫが受信されることを監視している（Ｓ１０４）。ここでＹＥＳの場合、制御部１０２は、通信情報記憶領域１２０を参照することによって、ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩに対応づけられている公開鍵（例えばＫ１）を特定する。制御部１０２は、特定された公開鍵を利用して、Ｓ１０４で受信された２００  ＯＫに含まれる受信側レスポンスコードを復号化することによって、復号化データを生成する（Ｓ１０６）。制御部１０２は、復号化データと、Ｓ１００で送信された送信側チャレンジコードとが一致するのか否かを判断する（Ｓ１０８）。ここでＮＯの場合、制御部１０２は、図８のＳ６２に進み、ＩＮＶＩＴＥをＳＩＰサーバ１０に送信する。
【００６２】
Ｓ１０８でＹＥＳの場合、制御部１０２は、Ｓ１０４で受信された２００  ＯＫに受信側チャレンジコードが含まれているのか否かを判断する（Ｓ１１０）。ここでＮＯの場合、制御部１０２は、Ｓ１００で特定されたグローバルアドレス（ユーザによって入力されたＩＮＶＩＴＥの送信先のＳＩＰＵＲＩに対応づけられているグローバルアドレス）を送信先として、ＡＣＫを送信する（Ｓ１１２）。ここで送信されるＡＣＫは、送信側レスポンスコードを含んでいない。Ｓ１１２でＡＣＫを送信することによって、ＩＮＶＩＴＥの送信先と第２端末装置１００との間でＲＴＰ通信セッションが確立される。Ｓ１１２を終えると、Ｓ１２０に進む。Ｓ１２０では、制御部１０２は、確立されたＲＴＰ通信セッションを利用して、音声データを通信する。
【００６３】
一方において、Ｓ１１０でＹＥＳの場合、制御部１０２は、秘密鍵Ｊ２（図４参照）を利用して受信側チャレンジコードを暗号化することによって、送信側レスポンスコードを生成する（Ｓ１１４）。制御部１０２は、Ｓ１００で特定されたグローバルアドレスを送信先として、Ｓ１１４で生成された送信側レスポンスコードを含むＡＣＫを送信する（Ｓ１１６）。制御部１０２は、Ｓ１１６で送信されたＡＣＫに対するレスポンスとしてエラーレスポンスが受信されることを監視する（Ｓ１１８）。ここでＮＯの場合（即ちＳ１１６でＡＣＫが送信されてからエラーレスポンスを受信することなく所定時間が経過した場合）、制御部１０２は、Ｓ１２０に進み、音声データを通信する。一方において、Ｓ１１８でＹＥＳの場合、制御部１０２は、図８のＳ６２に進み、ＩＮＶＩＴＥをＳＩＰサーバ１０に送信する。
【００６４】
（端末装置のＩＮＶＩＴＥ受信処理）
続いて、第２端末装置１００の制御部１０２が実行するＩＮＶＩＴＥ受信処理について説明する。図１０及び図１１は、ＩＮＶＩＴＥ受信処理のフローチャートを示す。図１０及び図１１の処理は、ＩＮＶＩＴＥが受信されたことをトリガとして開始される。
【００６５】
制御部１０２は、受信されたＩＮＶＩＴＥに、直接通信機能に対応していることを示すフラグと送信側チャレンジコードとが含まれるのか否かを判断する（Ｓ１３０）。即ち、制御部１０２は、例えば、第１端末装置６０が図９のＳ１００の処理を実行することによって、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２を送信先として送信したＩＮＶＩＴＥが受信されたのか否かを判断する。ここでＹＥＳの場合、図１１のＳ１６０に進み、ＮＯの場合、Ｓ１３２に進む。
【００６６】
Ｓ１３２では、制御部１０２は、受信されたＩＮＶＩＴＥが、ＳＩＰサーバ１０から送信されたものであるのか否かを判断する。ここでＮＯの場合、制御部１０２は、受信されたＩＮＶＩＴＥの送信元にエラーレスポンスを送信する（Ｓ１３４）。この場合、ＩＮＶＩＴＥ受信処理が終了する。
【００６７】
フローチャートには示していないが、Ｓ１３２でＹＥＳの場合、制御部１０２は、通話要求通知を実行する。ユーザによって通話開始操作が実行された場合、制御部１０２は、２００  ＯＫをＳＩＰサーバ１０に送信する（Ｓ１３６）。ここで送信された２００  ＯＫは、ＳＩＰサーバ１０によってＩＮＶＩＴＥの送信元（例えば第１端末装置６０）に転送される。ＩＮＶＩＴＥの送信元は、ＡＣＫをＳＩＰサーバ１０に送信する（図８のＳ７０参照）。ここで送信されたＡＣＫは、ＳＩＰサーバ１０によって第２端末装置１００に転送される。第２端末装置１００は、ＡＣＫを受信する（Ｓ１３８）。この結果、ＩＮＶＩＴＥの送信元と第２端末装置１００との間でＲＴＰ通信セッションが確立される。
【００６８】
制御部１０２は、Ｓ１３８でＡＣＫが受信されてから（ＲＴＰ通信セッションが確立されてから）所定時間の間は、公開鍵取得要求を受信することを監視している（Ｓ１４０）。ここでＮＯの場合（即ちＳ１３８でＡＣＫが受信されてから公開鍵取得要求を受信することなく上記の所定時間が経過した場合）、制御部１０２は、Ｓ１４６に進み、確立されたＲＴＰ通信セッションを利用して、音声データを通信する（Ｓ１４６）。
【００６９】
一方において、Ｓ１４０でＹＥＳの場合、制御部１０２は、第２端末装置１００の公開鍵Ｋ２を含むレスポンスを送信する（Ｓ１４２）。次いで、制御部１０２は、受信されたＩＮＶＩＴＥに含まれる送信元のＳＩＰＵＲＩと、受信されたＩＮＶＩＴＥに含まれる送信元のグローバルアドレスと、Ｓ１４０で受信された公開鍵取得要求に含まれる公開鍵とが対応づけられた通信情報を通信情報記憶領域１２０（図４参照）に記憶する（Ｓ１４４）。Ｓ１４４を終えると、制御部１０２は、確立されたＲＴＰ通信セッションを利用して、音声データを通信する（Ｓ１４６）。
【００７０】
フローチャートには示していないが、Ｓ１３０でＹＥＳの場合、制御部１０２は、通話要求通知を実行する。ユーザによって通話開始操作が実行された場合、制御部１０２は、秘密鍵Ｊ２（図４参照）を利用して、受信されたＩＮＶＩＴＥに含まれる送信側チャレンジコードを暗号化することによって、受信側レスポンスコードを生成する（Ｓ１６０）。次いで、制御部１０２は、記憶領域１３２に記憶されているチェック設定がＯＮであるのか否かを判断する。ここでＮＯの場合、Ｓ１６４に進み、ＹＥＳの場合、Ｓ１６８に進む。
【００７１】
受信されたＩＮＶＩＴＥには、ＩＮＶＩＴＥの送信元のグローバルアドレスが含まれている。Ｓ１６４では、制御部１０２は、ＩＮＶＩＴＥの送信元のグローバルアドレスを送信先として、Ｓ１６０で生成された受信側レスポンスコードを含む２００  ＯＫを送信する（Ｓ１６４）。なお、ここで送信される２００  ＯＫは、受信側チャレンジコードを含まない。ＩＮＶＩＴＥの送信元は、Ｓ１６４で送信された２００  ＯＫを受信すると、判断処理を実行する（図９のＳ１０８参照）。ここで肯定的な判断結果が得られた場合、ＩＮＶＩＴＥの送信元は、ＡＣＫを第２端末装置１００に送信する（図９のＳ１１２参照）。この結果、第２端末装置１００は、ＡＣＫを受信する（Ｓ１６６）。ここで受信されるＡＣＫは、送信側レスポンスコードを含まない。第２端末装置１００がＡＣＫを受信すると、ＩＮＶＩＴＥの送信元と第２端末装置１００との間でＲＴＰ通信セッションが確立される。制御部１０２は、確立されたＲＴＰ通信セッションを利用して、音声データを通信する（Ｓ１７８）。
【００７２】
一方において、Ｓ１６２でＹＥＳの場合、制御部１０２は、受信側チャレンジコードを生成する。次いで、制御部１０２は、ＩＮＶＩＴＥの送信元のグローバルアドレスを送信先として、Ｓ１６０で生成された受信側レスポンスコードと、受信側チャレンジコードとを含む２００  ＯＫを送信する（Ｓ１６８）。ＩＮＶＩＴＥの送信元は、Ｓ１６８で送信された２００  ＯＫを受信すると、判断処理を実行する（図９のＳ１０８参照）。ここで肯定的な判断結果が得られた場合、ＩＮＶＩＴＥの送信元は、送信側レスポンスコードを含むＡＣＫを第２端末装置１００に送信する（図９のＳ１１６参照）。この結果、第２端末装置１００は、ＡＣＫを受信する（Ｓ１７０）。
【００７３】
Ｓ１７０でＡＣＫを受信すると、制御部１０２は、通信情報記憶領域１２０を参照することによって、ＩＮＶＩＴＥの送信元のＳＩＰＵＲＩに対応づけられている公開鍵を特定する。制御部１０２は、特定された公開鍵を利用して、Ｓ１７０で受信されたＡＣＫに含まれる送信側レスポンスコードを復号化することによって、復号化データを生成する（Ｓ１７２）。制御部１０２は、復号化データと、Ｓ１６８で送信された受信側チャレンジコードとが一致するのか否かを判断する（Ｓ１７４）。ここでＮＯの場合、制御部１０２は、エラーレスポンスを送信する。この場合、ＩＮＶＩＴＥ受信処理が終了する。一方において、Ｓ１７４でＹＥＳの場合、制御部１０２は、確立されたＲＴＰ通信セッションを利用して、音声データを通信する（Ｓ１７８）。
【００７４】
（端末装置の通信情報管理処理）
続いて、制御部１０２が実行する通信情報管理処理（フローチャートは図示省略している）について説明する。制御部１０２は、通信情報記憶領域１２０に記憶されている各通信情報（例えば通信情報１２２）について、当該通信情報が記憶されてからの経過時間を管理している。制御部１０２は、経過時間が予め決められている所定時間に達した通信情報が存在する場合に、その通信情報を通信情報記憶領域１２０から削除する。これにより、多数の通信情報が通信情報記憶領域１２０に記憶され続けて、記憶部１１０の残存メモリ量を圧迫することを抑制することができる。
【００７５】
本実施例の電話ネットワークシステム２について詳しく説明した。本実施例によると、第２端末装置１００は、第１端末装置６０と１回目の電話通信を行なう際に、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１と公開鍵Ｋ１とを記憶する（図８のＳ７８参照）。第２端末装置１００は、１回目の電話通信が終了した後に、第１端末装置６０と電話通信を再開させるべき際に、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を送信先としてＩＮＶＩＴＥを送信する。このＩＮＶＩＴＥには、送信側チャレンジコードが含まれている（図９のＳ１００参照）。第２端末装置１００は、グローバルアドレスＧ１＋ＧＰ１を用いて第１端末装置６０と実際に電話通信することができるのか否かを、２００  ＯＫに含まれる受信側レスポンスコードと公開鍵Ｋ１とを利用して判断する（図９のＳ１０８参照）。ここで肯定的な判断結果が得られた場合に、第２端末装置１００は、グローバルアドレスＧ１＋ＧＰ１を送信先としてＡＣＫを送信する（図９のＳ１１２，Ｓ１１６参照）。この結果、第２端末装置１００は、目的の第１端末装置６０と電話通信を再開させることができる。第２端末装置１００が第１端末装置６０と電話通信を再開させるべき際には、ＩＮＶＩＴＥ、２００  ＯＫ、及び、ＡＣＫは、ＳＩＰサーバ１０を介さずに通信される。本実施例の構成によると、第２端末装置１００は、ＳＩＰサーバ１０を介さずにコマンド（ＩＮＶＩＴＥ、２００  ＯＫ、及び、ＡＣＫ）を通信することによって、目的の第１端末装置６０と電話通信を再開させることができる。
【００７６】
また、第２端末装置１００は、第１端末装置６０と電話通信を再開させるべき際に、グローバルアドレスＧ１＋ＧＰ１を用いて第１端末装置６０と通信することができない場合（図９のＳ１０８でＮＯの場合）に、ＳＩＰサーバ１０を介してＩＮＶＩＴＥを送信する（図８のＳ６２参照）。これにより、第２端末装置１００は、第１端末装置６０にグローバルアドレスＧ１＋ＧＰ１に代えて現在割り当てられているグローバルアドレスを用いて、第１端末装置６０と電話通信を行なうことができる。
【００７７】
また、第２端末装置１００は、第１端末装置６０の公開鍵Ｋ１を取得することができない場合（図８のＳ７４でＹＥＳの場合）に、Ｓ７８をスキップし、第１端末装置６０のグローバルアドレスＧ１＋ＧＰ１を記憶しない。チャレンジ認証を実行することができないグローバルアドレスが記憶部７０に記憶されないために、そのようなアドレスによって記憶部７０の残存メモリ容量が圧迫されるのを抑制することができる。
【００７８】
また、本実施例では、第２端末装置１００から第１端末装置６０にＩＮＶＩＴＥを送信することによって１回目の電話通信が行なわれる際に、第１端末装置６０も、第２端末装置１００の公開鍵Ｋ２を取得することができる。従って、第１端末装置６０は、第２端末装置１００と電話通信を再開させるべき際に、第２端末装置１００のグローバルアドレスＧ２＋ＧＰ２を用いて第２端末装置１００と実際に電話通信することができるのか否かを、公開鍵Ｋ２を利用して判断することができる。なお、第１端末装置６０が第２端末装置１００と電話通信を再開させるべき際には、ＩＮＶＩＴＥ、２００  ＯＫ、及び、ＡＣＫは、ＳＩＰサーバ１０を介さずに通信される。第１端末装置６０は、ＳＩＰサーバ１０を介さずにコマンドを送信することによって、目的の第２端末装置１００と電話通信を再開させることができる。
【００７９】
以上の説明から分かるように、本実施例の第１端末装置６０、第２端末装置１００、及び、ＳＩＰサーバ１０が、それぞれ、本発明の第１端末装置、第２端末装置、及び、接続管理サーバに対応する。第２端末装置１００がＳＩＰサーバ１０にＩＮＶＩＴＥを送信する側である場合、図８のＳ６２においてＩＮＶＩＴＥを送信する処理、及び、図８のＳ７０においてＡＣＫを送信する処理が、本発明の第１コマンド送信部が実行する処理に対応する。一方において、第２端末装置１００がＳＩＰサーバ１０からＩＮＶＩＴＥを受信する側である場合、図１０のＳ１３６において２００  ＯＫを送信する処理が、本発明の第１コマンド送信部が実行する処理に対応する。また、図８のＳ８０、及び、図１０のＳ１４６において通信される音声データが、本発明の第１データに対応する。第２端末装置１００がＩＮＶＩＴＥをＳＩＰサーバ１０に送信する側である場合、図８のＳ７６において公開鍵を含むレスポンスを受信する処理が、本発明の認証情報取得部が実行する処理に対応する。一方において、第２端末装置１００がＳＩＰサーバ１０からＩＮＶＩＴＥを受信する側である場合、図１０のＳ１４０において公開鍵を含む公開鍵取得要求を受信する処理が、本発明の認証情報取得部が実行する処理に対応する。また、図８のＳ７８、及び、図１０のＳ１４４において通信情報を記憶する処理が、本発明の記憶制御部が実行する処理に対応する。
【００８０】
また、図９のＳ１００においてＩＮＶＩＴＥを送信する処理が、本発明の第２コマンド送信部が実行する処理に対応し、図９のＳ１０８においてチャレンジ認証を実行する処理が、本発明の判断部が実行する処理に対応する。また、図９のＳ１０８でＹＥＳの場合に、図９のＳ１１２及びＳ１１６においてＡＣＫを送信する処理が、本発明の第３コマンド送信部が実行する処理に対応する。図９のＳ１２０において通信される音声データが、本発明の第２データに対応する。また、図９のＳ１０８でＮＯの場合に、図８のＳ６２においてＳＩＰサーバ１０にＩＮＶＩＴＥを送信する処理が、本発明の第４コマンド送信部が実行する処理に対応する。この場合、図８のＳ８０において通信される音声データが、本発明の第２データに対応する。
【００８１】
また、第２端末装置１００がＳＩＰサーバ１０にＩＮＶＩＴＥを送信する側である場合、図８のＳ７２において公開鍵取得要求を送信する処理が、本発明の公開鍵送信部が実行する処理に対応し、第２端末装置１００がＳＩＰサーバ１０からＩＮＶＩＴＥを受信する側である場合、図１０のＳ１４２において公開鍵を送信する処理が、本発明の公開鍵送信部が実行する処理に対応する。さらに、送信側チャレンジコードを含むＩＮＶＩＴＥを受信し（即ち図１０のＳ１３０でＹＥＳの場合）、図１１のＳ１６０において受信側レスポンスコードを生成し、図１１のＳ１６４及びＳ１６８において受信側レスポンスコードを含む２００  ＯＫを送信する処理が、本発明のチャレンジデータ通信部が実行する処理に対応する。また、図１１のＳ１６６及びＳ１７０においてＡＣＫを受信する処理が、本発明の第５コマンド受信部が実行する処理に対応する。この場合、図１１のＳ１７８において通信される音声データが、本発明の第３データに対応する。
【００８２】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００８３】
（１）上記の実施例の技術は、電話通信以外の通信システムにも適用することができる。例えば、ＦＡＸデータの通信システムや、映像データ及び音声データの通信システムにも適用することができる。
【００８４】
（２）ＳＩＰサーバ１０とＳＴＵＮサーバ４０は、一体に構成されていてもよい。また、実施例に記載された他の２以上のデバイス（例えば第１ＮＡＴルータ５２とＳＴＵＮサーバ４０）が一体に構成されてもよい。
【００８５】
（３）上記の実施例では、第１端末装置６０と第２端末装置１００は、互いに異なるローカルネットワーク５０，１５０に存在している。しかしながら、第１端末装置６０と第２端末装置１００は、同じローカルネットワーク内に存在していてもよい。この場合、第１端末装置６０と第２端末装置１００は、通信情報８２，１２２としてローカルアドレスを記憶していてもよい。この場合、第１端末装置６０と第２端末装置１００は、ローカルアドレスを用いて電話通信を再開させてもよい。
【００８６】
（４）上記の実施例では、各端末装置６０，１００は、自身のグローバルアドレスをＳＴＵＮサーバ４０に問い合わせする。しかしながら、各端末装置６０，１００は、ＵＰｎＰを利用して、自身のグローバルアドレスをＮＡＴルータ５２，１５２に問い合わせてもよい。
【００８７】
（５）上記の実施例では、例えば図５に示されるように、第２端末装置１００がＡＣＫ２０８を送信した後に、第１端末装置６０と第２端末装置１００との間で公開鍵Ｋ１，Ｋ２の交換が行なわれる。しかしながら、第２端末装置１００は、例えば、ＩＮＶＩＴＥ２００の中に公開鍵Ｋ２を含めるようにしてもよいし、ＡＣＫ２０８の中に公開鍵Ｋ２を含めるようにしてもよい。前者の場合、第１端末装置６０は、２００  ＯＫ２０４の中に公開鍵Ｋ１を含めるようにしてもよい。また、後者の場合、第１端末装置６０は、ＡＣＫ２０８（２１０）を受信すると、公開鍵Ｋ１を第２端末装置１００に送信してもよい。
【００８８】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００８９】
１０：ＳＩＰサーバ、４０：ＳＴＵＮサーバ、６０：第１端末装置、１００：第２端末装置、Ｇ１，Ｇ２：グローバルＩＰアドレス、ＧＰ１，ＧＰ２：グローバルポート番号、Ｊ１，Ｊ２：秘密鍵、Ｋ１，Ｋ２：公開鍵
【図１】
2010212793.tif 000003
【図２】
2010212793.tif 000004
【図３】
2010212793.tif 000005
【図４】
2010212793.tif 000006
【図５】
2010212793.tif 000007
【図６】
2010212793.tif 000008
【図７】
2010212793.tif 000009
【図８】
2010212793.tif 000010
【図９】
2010212793.tif 000011
【図１０】
2010212793.tif 000012
【図１１】
2010212793.tif 000013