(57)【要約】【課題】通信制御装置（ＮＡＴ）を介して通信を行う複数の情報処理装置間における通信の確立を、より確実に行うことができる通信システムを提供する。【解決手段】第１の情報処理装置１は、第２の通信制御装置４における基準ポートから所定のポート割り当て後に割り当てられるポートに対してバブルパケットを送信し、サーバ６は、そのバブルパケットの送信で用いられる、第１の通信制御装置３のポートであるバブルパケット送信ポートの位置を検出し、第２の情報処理装置２は、その検出されたバブルパケット送信ポートに対して、返信パケットを送信する。【選択図】図１
2006157941.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置と、第２の情報処理装置と、前記第１の情報処理装置の通信を制御する第１の通信制御装置と、前記第２の情報処理装置の通信を制御する第２の通信制御装置と、前記第１の情報処理装置と前記第２の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第１の情報処理装置は、
前記第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付部と、
前記基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを前記サーバに送信する検出用パケット送信部と、
前記バブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付部と、を備え
前記第２の情報処理装置は、
前記基準ポートの位置を検出するための基準ポート検出用パケットを送信する基準ポート検出用パケット送信部と、
前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付部と、
前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信部と、を備え、
前記サーバは、
前記第２の情報処理装置から送信された前記基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、
前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、
前記第１の情報処理装置から送信された前記ポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、
前記バブルパケット送信ポート情報を前記第２の情報処理装置に送信するバブルパケット送信ポート送信部と、を備えた通信システム。
【請求項２】
前記サーバは、
前記バブルパケット送信ポート検出部が前記バブルパケット送信ポートの位置を検出できなかった場合に、前記バブルパケット、および前記ポート検出用パケットを再度送信する旨の指示である再送信指示を前記第１の情報処理装置に送信する再送信指示送信部をさらに備え、
前記第１の情報処理装置は、
前記サーバから送信された前記再送信指示を受け付ける再送信指示受付部をさらに備え、前記検出用パケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記ポート検出用パケットを再度、前記サーバに送信し、
前記バブルパケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記バブルパケットを再度、前記サーバに送信する、請求項１記載の通信システム。
【請求項３】
前記第１の情報処理装置は、
前記返信パケット受付部が前記返信パケットを受け付けた場合に、当該返信パケットの送信で用いられた前記第２の通信制御装置のポートに対して、再返信パケットを送信する再返信パケット送信部をさらに備え、
前記第２の情報処理装置は、
前記再返信パケットを受け付ける再返信パケット受付部をさらに備えた、請求項１または２記載の通信システム。
【請求項４】
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、
前記第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付部と、
前記基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを送信する検出用パケット送信部と、
前記バブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付部と、を備えた第１の情報処理装置。
【請求項５】
前記基準ポートは、前記第２の通信制御装置で割り当てられたポートのうち、前記基準ポートの位置を検出するための基準ポート検出用パケットが前記第２の情報処理装置から送信された時点における最新のポートである、請求項４記載の第１の情報処理装置。
【請求項６】
前記検出用パケット送信部は、前記バブルパケット送信部が前記バブルパケットを送信する前後に、前記ポート検出用パケットを送信する、請求項４または５記載の第１の情報処理装置。
【請求項７】
前記バブルパケット、および前記ポート検出用パケットは、前記第１の通信制御装置における異なるポートを用いて送信されるものである、請求項６記載の第１の情報処理装置。
【請求項８】
前記バブルパケット、および前記ポート検出用パケットは、前記第１の情報処理装置において新たに割り当てられたポートを用いて送信される、請求項７記載の第１の情報処理装置。
【請求項９】
前記バブルパケット、および前記ポート検出用パケットを再度送信する旨の再送信指示を受け付ける再送信指示受付部をさらに備え、
前記検出用パケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記ポート検出用パケットを再度送信し、
前記バブルパケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記バブルパケットを再度送信する、請求項４記載の第１の情報処理装置。
【請求項１０】
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備えた、請求項４記載の第１の情報処理装置。
【請求項１１】
前記第２の通信制御装置における、前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートは、前記基準ポートから所定のポート割り当て後に割り当てられるポートである、請求項４記載の第１の情報処理装置。
【請求項１２】
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付部をさらに備え、
前記バブルパケット送信部は、前記基準ポートとのポート間隔が前記ポート幅情報の示す前記ポート幅のＭ倍（Ｍは１以上の整数）である前記バブルパケット送信対象ポートに対して前記バブルパケットを送信する、請求項１１記載の第１の情報処理装置。
【請求項１３】
前記返信パケット受付部が前記返信パケットを受け付けた場合に、当該返信パケットの送信で用いられた前記第２の通信制御装置のポートに対して、再返信パケットを送信する再返信パケット送信部をさらに備えた、請求項４記載の第１の情報処理装置。
【請求項１４】
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、
前記第１の通信制御装置は、前記第２の情報処理装置から前記第２の通信制御装置を介して、前記第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
前記バブルパケットの送信の対象の基準となる前記第１の通信制御装置におけるポートである基準ポートの位置を検出するための基準ポート検出用パケットを送信する基準ポート検出用パケット送信部と、
前記第２の情報処理装置からの前記バブルパケットの送信で用いられた、前記第２の通信制御装置のポートであるバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付部と、
前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信部と、を備えた第１の情報処理装置。
【請求項１５】
前記返信パケット送信部は、前記返信パケットを、前記第１の通信制御装置の異なるＮ個（Ｎは２以上の整数）のポートを用いて送信する、請求項１４記載の第１の情報処理装置。
【請求項１６】
前記Ｎ個のポートは、前記返信パケットの送信時に、前記第１の通信制御装置において新たに割り当てられるものである、請求項１５記載の第１の情報処理装置。
【請求項１７】
前記Ｎは、前記第１の通信制御装置における、前記基準ポートから前記バブルパケットが送信されたポートまでにおいて割り当て可能なポートの数以上である、請求項１５または１６記載の第１の情報処理装置。
【請求項１８】
前記返信パケットの送信で用いられた前記第１の通信制御装置のポートに対して、前記第２の情報処理装置から送信された再返信パケットを受け付ける再返信パケット受付部をさらに備えた、請求項１４記載の第１の情報処理装置。
【請求項１９】
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備えた、請求項１４記載の第１の情報処理装置。
【請求項２０】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、
前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装  置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、
前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、
前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、
前記バブルパケット送信ポート検出部が検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を前記第２の情報処理装置に送信するバブルパケット送信ポート送信部と、を備えたサーバ。
【請求項２１】
前記バブルパケット送信ポート検出部が前記バブルパケット送信ポートの位置を検出できなかった場合に、前記バブルパケット、および前記ポート検出用パケットを再度送信する旨の指示である再送信指示を前記第１の情報処理装置に送信する再送信指示送信部をさらに備えた、請求項２０記載のサーバ。
【請求項２２】
前記バブルパケット送信ポート検出部は、前記バブルパケットの送信の前後に送信された前記ポート検出用パケットを受け付け、当該ポート検出用パケットの送信で用いられた前記第１の通信制御装置における２つのポートと、前記バブルパケット送信ポートとが連続しているかどうか判断し、連続している場合には、前記２つのポートで挟まれるポートの位置を前記バブルパケット送信ポートの位置として検出する、請求項２０または２１記載のサーバ。
【請求項２３】
前記バブルパケット送信ポート検出部は、前記ポート検出用パケットの送信で用いられた前記第１の通信制御装置における２つのポートの間隔が、前記第１の通信制御装置におけるポート幅の２倍である場合に、連続していると判断する、請求項２２記載のサーバ。
【請求項２４】
前記第１の情報処理装置から前記第１の通信制御装置を介して送信された第１のポート幅検出用パケットを受け付け、当該第１のポート幅検出用パケットに基づいて前記第１の通信制御装置におけるポート幅を検出する第１のポート幅検出部をさらに備え、
前記バブルパケット送信ポート検出部は、前記第１のポート幅検出部が検出したポート幅を用いて前記判断を行う、請求項２３記載のサーバ。
【請求項２５】
前記第２の情報処理装置から前記第２の通信制御装置を介して送信された第２のポート幅検出用パケットを受け付け、当該第２のポート幅検出用パケットに基づいて前記第２の通信制御装置におけるポート幅を検出する第２のポート幅検出部と、
前記第２のポート幅検出部が検出した前記ポート幅を示す情報であるポート幅情報を前記第１の情報処理装置に送信するポート幅送信部と、をさらに備えた、請求項２０記載のサーバ。
【請求項２６】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して通信を行う通信方法であって、
前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するための基準ポート検出用パケットを、前記第２の情報処理装置が前記第２の通信制御装置を介して送信する基準ポート検出用パケット送信ステップと、
前記基準ポート検出用パケットを受け付け、前記基準ポートの位置を検出する基準ポート検出ステップと、
前記基準ポート検出ステップで検出された前記基準ポートの位置を示す情報である基準ポート情報を送信する基準ポート送信ステップと、
前記基準ポート情報を受け付ける基準ポート受付ステップと、
前記第１の情報処理装置が、前記基準ポート受付ステップで受け付けた基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出する前記バブルパケット送信ポート検出ステップと、
前記バブルパケット送信ポート検出ステップで検出された前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信ステップと、
前記バブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付ステップと、
前記バブルパケット送信ポート受付ステップで受け付けたバブルパケット送信ポート情報の示すバブルパケット送信ポートに対して、前記第２の情報処理装置から返信パケットを送信する返信ステップと、を備えた通信方法。
【請求項２７】
前記バブルパケット送信ポート検出ステップは、
前記バブルパケットを送信する前に、前記バブルパケット送信ポートを特定するための第１のポート検出用パケットを、前記第１の情報処理装置が前記第１の通信制御装置を介して送信する第１の送信ステップと、
前記第１のポート検出用パケットを受け付け、前記第１のポート検出用パケットの送信で用いられた前記第１の通信制御装置のポートである第１のポートの位置を検出する第１の検出ステップと、
前記バブルパケットを送信した後に、前記バブルパケット送信ポートを特定するための第２のポート検出用パケットを、前記第１の情報処理装置が前記第１の通信制御装置を介して送信する第２の送信ステップと、
前記第２のポート検出用パケットを受け付け、前記第２のポート検出用パケットの送信で用いられた前記第１の通信制御装置のポートである第２のポートの位置を検出する第２の検出ステップと、
前記第１のポートの位置、および前記第２のポートの位置に基づいて、前記バブルパケット送信ポートの位置を検出するポート検出ステップと、を含む、請求項２６記載の通信方法。
【請求項２８】
前記バブルパケット送信ポート検出ステップは、
前記第１の検出ステップ、および前記第２の検出ステップで位置の検出された前記第１のポート、および前記第２のポートと、前記バブルパケット送信ポートとが連続しているかどうか判断する判断ステップをさらに備え、
前記ポート検出ステップでは、前記判断ステップで連続していると判断された場合に、前記バブルパケット送信ポートの位置を検出する、請求項２７記載の通信方法。
【請求項２９】
前記判断ステップで、連続していないと判断された場合に、前記第１の送信ステップ、前記第１の検出ステップ、前記バブルパケット送信ステップ、前記第２の送信ステップ、前記第２の検出ステップ、および前記判断ステップを、当該判断ステップで、連続していると判断されるまで繰り返す、請求項２８記載の通信方法。
【請求項３０】
前記第１の情報処理装置が前記第２の通信制御装置のアドレスを取得する第１のアドレス取得ステップをさらに備え、
前記バブルパケット送信ステップでは、前記第１のアドレス取得ステップで取得したアドレスに対して前記バブルパケットを送信する、請求項２６から２９のいずれか記載の通信方法。
【請求項３１】
前記第２の情報処理装置が前記第１の通信制御装置のアドレスを取得する第２のアドレス取得ステップをさらに備え、
前記返信ステップでは、前記第２のアドレス取得ステップで取得したアドレスに対して前記返信パケットを送信する、請求項２６記載の通信方法。
【請求項３２】
前記返信ステップでの前記返信パケットの送信により、前記第１の情報処理装置と前記第２の情報処理装置との間の通信を確立できなかった場合には、再度、前記各ステップの処理を実行する、請求項２６記載の通信方法。
【請求項３３】
前記返信パケットを受け付ける返信受付ステップと、
前記返信受付ステップにおいて前記返信パケットが受け付けられた場合に、前記第１の情報処理装置が、前記返信パケットの送信で用いられた前記第２の通信制御装置のポートに対して、再返信パケットを送信する再返信ステップと、をさらに備えた、請求項２６記載の通信方法。
【請求項３４】
前記再返信ステップでの前記再返信パケットの送信により、前記第１の情報処理装置と前記第２の情報処理装置との間の通信を確立できなかった場合には、再度、前記各ステップの処理を実行する、請求項３３記載の通信方法。
【請求項３５】
コンピュータに、
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置における処理を実行させるためのプログラムであって、
前記第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付ステップと、
前記基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを送信する検出用パケット送信ステップと、
前記バブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付ステップと、を実行させるためのプログラム。
【請求項３６】
前記基準ポートは、前記第２の通信制御装置で割り当てられたポートのうち、前記基準ポートの位置を検出するための基準ポート検出用パケットが前記第２の情報処理装置から送信された時点における最新のポートである、請求項３５記載のプログラム。
【請求項３７】
前記検出用パケット送信ステップでは、前記バブルパケット送信ステップでバブルパケットを送信する前後に、前記ポート検出用パケットを送信する、請求項３５または３６記載のプログラム。
【請求項３８】
前記バブルパケット、および前記ポート検出用パケットは、前記第１の通信制御装置における異なるポートを用いて送信されるものである、請求項３７記載のプログラム。
【請求項３９】
前記バブルパケット、および前記ポート検出用パケットは、前記第１の情報処理装置において新たに割り当てられたポートを用いて送信される、請求項３８記載のプログラム。
【請求項４０】
コンピュータに、
前記バブルパケット、および前記ポート検出用パケットを再度送信する旨の再送信指示を受け付ける再送信指示受付ステップをさらに実行させ、
前記検出用パケット送信ステップでは、前記再送信指示受付ステップで前記再送信指示を受け付けた場合に、前記ポート検出用パケットを再度送信し、
前記バブルパケット送信ステップでは、前記再送信指示受付ステップで前記再送信指示を受け付けた場合に、前記バブルパケットを再度送信する、請求項３５記載のプログラム。
【請求項４１】
コンピュータに、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させるための、請求項３５記載のプログラム。
【請求項４２】
前記第２の通信制御装置における、前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートは、前記基準ポートから所定のポート割り当て後に割り当てられるポートである、請求項３５記載のプログラム。
【請求項４３】
コンピュータに、
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、
前記バブルパケット送信ステップでは、前記基準ポートとのポート間隔が前記ポート幅情報の示す前記ポート幅のＭ倍（Ｍは１以上の整数）である前記バブルパケット送信対象ポートに対して前記バブルパケットを送信する、請求項４２記載のプログラム。
【請求項４４】
コンピュータに、
前記返信パケット受付ステップで前記返信パケットを受け付けた場合に、当該返信パケットの送信で用いられた前記第２の通信制御装置のポートに対して、再返信パケットを送信する再返信パケット送信ステップをさらに実行させるための、請求項３５記載のプログラム。
【請求項４５】
コンピュータに、
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置における処理を実行させるためのプログラムであって、
前記第１の通信制御装置は、前記第２の情報処理装置から前記第２の通信制御装置を介して、前記第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
前記バブルパケットの送信の対象の基準となる前記第１の通信制御装置におけるポートである基準ポートの位置を検出するための基準ポート検出用パケットを送信する基準ポート検出用パケット送信ステップと、
前記第２の情報処理装置からの前記バブルパケットの送信で用いられた、前記第２の通信制御装置のポートであるバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付ステップと、
前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信ステップと、を実行させるためのプログラム。
【請求項４６】
前記返信パケット送信ステップでは、前記返信パケットを、前記第１の通信制御装置の異なるＮ個（Ｎは２以上の整数）のポートを用いて送信する、請求項４５記載のプログラム。
【請求項４７】
前記Ｎ個のポートは、前記返信パケットの送信時に、前記第１の通信制御装置において新たに割り当てられるものである、請求項４６記載のプログラム。
【請求項４８】
前記Ｎは、前記第１の通信制御装置における、前記基準ポートから前記バブルパケットが送信されたポートまでにおいて割り当て可能なポートの数以上である、請求項４６または４７記載のプログラム。
【請求項４９】
コンピュータに、
前記返信パケットの送信で用いられた前記第１の通信制御装置のポートに対して、前記第２の情報処理装置から送信された再返信パケットを受け付ける再返信パケット受付ステップをさらに実行させるための、請求項４５記載のプログラム。
【請求項５０】
コンピュータに、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させるための、請求項４５記載のプログラム。
【請求項５１】
コンピュータに、
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、
前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出ステップと、
前記基準ポート検出ステップで検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信ステップと、
前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、
前記バブルパケット送信ポート検出ステップで検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を前記第２の情報処理装置に送信するバブルパケット送信ポート送信ステップと、を実行させるためのプログラム。
【請求項５２】
第１の情報処理装置と、第２の情報処理装置と、前記第１の情報処理装置の通信を制御する第１の通信制御装置と、前記第２の情報処理装置の通信を制御する第２の通信制御装置と、前記第１の情報処理装置と前記第２の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第１の情報処理装置は、
前記第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付部と、
前記基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを前記サーバに送信する検出用パケット送信部と、
前記バブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付部と、
前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、
前記バブルパケット送信ポート検出部が検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を、前記サーバを介して前記第２の情報処理装置に送信するバブルパケット送信ポート送信部と、を備え
前記第２の情報処理装置は、
前記基準ポートの位置を検出するための基準ポート検出用パケットをサーバに送信する基準ポート検出用パケット送信部と、
前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付部と、
前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信部と、を備え、
前記サーバは、
前記第２の情報処理装置から送信された前記基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、
前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、
前記第１の情報処理装置から送信された前記ポート検出用パケットを受け付け、当該ポート検出用パケットに基づいて前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、を備えた通信システム。
【請求項５３】
前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、
前記バブルパケット送信ポート検出部が検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信部と、をさらに備えた、請求項４記載の第１の情報処理装置。
【請求項５４】
前記バブルパケット送信ポート検出部は、前記バブルパケット送信ポートの位置を検出できなかった場合に、前記ポート検出用パケットを再度送信する旨の指示を前記検出用パケット送信部に渡し、前記バブルパケットを再度送信する旨の指示を前記バブルパケット送信部に渡し、
前記検出用パケット送信部は、前記指示に応じて前記ポート検出用パケットを再度送信し、
前記バブルパケット送信部は、前記指示に応じて前記バブルパケットを再度送信する、請求項５３記載の第１の情報処理装置。
【請求項５５】
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出した前記第１の通信制御装置におけるポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項５３または５４記載の第１の情報処理装置。
【請求項５６】
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第１の通信制御装置におけるポート幅を示す情報であるポート幅情報を送信するポート幅送信部と、をさらに備えた、請求項１９記載の第１の情報処理装置。
【請求項５７】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、
前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、
前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、
前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、当該ポート検出用パケットに基づいて前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、を備えたサーバ。
【請求項５８】
前記第１の情報処理装置から前記第１の通信制御装置を介して送信された第１のポート幅検出用パケットを受け付け、当該第１のポート幅検出用パケットに基づいて前記第１のポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する第１のポート幅検出用ポート検出部と、
前記第１のポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第１の情報処理装置に送信する第１のポート幅検出用ポート情報送信部と、をさらに備えた、請求項５７記載のサーバ。
【請求項５９】
前記第２の情報処理装置から前記第２の通信制御装置を介して送信された第２のポート幅検出用パケットを受け付け、当該第２のポート幅検出用パケットに基づいて前記第２のポート幅検出用パケットが通過した前記第２の通信制御装置のポートの位置を検出する第２のポート幅検出用ポート検出部と、
前記第２のポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第２の情報処理装置に送信する第２のポート幅検出用ポート情報送信部と、をさらに備えた、請求項５７または５８記載のサーバ。
【請求項６０】
コンピュータに、
前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、
前記バブルパケット送信ポート検出ステップで検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信ステップと、をさらに実行させるための、請求項３５記載のプログラム。
【請求項６１】
前記検出用パケット送信ステップでは、前記バブルパケット送信ポート検出ステップにおいて前記バブルパケット送信ポートの位置を検出できなかった場合に、前記ポート検出用パケットを再度送信し、
前記バブルパケット送信ステップでは、前記バブルパケット送信ポート検出ステップにおいて前記バブルパケット送信ポートの位置を検出できなかった場合に、前記バブルパケットを再度送信する、請求項６０記載のプログラム。
【請求項６２】
コンピュータに、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップと、
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、をさらに実行させ、
前記バブルパケット送信ポート検出ステップでは、前記ポート幅検出ステップで検出した前記第１の通信制御装置におけるポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項６０または６１記載のプログラム。
【請求項６３】
コンピュータに、
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、
前記ポート幅検出用ポート情報受付ステップで受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、前記ポート幅検出ステップで検出した前記第１の通信制御装置におけるポート幅を示す情報であるポート幅情報を送信するポート幅送信ステップと、をさらに実行させるための、請求項５０記載のプログラム。
【請求項６４】
コンピュータに、
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、
前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出ステップと、
前記基準ポート検出ステップで検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信ステップと、
前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、当該ポート検出用パケットに基づいて前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出ステップと、
前記検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信ステップと、を実行させるためのプログラム。
【請求項６５】
情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、
前記情報処理装置は、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、前記バブルパケット送信部が前記バブルパケットを送信する前後に、前記サーバに送信する検出用パケット送信部と、を備えた、通信システム。
【請求項６６】
前記バブルパケット、および前記ポート検出用パケットは、前記情報処理装置において新たに割り当てられたポートを用いて送信される、請求項６５記載の通信システム。
【請求項６７】
前記サーバは、
前記情報処理装置から送信された前記ポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部を備える、請求項６５または６６記載の通信システム。
【請求項６８】
前記サーバは、
前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信部をさらに備えた、請求項６７記載の通信システム。
【請求項６９】
前記サーバは、
前記バブルパケット送信ポート検出部が前記バブルパケット送信ポートの位置を検出できなかった場合に、前記バブルパケット、および前記ポート検出用パケットを再度送信する旨の指示である再送信指示を前記情報処理装置に送信する再送信指示送信部をさらに備え、
前記情報処理装置は、
前記サーバから送信された前記再送信指示を受け付ける再送信指示受付部をさらに備え、前記検出用パケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記ポート検出用パケットを再度、前記サーバに送信し、
前記バブルパケット送信部は、前記再送信指示受付部が前記再送信指示を受け付けた場合に、前記バブルパケットを再度、前記サーバに送信する、請求項６７記載の通信システム。
【請求項７０】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項６７記載の通信システム。
【請求項７１】
前記情報処理装置は、
前記通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記通信制御装置のポート幅を検出するポート幅検出部をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出したポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項７０記載の通信システム。
【請求項７２】
前記情報処理装置は、
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、をさらに備え、
前記サーバは、
前記ポート検出用パケットを受け付け、当該ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信部と、を備えた、請求項６５または６６記載の通信システム。
【請求項７３】
前記情報処理装置は、
前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信部をさらに備えた、請求項７２記載の通信システム。
【請求項７４】
前記検出用パケット送信部は、前記バブルパケット送信ポート検出部が前記バブルパケット送信ポートの位置を検出できなかった場合に、前記ポート検出用パケットを再度送信し、
前記バブルパケット送信部は、前記バブルパケット送信ポート検出部が前記バブルパケット送信ポートの位置を検出できなかった場合に、前記バブルパケットを再度送信する、請求項７２記載の通信システム。
【請求項７５】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項７２記載の通信システム。
【請求項７６】
前記情報処理装置は、
前記通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記通信制御装置を介して送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記通信制御装置におけるポート幅を検出するポート幅検出部と、をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットが通過した前記通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出した前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項７５記載の通信システム。
【請求項７７】
前記バブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付部と、
前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信部と、を備えた第２の情報処理装置をさらに備え、
前記情報処理装置は、
前記第２の情報処理装置から送信された返信パケットを受け付ける返信パケット受付部をさらに備えた、請求項７３記載の通信システム。
【請求項７８】
請求項６５記載の通信システムを構成する情報処理装置。
【請求項７９】
請求項７７記載の通信システムを構成する第２の情報処理装置。
【請求項８０】
請求項６５記載の通信システムを構成するサーバ。
【請求項８１】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記情報処理装置において用いられる通信方法であって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、前記バブルパケット送信ステップで前記バブルパケットを送信する前後に、前記サーバに送信する検出用パケット送信ステップと、を備えた通信方法。
【請求項８２】
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、をさらに備えた請求項８１記載の通信方法。
【請求項８３】
前記バブルパケット送信ポート検出ステップで検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信ステップをさらに備えた、請求項８２記載の通信方法。
【請求項８４】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおいて用いられる通信方法であって、
前記通信制御装置に送信履歴を残すために前記情報処理装置が送信するバブルパケットの送信で用いられる前記通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記バブルパケットの送信の前後に前記情報処理装置から送信されたポート検出用パケットを受け付けるステップと、
前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するステップと、を備えた通信方法。
【請求項８５】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおいて用いられる通信方法であって、
前記通信制御装置に送信履歴を残すために前記情報処理装置が送信するバブルパケットの送信で用いられる前記通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記バブルパケットの送信の前後に前記情報処理装置から送信されたポート検出用パケットを受け付けるステップと、
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出するステップと、
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を前記情報処理装置に送信するステップと、を備えた通信方法。
【請求項８６】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記情報処理装置における処理を実行させるためのプログラムであって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、前記バブルパケット送信ステップで前記バブルパケットを送信する前後に、前記サーバに送信する検出用パケット送信ステップと、を実行させるためのプログラム。
【請求項８７】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおける処理を実行させるためのプログラムであって、
前記通信制御装置に送信履歴を残すために前記情報処理装置が送信するバブルパケットの送信で用いられる前記通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記バブルパケットの送信の前後に前記情報処理装置から送信されたポート検出用パケットを受け付けるステップと、
前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するステップと、を実行させるためのプログラム。
【請求項８８】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおける処理を実行させるためのプログラムであって、
前記通信制御装置に送信履歴を残すために前記情報処理装置が送信するバブルパケットの送信で用いられる前記通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記バブルパケットの送信の前後に前記情報処理装置から送信されたポート検出用パケットを受け付けるステップと、前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出するステップと、
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を前記情報処理装置に送信するステップと、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置間における通信を確立させる通信システム等に関するものである。
【背景技術】
【０００２】
まず、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）の分類について説明する。ＮＡＴには、送信ポート割り当てルールと受信フィルタルールがあり、その組み合わせによりＮＡＴの分類がなされる。送信ポート割り当てルールには、パケットの宛先（ＩＰアドレス、ポート）に依存せず、ＮＡＴのローカル側（たとえば、ＬＡＮ側）の情報処理装置のポートとＩＰアドレスが同じであれば、ＮＡＴに割り当てられるグローバル側（たとえば、インターネットなどのＷＡＮ側）のポートが同一となるＣｏｎｅタイプと、パケットの宛先アドレスごとに新しいポートが割り当てられるＡｄｄｒｅｓｓ
Ｓｅｎｓｉｔｉｖｅタイプと、パケットの宛先ポートごとに新しいポートが割り当てられるＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプがある。ＮＡＴのローカル側からパケットが送信されたポートに対してグローバル側からのパケットの受信可能性を判断する受信フィルタルールには、そのポートからパケットを送信したアドレスからのみしかパケットを受信しないＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタと、そのポートからパケットを送信したポートからのみしかパケットを受信しないＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタと、フィルタが存在しないＮｏフィルタがある。これらの送信ポート割り当てルールと、受信フィルタルールとを組み合わせることにより、ＮＡＴを下記の９種類に分類することができる（図３２参照）。
【０００３】
Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴ（以下、Ｆ  ＮＡＴとする）：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＮｏフィルタであるもの。
【０００４】
Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ（以下、Ｒ  ＮＡＴとする）：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００５】
Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ（以下、ＰＲ  ＮＡＴとする）：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００６】
Ｓｙｍｍｅｔｒｉｃ（ａ）  ＮＡＴ（以下、Ｓａ  ＮＡＴとする）：送信ポート割り当てルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＮｏフィルタであるもの。
【０００７】
Ａｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅ  Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ（以下、ＡＳ  ＮＡＴ、あるいはＳｂ  ＮＡＴとする）：送信ポート割り当てルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００８】
Ｓｙｍｍｅｔｒｉｃ（ｃ）  ＮＡＴ（以下、Ｓｃ  ＮＡＴとする）：送信ポート割り当てルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００９】
Ｓｙｍｍｅｔｒｉｃ（ｄ）  ＮＡＴ（以下、Ｓｄ  ＮＡＴとする）：送信ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＮｏフィルタであるもの。
【００１０】
Ｓｙｍｍｅｔｒｉｃ（ｅ）  ＮＡＴ（以下、Ｓｅ  ＮＡＴとする）：送信ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【００１１】
Ｐｏｒｔ  Ｓｅｎｓｉｔｉｖｅ  Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ（以下、ＰＳ  ＮＡＴ、あるいはＳｆ  ＮＡＴとする）：送信ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【００１２】
このようなＮＡＴを用いた通信において、図３３で示されるようなＰＣ１とＰＣ２との間でのサーバを介さない通信を確立する場合について考えられてきている。
【００１３】
上記の技術内容は、例えば、
【非特許文献１】Ｄ．Ｙｏｎ、「Ｃｏｎｎｅｃｔｉｏｎ−Ｏｒｉｅｎｔｅｄ  Ｍｅｄｉａ  Ｔｒａｎｓｐｏｒｔ  ｉｎ  ＳＤＰ」、［Ｏｎｌｉｎｅ］、２００３年３月、［２００４年３月２５日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ−ｄｒａｆｔｓ／ｄｒａｆｔ−ｉｅｔｆ−ｍｍｕｓｉｃ−ｓｄｐ−ｃｏｍｅｄｉａ−０５．ｔｘｔ＞
【非特許文献２】Ｙ．Ｔａｋｅｄａ、「Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ  Ｔｒａｖｅｒｓａｌ  ｕｓｉｎｇ  ＳＴＵＮ」、［Ｏｎｌｉｎｅ］、２００３年６月、［２００４年３月２５日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｃｓ．ｃｏｒｎｅｌｌ．ｅｄｕ／ｐｒｏｊｅｃｔｓ／ｓｔｕｎｔ／ｄｒａｆｔ−ｔａｋｅｄａ−ｓｙｍｍｅｔｒｉｃ−ｎａｔ−ｔｒａｖｅｒｓａｌ−００．ｔｘｔ＞
【非特許文献３】Ｊ．Ｒｏｓｅｎｂｅｒｇ、Ｊ．Ｗｅｉｎｂｅｒｇｅｒ、Ｃ．Ｈｕｉｔｅｍａ、Ｒ．Ｍａｈｙ、「ＳＴＵＮ  −  Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  （ＵＤＰ）  Ｔｈｒｏｕｇｈ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒｓ  （ＮＡＴｓ）」、［Ｏｎｌｉｎｅ］、２００３年３月、Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  ３４８９、［２００４年３月２４日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ３４８９．ｔｘｔ＞に記載されている。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、この場合においても、通信を確立することのできないＮＡＴの組み合わせがあり得る。図３３において、ＮＡＴ１のローカル側に接続された情報処理装置であるＰＣ１からＰＣ２に対して通信を行う場合に、ＮＡＴ１を送信側のＮＡＴ、ＮＡＴ２を受信側のＮＡＴと呼ぶこととする。すると、ＰＣ１とＰＣ２との間で通信を確立することができるＮＡＴの組み合わせは、図３４で示されるようになる。
【００１５】
ここで、図３４における「＊１」の接続は、従来から知られており、「＊２」の接続は、上記非特許文献１に記載されており、「＊３」の接続は、上記非特許文献２に記載されている。また、通信を確立することができるＮＡＴの組み合わせであっても、「＊３」の接続においては、ＮＡＴのポート幅が確実にわかり、かつ、受信側のＮＡＴの最新ポートの位置を確実に知ることができない限り、通信を確立することができず、不確実性が残るという問題もある。
【００１６】
さらに、図３４の組み合わせでは、Ｓａ  ＮＡＴやＳｃ〜Ｓｅ  ＮＡＴを用いた場合については含まれていないが、そのようなＮＡＴを用いた場合についても、ＮＡＴを介したピアー・ツー・ピアー（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）の通信（例えば、図３３におけるＰＣ１とＰＣ２間の通信）を確立できるようにしたい。
【００１７】
また、情報処理装置間の通信を確立する前提として、一方の情報処理装置から送信されたバブルパケット（ＮＡＴに送信履歴を残すために送信されるパケット）の通過したＮＡＴのポートの位置を確実に検出したい。
【００１８】
本発明の目的のひとつは、通信を制御する通信制御装置を介して通信を行う複数の情報処理装置間における通信の確立を、より確実に行うことができる通信システム等を提供することである。
【００１９】
本発明の他の目的は、情報処理装置から送信されたバブルパケットの通過した通信制御装置におけるポートの位置を検出することができる通信システム等を提供することである。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明による第１の情報処理装置は、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、前記第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付部と、前記基準ポート情報に基づいて、前記第１の通信制御装置を介して、前記バブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを送信する検出用パケット送信部と、前記バブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付部と、を備えたものである。
【００２１】
このような構成により、基準ポート情報に基づいたバブルパケットの送信と、ポート検出用パケットを用いて検出されたバブルパケット送信ポートへ送信された返信パケットの受け付けとを行うことができ、第１の情報処理装置と、第２の情報処理装置との間の通信を確立することができる。
【００２２】
また、本発明による第１の情報処理装置は、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、前記第１の通信制御装置は、前記第２の情報処理装置から前記第２の通信制御装置を介して、前記第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、前記バブルパケットの送信の対象の基準となる前記第１の通信制御装置におけるポートである基準ポートの位置を検出するための基準ポート検出用パケットを送信する基準ポート検出用パケット送信部と、前記第２の情報処理装置からの前記バブルパケットの送信で用いられた、前記第２の通信制御装置のポートであるバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付部と、前記バブルパケット送信ポート情報の示す前記バブルパケット送信ポートに対して返信パケットを送信する返信パケット送信部と、を備えたものである。
【００２３】
このような構成により、バブルパケットの送信によって送信履歴の残されているバブルパケット送信ポートに対して返信パケットを送信することができ、第１の情報処理装置と第２の情報処理装置との間の通信を確立することができ得る。
【００２４】
また、本発明によるサーバは、第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、前記バブルパケット送信ポート検出部が検出した前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を前記第２の情報処理装置に送信するバブルパケット送信ポート送信部と、を備えたものである。
【００２５】
このような構成により、第２の通信制御装置における基準ポートの位置を検出して、第１の情報処理装置に知らせることができ、またバブルパケット送信ポートの位置を検出して、第２の情報処理装置に知らせることができる。
【００２６】
また、本発明によるサーバは、第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、前記第１の通信制御装置に送信履歴を残すために前記第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる前記第２の通信制御装置におけるポートである基準ポートの位置を検出するために、前記第２の情報処理装置から前記第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて前記基準ポートの位置を検出する基準ポート検出部と、前記基準ポート検出部が検出した前記基準ポートの位置を示す基準ポート情報を前記第１の情報処理装置に送信する基準ポート送信部と、前記第１の情報処理装置から前記第２の通信制御装置への前記バブルパケットの送信で用いられる前記第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記第１の情報処理装置から送信されたポート検出用パケットを受け付け、当該ポート検出用パケットに基づいて前記ポート検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、を備えたものである。
【００２７】
このような構成により、第２の通信制御装置における基準ポートの位置を検出して、第１の情報処理装置に知らせることができ、またポート検出用パケットの通過した第１の通信制御装置の位置を検出して、第１の情報処理装置に知らせることができる。
【００２８】
また、本発明による通信システムは、情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、前記情報処理装置が、前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、前記バブルパケット送信部が前記バブルパケットを送信する前後に、前記サーバに送信する検出用パケット送信部と、を備えた、ものである。
【００２９】
このような構成により、情報処理装置から送信されたポート検出用パケットによって、バブルパケット送信ポートの位置を検出することができる。この検出は、サーバで行ってもよく、情報処理装置で行ってもよく、あるいは、他の装置で行ってもよい。その検出されたバブルパケット送信ポートの位置を用いて、そのバブルパケット送信ポートに他の装置からパケットを送信することによって、そのパケットが情報処理装置で受け付けられうることになる。
【発明の効果】
【００３０】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【発明を実施するための最良の形態】
【００３１】
（実施の形態１）
本発明の実施の形態１による通信システムについて、図面を参照しながら説明する。
【００３２】
図１は、本実施の形態による通信システムの構成を示すブロック図である。図１において、本実施の形態による通信システムは、第１の情報処理装置１と、第２の情報処理装置２と、第１の通信制御装置３と、第２の通信制御装置４と、サーバ６とを備える。第１の通信制御装置３、第２の通信制御装置４、およびサーバ６は、有線または無線の通信回線５を介して接続されている。この通信回線５は、例えば、インターネットである。
【００３３】
なお、図１では、第１の通信制御装置３、および第２の通信制御装置４にそれぞれ、第１の情報処理装置１、および第２の情報処理装置２のみが接続されている場合について示しているが、これ以外の装置が、第１の通信制御装置３、および第２の通信制御装置４に接続されていてもよい。
【００３４】
また、本実施の形態では、第１の情報処理装置１が送信側の情報処理装置として動作し、第２の情報処理装置２が受信側の情報処理装置として動作する場合について説明する。ここで、送信側の情報処理装置とは、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立する際における、通信（コネクション）の要求を出す側（言い換えれば、バブルパケットを送信する側）のことである。一方、受信側の情報処理装置とは、その反対側の情報処理装置、すなわち通信の要求を受け取る側（言い換えれば、バブルパケットに対する返信パケット送信する側）の情報処理装置のことである。なお、バブルパケットや返信パケットについては後述する。
【００３５】
図２は、第１の情報処理装置１の構成を示すブロック図である。図２において、第１の情報処理装置１は、通信部１１と、基準ポート受付部１２と、バブルパケット送信部１３と、検出用パケット送信部１４と、ポート幅検出用パケット送信部１５と、再送信指示受付部１６と、返信パケット受付部１７と、再返信パケット送信部１８と、ポート幅受付部１９とを備える。
【００３６】
通信部１１は、バブルパケット送信部１３等の第１の情報処理装置１の内部の各構成要素と、第１の通信制御装置３との間における通信を行う。
【００３７】
基準ポート受付部１２は、基準ポートの位置を示す基準ポート情報を受け付ける。ここで、基準ポートとは、第２の通信制御装置４における所定のポートであり、バブルパケットの送信の対象となるポート（バブルパケット送信対象ポート）の基準となるポートである。この基準ポート情報の受け付けとは、例えば、基準ポート情報を受信することである。なお、バブルパケットについては後述する。
【００３８】
バブルパケット送信部１３は、通信部１１および第１の通信制御装置３を介して、バブルパケットを第２の通信制御装置４に送信する。このバブルパケットは、基準ポート受付部１２が受け付けた基準ポート情報に基づいて送信される。具体的には、第２の通信制御装置４において、基準ポートから所定のポート割り当て後に割り当てられるポートであるバブルパケット送信対象ポートに対してバブルパケットが送信される。このバブルパケット送信対象ポートは、例えば、基準ポートとのポート間隔が、第２の通信制御装置４におけるポート幅のＭ倍（Ｍは１以上の整数）であるポートである。ここで、例えば、ポート番号の増加するようにポート割り当てがなされる場合には、バブルパケット送信対象ポートは基準ポートよりもポート番号の大きい方となる。その第２の通信制御装置４におけるポート幅は、後述するポート幅受付部１９で受け付けられたポート幅情報によって示される。また、バブルパケットとは、第１の情報処理装置１と第２の情報処理装置２との間における通信を確立するために、第１の通信制御装置３に送信履歴を残すためのパケットである。ここで、通信を確立するとは、第１の情報処理装置１と、第２の情報処理装置２との間において、サーバ６を介さないＰｅｅｒ  ｔｏ  Ｐｅｅｒの通信を開始することをいう。また、送信履歴を残すとは、第１の通信制御装置３において、後述する返信パケットを受け付けるためのポートを割り当てる（ポートを開く）ことをいう。このバブルパケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。このバブルパケットは、例えば、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のようなコネクションレス型のプロトコルによって送信される。
【００３９】
検出用パケット送信部１４は、ポート検出用パケットをサーバ６に送信する。このポート検出用パケットは、バブルパケット送信ポートの位置を検出するために用いられるものである。ここで、バブルパケット送信ポートとは、バブルパケットの送信で用いられる、第１の通信制御装置３のポートのことである。このポート検出用パケットは、バブルパケットが送信される前に、および／またはバブルパケットが送信された後に、送信される。なお、本実施の形態では、バブルパケットの送信の前後においてポート検出用パケットが送信される場合について説明する。このポート検出用パケットは、例えば、ＵＤＰや、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）によって送信される。このポート幅検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００４０】
ポート幅検出用パケット送信部１５は、第１の通信制御装置３におけるポート幅を検出するために用いられるポート幅検出用パケットを、第１の通信制御装置３を介してサーバ６に送信する。ここで、ポート幅とは、連続して使用される（割り当てられる）ポートの幅（間隔）のことである。例えば、ポート幅が「１」の場合には、ポート番号「２００００」のポートの次に使用されるポートは、ポート番号「２０００１」のポートである。一方、ポート幅が「２」の場合には、ポート番号「２００００」のポートの次に使用されるポートは、ポート番号「２０００２」のポートとなる。このポート幅検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００４１】
再送信指示受付部１６は、再送信指示を受け付ける。ここで、再送信指示とは、バブルパケット、およびポート検出用パケットを再送信する旨の指示である。この再送信指示は、例えば、受信によって受け付けられる。再送信指示受付部１６が再送信指示を受け付けた場合には、検出用パケット送信部１４、およびバブルパケット送信部１３は、それぞれ、ポート検出用パケットと、バブルパケットとを再度送信する。
【００４２】
返信パケット受付部１７は、第２の情報処理装置２から第２の通信制御装置４を介して送信された返信パケットを受け付ける。この返信パケットは、バブルパケット送信ポートに対して送信されたものである。この返信パケットは、例えば、受信によって受け付けられる。この返信パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００４３】
再返信パケット送信部１８は、返信パケット受付部１７が返信パケットを受け付けた場合に、再返信パケットを送信する。この再返信パケットは、返信パケットの送信で用いられた第２の通信制御装置４のポートに対して送信される。この再返信パケットは、例えば、ＵＤＰによって送信される。この再返信パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００４４】
ポート幅受付部１９は、サーバ６から送信されたポート幅情報を受け付ける。ここで、ポート幅情報とは、第２の通信制御装置４におけるポート幅を示す情報である。
【００４５】
図３は、第２の情報処理装置２の構成を示すブロック図である。図３において、第２の情報処理装置２は、通信部２１と、基準ポート検出用パケット送信部２２と、バブルパケット送信ポート受付部２３と、返信パケット送信部２４と、再返信パケット受付部２５と、ポート幅検出用パケット送信部２６とを備える。
【００４６】
通信部２１は、通信部１１と同様に、基準ポート検出用パケット送信部２２等の第２の情報処理装置２の内部の各構成要素と、第２の通信制御装置４との間における通信を行う。
【００４７】
基準ポート検出用パケット送信部２２は、基準ポートの位置を検出するための基準ポート検出用パケットをサーバ６に送信する。この基準ポートは、第２の通信制御装置４で割り当てられるポートのうち、基準ポート検出用パケットが送信された時点における最新のポート（最も新しく割り当てられたポート）である。すなわち、この基準ポート検出用パケットを送信することにより、サーバ６は、第２の通信制御装置４で割り当てられた最新のポートの位置を検出することができる。この基準ポート検出用パケットは、例えば、ＵＤＰや、ＴＣＰによって送信される。この基準ポート検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００４８】
バブルパケット送信ポート受付部２３は、バブルパケット送信ポート情報を受け付ける。ここで、バブルパケット送信ポート情報とは、バブルパケット送信ポートの位置を示す情報であり、例えば、バブルパケット送信ポートのポート番号によって、バブルパケット送信ポートの位置が示される。バブルパケット送信ポート情報は、例えば、受信によって受け付けられる。
【００４９】
返信パケット送信部２４は、第１の通信制御装置３におけるバブルパケット送信ポートに対して返信パケットを送信する。そのバブルパケット送信ポートの位置は、バブルパケット送信ポート受付部２３が受け付けたバブルパケット送信ポート情報によって示されるものである。この返信パケットは、第２の通信制御装置４の異なるＮ個（Ｎは２以上の整数）のポートを用いて送信される。そのＮ個のポートは、返信パケットの送信時に、第２の通信制御装置４において新たに割り当てられるポートである。ここで、そのＮの値は、第２の通信制御装置４における、基準ポートからバブルパケットが送信されたポート（バブルパケット送信対象ポート）までにおいて割り当て可能なポートの数（αとする）である。すなわち、返信パケットの送信時に、バブルパケット送信対象ポートがすでに他の機器によって用いられている場合以外には、α個の返信パケットを送信することによって、バブルパケット送信対象ポートを用いた返信パケットの送信が可能となる。この返信パケットは、例えば、ＵＤＰによって送信される。この返信パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００５０】
再返信パケット受付部２５は、第１の情報処理装置１から送信された再返信パケットを受け付ける。この再返信パケットは、返信パケットの送信で用いられた第２の通信制御装置４のポートに対して送信され、第２の情報処理装置２で受信されたたものである。第１の通信制御装置３および第２の通信制御装置４で用いているＮＡＴの種類によっては、第１の情報処理装置１が返信パケットを受け付けた時点で第１の情報処理装置１と第２の情報処理装置２との間の通信が確立することもあり得るが、第２の情報処理装置２が再返信パケットを受け付けることによってはじめて、第１の情報処理装置１と第２の情報処理装置２との間の通信が確立することもある。
【００５１】
ポート幅検出用パケット送信部２６は、第２の通信制御装置４におけるポート幅を検出するためのポート幅検出用パケットを、第２の通信制御装置４を介してサーバ６に送信する。このポート幅検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００５２】
第１の通信制御装置３は、第１の情報処理装置１の通信を制御するものであり、いわゆるナット（ＮＡＴ）を用いて、ローカル側（第１の情報処理装置１側）と、グローバル側（通信回線５側）との通信を制御する。このＮＡＴには、Ｆ  ＮＡＴ，Ｒ  ＮＡＴ，ＰＲ
ＮＡＴ，Ｓａ  ＮＡＴ，ＡＳ  ＮＡＴ，Ｓｃ  ＮＡＴ，Ｓｄ  ＮＡＴ，Ｓｅ  ＮＡＴ，ＰＳ  ＮＡＴがある。
【００５３】
また、第２の通信制御装置４は、第２の情報処理装置２の通信を制御するものであり、第１の通信制御装置３と同様に、ＮＡＴを用いている。後述するように、本実施の形態による通信システムでは、第１の通信制御装置３と、第２の通信制御装置４で用いているＮＡＴのすべての組み合わせにおいて、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができ得る。なお、第１の通信制御装置３、および第２の通信制御装置４では、ポートの割り当ては、所定のポート幅ごとに、ポート番号が増大するよう、あるいは減少するように行われるものとする。以下の説明では、ポート番号が増大するように割り当てられる場合について説明する。
【００５４】
図４は、サーバ６の構成を示すブロック図である。図４において、サーバ６は、通信部６１と、基準ポート検出部６２と、基準ポート送信部６３と、ポート幅検出部６４と、バブルパケット送信ポート検出部６５と、再送信指示送信部６６と、バブルパケット送信ポート送信部６７と、ポート幅送信部６８とを備える。
【００５５】
通信部６１は、基準ポート検出部６２等のサーバ６の各部と、第１の情報処理装置１や第２の情報処理装置２などとの通信を行う。
【００５６】
基準ポート検出部６２は、基準ポート検出用パケットを受け付け、その基準ポート検出用パケットに基づいて基準ポートの位置を検出する。基準ポート検出用パケットの受け付けは、例えば、受信によってなされる。その基準ポート検出用パケットは、第２の情報処理装置２から第２の通信制御装置４を介して送信されたものである。
【００５７】
基準ポート送信部６３は、基準ポート情報を第１の情報処理装置１に送信する。この基準ポート情報は、例えば、基準ポートのポート番号によって、基準ポートの位置を示す。
【００５８】
ポート幅検出部６４は、第１の通信制御装置３におけるポート幅を検出する。この検出は、第１の情報処理装置１から送信されるポート幅検出用パケットを受け付けることによってなされる。また、ポート幅検出部６４は、第２の通信制御装置４におけるポート幅を検出する。この検出は、第２の情報処理装置２から送信されるポート幅検出用パケットを受け付けることによってなされる。なお、第１の通信制御装置３におけるポート幅を検出する第１のポート検出部と、第２の通信制御装置４におけるポート幅を検出する第２のポート検出部とを備えてもよい。それらを１つで実現したのが、ポート幅検出部６４である。すなわち、ポート幅検出部６４のうち、第１の通信制御装置３におけるポート幅を検出する部分が、第１のポート検出部となり、第２の通信制御装置４におけるポート幅を検出する部分が、第２のポート検出部となる。
【００５９】
バブルパケット送信ポート検出部６５は、第１の通信制御装置３におけるバブルパケット送信ポートの位置を検出する。この検出は、第１の情報処理装置１から第１の通信制御装置３を介して送信されたポート検出用パケットを受け付けることによってなされる。このポート検出用パケットの受け付けは、例えば、受信によってなされる。具体的には、バブルパケット送信ポート検出部６５は、バブルパケットの送信の前後に送信されたポート検出用パケットを受け付ける。そして、そのポート検出用パケットの送信で用いられた第１の通信制御装置３における２つのポートと、バブルパケット送信ポートとが連続しているかどうか判断する。その判断の結果、それらのポートが連続している場合には、ポート検出用パケットの送信で用いられた第１の通信制御装置３における２つのポートで挟まれるポートの位置をバブルパケット送信ポートの位置として検出する。ここで、連続するとは、第１の通信制御装置３のポート幅の間隔で、その２つのポートとバブルパケット送信ポートが並んでいることをいう。なお、ポート検出用パケットの送信で用いられた第１の通信制御装置３の２つのポートの間隔が、ポート幅検出部６４によって検出された第１の通信制御装置３のポート幅の２倍である場合に、連続していると判断することができる。一方、ポート検出用パケットの送信で用いられた第１の通信制御装置３における２つのポートと、バブルパケット送信ポートとが連続していない場合には、バブルパケット送信ポートを検出できないこととなる。
【００６０】
再送信指示送信部６６は、バブルパケット送信ポート検出部６５がバブルパケット送信ポートの位置を検出できない場合に、再送信指示を第１の情報処理装置１に送信する。ここで、再送信指示とは、バブルパケット、およびポート検出用パケットを再度送信する旨の指示である。バブルパケット送信ポート検出部６５は、その再送信指示の送信に応じて再度送信されたポート検出用パケットを用いて、バブルパケット送信ポートの位置を検出する。なお、この再送信指示の送信は、バブルパケット送信ポート検出部６５がバブルパケット送信ポートの位置を検出できるまで、あるいは、所定の上限の回数（例えば、１０回など）や、所定の時間（例えば、３０秒など）等の所定の制限まで繰り返される。
【００６１】
バブルパケット送信ポート送信部６７は、バブルパケット送信ポート情報を第２の情報処理装置２に送信する。このバブルパケット送信ポート情報で示されるバブルパケット送信ポートの位置は、バブルパケット送信ポート検出部６５によって検出されたものである。
【００６２】
ポート幅送信部６８は、ポート幅情報を第１の情報処理装置１に送信する。ここで、ポート幅情報とは、ポート幅検出部６４で検出された第２の通信制御装置４におけるポート幅を示す情報である。
【００６３】
次に、本実施の形態による通信システムの動作について説明する。特に、図５のフローチャートを用いて、第１の情報処理装置１と第２の情報処理装置２とが通信を開始するまでの通信方法について説明する。
【００６４】
（ステップＳ１０１）第２の情報処理装置２から基準ポート検出用パケットがサーバ６に送信され、その基準ポート検出用パケットに基づいて、基準ポートの位置が検出される。そして、その基準ポートの位置を示す基準ポート情報が、サーバ６から第１の情報処理装置１に送信される。なお、ステップＳ１０１の詳細な処理については、後述する。
【００６５】
（ステップＳ１０２）第１の情報処理装置１は、基準ポート情報に基づいて、バブルパケットを第２の通信制御装置４に送信する。また、バブルパケット送信ポートの位置の検出に用いられるポート検出用パケットをサーバ６に送信する。なお、ステップＳ１０２の詳細な処理については、後述する。
【００６６】
（ステップＳ１０３）サーバ６のバブルパケット送信ポート検出部６５は、ステップＳ１０２で受け付けたポート検出用パケットに基づいて、バブルパケット送信ポートの位置を検出できるかどうか判断する。そして、検出できる場合には、ステップＳ１０４に進み、検出できない場合には、再送信指示送信部６６が再送信指示を第１の情報処理装置１に送信してステップＳ１０２に戻る。その再送信指示は、第１の情報処理装置１の再送信指示受付部１６によって受け付けられる。
【００６７】
（ステップＳ１０４）サーバ６は、バブルパケット送信ポートの位置を検出し、その位置を示すバブルパケット送信ポート情報を第２の情報処理装置２に送信する。第２の情報処理装置２は、そのバブルパケット送信ポート情報に基づいて、返信パケットを第１の通信制御装置３に送信する。なお、ステップＳ１０４の詳細な処理については、後述する。
【００６８】
（ステップＳ１０５）第１の情報処理装置１の返信パケット受付部１７は、返信パケットを受け付けたかどうか判断する。そして、返信パケットを受け付けた場合には、ステップＳ１０６に進み、受け付けていない場合には、ステップＳ１０１に戻り、ステップＳ１０１からの処理を再度繰り返す。
【００６９】
（ステップＳ１０６）第１の情報処理装置１の再返信パケット送信部１８は、再返信パケットを第２の通信制御装置４に送信する。
【００７０】
（ステップＳ１０７）第２の情報処理装置２の再返信パケット受付部２５は、再返信パケットを受け付けたかどうか判断する。そして、再返信パケットを受け付けた場合には、その再返信パケットの送信で用いられた第１の通信制御装置３のいずれかのポートにパケットを送信することによって、第１の情報処理装置１と第２の情報処理装置２との間でのサーバ６を介さない通信を確立することができ、通信の確立の処理は終了される。一方、再返信パケットを受け付けなかった場合には、通信を確立できないこととなるため、ステップＳ１０１に戻り、ステップＳ１０１からの処理を再度繰り返す。
【００７１】
次に、図５のフローチャートにおけるステップＳ１０１の処理について、図６を用いて説明する。図６は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。ここで、送信側とは、第１の情報処理装置１および第１の通信制御装置３を含む概念である。また、受信側とは、第２の情報理装置２および第２の通信制御装置４を含む概念である。
【００７２】
（ステップＳ２０１）サーバ６は、第２の情報処理装置２に対して、基準ポート検出用パケットの送信要求を送信する。
【００７３】
（ステップＳ２０２）第２の情報処理装置２の基準ポート検出用パケット送信部２２は、サーバ６から送信された基準ポート検出用パケットの送信要求を受け取ると、基準ポート検出用パケットをサーバ６に送信する。なお、基準ポート検出用パケット送信部２２は、その基準ポート検出用パケットが、第２の通信制御装置４において最新に割り当てられたポートを用いて送信されるようにする。例えば、第２の情報処理装置２において新たに割り当てられたポートを用いて基準ポート検出用パケットの送信を行う。
【００７４】
（ステップＳ２０３）サーバ６の基準ポート検出部６２は、第２の情報処理装置２から送信された基準ポート検出用パケットを受け付ける。そして、基準ポート検出部６２は、基準ポート検出用パケットのヘッダに含まれる基準ポートのポート番号を参照することにより、基準ポートの位置を検出する。
【００７５】
（ステップＳ２０４）基準ポート送信部６３は、基準ポート検出部６２によって検出された基準ポートの位置を示す情報である基準ポート情報を第１の情報処理装置１に送信する。その基準ポート情報は、第１の情報処理装置１における基準ポート受付部１２で受け付けられる。
【００７６】
（ステップＳ２０５）サーバ６は、第２の通信制御装置４のＩＰアドレスを示すアドレス情報を第１の情報処理装置１に送信する。そのアドレス情報は、通信部１１で受信され、バブルパケット送信部１３に渡される。
【００７７】
（ステップＳ２０６）第１の情報処理装置１のポート幅検出用パケット送信部１５は、ポート幅検出用パケットをサーバ６に送信する。ここで、この送信においては、複数のポート幅検出用パケットが通過する第１の通信制御装置３のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第１の情報処理装置１におけるポート番号がそれぞれ異なる複数のポートから送信される。図７は、ポート幅検出用パケットの送信について説明するための図である。ポート幅検出用パケット送信部１５は、それぞれ異なるポートＰ２０５〜Ｐ２０８から順次、サーバ６のポートＰ２００にポート幅検出用パケットを送信する。すると、第１の通信制御装置３において、それらのパケットは、それぞれ異なるポートＰ２０１〜Ｐ２０４を通過することとなる。なお、図７では、ポートＰ２０５からＰ２０８の順番でパケットが送信されたとする。また、第１の情報処理装置１は、ポート幅検出用パケットを送信する以前に、ポートＰ２０５〜Ｐ２０８をサーバ６との通信で用いていないものとする。
【００７８】
（ステップＳ２０７）サーバ６のポート幅検出部６４は、第１の情報処理装置１から送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、ポート幅を検出する。このポート幅の検出方法について説明する。ポート幅検出部６４は、ポート幅検出用パケットを受け付けることにより、各ポート幅検出用パケットの送信で用いられた第１の通信制御装置３のポートＰ２０１〜Ｐ２０４を検出することができる。そして、例えばポートＰ２０２と、ポートＰ２０１のポート間隔が１２であり、ポートＰ２０３と、ポートＰ２０２のポート間隔が６であり、ポートＰ２０４と、ポートＰ２０３のポート間隔が１８である場合には、一番小さいポート間隔である「６」をポート幅として検出してもよい。一方、それらのポート間隔の最大公約数をポート幅として検出してもよい。例えば、ポートＰ２０２と、ポートＰ２０１のポート間隔が１２であり、ポートＰ２０３と、ポートＰ２０２のポート間隔が６であり、ポートＰ２０４と、ポートＰ２０３のポート間隔が９である場合には、それらの最大公約数である「３」をポート幅として検出してもよい。なお、ポート幅の検出方法は、これらに限定されるものではなく、その他の方法によってポート幅を検出してもよい。また、ポート幅を検出するときに送信されるポート幅検出用パケットの数も、４個に限定されるものではなく、ポート幅を検出できる範囲において任意に設定することができる。
【００７９】
（ステップＳ２０８）第２の情報処理装置２のポート幅検出用パケット送信部２６は、ポート幅検出用パケットをサーバ６に送信する。ここで、ポート幅検出用パケットの送信は、ステップＳ２０６と同様にしてなされる。
【００８０】
（ステップＳ２０９）サーバ６のポート幅検出部６４は、第２の情報処理装置２から送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、第２の通信制御装置４におけるポート幅を検出する。このポート幅の検出方法は、ステップＳ２０７と同様であり、その説明を省略する。なお、このステップＳ２０９におけるポート幅の検出処理では、ステップＳ２０７におけるポート幅の検出に比べて、厳密性をあまり要求されない。すなわち、第２の通信制御装置４における実際のポート幅の倍数をポート幅として検出してもよい。このステップＳ２０９で検出されたポート幅は、基準ポートから、このステップＳ２０９で検出されたポート幅の倍数だけポート間隔の（ポート番号の割り当てが増加方向である場合には、ポート番号の増加する方向に）離れたポートをバブルパケット送信対象ポートと決定するために用いられるものである。その結果、このステップで検出されたポート幅が実際のポート幅の倍数であったとしても、そのようにして決定されたバブルパケット送信対象ポートは、基準ポートから何回かのポート割り当て後に割り当てられるポートとなり、バブルパケット送信対象ポートとしてそのポートを用いることができるからである。したがって、このステップＳ２０８、Ｓ２０９におけるポート幅の検出では、少数のポート幅検出用パケットの送信によってポート幅を検出してもよい。
【００８１】
（ステップＳ２１０）サーバ６のポート幅送信部６８は、ステップＳ２０９で検出されたポート幅を示すポート幅情報を第１の情報処理装置１に送信する。
【００８２】
なお、図６において、受信側アドレスの送信（ステップＳ２０５）は、どの時点で行われてもよく、例えば、基準ポート情報の送信（ステップＳ２０４）や、基準ポート検出用パケットの送信要求（ステップＳ２０１）の以前に行ってもよい。また、ポート幅検出用パケットの送信（ステップＳ２０８）からポート幅情報の送信（ステップＳ２１０）についても、ポート幅検出用パケットの送信（ステップＳ２０６）の処理等よりも以前に行ってもよい。このように、図６の処理の順序に関しては、ある程度の任意性がある。
【００８３】
次に、図５のフローチャートにおけるステップＳ１０２の処理について、図８を用いて説明する。図８は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。
【００８４】
（ステップＳ３０１）第１の情報処理装置１の検出用パケット送信部１４は、ポート検出用パケットを、第１の通信制御装置３を介してサーバ６に送信する。この送信において、ポート検出用パケットが第１の通信制御装置３において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。バブルパケット送信ポートの位置を適切に検出できるようにするためである。例えば、検出用パケット送信部１４は、第１の情報処理装置１とサーバ６との間の通信でそれまでに用いていない第１の情報処理装置１のポートを用いて、ポート検出用パケットを送信する。このようにして送信されたポート検出用パケットは、サーバ６のバブルパケット送信ポート検出部６５において受け付けられる。このバブルパケット送信ポート検出部６５は、ポート検出用パケットのヘッダを参照することにより、ポート検出用パケットの送信で用いられた第１の通信制御装置３におけるポートの位置を検出する。
【００８５】
（ステップＳ３０２）第１の情報処理装置１のバブルパケット送信部１３は、バブルパケットを第２の通信制御装置４に送信する。このバブルパケットは、第２の通信制御装置４において、基準ポートから所定回（α）のポート割り当て後に割り当てられるポートに対して送信される。
【００８６】
（ステップＳ３０３）第１の情報処理装置１の検出用パケット送信部１４は、ポート検出用パケットを、第１の通信制御装置３を介してサーバ６に送信する。この送信において、ポート検出用パケットが第１の通信制御装置３において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。例えば、検出用パケット送信部１４は、第１の情報処理装置１とサーバ６との間の通信や、ステップＳ３０１でのポート検出用パケットの送信、バブルパケットの送信でそれまでに用いていない第１の情報処理装置１のポートを用いて、ポート検出用パケットを送信する。このようにして送信されたポート検出用パケットは、サーバ６のバブルパケット送信ポート検出部６５において受け付けられる。このバブルパケット送信ポート検出部６５は、ポート検出用パケットのヘッダを参照することにより、ポート検出用パケットの送信で用いられた第１の通信制御装置３におけるポートの位置を検出する。
【００８７】
（ステップＳ３０４）サーバ６のバブルパケット送信ポート検出部６５は、ステップＳ３０１、Ｓ３０３における、２つのポート検出用パケットの送信で用いられた第１の通信制御装置３のポートの位置と、バブルパケット送信ポートとが連続しているかどうかを判断する。
【００８８】
次に、図５のフローチャートにおけるステップＳ１０４の処理について、図９を用いて説明する。図９は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。
【００８９】
（ステップＳ４０１）サーバ６のバブルパケット送信ポート検出部６５は、バブルパケット送信ポートの位置を検出する。
【００９０】
（ステップＳ４０２）サーバ６のバブルパケット送信ポート送信部６７は、バブルパケット送信ポート情報を第２の情報処理装置２に送信する。そのバブルパケット送信ポート情報は、第２の情報処理装置２のバブルパケット送信ポート受付部２３によって受け付けられる。
【００９１】
（ステップＳ４０３）サーバ６は、第１の通信制御装置３のＩＰアドレスを示すアドレス情報を第２の情報処理装置２に送信する。そのアドレス情報は、通信部２１で受信され、返信パケット送信部２４に渡される。
【００９２】
（ステップＳ４０４）第２の情報処理装置２の返信パケット送信部２４は、ステップＳ４０３で受け取ったアドレス情報によって特定される第１の第１の通信制御装置３に対して返信パケットを送信する。この返信パケットは、バブルパケット送信ポート受付部２３で受け付けられたバブルパケット送信ポート情報の示すバブルパケット送信ポートに対して送信される。
【００９３】
なお、図９において、バブルパケット送信ポート情報の送信（ステップＳ４０２）と、送信側アドレスの送信（ステップＳ４０３）との順序は問わない。
【００９４】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第１の通信制御装置３、第２の通信制御装置４、サーバ６のＩＰアドレス（第１および第２の通信制御装置３，４については、通信回線５側のアドレス）は、それぞれ以下のとおりであるとする。
【００９５】
第１の通信制御装置３：２０２．１３２．１０．６
第２の通信制御装置４：１３１．２０６．１０．２４０
サーバ６：１５５．３２．１０．１０
以下の具体例においては、具体例１において、第１の通信制御装置３、および第２の通信制御装置４がＰＳ  ＮＡＴを用いている場合について説明する。また、具体例２において、第１の通信制御装置３がＳｄ  ＮＡＴを用いており、第２の通信制御装置４がＰＳ  ＮＡＴを用いている場合について説明する。また、具体例３において、第１の通信制御装置３がＳｄ  ＮＡＴを用いており、第２の通信制御装置４がＡＳ  ＮＡＴを用いている場合について説明する。
【００９６】
（具体例１）
図１０〜図１３は、具体例１について説明するための図である。この具体例１では、第１の情報処理装置１から接続要求が行われる。図１０において、第１の情報処理装置１は、サーバ６のＩＰアドレス「１５５．３２．１０．１０」をあらかじめ知っており、そのサーバ６に対して、第１の情報処理装置１の機器ＩＤ「１２３４５６７８９０１２３４５６」を送信する。ここで、この機器ＩＤとしては、例えば、ＭＡＣアドレスや、ＥＵＩ６４ベースのアドレスなどのＧＵＩＤ（Ｇｌｏｂａｌ  Ｕｎｉｑｕｅ  ＩＤ）を用いることができる。この機器ＩＤの送信は、第１の情報処理装置１のポートＰ１から、第１の通信制御装置３で割り当てられたポートＰ２を介して、サーバ６のポートＰ３に対して行われる。この送信によって、サーバ６は、第１の情報処理装置１の機器ＩＤと、第１の通信制御装置３のＩＰアドレス「２０２．１３２．１０．６」と、第１の通信制御装置３におけるポートＰ２のポート番号「１００３４」とを知ることができる。これらの情報は、サーバ６において保持される。
【００９７】
次に、第１の情報処理装置１は、接続を要求する第２の情報処理装置２の機器ＩＤ「９８７６５４３２１０１２３４５６」をサーバ６に送信することにより、第２の情報処理装置２への接続要求を行う。すると、サーバ６が、その接続要求を受け取り、第２の情報処理装置２がサーバ６にすでにアクセスしているかどうか判断する。この第２の情報処理装置２によるアクセスも、上述の第１の情報処理装置１と同様にして、第２の情報処理装置２の機器ＩＤを送信することによってなされる。したがって、第２の情報処理装置２がサーバ６にアクセスしていた場合には、サーバ６は、第２の情報処理装置２の機器ＩＤ「９８７６５４３２１０１２３４５６」と、第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」と、第２の情報処理装置２とサーバ６の間での情報の送受信で用いられる第２の通信制御装置４のポートＰ５のポート番号「２３４９５」とを知っており、それらを保持していることとなる。第２の情報処理装置２がサーバ６にすでにアクセスしている場合には、基準ポート情報の受け付けに関する処理（ステップＳ１０１）が開始される。一方、第２の情報処理装置２がサーバ６にアクセスしていない場合には、第１の情報処理装置１からの接続要求は、エラーとなり、第１の情報処理装置１と第２の情報処理装置２の間の通信は確立できない。
【００９８】
基準ポート情報の受け付けに関する処理において、サーバ６は、第２の情報処理装置２に、第２の通信制御装置４のポートＰ５を介して基準ポート検出用パケットを送信する旨の送信要求を行う（ステップＳ２０１）。すると、その送信要求が第２の情報処理装置２の基準ポート検出用パケット送信部２２において受け付けられる。そして、基準ポート検出用パケット送信部２２は、第２の情報処理装置２において、それまでにサーバ６との通信で用いているポートＰ６とは異なる、新たに割り当てられたポートＰ８から第２の通信制御装置４を介して基準ポート検出用パケットを送信する（ステップＳ２０２）。この基準ポート検出用パケットの送信において、第２の通信制御装置４では、ポートＰ７（ポート番号「２３５００」）が新たに割り当てられたとする。この基準ポート検出用パケットは、サーバ６の基準ポート検出部６２によって受け付けられる。そして、基準ポートＰ７の位置として、ポート番号「２３５００」が検出される（ステップＳ２０３）。
【００９９】
基準ポート送信部６３は、そのポート番号「２３５００」を基準ポート検出部６２から受け取り、その基準ポートＰ７のポート番号「２３５００」を含む基準ポート情報を構成し、その基準ポート情報を第１の情報処理装置１に送信する（ステップＳ２０４）。この送信は、第１の通信制御装置３におけるポートＰ２を介して行われる。第１の情報処理装置１の基準ポート受付部１２は、その基準ポート情報を、通信部１１を介して受け付け、その基準ポート情報に含まれる基準ポートＰ７のポート番号「２３５００」をバブルパケット送信部１３に渡す。
【０１００】
また、サーバ６は、第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」を示すアドレス情報を第１の情報処理装置１に送信する（ステップＳ２０５）。そのアドレス情報は、通信部１１で受信され、バブルパケット送信部１３に渡される。このようにして、バブルパケット送信部１３は、第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」を知ることができる。
【０１０１】
ポート幅検出用パケット送信部１５は、通信部１１がアドレス情報を受信したことを検知すると、複数のポート幅検出用パケットを図７で示すようにして送信する（ステップＳ２０６）。なお、図１０では、ポート幅検出用パケットの送信については明示していない。そのポート幅検出用パケットは、サーバ６のポート幅検出部６４で受け付けられ、ポート幅が検出される。この場合、ポート幅は「１」と検出されたとする（ステップＳ２０７）。検出されたポート幅は、バブルパケット送信ポート検出部６５に渡される。
【０１０２】
また、ポート幅検出用パケット送信部２６は、サーバ６のポート幅検出部６４からの指示により、複数のポート幅検出用パケットを送信する（ステップＳ２０８）。なお、図１０では、このポート幅検出用パケットの送信についても明示していない。そのポート幅検出用パケットは、サーバ６のポート幅検出部６４で受け付けられ、ポート幅が検出される。この場合、ポート幅は「１」と検出されたとする（ステップＳ２０９）。その後、ポート幅送信部６８は、その検出されたポート幅「１」を、第１の情報処理装置１に送信する（ステップＳ２１０）。そして、そのポート幅「１」は、ポート幅受付部１９で受け付けられ、バブルパケット送信部１３に渡される。
【０１０３】
バブルパケット送信部１３は、バブルパケットを送信する前に、検出用パケット送信部１４に対して、ポート検出用パケットを送信する旨の指示を渡す。すると、検出用パケット送信部１４は、それまでにサーバ６との通信で用いておらず、新たに割り当てられたポート（すなわち、第１の情報処理装置１が新たに割り当てたポート）であるポートＰ９を用いて、サーバ６のポートＰ１５に対してポート検出用パケットを送信する（ステップＳ３０１）。ポートＰ１５は、サーバ６から指示されたポートであるとする。このポート検出用パケットは、第１の通信制御装置３において、新たに割り当てられたポートＰ１２（ポート番号「１００４０」）を用いて送信される。サーバ６のバブルパケット送信ポート検出部６５は、このポート検出用パケットを受け付け、第１の通信制御装置３のポートＰ１２のポート番号「１００４０」を検出する。バブルパケット送信ポート検出部６５は、そのポートＰ１２のポート番号「１００４０」を保持しておく。
【０１０４】
検出用パケット送信部１４は、ポート検出用パケットの送信後に、ポート検出用パケットを送信した旨をバブルパケット送信部１３に伝える。すると、バブルパケット送信部１３は、それまでにサーバ６との通信で用いておらず、新たに割り当てられたポートであるポートＰ１０を用いて、ＩＰアドレス「１３１．２０６．１０．２４０」の第２の通信制御装置４にバブルパケットを送信する（ステップＳ３０２）。このバブルパケットの送信では、基準ポート受付部１２から受け取った基準ポートＰ７のポート番号「２３５００」から、ポート幅受付部１９で受け付けられたポート幅「１」の所定の倍数、すなわち５０倍（すなわち、α＝５０）だけ離れたポート番号「２３５５０」のポートＰ１７に対してバブルパケットを送信するものとする。また、そのバブルパケットは、第１の通信制御装置３のポートＰ１３（ポート番号「１００４１」）を用いて送信されたとする。バブルパケット送信部１３は、バブルパケットの送信後、「α＝５０」である旨をサーバ６に送信する。すると、サーバ６は、その旨を第２の情報処理装置２に送信する。そして、「α＝５０」である旨が返信パケット送信部２４で受け付けられる。
【０１０５】
バブルパケット送信部１３は、バブルパケットの送信後に、ポート検出用パケットを送信する旨の指示を検出用パケット送信部１４に渡す。すると、検出用パケット送信部１４は、それまでにサーバ６との通信で用いておらず、新たに割り当てられたポートであるポートＰ１１を用いて、サーバ６のポート１６に対してポート検出用パケットを送信する（ステップＳ３０３）。このポート検出用パケットは、第１の通信制御装置３において、新たに割り当てられたポートＰ１４（ポート番号「１００４２」）を用いて送信される。このように、バブルパケットと、ポート検出用パケットとは、第１の通信制御装置３における異なるポートを用いて送信される。
【０１０６】
サーバ６のバブルパケット送信ポート検出部６５は、このポート検出用パケットを受け付け、第１の通信制御装置３のポートＰ１４のポート番号「１００４２」を検出する。そして、バブルパケット送信ポート検出部６５は、保持していたポートＰ１２のポート番号「１００４０」と、検出したポートＰ１４のポート番号「１００４２」との差が「２」であり、ステップＳ２０７で検出したポート幅「１」の２倍であることから、２つのポート検出用パケットの送信で用いられた第１の通信制御装置３におけるポートＰ１２，Ｐ１４と、バブルパケット送信ポートＰ１３とが連続していると判断する（ステップＳ３０４）。その結果、バブルパケット送信ポートの位置を検出できると判断し（ステップＳ１０３）、バブルパケット送信ポート検出部６５は、バブルパケット送信ポートの位置として、ポートＰ１２とポートＰ１４の真ん中であるポート番号「１００４１」を検出する（ステップＳ４０１）。
【０１０７】
バブルパケット送信ポート送信部６７は、バブルパケット送信ポート検出部６５で検出されたバブルパケット送信ポートＰ１３のポート番号「１００４１」を含むバブルパケット送信ポート情報を構成し、そのバブルパケット送信ポート情報を、第２の通信制御装置４のポートＰ５を介して第２の情報処理装置２に送信する（ステップＳ４０２）。そのバブルパケット送信ポート情報は、第２の情報処理装置２のバブルパケット送信ポート受付部２３において受け付けられる。そして、バブルパケット送信ポート情報に含まれるバブルパケット送信ポートＰ１３のポート番号「１００４１」が返信パケット送信部２４に渡される。
【０１０８】
また、サーバ６は、第１の通信制御装置３のＩＰアドレス「２０２．１３２．１０．６」を示すアドレス情報を第２の情報処理装置２に送信する（ステップＳ４０３）。そのアドレス情報は、通信部２１で受信され、返信パケット送信部２４に渡される。このようにして、返信パケット送信部２４は、第１の通信制御装置３のＩＰアドレス「２０２．１３２．１０．６」を知ることができる。
【０１０９】
返信パケット送信部２４は、ＩＰアドレス「２０２．１３２．１０．６」の第１の通信制御装置３におけるポート番号「１００４１」のバブルパケット送信ポートＰ１３に対して、５０個の返信パケットを送信する（ステップＳ４０４）。この５０個というのは、返信パケット送信部２４がサーバ６から受け付けたαの値に対応している。返信パケット送信部２４は、この５０個の返信パケットを、第２の情報処理装置２において新たに割り当てられる（すなわち、それまでのサーバ６との通信等で用いられていない）５０個のポートＰ２０〜Ｐ２１を用いて送信する。したがって、その返信パケットは、第２の通信制御装置４においても、新たに割り当てられる５０個のポートＰ１８〜Ｐ１９を用いて送信されることとなる（図１２参照）。なお、第２の通信制御装置４において、基準ポート検出用パケットが送信された時点に割り当てられた最新のポートがポートＰ７であり、そのポートＰ７からポート番号が５０だけ離れたポートＰ１７にバブルパケットが送信されているため、返信パケットの送信時にすでにポートＰ１７が、第２の情報処理装置２以外の機器によって使用されている場合を除き、５０個の返信ポートのいずれかがバブルパケット送信対象ポートＰ１７を用いて第１の通信制御装置３に送信されることとなる。そして、第１の通信制御装置３は、ＰＳ  ＮＡＴを用いており、バブルパケットをバブルパケット送信対象ポートＰ１７に対して送信している送信履歴が第１の通信制御装置３に残っているため、バブルパケット送信対象ポートＰ１７を用いて送信された返信パケットのみを受け付けることができる。その返信パケットは、第１の情報処理装置１のポートＰ１０を介して返信パケット受付部１７で受け付けられる。
【０１１０】
ここで、この具体例１においては、この返信パケットの受け付けにより、第１の情報処理装置１と第２の情報処理装置２との間の通信が確立することとなるが、続けて再返信パケットの送信についても説明する。
【０１１１】
第２の情報処理装置２の返信パケット送信部２４は、５０個の返信パケットの送信後に、返信パケットの送信を終了した旨を、第２の通信制御装置４のポートＰ５を介してサーバ６に送信する。すると、サーバ６が返信パケットの送信を終了した旨を受け取り、その旨を第１の通信制御装置３のポートＰ２を介して第１の情報処理装置１に送信する。第１の情報処理装置１の返信パケット受付部１７は、その旨を受け付けると、すでに返信パケットを受け付けているため、返信パケット１７のヘッダに含まれる返信パケットの送信された第２の通信制御装置４のポートＰ１７のポート番号「２３５５０」を取得し、そのポート番号と、再返信パケットを送信する旨の指示とを、再返信パケット送信部１８に渡す（ステップＳ１０５）。なお、返信パケット受付部１７が返信パケットを受け付けていない場合には、返信パケット受付部１７は、返信パケットを受け付けていない旨をサーバ６に送信する。その結果、サーバ６は、再度、第２の情報処理装置２に基準ポート検出用パケットの送信要求を送信し、第１の情報処理装置１と第２の情報処理装置２との接続を確立するための処理が再度行われることとなる（ステップＳ１０１〜Ｓ１０４）。
【０１１２】
再返信パケット送信部１８は、返信パケット受付部１７から受け取ったポート番号「２３５５０」のポートＰ１７に対して、再返信パケットを送信する（ステップＳ１０６）。その再返信パケットは、第１の通信制御装置３のポートＰ１３、および第２の通信制御装置４のポートＰ１７を用いて第２の情報処理装置２に送信され、第２の情報処理装置２の再返信パケット受付部２５で受け付けられる。
【０１１３】
また、再返信パケット送信部１８は、再返信パケットの送信後に、再返信パケットの送信を終了した旨を、第１の通信制御装置３のポートＰ２を介してサーバ６に送信する。すると、サーバ６が再返信パケットの送信を終了した旨を受け取り、その旨を第２の通信制御装置４のポートＰ５を介して第２の情報処理装置２に送信する。第２の情報処理装置２の再返信パケット受付部２５は、その旨を受け付ける。この場合には、再返信パケット受付部２５が再返信パケットをすでに受け付けているため、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立する処理は終了となる（ステップＳ１０７）。なお、再返信パケット受付部２５が再返信パケットを受け付けていない場合には、再返信パケット受付部２５は、再返信パケットを受け付けていない旨をサーバ６に送信する。その結果、サーバ６は、再度、第２の情報処理装置２に基準ポート検出用パケットの送信要求を送信し、第１の情報処理装置１と第２の情報処理装置２との接続を確立するための処理が再度行われることとなる（ステップＳ１０１〜Ｓ１０６）。
【０１１４】
その後、第１の情報処理装置１と第２の情報処理装置２との間で、サーバ６を介さない、Ｐｅｅｒ  ｔｏ  ＰｅｅｒのＵＤＰによる通信が、第１の通信制御装置３のポートＰ１３、および第２の通信制御装置４のポートＰ１７を介して行われる。
【０１１５】
なお、この具体例１では、ポート検出用パケットと、バブルパケットとが第１の通信制御装置３における連続したポートを用いて送信された場合について説明したが、例えば、ポートＰ１２のポート番号が「１００４０」であり、ポートＰ１４のポート番号が「１００４３」である場合のように、ポート検出用パケットと、バブルパケットとが第１の通信制御装置３における連続したポートを用いて送信されていない場合には、バブルパケットと、ポート検出用パケットとの送信が、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートと、バブルパケット送信ポートとが連続したポートとなるまで繰り返される（ステップＳ１０２、Ｓ１０３）。ここで、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートと、バブルパケット送信ポートとが第１の通信制御装置３における連続したポートとならない理由としては、第１の通信制御装置３のローカル側に第１の情報処理装置１以外の装置（図示せず）が接続されており、ポート検出用パケットの送信からバブルパケットの送信まで、またはバブルパケットの送信からポート検出用パケットの送信までに、その装置に対して、第１の通信制御装置３のポートが割り当てられた、ということがある。
【０１１６】
また、この具体例１において、第１の情報処理装置１からの機器ＩＤの送信や、第２の情報処理装置２からの機器ＩＤの送信、また、サーバ６からのアドレス情報の送信等の装置間での情報の送受信については、第１の情報処理装置１等における図示しない制御部によってなされるものとする。このことは、以下の具体例においても同様である。
【０１１７】
また、図１１において、ポート検出用パケットの送信先ポートＰ１５，Ｐ１６は、同一のポートであってもよく、また、ポートＰ３と同一であってもよい。
【０１１８】
また、図１１において、第１の通信制御装置３がＰＳ  ＮＡＴである場合には、ポートＰ９，ポートＰ１０，ポートＰ１１が同一のポートであってもよい。ただし、この場合であっても、ポートＰ９（＝ポートＰ１０，Ｐ１１）は、１回目のポート検出用パケットの送信時に新たに割り当てられたポートである。また、ポートＰ１５とポートＰ１６とは異なる。
【０１１９】
（具体例２）
具体例２では、第１の通信制御装置３がＳｄ  ＮＡＴを用いており、第２の通信制御装置４がＰＳ  ＮＡＴを用いている場合について説明する。
【０１２０】
この場合であっても、第２の情報処理装置２から第１の通信制御装置３に対して返信パケットを送信するまでは、具体例１と同様であり、その説明を省略する。なお、この具体例２においても、具体例１と同様のポート番号等を用いてバブルパケットの送信等の処理が行われているものとする。この具体例２の場合には、第１の通信制御装置３においてＳｄ  ＮＡＴ、すなわち受信フィルタフールがＮｏフィルタのＮＡＴを用いているため、第２の情報処理装置２から送信された５０個の返信パケットは、すべて、第１の情報処理装置１のポートＰ１０を介して返信パケット受付部１７で受け付けられる。
【０１２１】
返信パケット受付部１７は、返信パケットの送信で用いられた第２の通信制御装置４のポート番号を各返信パケットから取得し、そのポート番号を再返信パケット送信部１８に渡す。再返信パケット送信部１８は、そのポート番号を受け取り、第２の通信制御装置４の受け取った各ポート番号に対して、再返信パケットを送信する（図１４参照）。第１の通信制御装置３で用いているＳｄ  ＮＡＴは、送信ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅであるため、第１の通信制御装置３におけるバブルパケット送信ポートＰ１３を用いて第２の通信制御装置４に対して送信を行うことができるのは、第２の通信制御装置４のバブルパケット送信対象ポートＰ１７にパケットを送信した場合のみである。したがって、図１４で示されるように、バブルパケット送信対象ポートＰ１７以外に送信された再返信ポートは、第１の通信制御装置３で新たに割り当てられたポートＰ２２〜Ｐ２３を用いて送信される。第２の通信制御装置４は、ＰＳ  ＮＡＴを用いているため、返信パケットを送信した第１の通信制御装置３のポート以外からの再返信パケットを受け付けることはできない。したがって、第２の情報処理装置２の再返信パケット受付部２５は、バブルパケット送信対象ポートＰ１７に送信された再返信パケットのみを受け付けることができる。このようにして、第１の情報処理装置１と、第２の情報処理装置２との間での通信が確立されることとなる。
【０１２２】
ここで、第１の情報処理装置１から第２の通信制御装置４に対して再返信パケットを送信する意義について説明する。第１の情報処理装置１が返信パケットを受け取ったとしても、その返信パケットの通過したポートを介して、第１の情報処理装置１と第２の情報処理装置２との間の通信が確実に確立するわけではない。上記の具体例２のように、受け取った返信パケットのうち、バブルパケット送信対象ポートＰ１７を介して送信された返信パケットの経路についてのみ、通信を確立することができるからである。また、次のような状況も考えられる。具体例２において、返信パケットがバブルパケット送信対象ポートＰ１７を用いないで送信された場合（例えば、返信パケットの送信までに、他の機器によってバブルパケット送信対象ポートＰ１７が用いられた場合）であっても、第１の情報処理装置１は、すべての返信パケットを受け付けることができる。しかし、第１の情報処理装置１が、その返信パケットに対する再返信パケットを送信したとしても、その再返信パケットは第２の情報処理装置２で受け付けられず、通信は確立されない。このように、再返信パケットの送信により、第１の情報処理装置１と第２の情報処理装置２との間で確立することができ得るＰｅｅｒ  ｔｏ  Ｐｅｅｒの通信で用いるポートの位置を確認することができ、また、第１の情報処理装置１と第２の情報処理装置２との間での通信を確立できるかどうかを確認することができる。
【０１２３】
（具体例３）
具体例３では、第１の通信制御装置３がＳｄ  ＮＡＴを用いており、第２の通信制御装置４がＡＳ  ＮＡＴを用いている場合について説明する。この具体例３では、バブルパケット送信対象ポートを用いない通信が第１の情報処理装置１と第２の情報処理装置２との間で確立される特殊なケースについて説明する。
【０１２４】
図１５は、第２の情報処理装置２からの返信パケットの送信について説明するための図である。この返信パケットの送信において、バブルパケット送信対象ポートＰ１７がすでに他の機器によって用いられているため、返信パケットは、バブルパケット送信対象ポートＰ１７を含まない第２の通信制御装置４におけるポートＰ２４〜Ｐ２５を介して送信されたとする。第１の通信制御装置３がＮｏフィルタのＮＡＴを用いているため、第１の情報処理装置１は、このすべての返信パケットを受け付ける。
【０１２５】
図１６は、再返信パケットの送信について説明するための図である。図１６で示されるように、再返信パケット送信部１８が第２の通信制御装置４のポートＰ２４〜Ｐ２５に対して再返信パケット送信したとする。この場合には、第１の通信制御装置３がＳｄ  ＮＡＴを用いているため、新たに割り当てられたポートＰ２６〜Ｐ２７を用いて再返信パケットが第２の通信制御装置４のポートＰ２４〜Ｐ２５に対して送信される。第２の通信制御装置４は、ＡＳ  ＮＡＴ、すなわち、Ａｄｄｒｅｓｓ  ＳｅｎｓｉｔｉｖｅフィルタのＮＡＴを用いているため、これらの再返信パケットは第２の通信制御装置４で受け付けられ、第２の情報処理装置２のポートＰ２０〜Ｐ２１に渡される。その後、第２の情報処理装置２は、再返信パケットのうち、いずれか１つ（例えば、最初に届いたものなど）を選択し、その再返信パケットの送信された経路（例えば、第１の通信制御装置３のポートＰ２６、第２の通信制御装置４のポートＰ２４）を介して第１の情報処理装置１との通信を行うことができる。
【０１２６】
この具体例３の状況は、第１の通信制御装置３がＮｏフィルタ、あるいはＡＳフィルタを用いており、第２の通信制御装置４がＮｏフィルタ、あるいはＡＳフィルタを用いている場合に妥当する。したがって、これらの場合には、バブルパケット送信ポートＰ１３の位置を正確に把握することができれば、第１の情報処理装置１と第２の情報処理装置２との接続を確実に実現することができることとなる。
【０１２７】
また、第１の通信制御装置３で用いているＮＡＴがＮｏフィルタである場合には、すべての返信パケットを第１の情報処理装置１で受け付けることができる。また、第１の通信制御装置３で用いているＮＡＴがＡＳフィルタである場合にも、第２の通信制御装置４に対して、バブルパケットを送信しているため、すべての返信パケットを第１の情報処理装置１で受け付けることができる。また、第１の通信制御装置３で用いているＮＡＴのポート割り当てルールがＣｏｎｅ、あるいはＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅである場合には、第１の情報処理装置１は、受け付けた返信パケットに対して、バブルパケット送信ポートＰ１３を用いた再返信パケットの送信を行うことができる。したがって、第１の通信制御装置３で用いているＮＡＴのフィルタがＮｏフィルタかＡＳフィルタであり、ポート割り当てルールがＣｏｎｅかＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅである場合には、第２の通信制御装置４のＮＡＴのタイプによらず、バブルパケット送信ポートＰ１３の位置を正確に把握することができれば、第１の情報処理装置１と第２の情報処理装置２との接続を確実に実現することができることとなる。
【０１２８】
以上から、図１７で示されるように、本実施の形態による通信システムでは、第１の通信制御装置３と第２の通信制御装置４で用いられるＮＡＴのタイプによらずに、通信を確立することができる。その結果、第１の通信制御装置３と第２の通信制御装置４で用いられるＮＡＴのタイプに関する判断を行うことなく、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができ得る。特に、それらのＮＡＴの組み合わせが特定ものである場合には、返信パケットがバブルパケット送信対象ポートを用いないで送信されたとしても、バブルパケット送信ポートの位置を正確に検出できているときには、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる（図１７の「◎」の場合）。なお、それ以外のとき（図１７の「○」の場合）には、バブルパケット送信ポートの位置を正確に検出できたとしても、バブルパケット送信対象ポートを用いて返信パケットを送信しなければ、通信を確立することはできない。したがって、そのときには、バブルパケット送信対象ポートを用いて返信パケットを送信できるまで、通信を確立するための処理が繰り返されることとなる。なお、図１７で示されるように、第１の通信制御装置３、および第２の通信制御装置４は、Ｏｐｅｎ  ＮＡＴ（ＮＡＴを用いない）であってもよい。
【０１２９】
（実施の形態２）
本発明の実施の形態２による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、バブルパケット送信ポートの検出や、ポート幅の検出等をサーバではなく、情報処理装置において行うことによって、サーバの処理負荷を軽減するものである。
【０１３０】
本実施の形態による通信システムの構成は、第１の情報処理装置１、第２の情報処理装置２、サーバ６に代えて、それぞれ第１の情報処理装置１０、第２の情報処理装置２０、サーバ６０を備える以外、図１と同様であり、その説明を省略する。
【０１３１】
図１８は、本実施の形態による第１の情報処理装置１０の構成を示すブロック図である。図１８において、第１の情報処理装置１０は、通信部１１と、基準ポート受付部１２と、バブルパケット送信部１３と、検出用パケット送信部１４と、ポート幅検出用パケット送信部１５と、返信パケット受付部１７と、再返信パケット送信部１８と、ポート幅受付部１９と、検出用ポート情報受付部７１と、バブルパケット送信ポート検出部７２と、バブルパケット送信ポート送信部７３と、ポート幅検出用ポート情報受付部７４と、ポート幅検出部７５とを備える。なお、検出用ポート情報受付部７１、バブルパケット送信ポート検出部７２、バブルパケット送信ポート送信部７３、ポート幅検出用ポート情報受付部７４、ポート幅検出部７５以外の構成および動作は、ポート幅受付部１９が第２の情報処理装置２０からサーバ６０を介して送信されたポート幅情報を受け付ける以外、実施の形態１と同様であり、その説明を省略する。
【０１３２】
検出用ポート情報受付部７１は、サーバ６０から送信された検出用ポート情報を、通信部１１を介して受け付ける。ここで、検出用ポート情報とは、検出用パケット送信部１４によって送信されたポート検出用パケットが通過した第１の通信制御装置３のポートの位置を示す情報である。
【０１３３】
バブルパケット送信ポート検出部７２は、検出用ポート情報受付部７１が受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートの位置を検出する。バブルパケット送信ポート検出部７２は、ポート幅検出部７５が検出した第１の通信制御装置３におけるポート幅を用いて、バブルパケット送信ポートの位置を検出する。このバブルパケット送信ポートの位置の検出は、実施の形態１におけるバブルパケット送信ポート検出部６５と同様に行われるものであり、その説明を省略する。なお、バブルパケット送信ポート検出部７２は、バブルパケット送信ポートの位置を検出できなかった場合に、ポート検出用パケットを再度送信する旨の指示を検出用パケット送信部１４に渡し、バブルパケットを再度送信する旨の指示をバブルパケット送信部１３に渡す。その結果、検出用パケット送信部１４は、その指示に応じてポート検出用パケットを再度送信する。また、バブルパケット送信部１３も、その指示に応じてバブルパケットを再度送信する。なお、この再送信は、バブルパケット送信ポート検出部７２がバブルパケット送信ポートの位置を検出できるまで、あるいは、所定の上限の回数（例えば、１０回など）や、所定の時間（例えば、３０秒など）等の所定の制限まで繰り返される。
【０１３４】
バブルパケット送信ポート送信部７３は、バブルパケット送信ポート検出部７２が検出したバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を、サーバ６０を介して第２の情報処理装置２０に送信する。
【０１３５】
ポート幅検出用ポート情報受付部７４は、ポート幅検出用ポート情報を受け付ける。ここで、ポート幅検出用ポート情報とは、ポート幅検出用パケット送信部１５によって送信されたポート幅検出用パケットが通過した第１の通信制御装置３のポートの位置を示す情報である。このポート幅検出用ポート情報は、サーバ６０から送信されたものである。
【０１３６】
ポート幅検出部７５は、ポート幅検出用ポート情報受付部７４が受け付けたポート幅検出用ポート情報に基づいて、第１の通信制御装置３におけるポート幅を検出する。このポート幅の検出は、実施の形態１におけるポート幅検出部６４と同様に行われるものであり、その説明を省略する。
【０１３７】
図１９は、本実施の形態による第２の情報処理装置２０の構成を示すブロック図である。図１９において、第２の情報処理装置２０は、通信部２１と、基準ポート検出用パケット送信部２２と、バブルパケット送信ポート受付部２３と、返信パケット送信部２４と、再返信パケット受付部２５と、ポート幅検出用パケット送信部２６と、ポート幅検出用ポート情報受付部８１と、ポート幅検出部８２と、ポート幅送信部８３とを備える。なお、ポート幅検出用ポート情報受付部８１、ポート幅検出部８２、ポート幅送信部８３以外の構成および動作は、実施の形態１と同様であり、その説明を省略する。
【０１３８】
ポート幅検出用ポート情報受付部８１は、ポート幅検出用ポート情報を受け付ける。ここで、ポート幅検出用ポート情報とは、ポート幅検出用パケット送信部２６によって送信されたポート幅検出用パケットが通過した第２の通信制御装置４のポートの位置を示す情報である。このポート幅検出用ポート情報は、サーバ６０から送信されたものである。
【０１３９】
ポート幅検出部８２は、ポート幅検出用ポート情報受付部８１が受け付けたポート幅検出用ポート情報に基づいて、第２の通信制御装置４におけるポート幅を検出する。このポート幅の検出は、実施の形態１におけるポート幅検出部６４と同様に行われるものであり、その説明を省略する。
【０１４０】
ポート幅送信部８３は、ポート幅検出部８２が検出した第２の通信制御装置４におけるポート幅を示す情報であるポート幅情報を、サーバ６０を介して第１の情報処理装置１０に送信する。
【０１４１】
図２０は、本実施の形態によるサーバ６０の構成を示すブロック図である。図２０において、サーバ６０は、通信部６１と、基準ポート検出部６２と、基準ポート送信部６３と、検出用ポート検出部９１と、検出用ポート情報送信部９２と、ポート幅検出用ポート検出部９３と、ポート幅検出用ポート情報送信部９４とを備える。なお、検出用ポート検出部９１、検出用ポート情報送信部９２、ポート幅検出用ポート検出部９３、ポート幅検出用ポート情報送信部９４以外の構成および動作は、実施の形態１と同様であり、その説明を省略する。
【０１４２】
検出用ポート検出部９１は、第１の情報処理装置１０から送信されたポート検出用パケットを受け付け、そのポート検出用パケットに基づいてポート検出用パケットが通過した第１の通信制御装置３のポートの位置を検出する。そのポート位置の検出は、ポート検出用パケットに含まれる（例えば、ポート検出用パケットのヘッダに含まれる）ポート検出用パケットが通過した第１の通信制御装置３のポートの位置を取得することによって行われる。
【０１４３】
検出用ポート情報送信部９２は、検出用ポート検出部９１が検出したポートの位置を示す検出用ポート情報を第１の情報処理装置１０に送信する。
【０１４４】
ポート幅検出用ポート検出部９３は、第１の情報処理装置１０から第１の通信制御装置３を介して送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、そのポート幅検出用パケットが通過した第１の通信制御装置３のポートの位置を検出する。また、ポート幅検出用ポート検出部９３は、第２の情報処理装置２０から第２の通信制御装置４を介して送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、そのポート幅検出用パケットが通過した第２の通信制御装置４のポートの位置を検出する。
【０１４５】
ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３が検出した、ポート幅検出用パケットが通過した第１の通信制御装置３のポートの位置を示すポート幅検出用ポート情報を第１の情報処理装置１０に送信する。また、ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３が検出した、ポート幅検出用パケットが通過した第２の通信制御装置４のポートの位置を示すポート幅検出用ポート情報を第２の情報処理装置２０に送信する。
【０１４６】
なお、ポート幅検出用パケットが通過した第１の通信制御装置３におけるポートの位置を検出する第１のポート幅検出用ポート検出部と、ポート幅検出用パケットが通過した第２の通信制御装置４におけるポートの位置を検出する第２のポート幅検出用ポート検出部とを備えてもよい。同様に、ポート幅検出用パケットが通過した第１の通信制御装置３におけるポートの位置を示すポート幅検出用ポート情報を第１の情報処理装置１０に送信する第１のポート幅検出用ポート情報送信部と、ポート幅検出用パケットが通過した第２の通信制御装置４におけるポートの位置を示すポート幅検出用ポート情報を第２の情報処理装置２０に送信する第２のポート幅検出用ポート情報送信部と備えてもよい。それらを１つで実現したのが、ポート幅検出用ポート検出部９３、およびポート幅検出用ポート情報送信部９４である。すなわち、ポート幅検出用ポート検出部９３のうち、ポート幅検出用パケットが通過した第１の通信制御装置３におけるポートの位置を検出する部分が第１のポート幅検出用ポート検出部となり、ポート幅検出用パケットが通過した第２の通信制御装置４におけるポートの位置を検出する部分が第２のポート幅検出用ポート検出部となる。同様に、ポート幅検出用ポート情報送信部９４のうち、ポート幅検出用パケットが通過した第１の通信制御装置３におけるポートの位置を示すポート幅検出用ポート情報を第１の情報処理装置１０に送信する部分が第１のポート幅検出用ポート情報送信部となり、ポート幅検出用パケットが通過した第２の通信制御装置４におけるポートの位置を示すポート幅検出用ポート情報を第２の情報処理装置２０に送信する部分が第２のポート幅検出用ポート情報送信部となる。
【０１４７】
次に、本実施の形態による通信システムの動作について説明する。なお、本実施の形態による通信システムが通信を開始するまでの動作は、バブルパケット送信ポートの検出や、バブルパケット等の再送信の指示を第１の情報処理装置１０で行う以外、実施の形態１における図５で示される動作と同様であり、その説明を省略する。
【０１４８】
次に、図５のフローチャートにおけるステップＳ１０１の処理について、図２１を用いて説明する。図２１は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。なお、ステップＳ２０１〜Ｓ２０６の処理は、実施の形態１における図６に関する説明と同様であり、その説明を省略する。
【０１４９】
（ステップＳ５０１）サーバ６０のポート幅検出用ポート検出部９３は、第１の情報処理装置１０から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部９３は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１５０】
（ステップＳ５０２）ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３によって検出された、ポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を示す情報であるポート幅検出用ポート情報を第１の情報処理装置１０に送信する。そのポート幅検出用ポート情報は、第１の情報処理装置１０におけるポート幅検出用ポート情報受付部７４で受け付けられる。
【０１５１】
（ステップＳ５０３）ポート幅検出部７５は、ポート幅検出用ポート情報受付部７４で受け付けられたポート幅検出用ポート情報に基づいて、第１の通信制御装置３のポート幅を検出する。なお、このポート幅の検出は、実施の形態１と同様に行われるものであり、その説明を省略する。
【０１５２】
（ステップＳ５０４）サーバ６０のポート幅検出用ポート検出部９３は、第２の情報処理装置２０から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部９３は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第２の通信制御装置４のポートの位置を検出する。
【０１５３】
（ステップＳ５０５）ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３によって検出された、ポート幅検出用パケットの通過した第２の通信制御装置４のポートの位置を示す情報であるポート幅検出用ポート情報を第２の情報処理装置２０に送信する。そのポート幅検出用ポート情報は、第２の情報処理装置２０におけるポート幅検出用ポート情報受付部８１で受け付けられる。
【０１５４】
（ステップＳ５０６）ポート幅検出部８２は、ポート幅検出用ポート情報受付部８１で受け付けられたポート幅検出用ポート情報に基づいて、第２の通信制御装置４のポート幅を検出する。なお、このポート幅の検出は、実施の形態１と同様に行われるものであり、その説明を省略する。
【０１５５】
（ステップＳ５０７）ポート幅送信部８３は、第２の通信制御装置４のポート幅を示す情報であるポート幅情報を、そのポート幅情報を第１の情報処理装置１０に送信する旨の指示と共にサーバ６０に送信する。
【０１５６】
（ステップＳ５０８）サーバ６０の通信部６１は、ポート幅情報を受信し、そのポート幅情報を第１の情報処理装置１０に送信する。そのポート幅情報は、第１の情報処理装置１０におけるポート幅受付部１９で受け付けられる。
【０１５７】
次に、図５のフローチャートにおけるステップＳ１０２の処理について、図２２を用いて説明する。図２２は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。なお、ステップＳ３０１〜Ｓ３０３の処理は、ポート検出用パケットがサーバ６０における検出用ポート検出部９１で受け付けられる以外、実施の形態１における図８に関する説明と同様であり、その説明を省略する。
【０１５８】
（ステップＳ６０１）サーバ６０の検出用ポート検出部９１は、第１の情報処理装置１０から送信されたポート検出用パケットを受け付ける。そして、検出用ポート検出部９１は、ポート検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１５９】
（ステップＳ６０２）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、ポート検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置１０に送信する。その検出用ポート情報は、第１の情報処理装置１０における検出用ポート情報受付部７１で受け付けられる。
【０１６０】
（ステップＳ６０３）サーバ６０の検出用ポート検出部９１は、第１の情報処理装置１０から送信されたポート検出用パケットを受け付ける。そして、検出用ポート検出部９１は、ポート検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１６１】
（ステップＳ６０４）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、ポート検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置１０に送信する。その検出用ポート情報は、第１の情報処理装置１０における検出用ポート情報受付部７１で受け付けられる。
【０１６２】
（ステップＳ６０５）第１の情報処理装置１０のバブルパケット送信ポート検出部７２は、ステップＳ３０１、Ｓ３０３における、２つのポート検出用パケットの送信で用いられた第１の通信制御装置３のポートの位置と、バブルパケット送信ポートとが連続しているかどうかを判断する。なお、具体的な判断手法については、実施の形態１と同様であり、その説明を省略する。
【０１６３】
なお、図２２のフローチャートにおいて、第１の情報処理装置１０がステップＳ６０２で送信された検出用ポート情報を受信してからバブルパケットを送信する場合について説明しているが、検出用ポート情報の受信と、バブルパケットの送信との順序はこれに限定されない。例えば、２回目のポート検出用パケットの送信（ステップＳ３０３）を行った後に、１回目の検出用ポート情報の送信（ステップＳ６０２）、および２回目の検出用ポート情報の送信（ステップＳ６０４）を行ってもよい。また、ステップＳ６０１，Ｓ６０３で検出したポート位置を示す検出用ポート情報を、まとめて送信してもよい。
【０１６４】
次に、図５のフローチャートにおけるステップＳ１０４の処理について、図２３を用いて説明する。図２３は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。なお、ステップＳ４０３、Ｓ４０４の処理は、実施の形態１における図９に関する説明と同様であり、その説明を省略する。
【０１６５】
（ステップＳ７０１）第１の情報処理装置１０のバブルパケット送信ポート検出部７２は、バブルパケット送信ポートの位置を検出する。なお、具体的な判断手法については、実施の形態１と同様であり、その説明を省略する。
【０１６６】
（ステップＳ７０２）第１の情報処理装置１０のバブルパケット送信ポート送信部７３は、バブルパケット送信ポート情報を、そのバブルパケット送信ポート情報を第２の情報処理装置２０に送信する旨の指示と共にサーバ６０に送信する。
【０１６７】
（ステップＳ７０３）サーバ６０の通信部６１は、バブルパケット送信ポート情報を受信し、そのバブルパケット送信ポート情報を第２の情報処理装置２０に送信する。そのバブルパケット送信ポート情報は、第２の情報処理装置２０におけるバブルパケット送信ポート受付部２３で受け付けられる。
【０１６８】
なお、本実施の形態における通信システムの動作の具体例については、第１の通信制御装置３、および第２の通信制御装置４におけるポート幅の検出を、それぞれ第１の情報処理装置１０、および第２の情報処理装置２０で行い、バブルパケット送信ポートの位置の検出を第１の情報処理装置１０で行い、それらに付随して行われる処理（例えば、バブルパケット送信ポート情報の第１の情報処理装置１０から第２の情報処理装置２０までの送信など）を行う以外、実施の形態１における具体例と同様であり、その説明を省略する。
【０１６９】
以上から、本実施の形態による通信システムでは、実施の形態１と同様の効果に加え、第１の通信制御装置３、および第２の通信制御装置４におけるポート幅の検出や、バブルパケット送信ポートの位置の検出等を第１の情報処理装置１０、および第２の情報処理装置２０において行うことによって、サーバ６０における処理負担を軽減することができる。特に、待ち受けの必要な処理（例えば、１回目のポート検出用パケットが送信された後に、２回目のポート検出用パケットが送信されるのを待つ処理など）は処理負担が大きいため、そのような待ち受けの必要な処理をサーバで行わないことにより、サーバ６０における処理負担が大幅に軽減される。
【０１７０】
なお、本実施の形態では、第１の通信制御装置３におけるポート幅の検出を第１の情報処理装置１０で行う場合について説明したが、第１の情報処理装置１０では、バブルパケット送信ポートの検出、およびバブルパケット送信ポートの送信を行い、第１の通信制御装置３におけるポート幅の検出は、実施の形態１と同様にサーバにおいて行ってもよい。同様に、第２の通信制御装置４におけるポート幅の検出、およびバブルパケット送信ポートの位置の検出のいずれかを、実施の形態１と同様にサーバにおいて行ってもよい。
【０１７１】
また、本実施の形態では、第２の通信制御装置４におけるポート幅の検出を第２の情報処理装置２０で行う場合について説明したが、第２の通信制御装置４におけるポート幅の検出を第１の情報処理装置１０において行ってもよい。このようにすることで、第２の情報処理装置２０から第１の情報処理装置１０に、サーバ６０を介してポート幅情報を送信しなくてよくなる。なお、この場合には、第２の情報処理装置２０から送信されたポート幅検出用パケットの通過した第２の通信制御装置４におけるポートの位置を示す情報であるポート幅検出用ポート情報は、サーバ６０から第１の情報処理装置１０に送信されることになる。
【０１７２】
また、本実施の形態では、バブルパケット送信ポートの検出を第１の情報処理装置１０で行う場合について説明したが、バブルパケット送信ポートの検出を第２の情報処理装置２０において行ってもよい。このようにすることで、第１の情報処理装置１０から第２の情報処理装置２０に、サーバ６０を介してバブルパケット送信ポート情報を送信しなくてよくなる。なお、この場合には、第１の情報処理装置１０から送信されたポート検出用パケットの通過した第１の通信制御装置３におけるポートの位置を示す情報である検出用ポート情報は、サーバ６０から第２の情報処理装置２０に送信されることになる。また、この場合には、第１の通信制御装置３におけるポート幅の検出を第２の情報処理装置２０において行ってもよい。
【０１７３】
また、本実施の形態では、基準ポート情報がサーバ６０から第１の情報処理装置１０に送信される場合について説明したが、基準ポート情報は、基準ポート検出用パケットを送信した第２の情報処理装置２０に送信されてもよい。この場合には、第２の情報処理装置２０からサーバ６０を介して、第１の情報処理装置１０に基準ポート情報が再度、送信されることになる。
【０１７４】
また、本実施の形態において、ポート幅検出用パケット、基準ポート検出用パケット、ポート検出用パケットに、それらのパケットが通過した通信制御装置におけるポートの位置を示す情報を送信する情報処理装置を特定するための情報（例えば、機器ＩＤやＩＰアドレスなど）が含まれており、サーバ６０では、その情報に基づいて、検出したポートの位置を示す情報を送信してもよい。例えば、ポート幅検出用パケット送信部１５が送信するポート幅検出用パケットに、ポート幅検出用ポート情報の送信先である第１の情報処理装置１０の機器ＩＤが含まれており、ポート幅検出用ポート情報送信部９４は、その機器ＩＤに対応する第１の情報処理装置１０にポート幅検出用ポート情報を送信してもよい。
【０１７５】
（実施の形態３）
本発明の実施の形態３による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、片方の情報処理装置が、通信制御装置を介さないで直接通信を行うものである。
【０１７６】
図２４は、本実施の形態による通信システムの構成を示すブロック図である。図２４において、本実施の形態による通信システムは、第１の情報処理装置１と、第２の情報処理装置２と、第１の通信制御装置３と、サーバ６とを備える。なお、この図２４で示される本実施の形態による通信システムは、第２の通信制御装置を備えない以外、実施の形態１による通信システムと同様のものである。また、第１の情報処理装置１、第２の情報処理装置２、サーバ６の構成および動作は、実施の形態１と同様であり、その説明を省略する。
【０１７７】
ここで、第２の情報処理装置２は、通信制御装置を介さないで通信を行うものであるため、第２の情報処理装置２は、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴの通信制御装置を介して通信を行っているように判断される。したがって、本実施の形態における動作は、実施の形態１において第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである場合と同様の処理となり、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる（図１７において、片方のＮＡＴがＯｐｅｎ  ＮＡＴである場合が、本実施の形態に対応する）。
【０１７８】
以上のように、本実施の形態による通信システムによれば、第２の情報処理装置２が通信制御装置を介さないで通信を行う場合であっても、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１７９】
なお、本実施の形態では、実施の形態１の通信システムにおいて、第２の通信制御装置を備えない構成について説明したが、実施の形態２の通信システムにおいて、第２の通信制御装置を備えない構成であってもよい。このような、第２の情報処理装置が通信制御装置を介さない場合であっても、第１の情報処理装置と第２の情報処理装置との間の通信を確立することができる。
【０１８０】
また、本実施の形態では、第２の情報処理装置２が通信制御装置を介さないで通信を行う場合について説明したが、第２の情報処理装置２は、通信制御装置を介して通信を行い、第１の情報処理装置１が通信制御装置を介さないで通信を行う場合であっても、同様に第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１８１】
なお、上記各実施の形態において、サーバ６，６０が情報処理装置に相手方の通信制御装置のＩＰアドレスを通知する機能を有する場合について説明したが、この機能は、サーバ６等とは別のサーバにおいて実現されてもよい。すなわち、一方の情報処理装置に他方の通信制御装置のアドレスを通知するサーバと、バブルパケット送信ポートを検出する処理等を行うサーバとは別のサーバであってもよい。すなわち、図２５で示される通信システムにおいて、第１の情報処理装置１、および第２の情報処理装置２は、第１の通信制御装置３、および第２の通信制御装置４のアドレスをアドレスサーバ６ｂから取得し、情報処理装置間の通信を確立する処理においては、サーバ６ａを用いるようにしてもよい。
【０１８２】
また、一方の情報処理装置に他方の通信制御装置（通信制御装置を備えない場合には情報処理装置）のアドレスを通知する処理や、発呼側の情報処理装置が相手方（着呼側）の情報処理装置を呼び出す処理等において、ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いてもよい。
【０１８３】
また、上記各実施の形態では、基準ポートが基準ポート検出用パケットの送信時に、最新に割り当てられるポートであると説明したが、この基準ポートは最新に割り当てられるポートでなくてもよい。例えば、第２の通信制御装置４に接続されている機器が第２の情報処理装置２、２０のみであり、第２の通信制御装置４で使用されているポートの数を大体把握することができる場合には、サーバ６、６０との通信で用いている第２の通信制御装置４のポートを基準ポートとしてもよい。この場合には、基準ポート検出用パケットは、サーバ６、６０と通信を行うパケットとなる。
【０１８４】
また、上記各実施の形態では、主にポート検出用パケットをバブルパケットの送信の前後で２回送信する場合について説明したが、ポート検出用パケットをバブルパケットの送信の前後のいずれか１回送信するだけでもよい。この場合には、バブルパケット送信ポートと、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートとが連続していると仮定してバブルパケット送信ポートの検出を行う。もし、その仮定が正しくなかった場合には、再度、基準ポート検出用パケットの送信等を行うこととなる（ステップＳ１０１からの処理を繰り返す）。
【０１８５】
また、上記各実施の形態では、バブルパケット送信ポート検出部６５、７２によって、バブルパケット送信ポートの位置を検出できるかどうか判断してから、バブルパケット送信ポートの位置の検出を行う場合について説明したが、所定の場合には、その判断を行わないで、バブルパケット送信ポートの位置の検出を行ってもよい。その所定の場合とは、例えば、第１の通信制御装置３に第１の情報処理装置１、１０以外が接続されておらず、バブルパケット送信ポートと、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートとが連続する可能性が高い場合などがある。もしこの場合に、検出したバブルパケット送信ポートの位置が誤ったものであり、第１の通信制御装置３で用いているＮＡＴのタイプが所定のものであれば、返信パケットを第１の情報処理装置１、１０が受け付けられないこととなり、再度、基準ポート検出用パケットの送信から繰り返されることとなる。
【０１８６】
また、バブルパケット送信ポート検出部６５、７２において、バブルパケット送信ポートと、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートとが連続しないと判断された場合には、上記各実施の形態における説明のように再送信指示を第１の情報処理装置１に送信したり、バブルパケット送信装置１３等に再送信の指示を行ったりしてもよく、あるいは、通信の確立の処理を終了してもよく、基準ポート検出用パケットの送信からの処理を再度行ってもよい。
【０１８７】
また、バブルパケット送信ポート検出部６５、７２では、バブルパケット送信ポートと、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートとが連続であるかどうかの判断を、連続である蓋然性が高い場合には連続であると判断することにより行ってもよい。例えば、第１の通信制御装置３のポート幅が「１」と「２」で変化し得る場合（例えば、時間的に変わる場合）には、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートの間隔が「２」、「３」、「４」であれば連続である可能性があるため、連続であると判断してその後の処理に進むようにしてもよい。なお、この場合でも、例えば、ポート検出用パケットの送信で用いられた第１の通信制御装置３のポートの間隔が「５」であれば、連続でないと判断される。
【０１８８】
また、上記各実施の形態では、ポート幅検出部６４、７５、８２によってポート幅を検出する場合について説明したが、このポート幅は、ユーザによる手入力や所定の記録媒体（例えば、ＣＤ−ＲＯＭや着脱可能なメモリ等）、通信等によってサーバ６、６０や第１の情報処理装置１、１０に渡されてもよく、あるいは、第１の通信制御装置３等において記憶されているポート幅を取得してもよい。このことは、第１の情報処理装置１、１０等が第２の通信制御装置４等のＩＰアドレスを知ることについてもいえることである。すなわち、ＩＰアドレスが、ユーザの手入力等によって第１の情報処理装置１、１０等に入力されてもよい。
【０１８９】
また、上記各実施の形態では、第１の情報処理装置１、１０がバブルパケット、およびポート検出用パケットを、第１の情報処理装置１、１０のそれぞれ新たなポートを用いて送信する場合について説明したが、例えば、第１の情報処理装置１が第１の通信制御装置３がＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅのポート割り当てルールであるＮＡＴを用いていることを検知した場合には、第１の情報処理装置１、１０は、バブルパケット、およびポート検出用パケットを、第１の情報処理装置１、１０の同一のポートから送信してもよい。ただし、この場合には、ポート検出用パケットの送信先のポート（サーバ６、６０のポート）を異なるものにしておく必要がある。
【０１９０】
また、上記各実施の形態では、返信パケットの送信時に新たに割り当てられた第２の通信制御装置４のポートを用いて返信パケットを送信する場合について説明したが、これは一例であって、返信パケットの送信で用いられる第２の通信制御装置４のポートに、それまでに使用されているポート、例えば、基準ポート検出用パケットの送信で用いられたポートなどが含まれていてもよい。
【０１９１】
また、基準ポートからバブルパケット送信対象ポートまでにおいて割り当て可能なポートの数（α）を、バブルパケット等の再送を行うごとに、大きくしてもよい。すなわち、バブルパケット送信部１３は、バブルパケット等を再送するごとに、より基準ポートから離れたバブルパケット送信対象ポートに対してバブルパケットを送信してもよい。このようにすることで、返信パケットが送信されるまでにバブルパケット送信対象ポートが使用されることを、より回避しやすくなる。
【０１９２】
また、上記各実施の形態では、返信パケット送信部２４がバブルパケット送信部１３から、サーバ６を介して、基準ポートからバブルパケット送信対象ポートまでにおいて割り当て可能なポートの数（α）を受け付ける場合について説明したが、そのαの値は、サーバ６、６０から、バブルパケット送信部１３と返信パケット送信部２４とに送信されてもよく（この場合には、ポート幅情報が第１の情報処理装置１に送信されなくてもよい）、また、第１の情報処理装置１、１０、および第２の情報処理装置２、２０において、そのαの値があらかじめ設定されていてもよい。
【０１９３】
また、上記各実施の形態では、返信パケット送信部２４が、基準ポートからバブルパケット送信対象ポートまでにおいて割り当て可能なポートの数（α）だけの返信パケットを送信すると説明したが、返信パケット送信部２４は、α以上の返信パケットを送信してもよく、α以下の返信パケットを送信してもよい。例えば、返信パケット送信部２４は、αの値をバブルパケット送信部１３からサーバ６、６０を介して受け取るのではなく、基準ポートとバブルパケット送信対象ポートとのポート番号の差を受け取り、その差の値に対応する数の返信パケットを送信してもよい。この場合には、返信パケット送信部２４は、αの倍数の返信パケットを送信することとなる。ここで、図６のステップＳ２０９に関する説明で述べたように、ポート幅検出部６８、８２で検出した第２の通信制御装置４におけるポート幅が、実際のポート幅の倍数である可能性がある場合には、基準ポートとバブルパケット送信対象ポートとのポート番号の差の値を、返信パケットの個数とした方がよい。バブルパケット送信対象ポートを用いた返信パケットの送信を、より確実に行うことができるからである。また、例えば、第２の情報処理装置２、２０が、第２の通信制御装置４において基準ポートの割り当ての後に割り当てられたポートの数を知っている場合には、αからそれだけの数を引いた数の返信パケットを送信してもよい。そのようにしても、返信パケットがバブルパケット送信対象ポートを用いて送信されることになるからである（ただし、第２の通信制御装置４のポート幅の検出が正確である必要がある）。したがって、バブルパケット送信対象ポートの１つ前のポートまでが割り当てられているような場合には、返信パケットは１つだけ送信されてもよい。
【０１９４】
また、上記各実施の形態では、返信パケットを受け付けた後に、再返信パケットを送信する場合について説明したが、返信パケットの受け付けによって第１の情報処理装置１、１０と第２の情報処理装置２、２０との間の通信を確立することができる場合には、再返信パケットを送付しなくてもよい。例えば、第１の情報処理装置１、１０がバブルパケット送信対象ポートを用いて送信された返信パケットを受け付けた場合には、バブルパケット送信ポート、およびバブルパケット送信対象ポートを介したＰｅｅｒ  ｔｏ  Ｐｅｅｒ通信が可能であるため、再返信パケットを送信しなくてもよい。
【０１９５】
また、上記各実施の形態の具体例では、返信パケットを受け付けることができたかどうかを、第２の情報処理装置２、２０から返信パケットを送信した旨をサーバ６、６０を介して受け取った時に、返信パケットをすでに受け付けているかどうかで判断したが、例えば、バブルパケットを送信してから所定時間（例えば、１５秒など）経過しても返信パケットを受け付けない場合には、返信パケットを受け付けることができなかった（すなわち、通信を確立できなかった）と判断してもよい。また、このことは、再返信パケットについても同様であり、返信パケットを送信してから所定時間経過しても再返信パケットを受け付けていない場合には、再返信パケットを受け付けることができなかった（すなわち、通信を確立できなかった）と判断してもよい。
【０１９６】
また、上記各実施の形態では、１つのサーバ６、６０によって、基準ポート情報の送信や、バブルパケット送信ポートの検出等を行う場合について説明したが、複数のサーバによってそれらの処理を行ってもよい。
【０１９７】
（実施の形態４）
本発明の実施の形態４による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムでは、上記各実施の形態において説明したバブルパケット送信ポートの位置の検出方法を用いて、ＳＩＰによる通信を行う場合について説明する。
【０１９８】
図２６は、本実施の形態による通信システムの構成を示すブロック図である。図２６において、本実施の形態による通信システムは、第１の情報処理装置３０と、通信制御装置３と、第２の情報処理装置４０と、ポート検出サーバ５１と、ＳＩＰサーバ５２とを備える。なお、通信制御装置３は、ＮＡＴ機能を有しており、アドレスの変換、ポートの割り当て、パケットのフィルタリング等を行うものであり、上記各実施の形態における第１の通信制御装置３と同様のものであるため、その説明を省略する。
【０１９９】
図２７は、本実施の形態による第１の情報処理装置３０の構成を示すブロック図である。図２７において、第１の情報処理装置３０は、通信部１１と、バブルパケット送信部１３と、検出用パケット送信部１４と、ポート幅検出用パケット送信部１５と、検出用ポート情報受付部７１と、バブルパケット送信ポート検出部７２と、ポート幅検出用ポート情報受付部７４と、ポート幅検出部７５と、ＳＩＰ処理部３１とを備える。なお、ＳＩＰ処理部３１以外の構成および動作は、実施の形態２と同様のものであり、その説明を省略する。ただし、バブルパケット送信部１３は、基準ポート受付部１２が受け付けた基準ポート情報の示す基準ポートの位置に基づいてバブルパケットを送信するのではなく、ＳＩＰ処理部３１から受け取ったバブルパケット送信対象ポートの位置を示す情報に基づいて、そのバブルパケット送信対象ポートに対してバブルパケットを送信する。
【０２００】
ＳＩＰ処理部３１は、ＳＩＰに関する処理を行う。具体的には、ＳＩＰサーバ５２との間で、接続要求の送信や、通信相手のアドレス、ポート番号等の取得等の処理を行う。これらの処理については、従来から行われている処理と同様であるため、その説明を省略する。
【０２０１】
第２の情報処理装置４０は、ＳＩＰサーバ５２を介して他のクライアント端末とＰｅｅｒ  ｔｏ  Ｐｅｅｒの音声通信を行う端末装置（例えば、ＶｏＩＰの電話端末装置）である。第２の情報処理装置４０は、第２の情報処理装置４０のＩＰアドレスと、送信ポートの位置と、受信ポートの位置とをＳＩＰサーバ５２を介して他のクライアント端末に教えるものであり、また、他のクライアント端末の受信ポートを、ＳＩＰサーバ５２を介して受け取り、Ｐｅｅｒ  ｔｏ  Ｐｅｅｒの音声通信において、パケットの送信先をその受信ポートに設定することができるものである。ここで、あるクライアント端末の送信ポートとは、そのクライアント端末が他のクライアント端末に対して情報を送信するポートである。また、あるクライアント端末の受信ポートとは、そのクライアント端末が他のクライアント端末から情報を受信するポートである。第２の情報処理装置４０は、ＳＩＰの一般的なクライアント端末であり、その詳細な説明を省略する。
【０２０２】
図２８は、本実施の形態によるポート検出サーバ５１の構成を示すブロック図である。図２８において、ポート検出サーバ５１は、第１の情報処理装置３０から送信されたバブルパケットの通過した通信制御装置３のポートの位置を検出するための処理を行うものである。ポート検出サーバ５１は、通信部６１と、検出用ポート検出部９１と、検出用ポート情報送信部９２と、ポート幅検出用ポート検出部９３と、ポート幅検出用ポート情報送信部９４とを備える。なお、これらの各構成は、実施の形態２と同様であり、その説明を省略する。
【０２０３】
ＳＩＰサーバ５２は、ＳＩＰに関する処理を行うサーバである。ＳＩＰに関する処理としては、例えば、クライアントからのアドレス通知を受けてアドレスを登録するレジストラの処理や、クライアントのアドレスを管理するロケーション・サービスの処理、クライアントからの発呼要求を受けて、ロケーション・サービスであて先のアドレスを検索し、あて先のクライアントに転送するプロキシサーバの処理などである。なお、このＳＩＰサーバ５２の有する各機能は、２以上のサーバによって実現されてもよい。また、このＳＩＰサーバが、第１の情報処理装置３０側と、第２の情報処理装置４０側とでそれぞれ備えられていてもよい。この場合には、例えば、第１の情報処理装置３０、第１のＳＩＰサーバ、第２のＳＩＰサーバ、第２の情報処理装置４０という経路によって、第１の情報処理装置３０から第２の情報処理装置４０までの情報のリレーが行われる。このＳＩＰサーバ５２の処理は、従来から行われている処理と同様であるため、その詳細な説明を省略する。
【０２０４】
次に、本実施の形態による通信システムの動作について説明する。図２９は、発呼側、ポート検出サーバ５１、ＳＩＰサーバ５２、着呼側の間における情報のやり取りや処理を説明するための図である。なお、図２９では、第１の情報処理装置３０、通信制御装置３を発呼側であるとし、第２の情報処理装置４０を着呼側であるとする。
【０２０５】
（ステップＳ８０１）発呼側の装置である第１の情報処理装置３０と、ポート検出サーバ５１との間で、所定のパケットの送受信を行うことにより、発呼側の通信制御装置３のポート幅を検出する。このポート幅の検出の具体的な処理については、実施の形態２の図２１におけるステップＳ２０６、Ｓ５０１、Ｓ５０２、Ｓ５０３と同様であり、その説明を省略する。
【０２０６】
（ステップＳ８０２）第１の情報処理装置３０は、ＳＩＰサーバ５２に第２の情報処理装置４０との通信を要求する旨の通信要求を送信する。この通信要求では、通信先のクライアント（すなわち、第２の情報処理装置４０）のＩＰアドレスと、送信ポートの位置と、受信ポートの位置とを第１の情報処理装置３０に送信する旨の指示が含まれているものとする。
【０２０７】
（ステップＳ８０３）ＳＩＰサーバ５２は、第１の情報処理装置３０から送信された通信要求を、第２の情報処理装置４０に中継する。そして、その通信要求は、第２の情報処理装置４０で受信される。
【０２０８】
（ステップＳ８０４）第２の情報処理装置４０は、第２の情報処理装置４０のＩＰアドレス、送信ポートの位置、受信ポートの位置を示す情報を含む通信先情報をＳＩＰサーバ５２に送信する。
【０２０９】
（ステップＳ８０５）ＳＩＰサーバ５２は、第２の情報処理装置４０から送信された通信先情報を、第１の情報処理装置３０に中継する。そして、その通信先情報は、第１の情報処理装置３０のＳＩＰ処理部３１で受け付けられる。
【０２１０】
（ステップＳ８０６）第１の情報処理装置３０は、ポート検出パケットや、バブルパケットを送信し、それに対して、ポート検出サーバ５１から、検出用ポート情報を受信する。このバブルパケット等の送受信の具体的な処理については、実施の形態２の図２２の処理と同様であり、その説明を省略する。なお、本実施の形態では、バブルパケットは、ＳＩＰ処理部３１で受け付けられた通信先情報を用いて、第２の情報処理装置４０の送信ポートに送信される。すなわち、本実施の形態では、バブルパケット送信対象ポートは、第２の情報処理装置４０の送信ポートである。また、連続性の判断（図２１のステップＳ６０５）においては、ステップＳ８０１で検出された通信制御装置３のポート幅が用いられる。
【０２１１】
（ステップＳ８０７）第１の情報処理装置３０のバブルパケット送信ポート検出部７２は、バブルパケット送信ポートの位置を検出可能であるかどうか判断する。ステップＳ８０６における連続性の判断（図２１のステップＳ６０５）において、２つのポート検出用パケットの送信で用いられた通信制御装置３のポートと、バブルパケット送信ポートとが連続していると判断された場合には、バブルパケット送信ポートの位置を検出可能であると判断してステップＳ８０８に進み、そうでない場合には、バブルパケット送信ポートの位置を検出可能でないと判断してステップＳ８０６に戻る。
【０２１２】
（ステップＳ８０８）バブルパケット送信ポート検出部７２は、バブルパケット送信ポートの位置を検出する。このバブルパケット送信ポートの位置が、発呼側における受信ポートの位置となる。
【０２１３】
（ステップＳ８０９）ＳＩＰ処理部３１は、通信制御装置３のグローバル側のＩＰアドレスと、ステップＳ８０８で検出されたバブルパケット送信ポート（すなわち、受信ポート）の位置とを含む通信要求を、ＳＩＰサーバ５２に送信する。なお、通信制御装置３のグローバル側のＩＰアドレスについては、あらかじめ、ポート幅の検出等の処理において取得しておくものとする。
【０２１４】
（ステップＳ８１０）ＳＩＰサーバ５２は、第１の情報処理装置３０から送信された通信要求を、第２の情報処理装置４０に中継する。そして、その通信要求は、第２の情報処理装置４０で受信される。
【０２１５】
（ステップＳ８１１）第２の情報処理装置４０は、受信した通信要求に対して、接続準備が完了した旨の応答を送信する。
【０２１６】
（ステップＳ８１２）ＳＩＰサーバ５２は、その応答を第１の情報処理装置３０に中継する。
【０２１７】
（ステップＳ８１３）第１の情報処理装置４０は、第２の情報処理装置４０から受け取った応答に対する確認を送信する。
【０２１８】
（ステップＳ８１４）ＳＩＰサーバ５２は、その確認を第２の情報処理装置４０に中継する。このようにして、発呼側と着呼側でのＰｅｅｒ  ｔｏ  Ｐｅｅｒでの接続を行う準備が完了し、第１の情報処理装置３０が第２の情報処理装置４０の受信ポートに情報を送信し、第２の情報処理装置４０が通信制御装置３の受信ポート（バブルパケット送信ポート）に情報を送信することによって、第１の情報処理装置３０と、第２の情報処理装置４０との間での、ＳＩＰサーバ５２等のリレーサーバを介さない通信が行われることになる。
【０２１９】
なお、図２９の各ステップの処理の順序については、ある程度の任意性がある。例えば、ステップＳ８０１のポート幅の検出処理は、ステップＳ８０６のバブルパケット等の送受信の処理よりも以前に行われるのであれば、通信要求の送信処理（ステップＳ８０２）や、通信先情報の送信処理（ステップＳ８０４）の後に実行されてもよい。
【０２２０】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第１の情報処理装置３０、および第２の情報処理装置４０は、あらかじめＳＩＰサーバ５２に対して、アドレス情報の登録を行っているものとする。また、第１の情報処理装置３０の機器ＩＤは、「ＡＡＡ＠ａｂｃ．．．ｃｏｍ」であり、第２の情報処理装置４０の機器ＩＤは、「ＢＢＢ＠ａｂｃ．．．ｃｏｍ」であるとする。ここで、この具体例は、機器ＩＤが「ＡＡＡ＠ａｂｃ．．．ｃｏｍ」等である場合について説明するが、機器ＩＤは、メールアドレスや、電話番号などのように、クライアント端末を特定できる情報であれば、その形式を問わず、どのようなものであってもよい。
【０２２１】
まず、第１の情報処理装置３０は、ポート検出サーバ５１に対して、ポート幅検出用パケットを送信することにより、通信制御装置３のポート幅の検出を行う（ステップＳ８０１）。この処理の詳細については、実施の形態２と同様であり、その説明を省略する。
【０２２２】
次に、第１の情報処理装置３０は、通信要求を、図３０で示されるポートＰ１からＳＩＰサーバ５２のポートＰ３に送信する（ステップＳ８０２）。この通信要求は、いわゆる「ＩＮＶＩＴＥリクエスト」と呼ばれるものである。この通信要求には、第１の情報処理装置３０の機器ＩＤ「ＡＡＡ＠ａｂｃ．．．ｃｏｍ」と、通信を要求する相手先の第２の情報処理装置４０の機器ＩＤ「ＢＢＢ＠ａｂｃ．．．ｃｏｍ」とが含まれる。また、この通信要求には、ＩＰアドレスと、送信ポートの位置と、受信ポートの位置を示す情報を送信する旨の指示が含まれている。なお、第２の情報処理装置４０が通信要求を受信することにより、ＩＰアドレス等を送信する旨の指示を受信したと判断してもよい。すなわち、通信要求に指示のコマンドが含まれていなくてもよい。
【０２２３】
その通信要求は、ＳＩＰサーバ５２で受信される。そして、ＳＩＰサーバ５２は、第２の情報処理装置４０の機器ＩＤ「ＢＢＢ＠ａｂｃ．．．ｃｏｍ」に対応するＩＰアドレスとポート番号を検索し、そのＩＰアドレスのポート番号に対して、通信要求を送信する（ステップＳ８０３）。
【０２２４】
第２の情報処理装置４０は、その通信要求を受信すると、第２の情報処理装置４０のＩＰアドレスと、送信ポートｓＰｏｒｔの位置と、受信ポートｒＰｏｒｔの位置とを示す情報である通信先情報をＳＩＰサーバ５２のポートＰ３に送信する（ステップＳ８０４）。この通信先情報にも、第１の情報処理装置３０の機器ＩＤと、第２の情報処理装置４０の機器ＩＤとが含まれている。なお、通常のＳＩＰでは、通信先情報には、通信先の送信ポートの位置は含まれない。したがって、通信先情報に通信先の送信ポートの位置が含まれる点については、ＳＩＰの拡張である。
【０２２５】
その通信先情報は、ＳＩＰサーバ５２で受信され、通信制御装置３を介して第１の情報処理装置３０に送信される（ステップＳ８０５）。その通信先情報は、第１の情報処理装置３０のＳＩＰ処理部３１で受け付けられる。ＳＩＰ処理部３１は、その通信先情報に含まれる第２の情報処理装置４０のＩＰアドレスと、送信ポートｓＰｏｒｔの位置を示す情報を、バブルパケット送信部１３に渡す。
【０２２６】
その後、バブルパケットの送信処理等が行われる（ステップＳ８０６）。具体的には、検出用パケット送信部１４は、ポート検出用パケットを、第１の情報処理装置３０において新たに割り当てられたポートＰ５から、ポート検出サーバ５１のポートＰ１１に送信する。そのポート検出用パケットは、ポート検出サーバ５１の検出用ポート検出部９１で受け付けられ、ポート検出用パケットのヘッダに含まれる通信制御装置３のポートＰ８のポート番号が検出される。検出用ポート情報送信部９２は、そのポートＰ８のポート番号をペイロードに含む検出用ポート情報を、通信制御装置３のポートＰ８に送信する。その検出用ポート情報は、通信制御装置３においてアドレス変換され、第１の情報処理装置３０のポートＰ５に送信される。そして、検出用ポート情報受付部７１において、その検出用ポート情報が受け付けられる。
【０２２７】
そのポート検出用パケットの送信の直後に、バブルパケット送信部１３は、バブルパケットを第２の情報処理装置４０のポートｓＰｏｒｔに送信する。そのバブルパケットは、第１の情報処理装置３０のポートＰ６から送信される。ここで、ポートＰ６は、ポートＰ５と異なるポートであり、バブルパケットの送信時に第１の情報処理装置３０において新たに割り当てられたポートである。
【０２２８】
そのバブルパケットの送信の直後に、検出用パケット送信部１４は、再度、ポート検出用パケットを、ポート検出サーバ５１のポートＰ１１に送信する。そのポート検出用パケットは、第１の情報処理装置３０のポートＰ７から送信される。ここで、ポートＰ７は、ポートＰ５、ポートＰ６と異なるポートであり、ポート検出用パケットの送信時に第１の情報処理装置３０において新たに割り当てられたポートである。そのポート検出用パケットは、ポート検出サーバ５１において受信される。また、１回目のポート検出用パケットの場合と同様にして、検出用ポート情報がポート検出サーバ５１から第１の情報処理装置３０に送信される。
【０２２９】
第１の情報処理装置３０の検出用ポート情報受付部７１は、この検出用ポート情報を受け付け、２つのポート検出用パケットの送信で用いられた通信制御装置３のポートの位置と、バブルパケット送信ポートとが連続しているかどうか判断する。この判断は、ポートＰ１０と、ポートＰ８との差が、ステップＳ８０１で検出された通信制御装置３のポート幅の２倍に等しいかどうかによって判断される。ポートＰ１０と、ポートＰ８との差が、通信制御装置３のポート幅の２倍であったとすると、バブルパケット送信ポート検出部７２は、２つのポート検出用パケットの送信で用いられた通信制御装置３のポートと、バブルパケット送信ポートとが連続していると判断し、バブルパケット送信ポートを検出可能であると判断して（ステップＳ８０７）、そのポートＰ８のポート番号と、ポートＰ１０のポート番号とのちょうど真ん中のポート番号を、バブルパケット送信ポートの位置として検出する（ステップＳ８０８）。バブルパケット送信ポート検出部７２は、その検出したバブルパケット送信ポートの位置を、ＳＩＰ処理部３１に渡す。
【０２３０】
ＳＩＰ処理部３１は、そのバブルパケット送信ポートの位置と、通信制御装置３のグローバル側のアドレスとを含む通信要求を再度、ＳＩＰサーバ５２に送信する（ステップＳ８０９）。この通信要求も、いわゆる「ＩＮＶＩＴＥリクエスト」と呼ばれるものであり、第１の情報処理装置３０の機器ＩＤと、第２の情報処理装置４０の機器ＩＤとが含まれる。その通信要求は、ＳＩＰサーバ５２において中継され、第２の情報処理装置４０に送信される（ステップＳ８１０）。この通信も、ポートＰ１〜Ｐ４を介して行われる。
【０２３１】
第２の情報処理装置４０は、その通信要求を受信することによって、発呼側のＩＰアドレスと、受信ポートの位置とを知ることができる。また、第２の情報処理装置４０は、通信要求に対する応答をＳＩＰサーバ５２に送信する（ステップＳ８１１）。この応答にも、第１の情報処理装置３０と、第２の情報処理装置４０との機器ＩＤが含まれている。その応答は、ＳＩＰサーバ５２において中継され、通信制御装置３のポートＰ２を介して第１の情報処理装置３０に送信される（ステップＳ８１２）。
【０２３２】
通信の相手側からの応答に対して、ＳＩＰサーバ５２経由で、応答に対する確認を送信する（ステップＳ８１３、Ｓ８１４）。この確認の送信は、いわゆる「ＡＣＫ」と呼ばれるものである。その後、図３１で示されるように、第１の情報処理装置３０からは、第２の情報処理装置４０のポートｒＰｏｒｔに情報が送信され、第２の情報処理装置４０からは、通信制御装置３のポートＰ９に情報が送信される。通信制御装置３のポートＰ９に送信された情報は、通信制御装置３においてアドレス変換され、第１の情報処理装置３０のポートＰ６に送信される。このようにして、第１の情報処理装置３０と、第２の情報処理装置４０との間において、通信が確立され、両者間における通話が行われることになる。
【０２３３】
なお、本実施の形態では、図２９で示されるシーケンスを用いて説明したが、情報処理装置の間の通信を確立するシーケンスは、図２９で示されるものに限定されない。例えば、ステップＳ８１１の応答の送信において、第２の情報処理装置４０のＩＰアドレスを示す情報、および受信ポートの位置を示す情報をＳＩＰサーバ５２経由で第１の情報処理装置３０に送信してもよい。この場合には、第１の情報処理装置３０が、そのＳＩＰサーバ５２を経由して送信された情報を用いることにより、第１の情報処理装置３０と、第２の情報処理装置４０との間の通信が確立される。ただし、ステップＳ８１１で送信される第２の情報処理装置４０のＩＰアドレスは、ステップＳ８０４で送信されたものと同一のものである。また、第２の情報処理装置４０は、ステップＳ８０４で送信した通信先情報によって示される送信ポートを、第１の情報処理装置３０との通信における送信ポートとして用いるものとする。
【０２３４】
以上のように、本実施の形態による通信システムによれば、実施の形態１〜３において説明したバブルパケット送信ポートの位置を検出する手法を用いることによって、通信制御装置３がどのような種類のＮＡＴを用いていた場合であっても、ＳＩＰによる情報処理装置間の通信を確立することができる。このように、バブルパケット送信ポートの位置を検出する手法は、実施の形態１〜３において説明したシステムやシーケンス以外において用いられてもよい。
【０２３５】
なお、本実施の形態では、通信制御装置３のポート幅や、バブルパケット送信ポートの位置の検出を、クライアント側で行う場合について説明したが、実施の形態１と同様に、それらの処理のうち、任意の１以上の処理をサーバ側において行ってもよい。
【０２３６】
また、本実施の形態では、ポート検出サーバ５１と、ＳＩＰサーバ５２とを別々に備える場合について説明したが、それらを同一のサーバとして構成してもよい。
【０２３７】
また、本実施の形態では、ＳＩＰを用いて、情報処理装置間での通信を確立する場合について説明したが、情報処理装置間の通信を確立する他のプロトコルを用いてもよい。その場合にも、ポート検出サーバ５１を備えることにより、バブルパケット送信ポートの位置を検出することができ、ＮＡＴ機能を有する通信制御装置を介した通信を行うことが可能となる。
【０２３８】
また、例えば実施の形態４で説明したように、上記各実施の形態において、通信システムは、バブルパケットを送信する情報処理装置と、バブルパケット送信ポートの位置を検出するための処理を行うサーバとを備えた通信システムであって、そのバブルパケット送信ポートの位置を検出するためのものであってもよい。すなわち、本発明における通信システムは、以下のような通信システムであってもよい。この通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置が、通信制御装置を介して、通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、バブルパケットの送信で用いられる、通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、バブルパケット送信部がバブルパケットを送信する前後に、サーバに送信する検出用パケット送信部と、を備え、サーバが、情報処理装置から送信されたポート検出用パケットを受け付け、ポート検出用パケットに基づいてバブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部を備えた、ものである。この通信システムにおいて、サーバにおいて検出されたバブルパケット送信ポートの位置は、送信部によって情報処理装置に送信されてもよく、あるいは、その他の方法によって情報処理装置に渡されてもよい。その他の方法としては、例えば、バブルパケット送信ポートの位置を示す情報を記録媒体に記録し、情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、サーバにおいてバブルパケット送信ポートの位置を示す情報が表示され、その表示を見ることによって、ユーザが情報処理装置にポートの範囲を示す情報を入力することであってもよい。
【０２３９】
また、例えば実施の形態４で説明したように、上記各実施の形態において、通信システムは、バブルパケットを送信する情報処理装置と、バブルパケット送信ポートの位置を検出するための処理を行うサーバとを備えた通信システムであって、そのバブルパケット送信ポートの位置を検出するためのものであってもよい。すなわち、本発明における通信システムは、以下のような通信システムであってもよい。この通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置が、通信制御装置を介して、通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、バブルパケットの送信で用いられる、通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、バブルパケット送信部がバブルパケットを送信する前後に、サーバに送信する検出用パケット送信部と、ポート検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、を備え、サーバが、ポート検出用パケットを受け付け、当該ポート検出用パケットが通過した通信制御装置のポートの位置を検出する検出用ポート検出部と、検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を情報処理装置に送信する検出用ポート情報送信部と、を備えた、ものである。このように、バブルパケット送信ポートの位置の検出をサーバではなく、情報処理装置において行ってもよい。この通信システムにおいて、情報処理装置において検出されたバブルパケット送信ポートの位置は、送信部によって他の情報処理装置に送信されてもよく、あるいは、その他の方法によって他の情報処理装置に渡されてもよい。その他の方法としては、例えば、バブルパケット送信ポートの位置を示す情報を記録媒体に記録し、他の情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、情報処理装置においてバブルパケット送信ポートの位置を示す情報が表示され、その表示を見ることによって、ユーザが他の情報処理装置にバブルパケット送信ポートの位置を示す情報を入力することであってもよい。
【０２４０】
また、上記各実施の形態では、各情報処理装置が通信制御装置を１つだけ介して通信回線５に接続される場合について説明したが、複数の通信制御装置を介して通信回線５に接続されている場合（すなわち、多段接続のＮＡＴ）であっても、情報処理装置間の通信を確立することができ得る。
【０２４１】
また、上記各実施の形態では、第１の通信制御装置３、および第２の通信制御装置４がＮＡＴの機能を有するものであると説明したが、第１の通信制御装置３、および第２の通信制御装置４は、ＮＡＴの機能に代えて、あるいはＮＡＴの機能と共にパケットフィルタリングのファイアウォール（Ｆｉｒｅｗａｌｌ）の機能を有するものであってもよい。ここで、パケットフィルタリングとは、例えば、前述の受信フィルタルールに基づいた受信パケットの選択を行うものである。第１の通信制御装置３が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側（第１の情報処理装置１等の側）からグローバル側（通信回線５）へのバブルパケットの送信によって第１の通信制御装置３に送信履歴を残すことで、バブルパケット送信ポートに送信された返信パケットを受け付けることができるようになる。また、第２の通信制御装置４が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側（第２の情報処理装置２等の側）からグローバル側へのバブルパケット送信対象ポートを介した返信パケットの送信によって、第１の情報処理装置１等と、第２の情報処理装置２等との間での通信が確立され得ることとなる。
【０２４２】
また、第１の情報処理装置、および第２の情報処理装置は、アプリケーションとしてのファイアウォールの機能を実装するものであってもよく、そうでなくてもよい。
【０２４３】
また、上記各実施の形態では、サーバ６等をＩＰアドレスによって特定する場合について説明したが、サーバ６等をドメイン名（例えば、ｓｅｒｖｅｒ．ｐａｎａ．ｎｅｔなど）によって特定してもよい。この場合には、そのドメイン名がＤＮＳサーバを用いて、ＩＰアドレスに変換されることにより、サーバを特定することができる。
【０２４４】
また、上記各実施の形態における通信で用いられるプロトコルは、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）であってもよく、あるいは、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）であってもよい。
【０２４５】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０２４６】
また、上記各実施の形態において、通信の要求を出す側がバブルパケットを送信する側である場合について説明したが、通信の要求を受け取る側がバブルパケットを送信する側であってもよい。
【０２４７】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成してもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラム制御によるソフトウェアにより構成してもよい。なお、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、第２の情報処理装置と通信する第１の情報処理装置における処理を実行させるためのプログラムであって、第１の通信制御装置に送信履歴を残すために送信されるバブルパケットの送信の対象の基準となる第２の通信制御装置におけるポートである基準ポートの位置を示す基準ポート情報を受け付ける基準ポート受付ステップと、基準ポート情報に基づいて、第１の通信制御装置を介して、バブルパケットを第２の通信制御装置に送信するバブルパケット送信ステップと、バブルパケットの送信で用いられる、第１の通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために、ポート検出用パケットを送信する検出用パケット送信ステップと、バブルパケット送信ポートに対して、第２の情報処理装置から第２の通信制御装置を介して送信された返信パケットを受け付ける返信パケット受付ステップと、を実行させるためのものである。
【０２４８】
また、このプログラムでは、基準ポートは、第２の通信制御装置で割り当てられたポートのうち、基準ポートの位置を検出するための基準ポート検出用パケットが第２の情報処理装置から送信された時点における最新のポートであってもよい。
【０２４９】
また、このプログラムでは、検出用パケット送信ステップにおいて、バブルパケット送信ステップでバブルパケットを送信する前後に、ポート検出用パケットを送信してもよい。
【０２５０】
また、このプログラムでは、バブルパケット、およびポート検出用パケットが、第１の通信制御装置における異なるポートを用いて送信されてもよい。
【０２５１】
また、このプログラムでは、バブルパケット、およびポート検出用パケットが、第１の情報処理装置において新たに割り当てられたポートを用いて送信されてもよい。
【０２５２】
また、このプログラムでは、コンピュータに、バブルパケット、およびポート検出用パケットを再度送信する旨の再送信指示を受け付ける再送信指示受付ステップをさらに実行させ、検出用パケット送信ステップでは、再送信指示受付ステップで再送信指示を受け付けた場合に、ポート検出用パケットを再度送信し、バブルパケット送信ステップでは、再送信指示受付ステップで再送信指示を受け付けた場合に、バブルパケットを再度送信してもよい。
【０２５３】
また、このプログラムでは、コンピュータに、第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させてもよい。
【０２５４】
また、このプログラムでは、第２の通信制御装置における、バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートが、基準ポートから所定のポート割り当て後に割り当てられるポートであってもよい。
【０２５５】
また、このプログラムでは、コンピュータに、第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、バブルパケット送信ステップでは、基準ポートとのポート間隔がポート幅情報の示すポート幅のＭ倍（Ｍは１以上の整数）であるバブルパケット送信対象ポートに対してバブルパケットを送信してもよい。
【０２５６】
また、このプログラムでは、コンピュータに、返信パケット受付ステップで返信パケットを受け付けた場合に、当該返信パケットの送信で用いられた第２の通信制御装置のポートに対して、再返信パケットを送信する再返信パケット送信ステップをさらに実行させてもよい。
【０２５７】
また、このプログラムでは、コンピュータに、ポート検出用パケットが通過した第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、バブルパケット送信ポート検出ステップで検出したバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信ステップと、をさらに実行させてもよい。
【０２５８】
また、このプログラムでは、検出用パケット送信ステップで、バブルパケット送信ポート検出ステップにおいてバブルパケット送信ポートの位置を検出できなかった場合に、ポート検出用パケットを再度送信し、バブルパケット送信ステップで、バブルパケット送信ポート検出ステップにおいてバブルパケット送信ポートの位置を検出できなかった場合に、バブルパケットを再度送信してもよい。
【０２５９】
また、このプログラムでは、コンピュータに、第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップと、ポート幅検出用パケットが通過した第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、をさらに実行させ、バブルパケット送信ポート検出ステップで、ポート幅検出ステップで検出した第１の通信制御装置におけるポート幅を用いてバブルパケット送信ポートの位置を検出してもよい。
【０２６０】
上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、第２の情報処理装置と通信する第１の情報処理装置における処理を実行させるためのプログラムであって、第１の通信制御装置は、第２の情報処理装置から第２の通信制御装置を介して、第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、バブルパケットの送信の対象の基準となる第１の通信制御装置におけるポートである基準ポートの位置を検出するための基準ポート検出用パケットを送信する基準ポート検出用パケット送信ステップと、第２の情報処理装置からのバブルパケットの送信で用いられた、第２の通信制御装置のポートであるバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を受け付けるバブルパケット送信ポート受付ステップと、バブルパケット送信ポート情報の示すバブルパケット送信ポートに対して返信パケットを送信する返信パケット送信ステップと、を実行させるためのものである。
【０２６１】
また、このプログラムでは、返信パケット送信ステップにおいて、返信パケットを、第１の通信制御装置の異なるＮ個（Ｎは２以上の整数）のポートを用いて送信してもよい。
【０２６２】
また、このプログラムでは、Ｎ個のポートが、返信パケットの送信時に、第１の通信制御装置において新たに割り当てられるものであってもよい。
【０２６３】
また、このプログラムでは、Ｎが、第１の通信制御装置における、基準ポートからバブルパケットが送信されたポートまでにおいて割り当て可能なポートの数以上であってもよい。
【０２６４】
また、このプログラムでは、コンピュータに、返信パケットの送信で用いられた第１の通信制御装置のポートに対して、第２の情報処理装置から送信された再返信パケットを受け付ける再返信パケット受付ステップをさらに実行させてもよい。
【０２６５】
また、このプログラムでは、コンピュータに、第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させてもよい。
【０２６６】
また、このプログラムでは、コンピュータに、ポート幅検出用パケットが通過した第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、ポート幅検出用ポート情報受付ステップで受け付けたポート幅検出用ポート情報に基づいて、第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、ポート幅検出ステップで検出した第１の通信制御装置におけるポート幅を示す情報であるポート幅情報を送信するポート幅送信ステップと、をさらに実行させてもよい。
【０２６７】
上記実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置、および第２の情報処理装置が、第１の情報処理装置の通信を制御する第１の通信制御装置、および第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、第１の通信制御装置に送信履歴を残すために第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる第２の通信制御装置におけるポートである基準ポートの位置を検出するために、第２の情報処理装置から第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて基準ポートの位置を検出する基準ポート検出ステップと、基準ポート検出ステップで検出した基準ポートの位置を示す基準ポート情報を第１の情報処理装置に送信する基準ポート送信ステップと、第１の情報処理装置から第２の通信制御装置へのバブルパケットの送信で用いられる第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、第１の情報処理装置から送信されたポート検出用パケットを受け付け、ポート検出用パケットに基づいてバブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、バブルパケット送信ポート検出ステップで検出したバブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を第２の情報処理装置に送信するバブルパケット送信ポート送信ステップと、を実行させるためのものである。
【０２６８】
また、このプログラムでは、コンピュータに、バブルパケット送信ポート検出ステップでバブルパケット送信ポートの位置を検出できなかった場合に、バブルパケット、およびポート検出用パケットを再度送信する旨の指示である再送信指示を第１の情報処理装置に送信する再送信指示送信ステップをさらに実行させてもよい。
【０２６９】
また、このプログラムでは、バブルパケット送信ポート検出ステップにおいて、バブルパケットの送信の前後に送信されたポート検出用パケットを受け付け、当該ポート検出用パケットの送信で用いられた第１の通信制御装置における２つのポートと、バブルパケット送信ポートとが連続しているかどうか判断し、連続している場合には、２つのポートで挟まれるポートの位置をバブルパケット送信ポートの位置として検出してもよい。
【０２７０】
また、このプログラムでは、バブルパケット送信ポート検出ステップにおいて、ポート検出用パケットの送信で用いられた第１の通信制御装置における２つのポートの間隔が、第１の通信制御装置におけるポート幅の２倍である場合に、連続していると判断してもよい。
【０２７１】
また、このプログラムでは、コンピュータに、第１の情報処理装置から第１の通信制御装置を介して送信された第１のポート幅検出用パケットを受け付け、当該第１のポート幅検出用パケットに基づいて第１の通信制御装置におけるポート幅を検出する第１のポート幅検出ステップをさらに実行させ、バブルパケット送信ポート検出ステップでは、第１のポート幅検出部が検出したポート幅を用いて判断を行ってもよい。
【０２７２】
また、このプログラムでは、コンピュータに、第２の情報処理装置から第２の通信制御装置を介して送信された第２のポート幅検出用パケットを受け付け、当該第２のポート幅検出用パケットに基づいて第２の通信制御装置におけるポート幅を検出する第２のポート幅検出ステップと、第２のポート幅検出ステップで検出したポート幅を示す情報であるポート幅情報を第１の情報処理装置に送信するポート幅送信ステップと、をさらに実行させてもよい。
【０２７３】
また、上記実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置、および第２の情報処理装置が、第１の情報処理装置の通信を制御する第１の通信制御装置、および第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、第１の通信制御装置に送信履歴を残すために第１の情報処理装置が送信するバブルパケットの送信の対象の基準となる第２の通信制御装置におけるポートである基準ポートの位置を検出するために、第２の情報処理装置から第２の通信制御装置を介して送信された基準ポート検出用パケットを受け付け、当該基準ポート検出用パケットに基づいて基準ポートの位置を検出する基準ポート検出ステップと、基準ポート検出ステップで検出した基準ポートの位置を示す基準ポート情報を第１の情報処理装置に送信する基準ポート送信ステップと、第１の情報処理装置から第２の通信制御装置へのバブルパケットの送信で用いられる第１の通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、第１の情報処理装置から送信されたポート検出用パケットを受け付け、当該ポート検出用パケットに基づいてポート検出用パケットが通過した第１の通信制御装置のポートの位置を検出する検出用ポート検出ステップと、検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を第１の情報処理装置に送信する検出用ポート情報送信ステップと、を実行させるためのものである。
【０２７４】
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する情報処理装置における処理を実行させるためのプログラムであって、通信制御装置を介して、通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、バブルパケットの送信で用いられる、通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを、バブルパケット送信ステップでバブルパケットを送信する前後に、サーバに送信する検出用パケット送信ステップと、を実行させるためのものである。
【０２７５】
また、上記各実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために情報処理装置が送信するバブルパケットの送信で用いられる通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、バブルパケットの送信の前後に情報処理装置から送信されたポート検出用パケットを受け付けるステップと、ポート検出用パケットに基づいてバブルパケット送信ポートの位置を検出するステップと、を実行させるためのものである。
【０２７６】
また、上記各実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために情報処理装置が送信するバブルパケットの送信で用いられる通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、バブルパケットの送信の前後に情報処理装置から送信されたポート検出用パケットを受け付けるステップと、ポート検出用パケットが通過した通信制御装置のポートの位置を検出するステップと、ポート検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を情報処理装置に送信するステップと、を実行させるためのものである。
【０２７７】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受け付ける受付ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０２７８】
また、このプログラムは、サーバなどからダウンロードされることによって流通してもよく、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されることにより流通してもよい。
【０２７９】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【産業上の利用可能性】
【０２８０】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【図面の簡単な説明】
【０２８１】
【図１】本発明の実施の形態１による通信システムの構成を示すブロック図
【図２】同実施の形態による第１の情報処理装置の構成を示すブロック図
【図３】同実施の形態による第２の情報処理装置の構成を示すブロック図
【図４】同実施の形態によるサーバの構成を示すブロック図
【図５】同実施の形態による通信システムの動作を示すフローチャート
【図６】同実施の形態における通信の確立に関する処理について説明するための図
【図７】同実施の形態におけるポート幅の検出について説明するための図
【図８】同実施の形態における通信の確立に関する処理について説明するための図
【図９】同実施の形態における通信の確立に関する処理について説明するための図
【図１０】同実施の形態における具体例について説明するための図
【図１１】同実施の形態における具体例について説明するための図
【図１２】同実施の形態における具体例について説明するための図
【図１３】同実施の形態における具体例について説明するための図
【図１４】同実施の形態における具体例について説明するための図
【図１５】同実施の形態における具体例について説明するための図
【図１６】同実施の形態における具体例について説明するための図
【図１７】同実施の形態における接続可能な通信制御装置の特性の組み合わせを示す図
【図１８】本発明の実施の形態２による第１の情報処理装置の構成を示すブロック図
【図１９】同実施の形態による第２の情報処理装置の構成を示すブロック図
【図２０】同実施の形態によるサーバの構成を示すブロック図
【図２１】同実施の形態における通信の確立に関する処理について説明するための図
【図２２】同実施の形態における通信の確立に関する処理について説明するための図
【図２３】同実施の形態における通信の確立に関する処理について説明するための図
【図２４】本発明の実施の形態３による通信システムの構成を示すブロック図
【図２５】他の実施の形態による通信システムの構成を示すブロック図
【図２６】本発明の実施の形態４による通信システムの構成を示すブロック図
【図２７】同実施の形態による第１の情報処理装置の構成を示すブロック図
【図２８】同実施の形態によるサーバの構成を示すブロック図
【図２９】同実施の形態における通信の確立に関する処理について説明するための図
【図３０】同実施の形態における具体例について説明するための図
【図３１】同実施の形態における具体例について説明するための図
【図３２】ＮＡＴの特性（タイプ）について説明するための図
【図３３】通信システムの一例を示す図
【図３４】従来の接続可能なＮＡＴの組み合わせを示す図
【符号の説明】
【０２８２】
１    第１の情報処理装置
２    第２の情報処理装置
３    第１の通信制御装置
４    第２の通信制御装置
５    通信回線
６    サーバ
１１，２１，６１    通信部
１２    基準ポート受付部
１３    バブルパケット送信部
１４    検出用パケット送信部
１５，２６    ポート幅検出用パケット送信部
１６    再送信指示受付部
１７    返信パケット受付部
１８    再返信パケット受付部
１９    ポート幅受付部
２２    基準ポート検出用パケット送信部
２３    バブルパケット送信ポート受付部
２４    返信パケット送信部
２５    再返信パケット受付部
６２    基準ポート検出部
６３    基準ポート送信部
６４    ポート幅検出部
６５    バブルパケット送信ポート検出部
６６    再送信指示送信部
６７    バブルパケット送信ポート送信部
６８    ポート幅送信部
【図１】
2006157941.tif 000003
【図２】
2006157941.tif 000004
【図３】
2006157941.tif 000005
【図４】
2006157941.tif 000006
【図５】
2006157941.tif 000007
【図６】
2006157941.tif 000008
【図７】
2006157941.tif 000009
【図８】
2006157941.tif 000010
【図９】
2006157941.tif 000011
【図１０】
2006157941.tif 000012
【図１１】
2006157941.tif 000013
【図１２】
2006157941.tif 000014
【図１３】
2006157941.tif 000015
【図１４】
2006157941.tif 000016
【図１５】
2006157941.tif 000017
【図１６】
2006157941.tif 000018
【図１７】
2006157941.tif 000019
【図１８】
2006157941.tif 000020
【図１９】
2006157941.tif 000021
【図２０】
2006157941.tif 000022
【図２１】
2006157941.tif 000023
【図２２】
2006157941.tif 000024
【図２３】
2006157941.tif 000025
【図２４】
2006157941.tif 000026
【図２５】
2006157941.tif 000027
【図２６】
2006157941.tif 000028
【図２７】
2006157941.tif 000029
【図２８】
2006157941.tif 000030
【図２９】
2006157941.tif 000031
【図３０】
2006157941.tif 000032
【図３１】
2006157941.tif 000033
【図３２】
2006157941.tif 000034
【図３３】
2006157941.tif 000035
【図３４】
2006157941.tif 000036
【手続補正書】
【提出日】平成18年1月11日(2006.1.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、
前記情報処理装置は、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを前記サーバに送信する検出用パケット送信部と、を備えた通信システム。
【請求項２】
前記検出用パケット送信部は、前記バブルパケット送信部が前記バブルパケットを送信する前および／または後に、前記ポート検出用パケットを送信する、請求項１記載の通信システム。
【請求項３】
前記サーバは、前記情報処理装置から送信された前記ポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部を備える、請求項１または２記載の通信システム。
【請求項４】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項３記載の通信システム。
【請求項５】
前記情報処理装置は、
前記通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記通信制御装置のポート幅を検出するポート幅検出部をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出したポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項３または４記載の通信システム。
【請求項６】
前記サーバは、前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信部をさらに備えた、請求項３〜５記載の通信システム。
【請求項７】
前記情報処理装置は、
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、をさらに備え、
前記サーバは、
前記ポート検出用パケットを受け付け、当該ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信部と、を備えた、請求項１または２記載の通信システム。
【請求項８】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項７記載の通信システム。
【請求項９】
前記情報処理装置は、
前記通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記通信制御装置を介して送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記通信制御装置におけるポート幅を検出するポート幅検出部と、をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出した前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出し、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットが通過した前記通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備えた、請求項７または８記載の通信システム。
【請求項１０】
前記情報処理装置は、
前記バブルパケット送信ポートの位置を示すバブルパケット送信ポート情報を送信するバブルパケット送信ポート送信部をさらに備えた、請求項７〜９記載の通信システム。
【請求項１１】
サーバを利用して他の情報処理装置と通信制御装置を介した通信を確立する情報処理装置であって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを前記サーバに送信する検出用パケット送信部と、を備えた情報処理装置。
【請求項１２】
前記検出用パケット送信部は、前記バブルパケット送信部が前記バブルパケットを送信する前および／または後に、前記ポート検出用パケットを送信する、請求項１１記載の情報処理装置。
【請求項１３】
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部で受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部と、をさらに備えた請求項１１または１２記載の情報処理装置。
【請求項１４】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項１３記載の情報処理装置。
【請求項１５】
前記情報処理装置は、
前記通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記通信制御装置を介して送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記通信制御装置におけるポート幅を検出するポート幅検出部と、をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出した前記通信制御装置のポート幅を用いて、前記バブルパケット送信ポートの位置を検出する、請求項１３または１４記載の情報処理装置。
【請求項１６】
情報処理装置の通信を制御する通信制御装置を介して通信を行う情報処理装置と、他の情報処理装置との通信を確立させるサーバであって、
前記情報処理装置から送信されたポート検出用パケットを受け付け、前記ポート検出用パケットに基づいて前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部
を備えたサーバ。
【請求項１７】
前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出部、をさらに備えた請求項１６記載のサーバ。
【請求項１８】
前記バブルパケット送信ポート検出部は、前記通信制御装置のポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項１７記載のサーバ。
【請求項１９】
前記通信制御装置のポート幅を検出するために、前記情報処理装置から送信されたポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記通信制御装置のポート幅を検出するポート幅検出部をさらに備え、
前記バブルパケット送信ポート検出部は、前記ポート幅検出部が検出したポート幅を用いて前記バブルパケット送信ポートの位置を検出する、請求項１７または１８記載のサーバ。
【請求項２０】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを含む通信システム中の前記情報処理装置に応用される通信方法であって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記通信制御装置のポートであるバブルパケット送信ポートの位置を検出するために用いられるポート検出用パケットを前記サーバに送信する検出用パケット送信ステップと、を備えた通信方法。
【請求項２１】
前記検出用パケット送信ステップにおいて、
前記ポート検出用パケットは、前記バブルパケット送信ステップで前記バブルパケットを送信する前および／または後に送信される、請求項２０記載の通信方法。
【請求項２２】
前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートの位置を検出するバブルパケット送信ポート検出ステップと、をさらに備えた請求項２０または２１記載の通信方法。
【請求項２３】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを含む通信システム中の前記サーバに応用される通信方法であって、
前記通信制御装置に送信履歴を残すために前記情報処理装置が送信するバブルパケットの送信で用いられる前記通信制御装置におけるポートであるバブルパケット送信ポートの位置を検出するために、前記情報処理装置から送信されたポート検出用パケットを受け付けるステップ
を備えた通信方法。
【請求項２４】
前記ポート検出用パケットに基づいて前記バブルパケット送信ポートの位置を検出するステップ、をさらに備えた請求項２３記載の通信方法。
【請求項２５】
前記ポート検出用パケットに基づいて、前記ポート検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出ステップと、
前記検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を送信する検出用ポート情報送信ステップと、をさらに備えた請求項２３記載の通信方法。