(57)【要約】【課題】通信制御装置（ＮＡＴ）を介して通信を行う複数の情報処理装置間における通信の確立を、より確実に行うことができる通信システムを提供する。【解決手段】第１の情報処理装置１は、第１の通信制御装置３を介して、第１の通信制御装置３に送信履歴を残すためのバブルパケットを第２の通信制御装置４に送信し、第２の情報処理装置２は、バブルパケットの送信で用いられる、第１の通信制御装置３のポートであるバブルパケット送信ポートを少なくとも含む１以上のポートに対して返信パケットを送信し、第１の情報処理装置１は、バブルパケット送信ポートに対して、第２の情報処理装置２から第２の通信制御装置４を介して送信される返信パケットを受け付ける。【選択図】図１
2006136031.tif 000002
【特許請求の範囲】
【請求項１】
第１の情報処理装置と、第２の情報処理装置と、前記第１の情報処理装置の通信を制御する第１の通信制御装置と、前記第２の情報処理装置の通信を制御する第２の通信制御装置と、前記第１の情報処理装置と前記第２の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第１の情報処理装置は、
前記第１の通信制御装置を介して、前記第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、
前記第２の情報処理装置は、
前記バブルパケット送信ポートを少なくとも含む１以上のポートに対して前記返信パケットを送信する返信パケット送信部を備えた、通信システム。
【請求項２】
前記第１の情報処理装置は、
前記バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部をさらに備え、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を前記第２の情報処理装置に送信する範囲送信部と、をさらに備え、
前記第２の情報処理装置は、
前記範囲情報を受け付ける範囲受付部をさらに備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項１記載の通信システム。
【請求項３】
前記サーバは、
前記第２の通信制御装置における、前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を前記第１の情報処理装置に送信するバブルパケット送信対象ポート送信部をさらに備え、
前記第１の情報処理装置は、
前記バブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部をさらに備え、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項１または２記載の通信システム。
【請求項４】
前記第１の情報処理装置は、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して前記サーバに送信するポート幅検出用パケット送信部をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第１の通信制御装置のポート幅を示す情報であるポート幅情報を前記第２の情報処理装置に送信するポート幅送信部と、をさらに備え、
前記第２の情報処理装置は、
前記ポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項１記載の通信システム。
【請求項５】
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、
前記第１の通信制御装置を介して、前記第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備えた第１の情報処理装置。
【請求項６】
前記バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信部をさらに備えた、請求項５記載の第１の情報処理装置。
【請求項７】
前記範囲検出用パケット送信部は、前記バブルパケット送信部が前記バブルパケットを送信する前後において、それぞれ前記範囲検出用パケットを送信する、請求項６記載の第１の情報処理装置。
【請求項８】
前記範囲検出用パケット送信部は、前記バブルパケットの送信の前後で、それぞれ異なるアドレスに前記範囲検出用パケットを送信する、請求項７記載の第１の情報処理装置。
【請求項９】
前記範囲検出用パケット送信部は、前記バブルパケットの送信の前後で、それぞれ前記第１の情報処理装置において新たに割り当てられたポートを用いて前記範囲検出用パケットを送信する、請求項７記載の第１の情報処理装置。
【請求項１０】
前記第２の通信制御装置における前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部をさらに備え、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５から９のいずれか記載の第１の情報処理装置。
【請求項１１】
前記バブルパケット送信対象ポートは、前記第２の情報処理装置が、前記第１の情報処理装置と前記第２の情報処理装置との間の通信を確立させるサーバとの間で情報の送受信を行うポートである、請求項１０記載の第１の情報処理装置。
【請求項１２】
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを前記第１の通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備えた、請求項５記載の第１の情報処理装置。
【請求項１３】
前記第１の通信制御装置は、前記第２の情報処理装置から、前記第２の通信制御装置を介して、前記第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
前記第２の情報処理装置からの前記バブルパケットの送信で用いられた、前記第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信部をさらに備えた、請求項５記載の第１の情報処理装置。
【請求項１４】
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付部をさらに備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項１３記載の第１の情報処理装置。
【請求項１５】
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項１３または１４記載の第１の情報処理装置。
【請求項１６】
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、
前記第１の通信制御装置は、前記第２の情報処理装置から、前記第２の通信制御装置を介して、当該第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
前記第２の情報処理装置からの前記バブルパケットの送信に用いられた、前記第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信部を備えた第１の情報処理装置。
【請求項１７】
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付部をさらに備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項１６記載の第１の情報処理装置。
【請求項１８】
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項１６または１７記載の第１の情報処理装置。
【請求項１９】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、
前記第１の情報処理装置、および前記第２の情報処理装置と、情報を送受信する情報送受信部と、
前記第１の通信制御装置、および前記第２の通信制御装置の特性を判断する特性判断部と、
前記特性判断部による判断結果に応じて、前記第１の情報処理装置、および前記第２の情報処理装置のいずれかを送信側（送信側情報処理装置）に決定し、他方を受信側（受信側情報処理装置）に決定する送受信決定部と、を備えたサーバ。
【請求項２０】
前記受信側情報処理装置の通信を制御する通信制御装置（受信側通信制御装置）における、前記送信側情報処理装置が、前記送信側情報処理装置の通信を制御する通信制御装置（送信側通信制御装置）に送信履歴を残すためのバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、前記送信側情報処理装置に送信するバブルパケット送信対象ポート送信部をさらに備えた、請求項１９記載のサーバ。
【請求項２１】
前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートは、前記情報送受信部と前記受信側情報処理装置との通信で用いられる、前記受信側通信制御装置のポートである、請求項２０記載のサーバ。
【請求項２２】
前記送信側情報処理装置から、前記受信側通信制御装置における前記バブルパケット送信対象ポートに対する前記バブルパケットの送信で用いられる、前記送信側通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付けることにより、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信部と、をさらに備えた請求項２０または２１記載のサーバ。
【請求項２３】
前記範囲検出部は、複数のアドレスに送信された前記範囲検出用パケットに基づいて、前記検出を行う、請求項２２記載のサーバ。
【請求項２４】
前記送信側情報処理装置から前記送信側通信制御装置を介して送信された、前記送信側通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、前記送信側通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記送信側通信制御装置のポート幅を示す情報であるポート幅情報を送信するポート幅送信部と、をさらに備えた、請求項２０記載のサーバ。
【請求項２５】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して通信を行う通信方法であって、
前記第１の情報処理装置が、前記第１の通信制御装置を介して、当該第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に対して送信するバブルパケット送信ステップと、
前記第２の情報処理装置が、前記バブルパケット送信ステップにおけるバブルパケットの送信で用いられた前記第１の通信制御装置のポートであるバブルパケット送信ポートを少なくとも含む１以上のポートに対して、前記第２の通信制御装置を介して、返信パケットを送信する返信ステップと、を備えた通信方法。
【請求項２６】
前記第１の情報処理装置が前記第２の通信制御装置のアドレスを取得する第１のアドレス取得ステップをさらに備え、
前記バブルパケット送信ステップでは、前記第１のアドレス取得ステップで取得したアドレスに対して前記バブルパケットを送信する、請求項２５記載の通信方法。
【請求項２７】
前記第２の情報処理装置が前記第１の通信制御装置のアドレスを取得する第２のアドレス取得ステップをさらに備え、
前記返信ステップでは、前記第２のアドレス取得ステップで取得したアドレスに対して前記返信パケットを送信する、請求項２５または２６記載の通信方法。
【請求項２８】
前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップをさらに備え、
前記返信ステップでは、範囲検出ステップで検出された範囲のポートに対して、前記返信パケットを送信する、請求項２５記載の通信方法。
【請求項２９】
前記範囲検出ステップは、
前記第１の情報処理装置が、前記範囲を検出するために用いられる第１の範囲検出用パケットを、前記バブルパケットの送信の前に送信するステップと、
前記第１の範囲検出用パケットを受け付け、前記第１の範囲検出用パケットの送信で用いられた前記第１の通信制御装置のポートの位置を検出するステップと、
前記第１の情報処理装置が、前記範囲を検出するために用いられる第２の範囲検出用パケットを、前記バブルパケットの送信の後に送信するステップと、
前記第２の範囲検出用パケットを受け付け、前記第２の範囲検出用パケットの送信で用いられた前記第１の通信制御装置のポートの位置を検出するステップと、を含む、請求項２８記載の通信方法。
【請求項３０】
前記第１の範囲検出用パケットと、前記第２の範囲検出用パケットとは、異なるアドレスに送信される、請求項２９記載の通信方法。
【請求項３１】
前記第１の範囲検出用パケットと、前記第２の範囲検出用パケットとは、前記第１の情報処理装置において新たに割り当てられたポートを用いて送信される、請求項２９記載の通信方法。
【請求項３２】
前記第２の通信制御装置における、前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートは、前記第２の情報処理装置が、前記第１の情報処理装置と前記第２の情報処理装置との間の通信を確立させるサーバとの間で情報の送受信を行うポートである、請求項２５記載の通信方法。
【請求項３３】
前記第１の通信制御装置および／または前記第２の通信制御装置の特性を判断する特性判断ステップと、
前記特性判断ステップで判断された特性に応じて、前記第１の情報処理装置、および前記第２の情報処理装置の役割を入れ替える入れ替えステップと、をさらに備えた、請求項２５記載の通信方法。
【請求項３４】
前記返信ステップにおいて、２以上のポートに対して前記返信パケットを送信する場合には、前記第１の通信制御装置におけるポート幅の間隔で送信する、請求項２５記載の通信方法。
【請求項３５】
前記第１の通信制御装置におけるポート幅を検出するポート幅検出ステップをさらに備え、
前記返信ステップでは、前記ポート幅検出ステップで検出されたポート幅の間隔で前記返信パケットを送信する、請求項３４記載の通信方法。
【請求項３６】
コンピュータに、
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置における処理を実行させるためのプログラムであって、
前記第１の通信制御装置を介して、前記第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付ステップと、を実行させるためのプログラム。
【請求項３７】
コンピュータに、
前記バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させるための、請求項３６記載のプログラム。
【請求項３８】
前記範囲検出用パケット送信ステップでは、前記バブルパケット送信ステップにおける前記バブルパケットの送信の前後において、それぞれ前記範囲検出用パケットを送信する、請求項３７記載のプログラム。
【請求項３９】
前記範囲検出用パケット送信ステップでは、前記バブルパケットの送信の前後で、それぞれ異なるアドレスに前記範囲検出用パケットを送信する、請求項３８記載のプログラム。
【請求項４０】
前記範囲検出用パケット送信ステップでは、前記バブルパケットの送信の前後で、それぞれ前記第１の情報処理装置において新たに割り当てられたポートを用いて前記範囲検出用パケットを送信する、請求項３８記載のプログラム。
【請求項４１】
コンピュータに、
前記第２の通信制御装置における前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、
前記バブルパケット送信ステップでは、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項３６から４０のいずれか記載のプログラム。
【請求項４２】
前記バブルパケット送信対象ポートは、前記第２の情報処理装置が、前記第１の情報処理装置と前記第２の情報処理装置との間の通信を確立させるサーバとの間で情報の送受信を行うポートである、請求項４１記載のプログラム。
【請求項４３】
コンピュータに、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させるための、請求項３６記載のプログラム。
【請求項４４】
前記第１の通信制御装置は、前記第２の情報処理装置から、前記第２の通信制御装置を介して、前記第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
コンピュータに、
前記第２の情報処理装置からの前記バブルパケットの送信で用いられた、前記第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信ステップをさらに実行させるための、請求項３６記載のプログラム。
【請求項４５】
コンピュータに、
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、
前記返信パケット送信ステップでは、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項４４記載のプログラム。
【請求項４６】
コンピュータに、
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、
前記返信パケット送信ステップでは、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項４４または４５記載のプログラム。
【請求項４７】
コンピュータに、
第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置における処理を実行させるためのプログラムであって、
前記第１の通信制御装置は、前記第２の情報処理装置から、前記第２の通信制御装置を介して、当該第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、
前記第２の情報処理装置からの前記バブルパケットの送信に用いられた、前記第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信ステップを実行させるためのプログラム。
【請求項４８】
コンピュータに、
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、
前記返信パケット送信ステップでは、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項４７記載のプログラム。
【請求項４９】
コンピュータに、
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、
前記返信パケット送信ステップでは、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項４７または４８記載のプログラム。
【請求項５０】
コンピュータに、
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、
前記第１の情報処理装置、および前記第２の情報処理装置と、情報を送受信する情報送受信ステップと、
前記第１の通信制御装置、および前記第２の通信制御装置の特性を判断する特性判断ステップと、
前記特性判断ステップでの判断結果に応じて、前記第１の情報処理装置、および前記第２の情報処理装置のいずれかを送信側（送信側情報処理装置）に決定し、他方を受信側（受信側情報処理装置）に決定する送受信決定ステップと、を実行させるためのプログラム。
【請求項５１】
前記第１の情報処理装置は、
前記バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信部と、をさらに備え、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、をさらに備え、
前記第２の情報処理装置は、
前記範囲情報を受け付ける範囲受付部をさらに備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、請求項１記載の通信システム。
【請求項５２】
前記第１の情報処理装置は、
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第１の通信制御装置を介して前記サーバに送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第１の通信制御装置のポート幅を示す情報であるポート幅情報を、前記サーバを介して前記第２の情報処理装置に送信するポート幅送信部と、をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第１の情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備え、
前記第２の情報処理装置は、
前記ポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項１、２または５１記載の通信システム。
【請求項５３】
前記サーバは、
前記第２の通信制御装置における、前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を前記第１の情報処理装置に送信するバブルパケット送信対象ポート送信部をさらに備え、
前記第１の情報処理装置は、
前記バブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部をさらに備え、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５１記載の通信システム。
【請求項５４】
前記範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信部と、をさらに備えた請求項６から９のいずれか記載の第１の情報処理装置。
【請求項５５】
前記第２の通信制御装置における前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部をさらに備え、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５４記載の第１の情報処理装置。
【請求項５６】
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第１の通信制御装置のポート幅を示す情報であるポート幅情報を、前記サーバを介して前記第２の情報処理装置に送信するポート幅送信部と、をさらに備えた、請求項５５記載の第１の情報処理装置。
【請求項５７】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、
前記第１の情報処理装置から、前記第２の通信制御装置に対する前記第１の通信制御装置に送信履歴を残すためのバブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、を備えたサーバ。
【請求項５８】
前記第１の情報処理装置から前記第１の通信制御装置を介して送信された、前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第１の情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備えた、請求項５７記載のサーバ。
【請求項５９】
コンピュータに、 
前記範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、
前記範囲検出ステップで検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、をさらに実行させるための請求項３７から４０のいずれか記載のプログラム。
【請求項６０】
コンピュータに、
前記第２の通信制御装置における前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、
前記バブルパケット送信ステップでは、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５９記載のプログラム。
【請求項６１】
コンピュータに、
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、
前記ポート幅検出用ポート情報受付ステップで受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、前記ポート幅検出ステップで検出した前記第１の通信制御装置のポート幅を示す情報であるポート幅情報を、前記サーバを介して前記第２の情報処理装置に送信するポート幅送信ステップと、をさらに実行させるための請求項６０記載のプログラム。
【請求項６２】
前記バブルパケット送信対象ポート情報は、１以上のバブルパケット送信対象ポートの位置を示す情報であり、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示す１以上のバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５３記載の通信システム。
【請求項６３】
前記バブルパケット送信対象ポート情報は、１以上のバブルパケット送信対象ポートの位置を示す情報であり、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示す１以上のバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項５５記載の第１の情報処理装置。
【請求項６４】
前記バブルパケット送信対象ポート情報の示す１以上のバブルパケット送信対象ポートは、前記返信パケットを送信するためのポートを前記第２の通信制御装置において割り当てるために前記第２の情報処理装置から送信されたポート割り当てパケットの通過した前記第２の通信制御装置におけるポートであるポート割り当てパケット送信ポートを含む、請求項６３記載の第１の情報処理装置。
【請求項６５】
前記第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付部をさらに備え、
前記バブルパケット送信部は、前記ポート幅情報の示すポート幅ごとに前記バブルパケットを送信する、請求項６４記載の第１の情報処理装置。
【請求項６６】
前記返信パケットを送信するためのポートを前記第１の通信制御装置において割り当てるためのポート割り当てパケットを送信するポート割り当てパケット送信部をさらに備え、
前記返信パケット送信部は、前記ポート割り当てパケットが送信された前記第１の情報処理装置のポートから前記返信パケットを送信する、請求項１６記載の第１の情報処理装置。
【請求項６７】
前記ポート割り当てパケットの送信で用いられる、前記第１の通信制御装置のポートであるポート割り当てパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信部をさらに備えた、請求項６６記載の第１の情報処理装置。
【請求項６８】
前記範囲検出用パケット送信部は、前記ポート割り当てパケット送信部が前記ポート割り当てパケットを送信する前後において、それぞれ前記範囲検出用パケットを送信する、請求項６７記載の第１の情報処理装置。
【請求項６９】
前記範囲検出用パケット送信部は、前記ポート割り当てパケットの送信の前後で、それぞれ前記第１の情報処理装置において新たに割り当てられたポートを用いて前記範囲検出用パケットを送信する、請求項６８記載の第１の情報処理装置。
【請求項７０】
前記範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記ポート割り当てパケットが送信された前記第１の通信制御装置のポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記ポート割り当てパケットが送信された前記第１の通信制御装置のポートを含むポートの範囲を示す情報であるバブルパケット送信対象ポート情報を送信するバブルパケット送信対象ポート送信部と、をさらに備えた請求項６７から６９のいずれか記載の第１の情報処理装置。
【請求項７１】
前記第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを前記第１の通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備えた、請求項６６から６９のいずれか記載の第１の情報処理装置。
【請求項７２】
前記ポート幅検出用パケットが通過した前記第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第１の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第１の通信制御装置のポート幅を示す情報であるポート幅情報を、前記サーバを介して前記第２の情報処理装置に送信するポート幅送信部と、をさらに備えた、請求項７１記載の第１の情報処理装置。
【請求項７３】
第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、
前記第１の情報処理装置が前記第１の通信制御装置に送信履歴を残すためのバブルパケットを送信する対象の前記第２の通信制御装置におけるポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、前記第１の情報処理装置に送信するバブルパケット送信対象ポート送信部を備えたサーバ。
【請求項７４】
前記バブルパケット送信対象ポート情報は、１以上のバブルパケット送信対象ポートの位置を示す情報であり、
当該１以上のバブルパケット送信対象ポートは、前記バブルパケットの送信に対して前記第２の情報処理装置から送信される返信パケットを送信するためのポートを、前記第２の通信制御装置において割り当てるために前記第２の情報処理装置から送信されたポート割り当てパケットの通過した前記第２の通信制御装置におけるポートであるポート割り当てパケット送信ポートを含む、請求項７３記載のサーバ。
【請求項７５】
前記ポート割り当てパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第２の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第２の情報処理装置に送信する検出用ポート情報送信部と、
前記第２の情報処理装置から送信された前記ポート割り当てパケットを含むポートの範囲を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部と、をさらに備え、
前記バブルパケット送信対象ポート送信部は、前記バブルパケット送信対象ポート受付部が受け付けた前記バブルパケット送信対象ポート情報を送信する、請求項７４記載のサーバ。
【請求項７６】
前記ポート割り当てパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付け、前記ポート割り当てパケット送信ポートを含むポートの範囲を検出する範囲検出部をさらに備え、
前記バブルパケット送信対象ポート送信部は、前記範囲検出部が検出したポートの範囲に基づいて、前記バブルパケット送信対象ポート情報を送信する、請求項７４記載のサーバ。
【請求項７７】
前記第２の情報処理装置から前記第２の通信制御装置を介して送信された、前記第２の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記ポート幅検出用パケットが通過した前記第２の通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第２の情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備えた、請求項７４から７６のいずれか記載のサーバ。
【請求項７８】
前記第２の情報処理装置から前記第２の通信制御装置を介して送信された、前記第２の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、前記第２の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第２の通信制御装置のポート幅を示す情報であるポート幅情報を前記第１の情報処理装置に送信するポート幅送信部と、をさらに備えた、請求項７４から７６のいずれか記載のサーバ。
【請求項７９】
前記バブルパケット送信ステップでは、１以上のポートに対して前記バブルパケットを送信する、請求項２５記載の通信方法。
【請求項８０】
前記バブルパケット送信対象ポート情報は、１以上のバブルパケット送信対象ポートの位置を示す情報であり、
前記バブルパケット送信ステップでは、前記バブルパケット送信対象ポート情報の示す１以上のバブルパケット送信対象ポートに前記バブルパケットを送信する、請求項４１記載のプログラム。
【請求項８１】
コンピュータに、 
前記返信パケットを送信するためのポートを前記第１の通信制御装置において割り当てるためのポート割り当てパケットを送信するポート割り当てパケット送信ステップをさらに実行させ、
前記返信パケット送信ステップでは、前記ポート割り当てパケットが送信された前記第１の情報処理装置のポートから前記返信パケットを送信する、請求項４８記載のプログラム。
【請求項８２】
コンピュータに、
前記ポート割り当てパケットの送信で用いられる、前記第１の通信制御装置のポートであるポート割り当てパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させるための、請求項８１記載のプログラム。
【請求項８３】
情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、
前記情報処理装置は、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、
１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、を備え、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部を備えた、通信システム。
【請求項８４】
前記サーバは、
前記範囲検出部が検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信部をさらに備えた、請求項８３記載の通信システム。
【請求項８５】
情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、
前記情報処理装置は、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、
１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、を備え、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信部と、を備えた、通信システム。
【請求項８６】
前記情報処理装置は、 
前記範囲検出部が検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信部をさらに備えた、請求項８５記載の通信システム。
【請求項８７】
前記範囲情報を受け付ける範囲受付部と、
前記範囲情報の示す範囲のポートに返信パケットを送信する返信パケット送信部と、を備えた第２の情報処理装置をさらに備え、
前記情報処理装置は、
前記第２の情報処理装置から送信された返信パケットを受け付ける返信パケット受付部をさらに備えた、請求項８４または８６記載の通信システム。
【請求項８８】
前記範囲検出用パケット送信部は、前記バブルパケット送信部が１以上の前記バブルパケットを送信する前後において、それぞれ前記範囲検出用パケットを送信する、請求項８３または８５記載の通信システム。
【請求項８９】
前記範囲検出用パケット送信部は、１以上の前記バブルパケットの送信の前後で、それぞれ異なるアドレスに前記範囲検出用パケットを送信する、請求項８８記載の通信システム。
【請求項９０】
前記範囲検出用パケット送信部は、１以上の前記バブルパケットの送信の前後で、それぞれ前記情報処理装置において新たに割り当てられたポートを用いて前記範囲検出用パケットを送信する、請求項８８記載の通信システム。
【請求項９１】
前記サーバは、
１以上の前記バブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を前記情報処理装置に送信するバブルパケット送信対象ポート送信部をさらに備え、
前記情報処理装置は、
前記バブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付部をさらに備え、
前記バブルパケット送信部は、前記バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートに１以上の前記バブルパケットを送信する、請求項８３または８５記載の通信システム。
【請求項９２】
請求項８３または８５記載の通信システムを構成する情報処理装置。
【請求項９３】
請求項８７記載の通信システムを構成する第２の情報処理装置。
【請求項９４】
請求項８３または８５記載の通信システムを構成するサーバ。
【請求項９５】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムにおいて用いられる通信方法であって、
前記情報処理装置が、前記通信制御装置を介して、当該通信制御装置に送信履歴を残すための１以上のバブルパケットを通信の相手先に対して送信するバブルパケット送信ステップと、
１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、を備えた通信方法。
【請求項９６】
前記範囲検出ステップは、 
前記情報処理装置が、前記範囲を検出するために用いられる第１の範囲検出用パケットを、１以上の前記バブルパケットの送信の前にサーバに送信するステップと、
前記サーバが、前記第１の範囲検出用パケットを受け付け、前記第１の範囲検出用パケットの送信で用いられた前記第１の通信制御装置のポートの位置を検出するステップと、
前記情報処理装置が、前記範囲を検出するために用いられる第２の範囲検出用パケットを、１以上の前記バブルパケットの送信の後にサーバに送信するステップと、
前記サーバが、前記第２の範囲検出用パケットを受け付け、前記第２の範囲検出用パケットの送信で用いられた前記通信制御装置のポートの位置を検出するステップと、を含む、請求項９５記載の通信方法。
【請求項９７】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記情報処理装置において用いられる通信方法であって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信ステップと、
１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップと、を備えた通信方法。
【請求項９８】
前記範囲検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、をさらに備えた請求項９７記載の通信方法。
【請求項９９】
前記範囲検出ステップで検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップをさらに備えた、請求項９８記載の通信方法。
【請求項１００】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおいて用いられる通信方法であって、
前記通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、前記情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、
前記範囲検出ステップで検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、を備えた通信方法。
【請求項１０１】
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおいて用いられる通信方法であって、
前記通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、前記情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出ステップと、
前記検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信ステップと、を備えた通信方法。
【請求項１０２】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記情報処理装置における処理を実行させるためのプログラムであって、
前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信ステップと、
１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップと、を実行させるためのプログラム。
【請求項１０３】
コンピュータに、
前記範囲検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、をさらに実行させるための請求項１０２記載のプログラム。
【請求項１０４】
コンピュータに、
前記範囲検出ステップで検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップをさらに実行させるための請求項１０３記載のプログラム。
【請求項１０５】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおける処理を実行させるためのプログラムであって、
前記通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、前記情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、
前記範囲検出ステップで検出した１以上の前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、を実行させるためのプログラム。
【請求項１０６】
コンピュータに、
情報処理装置、前記情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する前記サーバにおける処理を実行させるためのプログラムであって、
前記通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、前記情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出ステップと、
前記検出用ポート検出ステップで検出したポートの位置を示す検出用  ポート情報を前記情報処理装置に送信する検出用ポート情報送信ステップと、を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置間における通信を確立させる通信システム等に関するものである。
【背景技術】
【０００２】
まず、ＮＡＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ）の分類について説明する。ＮＡＴには、送信ポート割り当てルールと受信フィルタルールがあり、その組み合わせによりＮＡＴの分類がなされる。送信ポート割り当てルールには、パケットの宛先（ＩＰアドレス、ポート）に依存せず、ＮＡＴのローカル側（たとえば、ＬＡＮ側）の情報処理装置のポートとＩＰアドレスが同じであれば、ＮＡＴに割り当てられるグローバル側（たとえば、インターネットなどのＷＡＮ側）のポートが同一となるＣｏｎｅタイプと、パケットの宛先アドレスごとに新しいポートが割り当てられるＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプと、パケットの宛先ポートごとに新しいポートが割り当てられるＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプがある。ＮＡＴのローカル側からパケットが送信されたポートに対してグローバル側からのパケットの受信可能性を判断する受信フィルタルールには、そのポートからパケットを送信したアドレスからのみしかパケットを受信しないＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタと、そのポートからパケットを送信したポートからのみしかパケットを受信しないＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタと、フィルタが存在しないＮｏフィルタがある。これらの送信ポート割り当てルールと、受信フィルタルールとを組み合わせることにより、ＮＡＴを下記の５種類に分類することができる。
【０００３】
Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴ：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＮｏフィルタであるもの。
【０００４】
Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００５】
Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ：送信ポート割り当てルールがＣｏｎｅタイプであり、受信ポートフィルタルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００６】
Ａｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅ  Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ：送信ポート割り当てルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００７】
Ｐｏｒｔ  Ｓｅｎｓｉｔｉｖｅ  Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ：送信ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプであり、受信ポートフィルタルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅフィルタであるもの。
【０００８】
このようなＮＡＴを用いた通信において、図４０で示されるようなＰＣ１とＰＣ２との間でのサーバを介さない通信を確立する場合について考えられてきている。
【０００９】
上記の技術内容は、例えば、Ｄ．Ｙｏｎ、「Ｃｏｎｎｅｃｔｉｏｎ−Ｏｒｉｅｎｔｅｄ  Ｍｅｄｉａ  Ｔｒａｎｓｐｏｒｔ  ｉｎ  ＳＤＰ」、［Ｏｎｌｉｎｅ］、２００３年３月、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ−ｄｒａｆｔｓ／ｄｒａｆｔ−ｉｅｔｆ−ｍｍｕｓｉｃ−ｓｄｐ−ｃｏｍｅｄｉａ−０５．ｔｘｔ＞（以下、「非特許文献１」という。）、またはＹ．Ｔａｋｅｄａ、「Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ  Ｔｒａｖｅｒｓａｌ  ｕｓｉｎｇ  ＳＴＵＮ」、［Ｏｎｌｉｎｅ］、２００３年６月、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ−ｄｒａｆｔｓ／ｄｒａｆｔ−ｔａｋｅｄａ−ｓｙｍｍｅｔｒｉｃ−ｎａｔ−ｔｒａｖｅｒｓａｌ−００．ｔｘｔ＞（以下、「非特許文献２」という。）に記載されている。さらに、Ｊ．Ｒｏｓｅｎｂｅｒｇ、Ｊ．Ｗｅｉｎｂｅｒｇｅｒ、Ｃ．Ｈｕｉｔｅｍａ、Ｒ．Ｍａｈｙ、「ＳＴＵＮ  −  Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  （ＵＤＰ）  Ｔｈｒｏｕｇｈ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒｓ  （ＮＡＴｓ）」、［Ｏｎｌｉｎｅ］、２００３年３月、Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  ３４８９、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ３４８９．ｔｘｔ＞（以下、「非特許文献３」という。）に記載されている。
【００１０】
しかしながら、この場合においても、通信を確立することのできないＮＡＴの組み合わせがあり得る。図４０において、ＮＡＴ１のローカル側に接続された情報処理装置であるＰＣ１からＰＣ２に対して通信を行う場合に、ＮＡＴ１を送信側のＮＡＴ、ＮＡＴ２を受信側のＮＡＴと呼ぶこととする。すると、ＰＣ１とＰＣ２との間で通信を確立することができるＮＡＴの組み合わせは、図４１で示されるようになる。なお、図４１におけるＮＡＴの略称については、下記の実施の形態において説明するとおりである。
【００１１】
ここで、図４１における「＊１」の接続は、従来から知られており、「＊２」の接続は、上記非特許文献１に記載されており、「＊３」の接続は、上記非特許文献２に記載されている。また、通信を確立することができるＮＡＴの組み合わせであっても、「＊３」の接続においては、ＮＡＴのポート幅が確実にわかり、かつ、受信側のＮＡＴの最新ポートの位置を確実に知ることができない限り、通信を確立することができず、不確実性が残るという問題もある。
【００１２】
また、情報処理装置間の通信を確立する前提として、一方の情報処理装置から送信されたバブルパケット（ＮＡＴに送信履歴を残すために送信されるパケット）の通過したＮＡＴのポートの範囲を検出したい。
【非特許文献１】Ｄ．Ｙｏｎ、「Ｃｏｎｎｅｃｔｉｏｎ−Ｏｒｉｅｎｔｅｄ  Ｍｅｄｉａ  Ｔｒａｎｓｐｏｒｔ  ｉｎ  ＳＤＰ」、［Ｏｎｌｉｎｅ］、２００３年３月、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ−ｄｒａｆｔｓ／ｄｒａｆｔ−ｉｅｔｆ−ｍｍｕｓｉｃ−ｓｄｐ−ｃｏｍｅｄｉａ−０５．ｔｘｔ＞
【非特許文献２】Ｙ．Ｔａｋｅｄａ、「Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ  Ｔｒａｖｅｒｓａｌ  ｕｓｉｎｇ  ＳＴＵＮ」、［Ｏｎｌｉｎｅ］、２００３年６月、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｉｎｔｅｒｎｅｔ−ｄｒａｆｔｓ／ｄｒａｆｔ−ｔａｋｅｄａ−ｓｙｍｍｅｔｒｉｃ−ｎａｔ−ｔｒａｖｅｒｓａｌ−００．ｔｘｔ＞
【非特許文献３】Ｊ．Ｒｏｓｅｎｂｅｒｇ、Ｊ．Ｗｅｉｎｂｅｒｇｅｒ、Ｃ．Ｈｕｉｔｅｍａ、Ｒ．Ｍａｈｙ、「ＳＴＵＮ  −  Ｓｉｍｐｌｅ  Ｔｒａｖｅｒｓａｌ  ｏｆ  Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ  （ＵＤＰ）  Ｔｈｒｏｕｇｈ  Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｏｒｓ  （ＮＡＴｓ）」、［Ｏｎｌｉｎｅ］、２００３年３月、Ｎｅｔｗｏｒｋ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  Ｒｅｑｕｅｓｔ  ｆｏｒ  Ｃｏｍｍｅｎｔｓ：  ３４８９、［２００３年９月２９日検索］、インターネット＜ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｉｅｔｆ．ｏｒｇ／ｒｆｃ／ｒｆｃ３４８９．ｔｘｔ＞
【発明の開示】
【発明が解決しようとする課題】
【００１３】
本発明の目的のひとつは、通信を制御する通信制御装置を介して通信を行う複数の情報処理装置間における通信の確立を、より確実に行うことができる通信システム等を提供することである。
【００１４】
本発明の他の目的は、情報処理装置から送信されたバブルパケットの通過した通信制御装置におけるポートの範囲を検出することができる通信システム等を提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、本発明による通信システムは、第１の情報処理装置と、第２の情報処理装置と、前記第１の情報処理装置の通信を制御する第１の通信制御装置と、前記第２の情報処理装置の通信を制御する第２の通信制御装置と、前記第１の情報処理装置と前記第２の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、前記第１の情報処理装置は、前記第１の通信制御装置を介して、前記第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、前記第２の情報処理装置は、前記バブルパケット送信ポートを少なくとも含む１以上のポートに対して前記返信パケットを送信する返信パケット送信部を備えたものである。
【００１６】
このような構成により、バブルパケットの送信によって割り当てられた第１の通信制御装置のポートに対して、返信パケットを送信することによって、第１の情報処理装置と第２の情報処理装置間における通信を確立することができ得る。
【００１７】
また、本発明による第１の情報処理装置は、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、前記第２の情報処理装置と通信する前記第１の情報処理装置であって、前記第１の通信制御装置を介して、前記第１の通信制御装置に送信履歴を残すためのバブルパケットを前記第２の通信制御装置に送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第２の情報処理装置から前記第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備えたものである。
【００１８】
このような構成により、第２の情報処理装置との間で通信を確立させるために用いられるバブルパケット送信ポートを、バブルパケットを送信することによって第１の通信制御装置に割り当てることができ、そのバブルパケット送信ポートに送信された返信パケットを受け付けることによって、第１の情報処理装置と第２の情報処理装置との間の通信を確立することができ得る。
【００１９】
また、本発明によるサーバは、第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、前記第１の情報処理装置、および前記第２の情報処理装置と、情報を送受信する情報送受信部と、前記第１の通信制御装置、および前記第２の通信制御装置の特性を判断する特性判断部と、前記特性判断部による判断結果に応じて、前記第１の情報処理装置、および前記第２の情報処理装置のいずれかを送信側（送信側情報処理装置）に決定し、他方を受信側（受信側情報処理装置）に決定する送受信決定部と、を備えたものである。
【００２０】
このような構成により、第１の通信制御装置、および第２の通信制御装置の特性に応じて、第１の情報処理装置と第２の情報処理装置との間での通信を確立できるように、第１の情報処理装置、および第２の情報処理装置の一方を送信側に決定し、他方を受信側に決定することができる。
【００２１】
また、本発明によるサーバは、第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、前記第１の情報処理装置から、前記第２の通信制御装置に対する前記第１の通信制御装置に送信履歴を残すためのバブルパケットの送信で用いられる、前記第１の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第１の通信制御装置のポートの位置を検出する検出用ポート検出部と、前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第１の情報処理装置に送信する検出用ポート情報送信部と、を備えたものである。 
【００２２】
このような構成により、第１の情報処理装置においてバブルパケット送信ポートを含むポートの範囲を検出するために用いられる検出用ポート情報を第１の情報処理装置に送信することができる。
【００２３】
また、本発明によるサーバは、第１の情報処理装置、および第２の情報処理装置が、前記第１の情報処理装置の通信を制御する第１の通信制御装置、および前記第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバであって、前記第１の情報処理装置が前記第１の通信制御装置に送信履歴を残すためのバブルパケットを送信する対象の前記第２の通信制御装置におけるポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、前記第１の情報処理装置に送信するバブルパケット送信対象ポート送信部を備えたものである。
【００２４】
このような構成により、バブルパケット送信対象ポートの位置を、バブルパケット送信対象ポート情報によって第１の情報処理装置に知らせることができる。
【００２５】
また、本発明による通信システムは、情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、前記情報処理装置は、前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、を備え、前記サーバは、前記範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部を備えた、ものである。
【００２６】
このような構成により、情報処理装置から送信された範囲検出用パケットによって、サーバにおいてバブルパケット送信ポートを含むポートの範囲を検出することができる。その検出されたバブルパケット送信ポートを含むポートの範囲に他の装置からパケットを送信することによって、そのパケットが情報処理装置で受け付けられ得ることになる。
【００２７】
また、本発明による通信システムは、情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、前記情報処理装置は、前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、１以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、前記範囲検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、１以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、を備え、前記サーバは、前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部と、前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信部と、を備えた、ものである。
【００２８】
このような構成により、情報処理装置から送信された範囲検出用パケットによって、情報処理装置においてバブルパケット送信ポートを含むポートの範囲を検出することができる。その検出されたバブルパケット送信ポートを含むポートの範囲に他の装置からパケットを送信することによって、そのパケットが情報処理装置で受け付けられ得ることになる。
【発明の効果】
【００２９】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【発明を実施するための最良の形態】
【００３０】
（実施の形態１）
本発明の実施の形態１による通信システムについて、図面を参照しながら説明する。
【００３１】
図１は、本実施の形態による通信システムの構成を示すブロック図である。図１において、本実施の形態による通信システムは、第１の情報処理装置１と、第２の情報処理装置２と、第１の通信制御装置３と、第２の通信制御装置４と、第１のサーバ６と、第２のサーバ７とを備える。第１の通信制御装置３、第２の通信制御装置４、第１のサーバ６、および第２のサーバ７は、有線または無線の通信回線５を介して接続されている。この通信回線５は、例えば、インターネットである。
【００３２】
なお、図１では、第１の通信制御装置３、および第２の通信制御装置４にそれぞれ、第１の情報処理装置１、および第２の情報処理装置２のみが接続されている場合について示しているが、これ以外の装置が、第１の通信制御装置３、および第２の通信制御装置４に接続されていてもよい。
【００３３】
図２は、第１の情報処理装置１の構成を示すブロック図である。図２において、第１の情報処理装置１は、通信部１１と、バブルパケット送信部１２と、範囲検出用パケット送信部１３と、返信パケット受付部１４と、ポート幅検出用パケット送信部１５と、バブルパケット送信対象ポート受付部１６と、範囲受付部１７と、ポート幅受付部１８と、返信パケット送信部１９とを備える。
【００３４】
通信部１１は、バブルパケット送信部１２等の第１の情報処理装置１の内部の各構成要素と、第１の通信制御装置３との間における通信を行う。
【００３５】
バブルパケット送信部１２は、通信部１１および第１の通信制御装置３を介して、バブルパケットを第２の通信制御装置４に送信する。ここで、バブルパケットとは、第１の情報処理装置１と第２の情報処理装置２との間における通信を確立するために、第１の通信制御装置３に送信履歴を残すためのパケットである。また、通信を確立するとは、第１の情報処理装置１と、第２の情報処理装置２との間において、サーバを介さないピアー・ツー・ピアー（Ｐｅｅｒ  ｔｏ  Ｐｅｅｒ）の通信を開始することをいう。また、送信履歴を残すとは、第１の通信制御装置３において、後述する返信パケットを受け付けるためのポートを割り当てる（ポートを開く）ことをいう。なお、一般に、その送信履歴を残すことを目的としてバブルパケットが送信されるものであるが、所定のパケットが送信された結果、返信パケットを受け付けるための送信履歴が第１の通信制御装置３に残されてもよい（この場合、その送信履歴を残した所定のパケットが、バブルパケットということになる）。このバブルパケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。このバブルパケットは、例えば、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）のようなコネクションレス型のプロトコルによって送信される。
【００３６】
範囲検出用パケット送信部１３は、範囲検出用パケットを第１のサーバ６または第２のサーバ７に送信する。この範囲検出用パケットは、バブルパケット送信ポートを含むポートの範囲を検出するために用いられるものである。ここで、バブルパケット送信ポートとは、バブルパケットの送信で用いられる、第１の通信制御装置３のポートのことである。この範囲検出用パケットは、バブルパケットが送信される前に、および／またはバブルパケットが送信された後に、送信される。バブルパケットの送信の前後において範囲検出用パケットを送信する場合には、その前後において、それぞれ異なるアドレス（ＩＰアドレス）に範囲検出用パケットを送信してもよい。この範囲検出用パケットは、例えば、ＵＤＰや、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）によって送信される。この範囲検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００３７】
返信パケット受付部１４は、第２の情報処理装置２から第２の通信制御装置４を介して送信された返信パケットを受け付ける。この返信パケットは、第１の通信制御装置３におけるバブルパケットの送信によって割り当てられたポート、すなわちバブルパケット送信ポートに対して、送信されたものである。この返信パケットを受け付けることにより、第１の情報処理装置１と第２の情報処理装置２との間での通信が確立することとなる。この返信パケットは、例えば、ＵＤＰによって送信される。この返信パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００３８】
ポート幅検出用パケット送信部１５は、第１の通信制御装置３におけるポート幅を検出するためのポート幅検出用パケットを、第１の通信制御装置３を介して第１のサーバ６に送信する。ここで、ポート幅とは、連続して使用される（割り当てられる）ポートの幅（間隔）のことである。例えば、ポート幅が「１」の場合には、ポート番号「２００００」のポートの次に使用されるポートは、ポート番号「２０００１」のポートである。一方、ポート幅が「２」の場合には、ポート番号「２００００」のポートの次に使用されるポートは、ポート番号「２０００２」のポートとなる。このポート幅検出用パケットは、例えば、ＵＤＰや、ＴＣＰによって送信される。このポート幅検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【００３９】
バブルパケット送信対象ポート受付部１６は、バブルパケット送信対象ポート情報を受け付ける。ここで、バブルパケット送信対象ポート情報とは、第２の通信制御装置４におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示す情報である。例えば、バブルパケット送信対象ポートのポート番号が、バブルパケット送信対象ポート情報に含まれることにより、バブルパケット送信対象ポートの位置を第１の情報処理装置１が知ることができる。このバブルパケット送信対象ポートとしては、例えば、第２の情報処理装置２が、第１のサーバ６との間で情報の送受信を行うポートがある。
【００４０】
以上のバブルパケット送信部１２からバブルパケット送信対象ポート受付部１６までの各部は、第１の情報処理装置１が送信側の情報処理装置として動作する場合に用いられる。ここで、送信側の情報処理装置とは、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立する際における、バブルパケットを送信する側のことである。本実施の形態では、後述する送受信の入れ替えが行われない限り、バブルパケットを送信する側と、通信（コネクション）の要求を出す側（発呼側）とが同じであるため、送信側とは、通信の要求を出す側でもある。一方、その反対側の情報処理装置、すなわちバブルパケットに対する返信パケット送信する側の情報処理装置を、受信側の情報処理装置という。本実施の形態では、送受信の入れ替えが行われない限り、返信パケットを送信する側と、通信の要求を受け取る側（着呼側）とが同じであるため、受信側とは、通信の要求を受け取る側でもある。以下に説明する範囲受付部１７から返信パケット送信部１９までの各部は、第１の情報処理装置１が受信側の情報処理装置として動作する場合に用いられる。
【００４１】
範囲受付部１７は、範囲情報を受け付ける。ここで、範囲情報とは、返信パケット送信部１９が返信パケットを第２の通信制御装置４に送信するポートの範囲を示す情報である。範囲情報では、第２の通信制御装置４におけるバブルパケット送信ポート（第２の情報処理装置２から第１の通信制御装置３へのバブルパケットの送信で用いられたポート）を含むポートの範囲が、例えば、ポート番号によって示される。なお、範囲情報では、ポートの上限のみ、もしくはポートの下限のみが示されることによりポートの範囲が示されてもよく、またはポートの上限と下限とによってポートの範囲が示されてもよい。ここで、ポートの上限とは、ポート番号の大きい方のポートを指すものとし、ポートの下限とは、ポート番号の小さい方のポートを指すものとする。
【００４２】
ポート幅受付部１８は、第２の通信制御装置４におけるポート幅を示す情報であるポート幅情報を受け付ける。
【００４３】
返信パケット送信部１９は、第２の通信制御装置４におけるバブルパケット送信ポートを少なくとも含む１以上のポートに対して返信パケットを送信する。このときに、範囲受付部１７が受け付けた範囲情報の示す範囲のポートに返信パケットを送信することによって、第２の通信制御装置４におけるバブルパケット送信ポートを含むポートに対して返信パケットを送信することができる。また、２以上のポートに対して返信パケットを送信する場合には、ポート幅情報の示すポート幅ごとに返信パケットを送信する。その結果、ポート幅情報の示すポート幅が２以上の場合には、効率よく返信パケットを送信することができる。また、返信パケットは、例えば、第１の情報処理装置１が第１のサーバ６と通信を行うポートから送信してもよい。
【００４４】
図３は、第２の情報処理装置２の構成を示すブロック図である。図３において、第２の情報処理装置２は、通信部２１と、バブルパケット送信部２２と、範囲検出用パケット送信部２３と、返信パケット受付部２４と、ポート幅検出用パケット送信部２５と、バブルパケット送信対象ポート受付部２６と、範囲受付部２７と、ポート幅受付部２８と、返信パケット送信部２９とを備える。ここで、第２の情報処理装置２における通信部２１から返信パケット送信部２９までの各部は、第１の情報処理装置１、第１の通信制御装置３と、第２の情報処理装置２、第２の通信制御装置４が入れ替わる以外、第１の情報処理装置１における通信部１１から返信パケット送信部１９までの構成と同様であり、その説明を省略する。
【００４５】
なお、第２の情報処理装置２におけるバブルパケット送信部２２からバブルパケット送信対象ポート受付部２６までは、第２の情報処理装置２が送信側として動作する場合に用いられる。一方、範囲受付部２７から返信パケット送信部２９までは、第２の情報処理装置２が受信側として動作する場合に用いられる。
【００４６】
第１の通信制御装置３は、第１の情報処理装置１の通信を制御するものであり、いわゆるナット（ＮＡＴ）を用いて、ローカル側（第１の情報処理装置１側）と、グローバル側（通信回線５側）との通信を制御する。このＮＡＴには、フルコーンナット（Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴ）や、レストリクティッドコーンナット（Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ。以下、「Ｒ  ＮＡＴ」と略す）、ポートレストリクティッドコーンナット（Ｐｏｒｔ  Ｒｅｓｔｒｉｃｔｅｄ  Ｃｏｎｅ  ＮＡＴ。以下、「ＰＲ  ＮＡＴ」と略す）、アドレスセンシティブシンメトリックナット（Ａｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅ
Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ。以下、「ＡＳ  ＮＡＴ」と略す）、ポートセンシティブシンメトリックナット（Ｐｏｒｔ  Ｓｅｎｓｉｔｉｖｅ  Ｓｙｍｍｅｔｒｉｃ  ＮＡＴ。以下、「ＰＳ  ＮＡＴ」と略す）がある。
【００４７】
また、第２の通信制御装置４は、第２の情報処理装置２の通信を制御するものであり、第１の通信制御装置３と同様に、ナットを用いている。後述するように、第１の通信制御装置３と、第２の通信制御装置４の組み合わせとしては、ＰＳ  ＮＡＴ同士の組み合わせ以外で、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができ得る。なお、第１の通信制御装置３、および第２の通信制御装置４では、ポートの割り当ては、所定のポート幅ごとに、ポート番号が増大するよう、あるいは減少するように行われるものとする。以下の説明では、ポート番号が増大するように割り当てられる場合について説明する。
【００４８】
図４は、第１のサーバ６、および第２のサーバ７の構成を示すブロック図である。図４において、第１のサーバ６は、通信部６１と、情報送受信部６２と、特性判断部６３と、送受信決定部６４と、バブルパケット送信対象ポート送信部６５と、範囲検出部６６と、範囲送信部６７と、ポート幅検出部６８と、ポート幅送信部６９とを備える。また、第２のサーバ７は、通信部７１を備える。
【００４９】
通信部６１，７１は、情報送受信部６２などの第１のサーバ６の各部と、第１の情報処理装置１や第２の情報処理装置２などとの通信を行う。また、通信部６１と通信部７１とはサーバ間での情報のやり取りを行う。なお、第２のサーバ７には、通信部７１しか明示していないが、この通信部７１以外にも、その他の構成要素を備えていてもよい。
【００５０】
情報送受信部６２は、第１の情報処理装置１、および第２の情報処理装置２と、情報を送受信する。この情報送受信部６２による情報の送受信は、通信部６１や、通信部７１を介して行われる。
【００５１】
特性判断部６３は、第１の通信制御装置３、および第２の通信制御装置４の特性を判断する。ここで、第１の通信制御装置３、および第２の通信制御装置４の特性とは、第１の通信制御装置３等で用いられているＮＡＴの種類のことである。したがって、第１の通信制御装置３の特性は、例えば、Ｆｕｌｌ  Ｃｏｎｅ  ＮＡＴや、ＡＳ  ＮＡＴであるというように判断される。
【００５２】
送受信決定部６４は、特性判断部６３による判断結果に応じて、第１の情報処理装置１、および第２の情報処理装置２のいずれかを送信側（送信側情報処理装置）に決定し、他方を受信側（受信側情報処理装置）に決定する。この決定により、第１の通信制御装置３、および第２の通信制御装置４のうち、送信側情報処理装置の通信を制御する通信制御装置が送信側通信制御装置となり、受信側情報処理装置の通信を制御する通信制御装置が受信側通信制御装置となる。
【００５３】
バブルパケット送信対象ポート送信部６５は、受信側通信制御装置におけるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を送信側情報処理装置に送信する。
【００５４】
範囲検出部６６は、送信側情報処理装置から送信された範囲検出用パケットを受け付け、その受け付けた範囲検出用パケットに基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。このポートの範囲の検出は、範囲検出用パケットのヘッダに含まれるポート番号を取得し、所定のメモリ等に記録することなどであってもよい。なお、範囲検出用パケットは、送信側情報処理装置から通信部６１に対して送信されたものであってもよく、あるいは、第２のサーバ７の通信部７１に送信されたものを、通信部６１を介して受け取ったものであってもよい。後者の場合、第１のサーバ６と第２のサーバ７では、ＩＰアドレスが異なっているものとする。
【００５５】
範囲送信部６７は、範囲検出部６６が検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を受信側情報処理装置に対して送信する。 
【００５６】
ポート幅検出部６８は、送信側情報処理装置から送信側通信制御装置を介して送信されたポート幅検出用パケットを受け付ける。ここで、ポート幅検出用パケットとは、送信側通信制御装置におけるポート幅を検出するために用いられるパケットである。ポート幅検出部６８は、その受け付けたポート幅検出用パケットに基づいて、送信側通信制御装置におけるポート幅を検出する。
【００５７】
ポート幅送信部６９は、ポート幅検出部６８が検出したポート幅を示す情報であるポート幅情報を受信側情報処理装置に送信する。
【００５８】
次に、本実施の形態による通信システムの動作について説明する。特に、図５のフローチャートを用いて、第１の情報処理装置１と第２の情報処理装置２とが通信を開始するまでの通信方法について説明する。
【００５９】
（ステップＳ１０１）第１のサーバ６における特性判断部６３によって第１の通信制御装置３や第２の通信制御装置４の特性を判断することにより、第１の情報処理装置１、および第２の情報処理装置２のいずれが送信側となり、受信側となるのかを決定する。
【００６０】
ここで、送信側でＰＳ  ＮＡＴが用いられ、受信側でＡＳ  ＮＡＴが用いられる場合、または、送信側でＰＲ  ＮＡＴが用いられ、受信側でＡＳ  ＮＡＴ、もしくはＰＳ  ＮＡＴが用いられる場合には、情報処理装置間における通信を確立することができないために、この送信側と受信側の決定が行われる。なお、送信側と受信側とがＰＳ  ＮＡＴを用いている場合には、本実施の形態による方法では、情報処理装置間の通信を確立することはできない。上記の場合に通信を確立することができない理由については、後述することとする。
【００６１】
（ステップＳ１０２）送信側情報処理装置から受信側通信制御装置に対してバブルパケットを送信し、バブルパケット送信ポートを少なくとも含む１以上のポートに受信側情報処理装置から返信パケットを送信することによって通信が確立される。なお、ステップＳ１０１、Ｓ１０２の詳細な処理については、後述する。
【００６２】
図６は、ステップＳ１０１における第１のサーバ６が送受信を決定する処理について示すフローチャートである。ここで、このフローチャートの説明では、第１の情報処理装置１から第２の情報処理装置２に対して通信を行おうとしているとする。したがって、第１の情報処理装置１、および第１の通信制御装置３が送信側の装置となり、第２の情報処理装置２、および第２の通信制御装置４が受信側の装置となる。なお、第２の情報処理装置２から第１の情報処理装置１に対して通信を行うとした場合には、第１の情報処理装置１、および第１の通信制御装置３と、第２の情報処理装置２、および第２の通信制御装置４が入れ替わる以外は、以下のフローチャートの説明と同様である。
【００６３】
（ステップＳ２０１）第１のサーバ６の特性判断部６３は、送信側の第１の通信制御装置３の特性を判断する。特性の判断方法については、後述する。
【００６４】
（ステップＳ２０２）送受信決定部６４は、第１の通信制御装置３がＰＳ  ＮＡＴを用いているかどうか判断する。そして、ＰＳ  ＮＡＴを用いている場合には、ステップＳ２０５に進み、用いていない場合には、ステップＳ２０３に進む。
【００６５】
（ステップＳ２０３）送受信決定部６４は、第１の通信制御装置３が、ＰＲ  ＮＡＴを用いているかどうか判断する。そして、ＰＲ  ＮＡＴを用いている場合には、ステップＳ２０４に進み、用いていない場合には、送受信の決定処理は終了となる。すなわち、第１の情報処理装置１、および第１の通信制御装置３を送信側の装置とし、第２の情報処理装置２、および第２の通信制御装置４を受信側の装置として、ステップＳ１０２の通信の確立の処理を行う。
【００６６】
（ステップＳ２０４）送受信決定部６４は、送受信の入れ替えを行い、送受信の決定処理は終了となる。すなわち、第１の情報処理装置１、および第１の通信制御装置３を受信側の装置とし、第２の情報処理装置２、および第２の通信制御装置４を送信側の装置として、ステップＳ１０２の通信の確立の処理を行う。
【００６７】
（ステップＳ２０５）特性判断部６３は、受信側の第２の通信制御装置４の特性を判断する。
【００６８】
（ステップＳ２０６）送受信決定部６４は、第２の通信制御装置４がＰＳ  ＮＡＴを用いているかどうか判断する。そして、ＰＳ  ＮＡＴを用いている場合には、送信側、受信側の双方がＰＳ  ＮＡＴを用いていることとなり、通信を確立することができず、エラーとなる。一方、ＰＳ  ＮＡＴを用いていない場合には、ステップＳ２０７に進む。
【００６９】
（ステップＳ２０７）送受信決定部６４は、第２の通信制御装置４がＡＳ  ＮＡＴを用いているかどうか判断する。そして、ＡＳ  ＮＡＴを用いている場合には、ステップＳ２０４に進み、そうでない場合には、送受信の決定処理は終了となる。すなわち、第１の情報処理装置１、および第１の通信制御装置３を送信側の装置とし、第２の情報処理装置２、および第２の通信制御装置４を受信側の装置として、ステップＳ１０２の通信の確立の処理を行う。
【００７０】
なお、このフローチャートは、送受信の決定を行う処理の一例であって、これ以外の方法によって送受信の決定を行ってもよい。例えば、このフローチャートにおいて、送信側がＰＲ  ＮＡＴを用いている場合には、判断処理の回数を少なくするために、受信側で用いられているＮＡＴの種類を判別することなく送受信の入れ替えを行っているが、判断処理の回数が多くてもよい場合には、送信側がＰＲ  ＮＡＴを用いていると判断された後に、受信側がＰＳ  ＮＡＴか、ＡＳ  ＮＡＴを用いているかどうか判断し、その結果、いずれかを用いていると判断された場合にのみ、送受信の入れ替えを行うようにしてもよい。
【００７１】
次に、図７〜図９を用いて、第１の通信制御装置３の特性の判断方法について説明する。なお、第２の通信制御装置４の特性も、同様にして判断することができる。
【００７２】
図７において、第１の情報処理装置１は、所定のパケットを第１のサーバ６のポートＰ１０１に送信する。ここで、そのパケットは、第１の通信制御装置３のポートＰ１００を通過したとする。その送信されたパケットは、通信部６１を介して特性判断部６３が受け付ける。そして、特性判断部６３は、そのパケットを受け付けることによって検知した第１の通信制御装置３のポートＰ１００に対してパケットを送信する旨の指示を、通信部６１を介して第２のサーバ７の通信部７１に渡す。このようにして、通信部７１からポートＰ１００に対して、パケットが送信される。その通信部７１からのポートＰ１００に対するパケットを第１の情報処理装置１が受け付けることができる場合には、特性判断部６３は、第１の通信制御装置３がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴを用いていると判断する。一方、通信部７１からのポートＰ１００に対するパケットを第１の情報処理装置１が受け付けることができない場合には、図８で説明する方法により判断を行う。
【００７３】
図８において、第１の情報処理装置１は、所定のパケットを第１のサーバ６のポートＰ１０１、ポートＰ１０３と、第２のサーバ７のポートＰ１０２に送信する。特性判断部６３は、そのポートＰ１０１、Ｐ１０３に送信されたパケットを受け付け、また、ポートＰ１０２に送信されたパケットを、通信部７１を介して受け付ける。そして、パケットの通過した第１の通信制御装置３におけるポートＰａ、Ｐｂが同一であるかどうか判断する。そして、ポートＰａとポートＰｂが異なっている場合には、第１の通信制御装置３がＰＳ
ＮＡＴを用いていると判断する。
【００７４】
ポートＰａとポートＰｂとが等しい場合には、ポートＰｂとポートＰｃが等しいかどうか判断する。そして、ポートＰｂとポートＰｃが異なっている場合には、第１の通信制御装置３がＡＳ  ＮＡＴを用いていると判断する。ポートＰａ、ポートＰｂ、ポートＰｃが同じである場合には、図９で説明する方法により判断を行う。
【００７５】
図９において、第１の情報処理装置１は、所定のパケットを第１のサーバ６のポートＰ１０１に送信する。特性判断部６３は、そのパケットを受け付け、そのパケットの通過した第１の通信制御装置３におけるポートＰ１００に対して、ポートＰ１０１とは異なるポートＰ１０３からパケットを送信する。第１の情報処理装置１がポートＰ１０３からのパケットを受信できる場合には、特性判断部６３は、第１の通信制御装置３がＲ  ＮＡＴを用いていると判断し、第１の情報処理装置１がポートＰ１０３からのパケットを受信できない場合には、特性判断部６３は、第１の通信制御装置３がＰＲ  ＮＡＴを用いていると判断する。
【００７６】
このように、図７〜図９を用いて説明した方法によって、特性判断部６３は、第１の通信制御装置３の特性を判断することができる。なお、上記説明では、細かい説明を省略しているが、第１の情報処理装置１からのパケットの送信等は、特性判断部６３の指示によってなされるものである。
【００７７】
次に、図５のフローチャートにおけるステップＳ１０２の処理について、図１０を用いて説明する。図１０は、通信の確立に関する、送信側の情報処理装置、サーバ、受信側の情報処理装置の間における情報のやり取りや処理を説明するための図である。なお、図１０におけるサーバとは、第１のサーバ６と、第２のサーバ７の両方を示すものである。また、説明の便宜のため、第１の情報処理装置１、および第１の通信制御装置３が送信側であるとし、第２の情報処理装置２、および第２の通信制御装置４が受信側であるとする。
【００７８】
（ステップＳ３０１）第１のサーバ６における情報送受信部６２は、第２の通信制御装置４のＩＰアドレスを示すアドレス情報を第１の情報処理装置１に送信する。その送信されたアドレス情報は、第１の情報処理装置１の通信部１１で受け付けられ、バブルパケット送信部１２に渡される。
【００７９】
（ステップＳ３０２）バブルパケット送信対象ポート送信部６５は、バブルパケット送信対象ポート情報を第１の情報処理装置１に送信する。その送信されたバブルパケット送信対象ポート情報は、通信部１１を介してバブルパケット送信対象ポート受付部１６で受け付けられ、バブルパケット送信部１２に渡される。
【００８０】
（ステップＳ３０３）第１の情報処理装置１におけるポート幅検出用パケット送信部１５は、ポート幅検出用パケットを第１のサーバ６に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第１の通信制御装置３のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第１の情報処理装置１におけるポート番号がそれぞれ異なる複数のポートから送信される。図１１は、ポート幅検出用パケットの送信について説明するための図である。ポート幅検出用パケット送信部１５は、それぞれ異なるポートＰ２０５〜Ｐ２０８から順次、第１のサーバ６のポートＰ２００にポート幅検出用パケットを送信する。すると、第１の通信制御装置３において、それらのパケットは、それぞれ異なるポートＰ２０１〜Ｐ２０４を通過することとなる。なお、図１１では、ポートＰ２０５からＰ２０８の順番でパケットが送信されたとする。また、第１の情報処理装置１は、ポート幅検出用パケットを送信する以前に、ポートＰ２０５〜Ｐ２０８を第１のサーバ６との通信で用いていないものとする。
【００８１】
（ステップＳ３０４）第１のサーバ６におけるポート幅検出部６８は、第１の情報処理装置１から送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、ポート幅を検出する。このポート幅の検出方法について説明する。ポート幅検出部６８は、ポート幅検出用パケットを受け付けることにより、各ポート幅検出用パケットの送信で用いられた第１の通信制御装置３のポートＰ２０１〜Ｐ２０４を検知することができる。そして、例えばポートＰ２０２と、ポートＰ２０１のポート間隔が１２であり、ポートＰ２０３と、ポートＰ２０２のポート間隔が６であり、ポートＰ２０４と、ポートＰ２０３のポート間隔が１８である場合には、一番小さいポート間隔である「６」をポート幅として検出してもよい。一方、それらのポート間隔の最大公約数をポート幅として検出してもよい。例えば、ポートＰ２０２と、ポートＰ２０１のポート間隔が１２であり、ポートＰ２０３と、ポートＰ２０２のポート間隔が６であり、ポートＰ２０４と、ポートＰ２０３のポート間隔が９である場合には、それらの最大公約数である「３」をポート幅として検出してもよい。そのようにして検出されたポート幅は、ポート幅送信部６９に渡される。また、ポート幅の検出方法は、これらに限定されるものではなく、その他の方法によってポート幅を検出してもよい。さらに、ポート幅を検出するときに送信されるポート幅検出用パケットの数も、４個に限定されるものではなく、ポート幅を検出できる範囲において任意に設定することができる。
【００８２】
（ステップＳ３０５）範囲検出用パケット送信部１３は、範囲検出用パケットを第１の通信制御装置３を介して、第１のサーバ６に送信する。この送信において、範囲検出用パケットが第１の通信制御装置３において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。バブルパケット送信ポートを含むポートの範囲を適切に限定することができるようにするためである。例えば、範囲検出用パケット送信部１３は、第１の情報処理装置１と第１のサーバ６との間の通信でそれまでに用いていない第１の情報処理装置１のポートを用いて、範囲検出用パケットを送信する。このようにして送信された範囲検出用パケットは、第１のサーバ６の範囲検出部６６において受け付けられる。この範囲検出部６６は、受け付けた範囲検出用パケットのヘッダに含まれるポート番号を参照することにより、範囲検出用パケットの送信で用いられた第１の通信制御装置３のポートの位置を知ることができる。
【００８３】
（ステップＳ３０６）バブルパケット送信部１２は、ステップＳ３０１で送信されたアドレス情報によって示される第２の通信制御装置４のＩＰアドレスと、ステップＳ３０２で送信されたバブルパケット送信対象ポート情報とに基づいて、第２の通信制御装置４のバブルパケット送信対象ポートにバブルパケットを送信する。なお、ここでは、そのバブルパケットの送信によって通信が確立しないという前提の基に、以下のステップについて説明するが、仮に、第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴを用いており、バブルパケット送信対象ポートが第２の情報処理装置２と第１のサーバ６との間で情報の送受信を行うために用いられるポート等のように、すでに第２の情報処理装置２によって使用されているポートである場合には、第２の情報処理装置２がバブルパケットを受け取ることとなり、通信が確立することになる。
【００８４】
（ステップＳ３０７）範囲検出用パケット送信部１３は、範囲検出用パケットを第１の通信制御装置３を介して、第２のサーバ７に送信する。その範囲検出用パケットは、通信部７１、および通信部６１を介して範囲検出部６６で受け付けられる。なお、第１の通信制御装置３がＡＳ  ＮＡＴを用いている可能性がある場には、このように第２のサーバ７に範囲検出用パケットを送信する必要があるが、第１の通信制御装置３がＡＳ  ＮＡＴを用いている可能性がない場合には、バブルパケット送信後の範囲検出用パケットも、第１のサーバ６に送信してもよい。この場合には、ステップＳ３０５と同様に、例えば、第１のサーバ６との間の通信でそれまでに用いていない第１の情報処理装置１のポートを用いて、その範囲検出用パケットの送信を行うものとする。このようにして送信された範囲検出用パケットは、第１のサーバ６の範囲検出部６６において受け付けられる。この範囲検出部６６は、範囲検出用パケットの送信で用いられた第１の通信制御装置３のポートの位置を知ることができる。
【００８５】
（ステップＳ３０８）範囲検出部６６は、ステップＳ３０５、およびステップＳ３０７で送信された範囲検出用パケットに基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。具体的には、ステップＳ３０５における範囲検出用パケットの送信で用いられた第１の通信制御装置３のポートから、ステップＳ３０７における範囲検出用パケットの送信で用いられた第１の通信制御装置３のポートまでを、バブルパケット送信ポートを含むポートの範囲として検出する。
【００８６】
（ステップＳ３０９）範囲送信部６７は、範囲検出部６６で検出された、バブルパケット送信ポートを含むポートの範囲を示す範囲情報を第２の情報処理装置２に送信する。その範囲情報は、第２の情報処理装置２における範囲受付部２７で受け付けられ、返信パケット送信部２９に渡される。
【００８７】
（ステップＳ３１０）情報送受信部６２は、第１の通信制御装置３のＩＰアドレスを示すアドレス情報を、第２の情報処理装置２に送信する。その送信されたアドレス情報は、通信部２１で受け付けられ、返信パケット送信部２９に渡される。
【００８８】
（ステップＳ３１１）ポート幅送信部６９は、ポート幅検出部６８によって検出されたポート幅を示すポート幅情報を第２の情報処理装置２に送信する。そのポート幅情報は、第２の情報処理装置２におけるポート幅受付部２８で受け付けられ、返信パケット送信部２９に渡される。
【００８９】
（ステップＳ３１２）返信パケット送信部２９は、ステップＳ３１０で受け取ったアドレス情報の示すＩＰアドレスによって特定される第１の通信制御装置３に対して返信パケットを送信する。この返信パケットは、範囲受付部２７から受け取った範囲情報の示す範囲のポートに対して、ポート幅情報の示すポート幅ごとに送信される。
【００９０】
（ステップＳ３１３）第１の情報処理装置１の返信パケット受付部１４は、第２の情報処理装置２から送信された返信パケットを受け付ける。この返信パケットを受け付けることにより、第１の情報処理装置１と、第２の情報処理装置２との間の通信が確立することとなる。そして、この後、第１の情報処理装置１と第２の情報処理装置２との間で、第１のサーバ６や第２のサーバ７を介さない情報の送受信（例えば、トンネル通信）が行われる。
【００９１】
なお、図１０において、ポート幅の検出（ステップＳ３０３、Ｓ３０４）は、ポート幅情報の送信（ステップＳ３１１）より以前に行われていればよく、例えば、ポート幅の検出（ステップＳ３０４）の直後に、ポート幅情報が受信側に送信されてもよい。また、送信側のアドレスの送信（ステップＳ３１０）も、例えば、受信側のアドレスの送信（ステップＳ３０１）と同時に送信してもよい。このように、図１０においては、処理の順序に関して、ある程度の任意性がある。
【００９２】
また、返信パケットの送信において、ポート幅情報の示すポート幅ごとに返信パケットを送信していたとしても、返信パケットが受け付けられない場合（すなわち、返信パケットを送信してから所定時間が経過しても、第２の情報処理装置２が返信パケット受け付けた旨を第１の情報処理装置１から受け取れない場合）には、検出されたポート幅が異なっている場合も考えられるため、第２の情報処理装置２は、ポート幅を１に設定して、再度、返信パケットの送信を行ってもよい。あるいは、ポート幅を最大公約数により算出している場合には、最大公約数から１までの公約数を順次ポート幅に設定し、再度、返信パケットの送信を行ってもよい。例えば、検出されたポート幅が「８」、「４」である場合には、最大公約数である「４」をポート幅として設定して返信パケットの送信を行い、それによって通信を確立できなかった場合には、［２］をポート幅として設定して返信パケットの送信を行ってもよい。それによっても通信を確立できなかった場合には、ポート幅は「１」に設定される。
【００９３】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第１の通信制御装置３、第２の通信制御装置４、第１のサーバ６、第２のサーバ７のＩＰアドレス（第１および第２の通信制御装置３，４については、通信回線５側のアドレス）は、それぞれ以下のとおりであるとする。
【００９４】
第１の通信制御装置３：２０２．１３２．１０．６
第２の通信制御装置４：１３１．２０６．１０．２４０
第１のサーバ６：１５５．３２．１０．１０
第２のサーバ７：１５５．３２．１０．２０
また、第１の情報処理装置１から第２の情報処理装置２への接続要求を行うものとする。すなわち、第１の情報処理装置１が送信側であるとして処理を開始するものとする。
【００９５】
以下の具体例においては、具体例１において、第１の通信制御装置３がＡＳ  ＮＡＴであり、第２の通信制御装置４がＰＳ  ＮＡＴである場合について説明する。また、具体例２において、第１の通信制御装置３がＰＳ  ＮＡＴであり、第２の通信制御装置４がＡＳ
ＮＡＴである場合について説明する。また、具体例３において、第１の通信制御装置３がＰＳ  ＮＡＴであり、第２の通信制御装置４がＰＲ  ＮＡＴである場合について説明する。さらに、具体例４において、第１の通信制御装置３、および第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである場合について説明する。
【００９６】
［具体例１］
図１２、図１３は、具体例１について説明するための図である。まず、第１の情報処理装置１から接続要求が行われる動作について説明する。図１２において、第１の情報処理装置１は、第１のサーバ６のＩＰアドレス「１５５．３２．１０．１０」、および第２のサーバ７のＩＰアドレス「１５５．３２．１０．２０」をあらかじめ知っており、その第１のサーバ６に対して、第１の情報処理装置１の機器ＩＤ「１２３４５６７８９０１２３４５６」を送信する。ここで、この機器ＩＤとしては、例えば、ＭＡＣアドレスや、ＥＵＩ６４ベースのアドレスなどのＧＵＩＤ（Ｇｌｏｂａｌ  Ｕｎｉｑｕｅ  ＩＤ）を用いることができる。この機器ＩＤの送信は、第１の通信制御装置３のポートＰ１を介して、第１のサーバ６のポートＰ３に対して行われる。この送信によって、第１のサーバ６の情報送受信部６２は、第１の情報処理装置１の機器ＩＤと、第１の通信制御装置３のＩＰアドレス「２０２．１３２．１０．６」と、第１の通信制御装置３におけるポートＰ１のポート番号「１０１３０」とを知ることができる。これらの情報は、情報送受信部６２において保持される。
【００９７】
次に、第１の情報処理装置１は、接続を要求する第２の情報処理装置２の機器ＩＤ「９８７６５４３２１０１２３４５６」を第１のサーバ６に送信することにより、第２の情報処理装置２への接続要求を行う。すると、第１のサーバ６の情報送受信部６２が、その接続要求を受け取り、第２の情報処理装置２が第１のサーバ６にすでにアクセスしているかどうか判断する。この第２の情報処理装置２によるアクセスも、上述の第１の情報処理装置１と同様にして、第２の情報処理装置２の機器ＩＤを送信することによってなされる。したがって、第２の情報処理装置２が第１のサーバ６にアクセスしていた場合には、第１のサーバ６は、第２の情報処理装置２の機器ＩＤ「９８７６５４３２１０１２３４５６」と、第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」と、第２の情報処理装置２と第１のサーバ６の間での情報の送受信で用いられる第２の通信制御装置４のポートＰ２のポート番号「２１０００」とを知っており、それらが情報送受信部６２において保持されていることとなる。第２の情報処理装置２が第１のサーバ６にすでにアクセスしている場合には、情報送受信部６２が、特性判断部６３に対して送受信の決定（ステップＳ１０１）を行う旨の指示を渡すことにより、送受信の決定の処理を開始させる。一方、第２の情報処理装置２が第１のサーバ６にアクセスしていない場合には、第１の情報処理装置１からの接続要求は、エラーとなり、第１の情報処理装置１と第２の情報処理装置２の間の通信は確立できない。
【００９８】
送受信の決定において、特性判断部６３が送信側の通信制御装置である第１の通信制御装置３の特性を判断する（ステップＳ２０１）。そして、第１の通信制御装置３が、ＡＳ
ＮＡＴを用いていると判断される。そして、その旨が送受信決定部６４に渡される。送受信決定部６４は、送信側の通信制御装置がＰＳ  ＮＡＴを用いておらず、また、ＰＲ  ＮＡＴを用いていないと判断する（ステップＳ２０２、Ｓ２０３）。その結果、送受信の入れ替えは行われず、第１の情報処理装置１、第１の通信制御装置３が送信側であり、第２の情報処理装置２、第２の通信制御装置４が受信側である旨が、情報送受信部６２、バブルパケット送信対象ポート送信部６５、範囲送信部６７、ポート幅送信部６９に渡される。
【００９９】
情報送受信部６２が、第１の情報処理装置１が送信側である旨を受け取ると、受信側の第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」を示すアドレス情報を第１の情報処理装置１にポートＰ１を介して送信する（ステップＳ３０１）。また、バブルパケット送信対象ポート送信部６５は、第２の通信制御装置４のポートＰ２のポート番号「２１０００」を示す情報であるバブルパケット送信対象ポート情報を第１の情報処理装置１にポートＰ１を介して送信する（ステップＳ３０２）。
【０１００】
すると、それらの情報は第１の情報処理装置１の通信部１１で受信され、第２の通信制御装置４のＩＰアドレス「１３１．２０６．１０．２４０」を示すアドレス情報はバブルパケット送信部１２に渡され、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部１６に渡される。そして、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部１６で受け付けられ、バブルパケット送信部１２に渡される。このようにして、バブルパケット送信部１２は、バブルパケットの送信先である第２の通信制御装置４のＩＰアドレスを取得する。
【０１０１】
通信部１１が、バブルパケット送信対象ポート情報等を受け付けた旨をポート幅検出用パケット送信部１５に伝えると、ポート幅検出用パケット送信部１５は、複数のポート幅検出用パケットを図１１で示すようにして送信する（ステップＳ３０３）。なお、図１２、図１３では、ポート幅検出用パケットの送信については明示していない。そのポート幅検出用パケットは、ポート幅検出部６８で受け付けられ、ポート幅が検出される。この場合、ポート幅は「１」と検出されたとする（ステップＳ３０４）。検出されたポート幅は、ポート幅送信部６９に渡される。
【０１０２】
バブルパケット送信部１２は、バブルパケットを送信する前に、範囲検出用パケット送信部１３に対して範囲検出用パケットを送信する旨の指示を渡す。すると、範囲検出用パケット送信部１３は、第１のサーバ６との通信で用いているポートとは異なるポートを用いて、第１のサーバ６に対して範囲検出用パケットを送信する（ステップＳ３０５）。なお、この範囲検出用パケットの送信先ポートであるポートＰ６は、第１のサーバ６から第１の情報処理装置１に対して示されたものであるとする。この範囲検出用パケットは、第１の通信制御装置３のポートＰ５を用いて送信されたとする。すると、その範囲検出用パケットを受け付けた範囲検出部６６は、その第１の通信制御装置３のポートＰ５のポート番号「１０１３５」を検出する。範囲検出部６６は、そのポートＰ５のポート番号「１０１３５」を保持しておく。
【０１０３】
範囲検出用パケット送信部１３は、範囲検出用パケットの送信後に、範囲検出用パケットを送信した旨をバブルパケット送信部１２に伝える。すると、バブルパケット送信部１２は、通信部１１から受け取ったアドレス情報の示すＩＰアドレス「１３１．２０６．１０．２４０」の第２の通信制御装置４におけるポート番号が「２１０００」のバブルパケット送信対象ポートに対してバブルパケットを送信する（ステップＳ３０６）。ここで、そのバブルパケットは、第１の通信制御装置３のポートＰ７（ポート番号「１０１４２」）を用いて送信されたとする。
【０１０４】
バブルパケット送信部１２は、バブルパケットの送信後に、範囲検出用パケットを送信する旨の指示を範囲検出用パケット送信部１３に渡す。すると、範囲検出用パケット送信部１３は、ＩＰアドレスが「１５５．３２．１０．２０」である第２のサーバ７に対して、範囲検出用パケットを送信する（ステップＳ３０７）。なお、バブルパケットと２回目の範囲検出用パケットとは、１回目の範囲検出用パケットの送信された第１の情報処理装置１のポートから送信されるものとする。
【０１０５】
バブルパケットの送信後に送信された範囲検出用パケットは、第１の通信制御装置３のポートＰ８を用いて送信されたとする。すると、範囲検出部６６は、第２のサーバ７の通信部７１、および第１のサーバ６の通信部６１を介してその範囲検出用パケットを受け付け、ポートＰ８のポート番号「１０１４５」を検出する。そして、範囲検出部６６は、保持していたポートＰ５のポート番号「１０１３５」と、検出したポートＰ８のポート番号「１０１４５」とを、それぞれ下限と上限とする範囲を検出する（ステップＳ３０８）。そして、その範囲を範囲送信部６７に渡すと、範囲送信部６７は、第２の通信制御装置４のポートＰ２を介して第２の情報処理装置２に、その範囲を示す範囲情報を送信する（ステップＳ３０９）。その範囲情報は、第２の情報処理装置２の範囲受付部２７で受け付けられ、返信パケット送信部２９に渡される。
【０１０６】
なお、ポートＰ５，Ｐ７，Ｐ８が連続したポート番号となっていないが、これは、第１の通信制御装置３のローカル側に第１の情報処理装置１以外の装置（図示せず）が接続されており、範囲検出用パケットの送信からバブルパケットの送信まで、またはバブルパケットの送信から範囲検出用パケットの送信までに、その装置に対して、第１の通信制御装置３のポートが割り当てられることによって生じるものである。
【０１０７】
範囲情報を送信した旨を、範囲送信部６７が情報送受信部６２とポート幅送信部６９に伝えると、情報送受信部６２は、第１の通信制御装置３のＩＰアドレス「２０２．１３２．１０．６」を示すアドレス情報を第２の情報処理装置２に送信する（ステップＳ３１０）。また、ポート幅送信部６９は、第２の情報処理装置２に、ポート幅検出部６８によって検出されたポート幅を示すポート幅情報を送信する（ステップＳ３１１）。すると、第１の通信制御装置３のＩＰアドレスを示すアドレス情報は、通信部２１から返信パケット送信部２９に渡され、ポート幅情報は、ポート幅受付部２８に渡されて、返信パケット送信部２９に渡される。このようにして、返信パケット送信部２９は、返信パケットの送信先である第１の通信制御装置３のＩＰアドレスを取得する。
【０１０８】
返信パケット送信部２９は、通信部２１から受け取ったアドレス情報の示すＩＰアドレス「２０２．１３２．１０．６」の第１の通信制御装置３に対して返信パケットを送信する。この返信パケットは、図１３で示されるように、範囲情報によって示されるポート番号「１０１３５」から「１０１４５」のポートに対して、ポート幅情報の示すポート幅「１」ごとに送信される。ここで、第２の通信制御装置４は、ＰＳ  ＮＡＴであるため、第２の情報処理装置２から送信される返信パケットは、ポートＰ１０からポートＰ１１までの１１個のポートを用いて送信される（ステップＳ３１２）。第１の通信制御装置３では、バブルパケットの送信により、ポートＰ７に送信履歴が残っているため、返信パケットのうち、ポートＰ７（ポート番号「１０１４２」）に送信された返信パケットは、第１の情報処理装置１に渡され、通信部１１を介して返信パケット受付部１４で受け付けられる（ステップＳ３１３）。このようにして、第１の情報処理装置１は、返信パケットの送信で用いられた第２の通信制御装置４のポートの位置を知ることができる。その後、第１の情報処理装置１が、そのポートに対して、第１の通信制御装置３におけるポートＰ７を介して情報を送信することにより、第１の情報処理装置１と第２の情報処理装置２との間の通信が確立され、サーバを介さないで直接、ＵＤＰによる通信を行うことができる。
【０１０９】
なお、この具体例１において、バブルパケット送信ポート（ポートＰ７）のポート番号が「１０１４０」であり、第１の通信制御装置３のポート幅が「５」である場合には、返信パケットは、３つのポート、すなわちポートＰ５，Ｐ７，Ｐ８にのみ送信されることとなり、返信パケットの送信を効率よく行うことができる。
【０１１０】
また、この具体例１において、第２の情報処理装置２が第１のサーバ６と通信を行うポート（第２の情報処理装置２のポート）から返信パケットを送信する場合について説明したが、他のポートから返信パケットを送信してもよい。例えば、第１のサーバ６がバブルパケット送信対象ポートの位置を検出するために、第２の情報処理装置２から第１のサーバ６に送信されたパケットが送信された第２の情報処理装置２のポートから返信パケットを送信してもよい。なお、この場合には、そのパケットの通過した第２の通信制御装置４のポートがバブルパケット送信対象ポートとなる。
【０１１１】
また、この具体例１では、バブルパケットと２回目の範囲検出用パケットとが、１回目の範囲検出用パケットの送信された第１の情報処理装置１のポートから送信される場合について説明したが、バブルパケットと、２個の範囲検出用パケットとは、第１の情報処理装置１において新たに割り当てられたそれぞれ異なるポートから送信されてもよい。
【０１１２】
［具体例２］
具体例２では、第１の通信制御装置３がＰＳ  ＮＡＴを用いており、第２の通信制御装置４がＡＳ  ＮＡＴを用いている場合について説明する。
【０１１３】
第１の情報処理装置１から接続要求が行われる動作については、具体例１と同様であり、その説明を省略する。
【０１１４】
次に、送受信の決定を行う動作について説明する。特性判断部６３が送信側の通信制御である第１の通信制御装置３の特性を判断する（ステップＳ２０１）。そして、第１の通信制御装置３がＰＳ  ＮＡＴを用いていると判断され、その旨が送受信決定部６４に渡される。送受信決定部６４は、送信側の通信制御装置がＰＳ  ＮＡＴを用いていると判断し（ステップＳ２０２）、特性判断部６３に受信側の第２の通信制御装置４の特性を判断する旨の指示を渡す。すると、特性判断部６３は、第２の通信制御装置４の特性を判断する（ステップＳ２０５）。そして、第２の通信制御装置４がＡＳ  ＮＡＴを用いていると判断され、その旨が送受信決定部６４に渡される。送受信決定部６４は、受信側の通信制御装置がＡＳ  ＮＡＴを用いていると判断し（ステップＳ２０６、Ｓ２０７）、送受信の入れ替えを行う（ステップＳ２０４）。したがって、第１の情報処理装置１、第１の通信制御装置３が受信側に設定され、第２の情報処理装置２、第２の通信制御装置４が送信側に設定される。そして、第１の情報処理装置１、第１の通信制御装置３が受信側に設定され、第２の情報処理装置２、第２の通信制御装置４が送信側に設定された旨が、情報送受信部６２、バブルパケット送信対象ポート送信部６５、範囲送信部６７、ポート幅送信部６９に渡される。この後の動作については、第１の情報処理装置１と第２の情報処理装置とが入れ替わり、第１の通信制御装置３と第２の通信制御装置４とが入れ替わった以外、具体例１と同様であり、その説明を省略する。
【０１１５】
なお、第１の情報処理装置１、第１の通信制御装置３が受信側であり、第２の情報処理装置２、第２の通信制御装置４が送信側である旨は、第１の情報処理装置１や第２の情報処理装置２に対して通知されてもよく、あるいは、第１の情報処理装置１や第２の情報処理装置２は、バブルパケット送信対象ポート情報を受け取った場合に送信側であることを検知し、一方、範囲情報を受け取った場合に受信側であることを検知してもよい。
【０１１６】
［具体例３］
具体例３では、第１の通信制御装置３がＰＳ  ＮＡＴを用いており、第２の通信制御装置４がＰＲ  ＮＡＴを用いている場合について説明する。
【０１１７】
第１の情報処理装置１から接続要求が行われる動作については、具体例１と同様であり、その説明を省略する。
【０１１８】
次に、送受信の決定を行う動作について説明する。特性判断部６３が送信側の通信制御である第１の通信制御装置３の特性を判断する（ステップＳ２０１）。そして、第１の通信制御装置３がＰＳ  ＮＡＴを用いていると判断され、その旨が送受信決定部６４に渡される。送受信決定部６４は、送信側の通信制御装置がＰＳ  ＮＡＴを用いていると判断し（ステップＳ２０２）、特性判断部６３に受信側の第２の通信制御装置４の特性を判断する旨の指示を渡す。すると、特性判断部６３は、第２の通信制御装置４の特性を判断する（ステップＳ２０５）。そして、第２の通信制御装置４がＰＲ  ＮＡＴを用いていると判断され、その旨が送受信決定部６４に渡される。送受信決定部６４は、受信側の通信制御装置がＰＳ  ＮＡＴを用いておらず、またＡＳ  ＮＡＴを用いていない判断する（ステップＳ２０６、Ｓ２０７）。その結果、送受信の入れ替えは行われず、第１の情報処理装置１、第１の通信制御装置３が送信側であり、第２の情報処理装置２、第２の通信制御装置４が受信側である旨が、情報送受信部６２、バブルパケット送信対象ポート送信部６５、範囲送信部６７、ポート幅送信部６９に渡される。
【０１１９】
この後、第１の情報処理装置１からバブルパケットや範囲検出用パケットが送信され、範囲情報や、第１の通信制御装置３のＩＰアドレス、ポート幅情報などが第２の情報処理装置２で受信される動作については、具体例１と同様であり、その説明を省略する。
【０１２０】
図１４は、第２の情報処理装置２からの返信パケットの送信について説明するための図である。図１４において、第２の情報処理装置２の返信パケット送信部２９は、範囲受付部２７が第１のサーバ６から受け付けた範囲情報に基づいて、ＩＰアドレス「２０２．１３２．１０．６」の第１の通信制御装置３におけるポート番号「１０１３５」のポートＰ５から、ポート番号「１０１４５」のポートＰ８までに対して返信パケットを送信する（ステップＳ３１２）。この返信パケットの送信は、ポート幅受付部２８が受け付けたポート幅情報の示すポート幅「１」ごとになされる。なお、第２の通信制御装置４がＰＲ  ＮＡＴを用いているため、返信パケットは、ポートＰ２を介して第１の通信制御装置３に送信される。すなわち、返信パケットは、第１のサーバ６と通信を行う第２の情報処理装置２のポートから送信される。これ以外の動作は、具体例１と同様であり、その説明を省略する。
【０１２１】
なお、この具体例３では、送信側の第１の通信制御装置３がＡＳ  ＮＡＴではない。したがって、範囲検出用パケット送信部１３が、その旨を特性判断部６３等から受け取り、バブルパケット送信後の範囲検出用パケットを、第２のサーバ７ではなく、第１のサーバ６に送信するようにしてもよい。ここで、この具体例３の場合には、送信側の第１の通信制御装置３がＰＳ  ＮＡＴを用いているため、範囲検出用パケットを第１のサーバ６に送信するときにも、そのパケットを送信する第１の情報処理装置１におけるポートを、第１のサーバ６とのポート１を介した通信で用いるポートと同一のポートとしてもよい。ただし、この場合にも、第１の通信制御装置３において新たなポートが割り当てられるようにするため、第１のサーバ６における異なるポートであるポートＰ３と、ポートＰ６とに対して範囲検出用パケットを送信する必要がある。
【０１２２】
［具体例４］
具体例４では、第１の通信制御装置３、および第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴを用いている場合について説明する。なお、この場合に特徴的な部分のみ説明することとし、上記の具体例と同様な点については、説明を省略することとする。
【０１２３】
第１の情報処理装置１から接続要求が行われる動作については、具体例１と同様であり、その説明を省略する。
【０１２４】
次に、送受信の決定においては、両方の通信制御装置がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴであるために、送受信の入れ替えは行われず、第１の情報処理装置１、第１の通信制御装置３が送信側であり、第２の情報処理装置２、第２の通信制御装置４が受信側に決定される。
【０１２５】
次に、バブルパケットの送信等について図１５、図１６を用いて簡単に説明する。図１５において、第１の通信制御装置３がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴであれば、範囲検出用パケットと、バブルパケットとは、同一のポートＰ５を用いて送信されることとなる。したがって、バブルパケット送信ポートは、範囲情報によって、１つに特定されることとなる。そのため、図１６で示されるように、第２の情報処理装置２から送信される返信パケットは、ポートＰ２を介して、ポートＰ５に送信され、このようにして、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１２６】
この説明では、図１０での処理の流れに沿うように説明したが、第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである場合には、送信されたバブルパケットを第２の情報処理装置２で受け取ることができるため、その時点において、通信が確立されることとなる。したがって、範囲検出用パケットの送信や、返信パケットの送信を行わなくてもよい。
【０１２７】
なお、上記各具体例においてバブルパケットの送信先をポートＰ２（第２の情報処理装置２が第１のサーバ６との通信で用いているポート）としているのは、送信側の第１の通信制御装置３がＰＲ  ＮＡＴ，あるいはＰＳ  ＮＡＴを用いており、かつ、受信側の第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴ，Ｒ  ＮＡＴ，あるいはＰＲ  ＮＡＴを用いている場合にも通信を確立することができるようにするためである。したがって、それ以外の場合（例えば、具体例４の場合）であれば、ポートＰ２以外にバブルパケット送信してもよい。特に、第１の通信制御装置３がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである場合には、バブルパケットは第２の通信制御装置４でない装置に送信されてもよい。
【０１２８】
また、送信側の第１の通信制御装置３がＡＳ  ＮＡＴ以外を用いている場合には、第２のサーバ７に送信する範囲検出用パケットを、第１のサーバ６に送信してもよい。
【０１２９】
また、バブルパケットの送信の前後で送信する範囲検出用パケットを、それぞれ第１の情報処理装置１において新たに割り当てられたポートを用いて第１のサーバ６に送信してもよい。このようにすることで、範囲検出用パケットの送信ごとに第１の通信制御装置３において新たなポートが割り当てられることとなり、バブルパケット送信ポートを含むポートの範囲を検出することができる。したがって、送信側の第１の通信制御装置３がＡＳ
ＮＡＴを用いている場合であっても、第２のサーバ７を用いることなく、バブルパケット送信パケットを含むポートの範囲を検出することができる。なお、バブルパケットと、範囲検出用パケットとを、第１の情報処理装置１において異なるポートから送信した場合には、その範囲検出用パケットの通過した第１の通信制御装置３のポートと、バブルパケットの通過した第１の通信制御装置３のポートは異なる。したがって、このような場合には、バブルパケットの送信されたポートとは異なるポート（第１の情報処理装置１におけるポート）から送信された範囲検出用パケットの通過したポート（第１の通信制御装置３におけるポート）よりも、１ポート幅だけバブルパケット送信ポートに近いポートの位置を、返信パケットを送信する範囲の端としてもよい。範囲検出用パケットを２回送信する場合には、一方の範囲検出用パケットを送信するポート（第１の情報処理装置１におけるポート）と、バブルパケットを送信するポートとを同一のポートとしてもよい。このような場合には、バブルパケット送信ポートを含むポートの範囲に、バブルパケットを送信するポートと同じポート（第１の情報処理装置１におけるポート）から送信した範囲検出用パケットの通過した第１の通信制御装置３のポートを含めるようにする。
【０１３０】
さらに、送信側の第１の通信制御装置３がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴ，Ｒ  ＮＡＴ，ＰＲ  ＮＡＴのいずれかである場合には、バブルパケットを送信する前後のいずれかのみに、範囲検出用パケットを送信するだけでもよい。第１の通信制御装置３がＲ  ＮＡＴ、ＰＲ  ＮＡＴのいずれかを用いている場合にも、バブルパケットと範囲検出用パケットとを第１の情報処理装置１の同一のポートから送信しているのであれば、図１５で示されるように、ポートＰ５、ポートＰ７、ポートＰ８は同一のポートとなり、その１つの範囲検出用パケットによってバブルパケット送信ポートを特定できるからである。また、送信側の第１の通信制御装置３が、例えば、第１のサーバ６との通信を行うポート（例えば、図１５のポートＰ１）を介してバブルパケットを送信する場合には、範囲検出用パケットを送信しなくてもよい。
【０１３１】
図１７は、通信制御装置で用いるＮＡＴの種類に関し、接続可能かどうかを示す表である。本実施の形態による通信システムでは、第１の通信制御装置３と、第２の通信制御装置４との両方がＰＳ  ＮＡＴを用いている場合以外は、第１の情報処理装置１と第２の情報処理装置２との接続を行うことが可能である。上記各具体例における説明では、通信制御装置で用いているＮＡＴの種類に応じた例外的な取り扱いに関する記載も行ったが、通信制御装置で用いているＮＡＴの種類に関わらず、バブルパケット送信前の範囲検出用パケットと、バブルパケット送信後の範囲検出用パケットを異なるアドレスに送信し、バブルパケットの送信先のポートを、受信側の情報処理装置がサーバとの情報の送受信で用いているポートとし、範囲検出用パケットを用いて検出されたバブルパケット送信ポートを含むポートの範囲に返信パケットを送信することで、図１７の「○」の組み合わせについては、情報処理装置間の接続を行うことができる。また、図１７の「△」の組み合わせについても、送受信の入れ替えを行うことによって、情報処理装置間の接続を行うことができる。
【０１３２】
ここで、送信側でＰＳ  ＮＡＴが用いられ、受信側でＰＳ  ＮＡＴ、ＡＳ  ＮＡＴが用いられる場合、送信側でＰＲ  ＮＡＴが用いられ、受信側でＡＳ  ＮＡＴ、あるいはＰＳ
ＮＡＴが用いられる場合に、情報処理装置間における通信をなぜ確立することができないのかについて、図１２〜図１４を用いて簡単に説明しておく。
【０１３３】
（１）送信側がＰＳ  ＮＡＴ、受信側がＰＳ  ＮＡＴ、ＡＳ  ＮＡＴの場合
この場合には、第１の通信制御装置３がＰＳ  ＮＡＴを用いているため、バブルパケットをポートＰ２に送信したとすると、第１の情報処理装置１は、そのポートＰ２から送信された返信パケットのみを受け付けることができる。一方、第２の通信制御装置４がＰＳ
ＮＡＴ、あるいはＡＳ  ＮＡＴを用いており、第２の通信制御装置４は、ポートＰ２を第１のサーバ６との通信で用いているため、第２の情報処理装置２はポートＰ２を介して第１の通信制御装置３に返信パケットを送信することができない（すなわち、図１４のように、返信パケットを送信することはできない）。したがって、この場合には、通信を確立することができないこととなる。ただし、送信側と受信側の両方がＰＳ  ＮＡＴである場合以外は、送信側と受信側とを入れ替えることにより、通信を確立することができ得る。
【０１３４】
（２）送信側がＰＲ  ＮＡＴ、受信側がＰＳ  ＮＡＴ、ＡＳ  ＮＡＴの場合
この場合も、上記（１）と同様に、第１の通信制御装置３がＰＲ  ＮＡＴを用いているため、バブルパケットをポートＰ２送信したとすると、第１の情報処理装置１は、そのポートＰ２からの返信パケットのみを受け付けることができる。一方、第２の通信制御装置が、ＡＳ  ＮＡＴ，あるいはＰＳ  ＮＡＴを用いているため、ポートＰ２を介して返信パケットを返信することはできない。したがって、この場合には通信を確立できないこととなる。なお、この場合には、第１の通信制御装置３におけるポートＰ５，Ｐ７，Ｐ８が同一のポートとなることは前述のとおりである。この場合にも、送信側と受信側とを入れ替えることにより、通信を確立することができ得る。
【０１３５】
以上のように、本実施の形態による通信システムによれば、第１の通信制御装置３、および第２の通信制御装置４が両方とも、ＰＳ  ＮＡＴである場合を除いて、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１３６】
（実施の形態２）
本発明の実施の形態２による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、バブルパケット送信ポートを含むポートの範囲の検出や、ポート幅の検出等をサーバではなく、情報処理装置において行うことによって、サーバの処理負荷を軽減するものである。
【０１３７】
本実施の形態による通信システムの構成は、第１の情報処理装置１、第２の情報処理装置２、第１のサーバ６に代えて、それぞれ第１の情報処理装置１０、第２の情報処理装置２０、第１のサーバ６０を備える以外、図１と同様であり、その説明を省略する。
【０１３８】
図１８は、本実施の形態による第１の情報処理装置１０の構成を示すブロック図である。図１８において、第１の情報処理装置１０は、通信部１１と、バブルパケット送信部１２と、範囲検出用パケット送信部１３と、返信パケット受付部１４と、ポート幅検出用パケット送信部１５と、バブルパケット送信対象ポート受付部１６と、範囲受付部１７と、ポート幅受付部１８と、返信パケット送信部１９と、検出用ポート情報受付部７１と、範囲検出部７２と、範囲送信部７３と、ポート幅検出用ポート情報受付部７４と、ポート幅検出部７５と、ポート幅送信部７６とを備える。なお、検出用ポート情報受付部７１、範囲検出部７２、範囲送信部７３、ポート幅検出用ポート情報受付部７４、ポート幅検出部７５、ポート幅送信部７６以外の構成および動作は、ポート幅受付部１８が第２の情報処理装置２０から第１のサーバ６０を介して送信されたポート幅情報を受け付ける以外、実施の形態１と同様であり、その説明を省略する。
【０１３９】
検出用ポート情報受付部７１は、第１のサーバ６０から送信された検出用ポート情報を、通信部１１を介して受け付ける。ここで、検出用ポート情報とは、範囲検出用パケット送信部１３によって送信された範囲検出用パケットが通過した第１の通信制御装置３のポートの位置を示す情報である。
【０１４０】
範囲検出部７２は、検出用ポート情報受付部７１が受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。このポートの範囲の検出は、検出用ポート情報のパケットのペイロードに含まれるポート番号を取得し、所定のメモリ等に記録することなどであってもよい。
【０１４１】
範囲送信部７３は、範囲検出部７２が検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を、第１のサーバ６０を介して第２の情報処理装置２０に送信する。
【０１４２】
ポート幅検出用ポート情報受付部７４は、ポート幅検出用ポート情報を受け付ける。ここで、ポート幅検出用ポート情報とは、ポート幅検出用パケット送信部１５によって送信されたポート幅検出用パケットが通過した第１の通信制御装置３のポートの位置を示す情報である。このポート幅検出用ポート情報は、第１のサーバ６０から送信されたものである。
【０１４３】
ポート幅検出部７５は、ポート幅検出用ポート情報受付部７４が受け付けたポート幅検出用ポート情報に基づいて、第１の通信制御装置３におけるポート幅を検出する。このポート幅の検出は、実施の形態１におけるポート幅検出部６８と同様に行われるものであり、その説明を省略する。
【０１４４】
ポート幅送信部７６は、ポート幅検出部７５が検出した第１の通信制御装置３のポート幅を示す情報であるポート幅情報を、第１のサーバ６０を介して第２の情報処理装置２０に送信する。
【０１４５】
なお、第１の情報処理装置１０におけるバブルパケット送信部１２からバブルパケット送信対象ポート受付部１６まで、および検出用ポート情報受付部７１からポート幅送信部７６までは、第１の情報処理装置１０が送信側として動作する場合に用いられる。一方、範囲受付部１７から返信パケット送信部１９までは、第１の情報処理装置１０が受信側として動作する場合に用いられる。
【０１４６】
図１９は、本実施の形態による第２の情報処理装置２０の構成を示すブロック図である。図１９において、第２の情報処理装置２０は、通信部２１と、バブルパケット送信部２２と、範囲検出用パケット送信部２３と、返信パケット受付部２４と、ポート幅検出用パケット送信部２５と、バブルパケット送信対象ポート受付部２６と、範囲受付部２７と、ポート幅受付部２８と、返信パケット送信部２９と、検出用ポート情報受付部８１と、範囲検出部８２と、範囲送信部８３と、ポート幅検出用ポート情報受付部８４と、ポート幅検出部８５と、ポート幅送信部８６とを備える。ここで、第２の情報処理装置２０における通信部２１からポート幅送信部８６までの各部は、第１の情報処理装置１０、第１の通信制御装置３と、第２の情報処理装置２０、第２の通信制御装置４が入れ替わる以外、第１の情報処理装置１０における通信部１１からポート幅送信部７６までの構成と同様であり、その説明を省略する。
【０１４７】
なお、第２の情報処理装置２０におけるバブルパケット送信部２２からバブルパケット送信対象ポート受付部２６まで、および検出用ポート情報受付部８１からポート幅送信部８６までは、第２の情報処理装置２０が送信側として動作する場合に用いられる。一方、範囲受付部２７から返信パケット送信部２９までは、第２の情報処理装置２０が受信側として動作する場合に用いられる。
【０１４８】
図２０は、本実施の形態による第１のサーバ６０の構成を示すブロック図である。図２０において、第１のサーバ６０は、通信部６１と、情報送受信部６２と、特性判断部６３と、送受信決定部６４と、バブルパケット送信対象ポート送信部６５と、検出用ポート検出部９１と、検出用ポート情報送信部９２と、ポート幅検出用ポート検出部９３と、ポート幅検出用ポート情報送信部９４とを備える。なお、検出用ポート検出部９１、検出用ポート情報送信部９２、ポート幅検出用ポート検出部９３、ポート幅検出用ポート情報送信部９４以外の構成および動作は、実施の形態１と同様であり、その説明を省略する。
【０１４９】
検出用ポート検出部９１は、送信側情報処理装置から送信された範囲検出用パケットを受け付け、その範囲検出用パケットに基づいて範囲検出用パケットが通過した送信側通信制御装置のポートの位置を検出する。そのポート位置の検出は、範囲検出用パケットに含まれる（例えば、範囲検出用パケットのヘッダに含まれる）範囲検出用パケットが通過した送信側通信制御装置のポートの位置を取得することによって行われる。なお、範囲検出用パケットは、送信側情報処理装置から通信部６１に対して送信されたものであってもよく、あるいは、第２のサーバ７の通信部７１に送信されたものを、通信部６１を介して受け取ったものであってもよい。後者の場合、第１のサーバ６０と第２のサーバ７では、ＩＰアドレスが異なっているものとする。
【０１５０】
検出用ポート情報送信部９２は、検出用ポート検出部９１が検出したポートの位置を示す検出用ポート情報を送信側情報処理装置に送信する。
【０１５１】
ポート幅検出用ポート検出部９３は、送信側情報処理装置から送信側通信制御装置を介して送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、そのポート幅検出用パケットが通過した送信側通信制御装置のポートの位置を検出する。
【０１５２】
ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３が検出した、ポート幅検出用パケットが通過した送信側通信制御装置のポートの位置を示すポート幅検出用ポート情報を送信側情報処理装置に送信する。
【０１５３】
次に、本実施の形態による通信システムの動作について説明する。なお、本実施の形態による通信システムの動作は、バブルパケット送信ポートを含むポートの範囲の検出や、ポート幅の検出を第１の情報処理装置１０、第２の情報処理装置２０で行う以外、実施の形態１における図５で示される動作と同様であり、その説明を省略する。
【０１５４】
次に、図５のフローチャートにおけるステップＳ１０２の処理について、図２１〜図２３を用いて説明する。図２１〜図２３は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。なお、図２１〜図２３におけるサーバとは、第１のサーバ６０と、第２のサーバ７の両方を示すものである。また、説明の便宜のため、第１の情報処理装置１０、および第１の通信制御装置３が送信側であるとし、第２の情報処理装置２０、および第２の通信制御装置４が受信側であるとする。また、ステップＳ３０１〜Ｓ３０３、Ｓ３０５〜Ｓ３０７、Ｓ３１０、Ｓ３１２、Ｓ３１３の処理は、実施の形態１における図１０に関する説明と同様であり、その説明を省略する。
【０１５５】
（ステップＳ４０１）第１のサーバ６０のポート幅検出用ポート検出部９３は、第１の情報処理装置１０から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部９３は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１５６】
（ステップＳ４０２）ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３によって検出された、ポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を示す情報であるポート幅検出用ポート情報を第１の情報処理装置１０に送信する。そのポート幅検出用ポート情報は、第１の情報処理装置１０におけるポート幅検出用ポート情報受付部７４で受け付けられる。
【０１５７】
（ステップＳ４０３）ポート幅検出部７５は、ポート幅検出用ポート情報受付部７４で受け付けられたポート幅検出用ポート情報に基づいて、第１の通信制御装置３のポート幅を検出する。なお、このポート幅の検出は、実施の形態１と同様に行われるものであり、その説明を省略する。
【０１５８】
（ステップＳ４０４）第１のサーバ６０の検出用ポート検出部９１は、第１の情報処理装置１０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１５９】
（ステップＳ４０５）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置１０に送信する。その検出用ポート情報は、第１の情報処理装置１０における検出用ポート情報受付部７１で受け付けられる。
【０１６０】
（ステップＳ４０６）第１のサーバ６０の検出用ポート検出部９１は、第１の情報処理装置１０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０１６１】
（ステップＳ４０７）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置１０に送信する。その検出用ポート情報は、第１の情報処理装置１０における検出用ポート情報受付部７１で受け付けられる。
【０１６２】
（ステップＳ４０８）第１の情報処理装置１０の範囲検出部７２は、ステップＳ３０５、Ｓ３０７で送信した範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を、検出用ポート情報受付部７１が受け付けた検出用ポート情報から取得し、その２つのポートの位置を両端とするポートの範囲を検出する。
【０１６３】
（ステップＳ４０９）第１の情報処理装置１０の範囲送信部７３は、ステップＳ４０８で検出されたポートの範囲を示す情報である範囲情報を、その範囲情報を第２の情報処理装置２０に送信する旨の指示と共に第１のサーバ６０に送信する。
【０１６４】
（ステップＳ４１０）第１のサーバ６０の通信部６１は、範囲情報を受信し、その範囲情報を第２の情報処理装置２０に送信する。その範囲情報は、第２の情報処理装置２０の範囲受付部２７で受け付けられる。
【０１６５】
（ステップＳ４１１）ポート幅送信部７６は、ステップＳ４０３で検出された第１の通信制御装置３のポート幅を示すポート幅情報を、そのポート幅情報を第２の情報処理装置２０に送信する旨の指示と共に第１のサーバ６０に送信する。
【０１６６】
（ステップＳ４１２）第１のサーバ６０の通信部６１は、ポート幅情報を受信し、そのポート幅情報を第２の情報処理装置２０に送信する。その範囲情報は、第２の情報処理装置２０のポート幅受付部２８で受け付けられる。
【０１６７】
なお、図２１〜図２３において、図１０と同様に処理の順序に関して、ある程度の任意性がある。例えば、送信側のアドレス送信（ステップＳ３１０）は、受信側のアドレス送信（ステップＳ３０１）と同じタイミングで行ってもよい。特に、図２２において、範囲検出用パケットの送信と、バブルパケットの送信（ステップＳ３０５〜Ｓ３０７）は、検出用ポート情報の受信を待つことなく行ってもよい。ただし、検出用ポート情報の受信が行われてから、範囲検出（ステップＳ４０８）が行われることになる。
【０１６８】
また、本実施の形態における通信システムの動作の具体例については、送信側通信制御装置におけるポート幅の検出を、送信側情報処理装置で行い、バブルパケット送信ポートを含むポートの範囲の検出を送信側情報処理装置で行い、それらに付随して行われる処理（例えば、範囲情報の第１の情報処理装置１０から第２の情報処理装置２０までの送信など）を行う以外、実施の形態１における具体例と同様であり、その説明を省略する。
【０１６９】
以上から、本実施の形態による通信システムでは、実施の形態１と同様の効果に加え、第１の通信制御装置３、あるいは第２の通信制御装置４におけるポート幅の検出や、バブルパケット送信ポートを含むポートの範囲の検出等を第１の情報処理装置１０、あるいは第２の情報処理装置２０において行うことによって、第１のサーバ６０における処理負担を軽減することができる。特に、待ち受けの必要な処理（例えば、１回目の範囲検出用パケットが送信された後に、２回目の範囲検出用パケットが送信されるのを待つ処理など）は処理負担が大きいため、そのような待ち受けの必要な処理をサーバで行わないことにより、第１のサーバ６０における処理負担が大幅に軽減される。
【０１７０】
なお、本実施の形態では、通信制御装置のポート幅の検出、バブルパケット送信ポートを含むポートの範囲の検出を情報処理装置において行う場合について説明したが、そのどちらかの処理を実施の形態１と同様に、サーバにおいて行うようにしてもよい。
【０１７１】
また、本実施の形態では、通信制御装置の特性の判断はサーバにおいて行う場合について説明したが、通信制御装置の特性判断も、情報処理装置において行うようにしてもよい。この場合にも、情報処理装置から送信したパケットの通過した通信制御装置のポートの位置を示す情報を、サーバから情報処理装置に送信することによって、情報処理装置において通信制御装置の特性の判断を実施の形態１と同様に行うことができる。
【０１７２】
（実施の形態３）
本発明の実施の形態３による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、片方の情報処理装置が、通信制御装置を介さないで直接通信を行うものである。
【０１７３】
図２４は、本実施の形態による通信システムの構成を示すブロック図である。図２４において、本実施の形態による通信システムは、第１の情報処理装置１と、第２の情報処理装置２と、第１の通信制御装置３と、第１のサーバ６と、第２のサーバ７とを備える。なお、この図２４で示される本実施の形態による通信システムは、第２の通信制御装置を備えない以外、実施の形態１による通信システムと同様のものである。また、第１の情報処理装置１、第２の情報処理装置２、第１のサーバ６、第２のサーバ７の構成および動作は、実施の形態１と同様であり、その説明を省略する。
【０１７４】
ここで、第２の情報処理装置２は、通信制御装置を介さないで通信を行うものであるため、第２の情報処理装置２は、あたかもＦｕｌｌ  Ｃｏｎｅ  ＮＡＴの通信制御装置を介して通信を行っているように判断される。したがって、本実施の形態における動作は、実施の形態１において第２の通信制御装置４がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴである場合と同様の処理となり、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１７５】
以上のように、本実施の形態による通信システムによれば、第２の情報処理装置２が通信制御装置を介さないで通信を行う場合であっても、第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１７６】
なお、本実施の形態では、実施の形態１の通信システムにおいて、第２の通信制御装置を備えない構成について説明したが、実施の形態２の通信システムにおいて、第２の通信制御装置を備えない構成であってもよい。このような、第２の情報処理装置が通信制御装置を介さない場合であっても、第１の情報処理装置と第２の情報処理装置との間の通信を確立することができる。
【０１７７】
また、本実施の形態では、第２の情報処理装置２が通信制御装置を介さないで通信を行う場合について説明したが、第２の情報処理装置２は、通信制御装置を介して通信を行い、第１の情報処理装置１が通信制御装置を介さないで通信を行う場合であっても、同様に第１の情報処理装置１と第２の情報処理装置２との間の通信を確立することができる。
【０１７８】
また、上記各実施の形態における説明では、情報処理装置および通信制御装置の送信側、受信側を決めるときに、まず一方の情報処理装置等を送信側と暫定的に決定してから、通信制御装置の特性に応じて、それを入れ替える場合について説明したが、情報処理装置から、他の情報処理装置と通信を確立したい旨を第１のサーバ６等が受け取ったときに、第１の通信制御装置３および第２の通信制御装置４の特性を判断し、その判断結果に応じて、送信側の情報処理装置や、受信側の情報処理装置等の決定を行うようにしてもよい（この場合には、「送受信の入れ替え」という概念はないこととなる）。
【０１７９】
（実施の形態４）
本発明の実施の形態４による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、１以上のバブルパケットを送信するものである。
【０１８０】
図２５は、本実施の形態による通信システムの構成を示すブロック図である。図２５において、本実施の形態による通信システムは、第１の情報処理装置３０と、第２の情報処理装置４０と、第１の通信制御装置３と、第２の通信制御装置４と、サーバ５０とを備える。第１の通信制御装置３、第２の通信制御装置４は、実施の形態１と同様であり、その説明を省略する。
【０１８１】
図２６は、本実施の形態による第１の情報処理装置３０の構成を示すブロック図である。図２６において、第１の情報処理装置３０は、通信部１１と、バブルパケット送信部１２と、範囲検出用パケット送信部１３と、返信パケット受付部１４と、ポート幅検出用パケット送信部１５と、バブルパケット送信対象ポート受付部１６と、範囲受付部１７と、ポート幅受付部１８と、返信パケット送信部１９と、検出用ポート情報受付部７１と、範囲検出部７２と、範囲送信部７３と、ポート幅検出用ポート情報受付部７４と、ポート幅検出部７５と、ポート幅送信部７６と、ポート割り当てパケット送信部３１と、バブルパケット送信対象ポート送信部３２と、特性判断部３３と、特性送信部３４とを備える。なお、ポート割り当てパケット送信部３１、バブルパケット送信対象ポート送信部３２、特性判断部３３、特性送信部３４以外の構成および動作は、バブルパケット送信部１２が１以上のバブルパケットを送信し、検出用ポート情報受付部７１および範囲検出部７２が、バブルパケット送信ポートに関する範囲の検出の処理と共に、後述するポート割り当てパケット送信部３１が送信したポート割り当てパケットに関する範囲の検出の処理をも行う以外、実施の形態２と同様であり、その説明を省略する。
【０１８２】
ポート割り当てパケット送信部３１は、返信パケットを送信するためのポートを第１の通信制御装置３において割り当てるためのポート割り当てパケットを送信する。このポート割り当てパケットは、第２の通信制御装置４に対して送信される。ポート割り当てパケットの送信される第２の通信制御装置４におけるポートは、任意である。例えば、第２の情報処理装置４０がサーバ５０との通信で用いられる第２の通信制御装置４のポートに対して、ポート割り当てパケットが送信される。なお、返信パケット送信部１９は、返信パケットを送信する場合に、このポート割り当てパケット送信部３１がポート割り当てパケットを送信した第１の情報処理装置３０のポートから、返信パケットを送信するものとする。
【０１８３】
バブルパケット送信対象ポート送信部３２は、範囲検出部７２によって検出された、ポート割り当てパケット送信部３１の通過した第１の通信制御装置３のポート（「ポート割り当てパケット送信ポート」とする）を含む１以上のポートの範囲を、バブルパケット送信対象ポート情報として、サーバ５０を介して第２の情報処理装置４０に送信する。
【０１８４】
特性判断部３３は、第１の通信制御装置３の特性を判断する。具体的には、特性判断用パケットをサーバ５０に送信し、その特性判断用パケットの通過した第１の通信制御装置３のポートの位置を示す情報である特性判断用パケット情報を受け付けることにより、第１の通信制御装置３の特性を判断する。
【０１８５】
特性送信部３４は、特性判断部３３が判断した第１の通信制御装置３の特性を示す情報である特性情報を、サーバ５０を介して、第２の情報処理装置４０に送信する。
【０１８６】
なお、本実施の形態では、第１の情報処理装置３０におけるバブルパケット送信部１２からバブルパケット送信対象ポート受付部１６まで、および検出用ポート情報受付部７１からポート幅送信部７６までは、第１の情報処理装置３０が送信側として動作する場合に用いられる。一方、範囲受付部１７から返信パケット送信部１９まで、範囲検出用パケット送信部１３、ポート割り当てパケット送信部３１、バブルパケット送信対象ポート送信部３２、および検出用ポート情報受付部７１からポート幅送信部７６までは、第１の情報処理装置３０が受信側として動作する場合に用いられる。すなわち、範囲検出用パケット送信部１３、および検出用ポート情報受付部７１からポート幅送信部７６までは、第１の情報処理装置３０が送信側として動作する場合にも、受信側として動作する場合にも用いられる。本実施の形態では、範囲検出用パケット送信部１３、および検出用ポート情報受付部７１からポート幅送信部７６までの各構成を、第１の情報処理装置３０が送信側として動作する場合、および受信側として動作する場合の両者において用いる形態について説明するが、それらの各構成のうち、１以上の構成について、第１の情報処理装置３０が送信側として動作する場合、および受信側として動作する場合のそれぞれについて、別々に備えるようにしてもよい。
【０１８７】
図２７は、本実施の形態による第２の情報処理装置４０の構成を示すブロック図である。図２７において、第２の情報処理装置４０は、通信部２１と、バブルパケット送信部２２と、範囲検出用パケット送信部２３と、返信パケット受付部２４と、ポート幅検出用パケット送信部２５と、バブルパケット送信対象ポート受付部２６と、範囲受付部２７と、ポート幅受付部２８と、返信パケット送信部２９と、検出用ポート情報受付部８１と、範囲検出部８２と、範囲送信部８３と、ポート幅検出用ポート情報受付部８４と、ポート幅検出部８５と、ポート幅送信部８６と、ポート割り当てパケット送信部４１と、バブルパケット送信対象ポート送信部４２と、特性判断部４３と、特性送信部４４とを備える。ここで、第２の情報処理装置４０における通信部２１からポート幅送信部８６までの各部は、第１の情報処理装置３０、第１の通信制御装置３と、第２の情報処理装置４０、第２の通信制御装置４が入れ替わる以外、第１の情報処理装置３０における通信部１１からポート幅送信部７６までの構成と同様であり、その説明を省略する。
【０１８８】
なお、本実施の形態では、第２の情報処理装置４０におけるバブルパケット送信部２２からバブルパケット送信対象ポート受付部２６まで、および検出用ポート情報受付部８１からポート幅送信部８６までは、第２の情報処理装置４０が送信側として動作する場合に用いられる。一方、範囲受付部２７から返信パケット送信部２９まで、範囲検出用パケット送信部２３、ポート割り当てパケット送信部４１、バブルパケット送信対象ポート送信部４２、および検出用ポート情報受付部８１からポート幅送信部８６までは、第２の情報処理装置４０が受信側として動作する場合に用いられる。すなわち、範囲検出用パケット送信部２３、および検出用ポート情報受付部８１からポート幅送信部８６までは、第２の情報処理装置４０が送信側として動作する場合にも、受信側として動作する場合にも用いられる。また、本実施の形態では、範囲検出用パケット送信部２３、および検出用ポート情報受付部８１からポート幅送信部８６までの各構成を、第２の情報処理装置４０が送信側として動作する場合、および受信側として動作する場合の両者において用いる形態について説明するが、それらの各構成のうち、１以上の構成について、第２の情報処理装置４０が送信側として動作する場合、および受信側として動作する場合のそれぞれについて、別々に備えるようにしてもよい。
【０１８９】
図２８は、本実施の形態によるサーバ５０の構成を示すブロック図である。図２８において、サーバ５０は、通信部６１と、情報送受信部６２と、バブルパケット送信対象ポート送信部６５と、検出用ポート検出部９１と、検出用ポート情報送信部９２と、ポート幅検出用ポート検出部９３と、ポート幅検出用ポート情報送信部９４と、特性判断用ポート検出部９５と、特性判断用ポート情報送信部９６と、バブルパケット送信対象ポート受付部９７とを備える。なお、サーバ５０における特性判断用ポート検出部９５、特性判断用ポート情報送信部９６、バブルパケット送信対象ポート受付部９７以外の構成および動作は、検出用ポート検出部９１、検出用ポート情報送信部９２、ポート幅検出用ポート検出部９３、ポート幅検出用ポート情報送信部９４が送信側の情報処理装置、受信側の情報処理装置の両方について処理を行う以外、実施の形態２と同様であり、その説明を省略する。ここで、本実施の形態によるバブルパケット送信対象ポート送信部６５は、バブルパケット送信対象ポート受付部９７が受け付けたバブルパケット対象ポート情報を送信するものである。
【０１９０】
特性判断用ポート検出部９５は、第１の情報処理装置３０、あるいは第２の情報処理装置４０から送信された特性判断用パケットを受け付け、その特性判断用パケットに基づいて、特性判断用パケットが通過した第１の通信制御装置３、あるいは第２の通信制御装置４のポートの位置を検出する。そのポート位置の検出は、特性判断用パケットに含まれる（例えば、特性判断用パケットのヘッダに含まれる）特性判断用パケットが通過した第１の通信制御装置３、あるいは第２の通信制御装置４のポートの位置を取得することによって行われる。
【０１９１】
特性判断用ポート情報送信部９６は、特性判断用ポート検出部９５が検出したポートの位置を示す特性判断用ポート情報を、特性判断用パケットを送信した情報処理装置に送信する。
【０１９２】
バブルパケット送信対象ポート受付部９７は、バブルパケット送信対象ポートを示す情報であるバブルパケット送信対象ポート情報を受け付ける。このバブルパケット送信対象ポート情報によって示されるバブルパケット送信対象ポートは、１以上のポートである。
【０１９３】
次に、本実施の形態による通信システムの動作について説明する。なお、本実施の形態による通信システムの動作は、実施の形態１における図５で示される動作と同様であり、その説明を省略する。
【０１９４】
次に、図５のフローチャートにおけるステップＳ１０１の処理について、図２９を用いて説明する。図２９は、情報処理装置の送信側、および受信側を決定する処理について示すフローチャートである。ここで、このフローチャートの説明では、第２の情報処理装置４０から第１の情報処理装置３０に対して通信を行おうとしているとする。したがって、第１の情報処理装置３０、および第１の通信制御装置３が着呼側の装置となり、第２の情報処理装置４０、および第２の通信制御装置４が発呼側の装置となる。なお、第１の情報処理装置３０から第２の情報処理装置４０に対して通信を行うとした場合には、第１の情報処理装置３０、および第１の通信制御装置３と、第２の情報処理装置４０、および第２の通信制御装置４が入れ替わる以外は、以下のフローチャートの説明と同様である。なお、発呼側とは、相手方の装置との通信を要求する側のことであり、着呼側とは、発呼側の装置から通信の要求を受ける側のことである。
【０１９５】
（ステップＳ５０１）第２の情報処理装置４０の特性判断部４３は、発呼側の通信制御装置である第２の通信制御装置４の特性を判断する。特性の判断方法については、後述する。
【０１９６】
（ステップＳ５０２）特性判断部４３は、第２の通信制御装置４がＰＳ  ＮＡＴを用いているかどうか判断する。そして、ＰＳ  ＮＡＴを用いている場合には、特性送信部４４が、第２の通信制御装置４がＰＳ  ＮＡＴを用いている旨の特性情報を、サーバ５０を介して第１の情報処理装置３０に送信し、ステップＳ５０４に進み、そうでない場合には、ステップＳ５０３に進む。
【０１９７】
（ステップＳ５０３）特性判断部４３は、発呼側の装置、すなわち第２の情報処理装置４０を、受信側の装置、すなわちバブルパケットを受信する側の装置に決定する。そして、送受信の決定の処理は終了となる。
【０１９８】
（ステップＳ５０４）第１の情報処理装置３０の特性判断部３３は、着呼側の通信制御装置である第１の通信制御装置３の特性を判断する。特性の判断方法については、後述する。
【０１９９】
（ステップＳ５０５）特性判断部３３は、第１の通信制御装置３がＰＳ  ＮＡＴを用いているかどうか判断する。そして、ＰＳ  ＮＡＴを用いている場合には、送信側、受信側の双方がＰＳ  ＮＡＴを用いていることとなり、エラーとなる。一方、ＰＳ  ＮＡＴを用いていない場合には、ステップＳ５０６に進む。
【０２００】
（ステップＳ５０６）特性判断部３３は、着呼側の装置、すなわち第１の情報処理装置３０を、受信側の装置、すなわちバブルパケットを受信する側の装置に決定する。そして、送受信の決定の処理は終了となる。
【０２０１】
次に、図３０を用いて、第１の通信制御装置３の特性の判断方法について説明する。なお、第２の通信制御装置４の特性も、同様にして判断することができる。
【０２０２】
図３０において、第１の情報処理装置３０の特性判断部３３は、２つの特性判断用パケットを、同一のポートＰ１００から、それぞれサーバ５０のポートＰ３００と、ポートＰ３０１とに送信する。ここで、ポートＰ３００と、ポートＰ３０１とは異なるポートである。サーバ５０の特性判断用ポート検出部９５は、ポートＰ３００，Ｐ３０１に送信された各特性判断用パケットの通過した第１の通信制御装置３のポートの位置（Ｐ２００，Ｐ２０１）を検出する。そして、そのポートの位置を示す情報である特性判断用ポート情報が特性判断用ポート情報送信部９６から第１の情報処理装置３０に送信される。特性判断部３３は、その特性判断用ポート情報を受け付け、ポートＰ２００と、ポートＰ２０１とが等しいかどうかによって第１の通信制御装置３の特性を判断する。具体的には、ポートＰ２００がポートＰ２０１と等しい場合には、第１の通信制御装置３がＰＳ  ＮＡＴを用いていないと判断する。一方、ポートＰ２００とポートＰ２０１が異なる場合には、第１の通信制御装置３がＰＳ  ＮＡＴを用いていると判断する。
【０２０３】
次に、図５のフローチャートにおけるステップＳ１０２の処理について、図３１〜図３３を用いて説明する。図３１〜図３３は、通信の確立に関する、送信側の情報処理装置、サーバ、受信側の情報処理装置の間における情報のやり取りや処理を説明するための図である。また、説明の便宜のため、第１の情報処理装置３０、および第１の通信制御装置３が送信側であるとし、第２の情報処理装置４０、および第２の通信制御装置４が受信側であるとする。
【０２０４】
（ステップＳ６０１）サーバ５０における情報送受信部６２は、第１の通信制御装置３のＩＰアドレスを示すアドレス情報を第２の情報処理装置４０に送信する。その送信されたアドレス情報は、第２の情報処理装置４０の通信部２１で受け付けられ、ポート割り当てパケット送信部４１に渡される。
【０２０５】
（ステップＳ６０２）第２の情報処理装置４０におけるポート幅検出用パケット送信部２５は、ポート幅検出用パケットをサーバ５０に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第２の通信制御装置４のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第２の情報処理装置４０におけるポート番号がそれぞれ異なる複数のポートから送信される。
【０２０６】
（ステップＳ６０３）サーバ５０のポート幅検出用ポート検出部９３は、第２の情報処理装置４０から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部９３は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第２の通信制御装置４のポートの位置を検出する。
【０２０７】
（ステップＳ６０４）ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３によって検出された、ポート幅検出用パケットの通過した第２の通信制御装置４のポートの位置を示す情報であるポート幅検出用ポート情報を第２の情報処理装置４０に送信する。そのポート幅検出用ポート情報は、第２の情報処理装置４０におけるポート幅検出用ポート情報受付部８４で受け付けられる。
【０２０８】
（ステップＳ６０５）ポート幅検出部８５は、ポート幅検出用ポート情報受付部８４で受け付けられたポート幅検出用ポート情報に基づいて、第２の通信制御装置４のポート幅を検出する。なお、このポート幅の検出は、実施の形態１と同様に行われるものであり、その説明を省略する。
【０２０９】
（ステップＳ６０６）範囲検出用パケット送信部２３は、範囲検出用パケットを第２の通信制御装置４を介して、サーバ５０に送信する。この送信において、範囲検出用パケットが第２の通信制御装置４において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。バブルパケット送信ポートを含むポートの範囲を適切に限定することができるようにするためである。例えば、範囲検出用パケット送信部２３は、通信でそれまでに用いていない第２の情報処理装置４０のポートを用いて、範囲検出用パケットを送信する。
【０２１０】
（ステップＳ６０７）サーバ５０の検出用ポート検出部９１は、第２の情報処理装置４０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第２の通信制御装置４のポートの位置を検出する。
【０２１１】
（ステップＳ６０８）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第２の通信制御装置４のポートの位置を示す検出用ポート情報を第２の情報処理装置４０に送信する。その検出用ポート情報は、第２の情報処理装置４０における検出用ポート情報受付部８１で受け付けられる。
【０２１２】
（ステップＳ６０９）ポート割り当てパケット送信部４１は、ポート割り当てパケットを第１の通信制御装置３に送信する。第１の通信制御装置３のアドレスは、ステップＳ６０１で送信されたものを用いる。
【０２１３】
（ステップＳ６１０）範囲検出用パケット送信部２３は、範囲検出用パケットを第２の通信制御装置４を介して、サーバ５０に送信する。
【０２１４】
（ステップＳ６１１）サーバ５０の検出用ポート検出部９１は、第２の情報処理装置４０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第２の通信制御装置４のポートの位置を検出する。
【０２１５】
（ステップＳ６１２）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第２の通信制御装置４のポートの位置を示す検出用ポート情報を第２の情報処理装置４０に送信する。その検出用ポート情報は、第２の情報処理装置４０における検出用ポート情報受付部８１で受け付けられる。
【０２１６】
（ステップＳ６１３）第２の情報処理装置４０の範囲検出部８２は、ステップＳ６０６、Ｓ６１０で送信した範囲検出用パケットの通過した第２の通信制御装置４のポートの位置を、検出用ポート情報受付部８１が受け付けた検出用ポート情報から取得し、その２つのポートの位置に基づいて、ポート割り当てパケット送信ポートを含むポートの範囲（バブルパケット送信対象ポート）を検出する。なお、このバブルパケット送信対象ポートは、１つのポートである場合もあり、あるいは、２以上のポートを含む場合もある。
【０２１７】
（ステップＳ６１４）第２の情報処理装置４０のポート幅送信部８６は、ステップＳ６０５で検出された第２の通信制御装置４のポート幅を示す情報であるポート幅情報を、そのポート幅情報を第１の情報処理装置３０に送信する旨の指示と共にサーバ５０に送信する。また、第２の情報処理装置４０のバブルパケット送信対象ポート送信部４２は、ステップＳ６１３で検出されたバブルパケット送信対象ポートを示すバブルパケット送信対象ポート情報を、そのバブルパケット送信対象ポート情報を第１の情報処理装置３０に送信する旨の指示と共にサーバ５０に送信する。これらの情報は、同一のパケットで送信されてもよく、あるいは、別々のパケットで送信されてもよい。
【０２１８】
（ステップＳ６１５）サーバ５０の通信部６１は、ポート幅情報とバブルパケット送信対象ポート情報を受信し、それらの情報を第１の情報処理装置３０に送信する。バブルパケット送信対象ポートは、バブルパケット送信対象ポート受付部９７において受け付けられ、バブルパケット送信対象ポート送信部６５によって第１の情報処理装置３０に送信される。そのポート幅情報は、第１の情報処理装置３０のポート幅受付部１８で受け付けられ、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部１６で受け付けられる。
【０２１９】
（ステップＳ６１６）サーバ５０における情報送受信部６２は、第２の通信制御装置４のＩＰアドレスを示すアドレス情報を第１の情報処理装置３０に送信する。その送信されたアドレス情報は、第１の情報処理装置３０の通信部１１で受け付けられ、バブルパケット送信部１２に渡される。
【０２２０】
（ステップＳ６１７）第１の情報処理装置３０におけるポート幅検出用パケット送信部１５は、ポート幅検出用パケットをサーバ５０に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第１の通信制御装置３のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第１の情報処理装置３０におけるポート番号がそれぞれ異なる複数のポートから送信される。
【０２２１】
（ステップＳ６１８）サーバ５０のポート幅検出用ポート検出部９３は、第１の情報処理装置３０から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部９３は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０２２２】
（ステップＳ６１９）ポート幅検出用ポート情報送信部９４は、ポート幅検出用ポート検出部９３によって検出された、ポート幅検出用パケットの通過した第１の通信制御装置３のポートの位置を示す情報であるポート幅検出用ポート情報を第１の情報処理装置３０に送信する。そのポート幅検出用ポート情報は、第１の情報処理装置３０におけるポート幅検出用ポート情報受付部７４で受け付けられる。
【０２２３】
（ステップＳ６２０）ポート幅検出部７５は、ポート幅検出用ポート情報受付部７４で受け付けられたポート幅検出用ポート情報に基づいて、第１の通信制御装置３のポート幅を検出する。なお、このポート幅の検出は、実施の形態１と同様に行われるものであり、その説明を省略する。
【０２２４】
（ステップＳ６２１）範囲検出用パケット送信部１３は、範囲検出用パケットを第１の通信制御装置３を介して、サーバ５０に送信する。
【０２２５】
（ステップＳ６２２）サーバ５０の検出用ポート検出部９１は、第１の情報処理装置３０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０２２６】
（ステップＳ６２３）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置３０に送信する。その検出用ポート情報は、第１の情報処理装置３０における検出用ポート情報受付部７１で受け付けられる。
【０２２７】
（ステップＳ６２４）バブルパケット送信部１２は、ステップＳ６１６で送信されたアドレス情報によって示される第２の通信制御装置４のＩＰアドレスと、ステップＳ６１４、Ｓ６１５で送信されたバブルパケット送信対象ポート情報とに基づいて、第２の通信制御装置４のバブルパケット送信対象ポートにバブルパケットを送信する。バブルパケット送信対象ポートが２以上のポートを含む場合には、バブルパケット送信部１２は、ポート幅受付部１８で受け付けられたポート幅情報の示すポート幅ごとに、バブルパケットを送信する。
【０２２８】
（ステップＳ６２５）範囲検出用パケット送信部１３は、範囲検出用パケットを第１の通信制御装置３を介して、サーバ５０に送信する。
【０２２９】
（ステップＳ６２６）サーバ５０の検出用ポート検出部９１は、第１の情報処理装置３０から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部９１は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第１の通信制御装置３のポートの位置を検出する。
【０２３０】
（ステップＳ６２７）検出用ポート情報送信部９２は、検出用ポート検出部９１によって検出された、範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を示す検出用ポート情報を第１の情報処理装置３０に送信する。その検出用ポート情報は、第１の情報処理装置３０における検出用ポート情報受付部７１で受け付けられる。
【０２３１】
（ステップＳ６２８）第１の情報処理装置３０の範囲検出部７２は、ステップＳ６２１、Ｓ６２５で送信した範囲検出用パケットの通過した第１の通信制御装置３のポートの位置を、検出用ポート情報受付部７１が受け付けた検出用ポート情報から取得し、その２つのポートの位置に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。なお、このポートの範囲は、１つのポートである場合もあり、あるいは、２以上のポートを含む場合もある。
【０２３２】
（ステップＳ６２９）第１の情報処理装置３０の範囲送信部７３は、ステップＳ６２８で検出されたポートの範囲を示す情報である範囲情報を、その範囲情報を第２の情報処理装置４０に送信する旨の指示と共にサーバ５０に送信する。また、ポート幅送信部７６は、ステップＳ６２０で検出された第１の通信制御装置３のポート幅を示す情報であるポート幅情報を、そのポート幅情報を第２の情報処理装置４０に送信する旨の指示と共にサーバ５０に送信する。この範囲情報とポート幅情報とは、同一のパケットで送信されてもよく、あるいは、別々のパケットで送信されてもよい。
【０２３３】
（ステップＳ６３０）サーバ５０の通信部６１は、範囲情報、ポート幅情報を受信し、その範囲情報等を第２の情報処理装置４０に送信する。その範囲情報は、第２の情報処理装置４０の範囲受付部２７で受け付けられる。ポート幅情報は、ポート幅受付部２８で受け付けられる。
【０２３４】
（ステップＳ６３１）返信パケット送信部２９は、ステップＳ６０１で受け取ったアドレス情報の示すＩＰアドレスによって特定される第１の通信制御装置３に対して返信パケットを送信する。この返信パケットは、範囲受付部２７から受け取った範囲情報の示す範囲のポートに対して、ポート幅情報の示すポート幅ごとに送信される。
【０２３５】
（ステップＳ６３２）第１の情報処理装置３０の返信パケット受付部１４は、第２の情報処理装置４０から送信された返信パケットを受け付ける。この返信パケットを受け付けることにより、第１の情報処理装置３０と、第２の情報処理装置４０との間の通信が確立することとなる。そして、この後、第１の情報処理装置３０と第２の情報処理装置４０との間で、サーバ５０を介さない情報の送受信（例えば、トンネル通信）が行われる。
【０２３６】
なお、図３１〜図３３において、ポート幅の検出は、ポート幅情報の送信より以前に行われていればよく、例えば、ポート幅の検出の直後に、ポート幅情報が受信側に送信されてもよい。また、送信側のアドレスの送信（ステップＳ６０１）も、例えば、検出用ポート情報の送信（ステップＳ６０８）と同時に送信してもよい。このように、図３１〜図３３においては、処理の順序に関して、ある程度の任意性がある。また、図３２において、範囲検出用パケットの送信と、ポート割り当てパケットの送信（ステップＳ６０６、Ｓ６０９、Ｓ６１０）や、範囲検出用パケットの送信と、バブルパケットの送信（ステップＳ６２１、Ｓ６２４、Ｓ６２５）は、検出用ポート情報の受信を待つことなく行ってもよい。
【０２３７】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第１の通信制御装置３等のＩＰアドレスは、第１のサーバ６がサーバ５０となった以外、実施の形態１の具体例と同様であるとする。
【０２３８】
また、第２の情報処理装置４０が発呼側であるとする。以下の具体例においては、具体例１において、第２の通信制御装置４がＰＳ  ＮＡＴ以外である場合について説明する。また、具体例２において、第２の通信制御装置４がＰＳ  ＮＡＴであり、第１の通信制御装置３がＰＳ  ＮＡＴ以外である場合について説明する。
【０２３９】
なお、この具体例では、サーバ５０と第１の情報処理装置３０との間、あるいはサーバ５０と第２の情報処理装置４０との間でのパケットの送受信を効率よく行うために、送受信の決定（ステップＳ１０１）と、通信の確立（ステップＳ１０２）との処理の一部を並行して行う場合について説明する。
【０２４０】
［具体例１］
図３４〜図３８は、具体例について説明するための図である。なお、第１の情報処理装置３０、および第２の情報処理装置４０から、サーバ５０に対するアクセスが行われており、サーバ５０においてすでに、第１の通信制御装置３のＩＰアドレスと、第１の通信制御装置３のポートＰ１のポート番号と、第１の情報処理装置３０の機器ＩＤとが保持されているものとする。また同様に、サーバ５０において、第２の通信制御装置４のＩＰアドレスと、第２の通信制御装置４のポートＰ２のポート番号と、第２の情報処理装置４０の機器ＩＤとが保持されているものとする。
【０２４１】
まず、第２の情報処理装置４０から接続要求が行われる動作について説明する。図３４において、第２の情報処理装置４０は、サーバ５０に対して、第１の情報処理装置３０の機器ＩＤと、接続要求とを送信する。すると、サーバ５０は、第１の通信制御装置３のＩＰアドレスと、ポートＰ１のポート番号とを第２の情報処理装置４０に送信する（ステップＳ６０１）。この送信は、ポートＰ２を介して行われる。
【０２４２】
第２の情報処理装置４０のポート幅検出用パケット送信部２５は、３つのポート幅検出用パケット（ＵＤＰのパケットであるとする）を、それぞれ第２の情報処理装置４０のポートＬＰ０、ＬＰ１、ＬＰ２から送信する。ここで、ポートＬＰ０、ＬＰ１、ＬＰ２は、第２の情報処理装置４０において新たに割り当てられた異なるポートであるとする。したがって、第２の通信制御装置４の特性にかかわらず、各ポート幅検出用パケットは第２の通信制御装置４において別々のポートＰ５、Ｐ６、Ｐ７を介してサーバ５０に送信されることになる（ステップＳ６０２）。各ポート幅検出用パケットは、サーバ５０の通信部６１を介してポート幅検出用ポート検出部９３で受け付けられ、各パケットのヘッダに含まれる第２の通信制御装置４のポートＰ５、Ｐ６、Ｐ７のポート番号が検出される（ステップＳ６０３）。ポート幅検出用ポート情報送信部９４は、各ポート番号をペイロードに含むパケットであるポート幅検出用ポート情報を、それぞれのポート幅検出用パケットの通過した第２の通信制御装置４のポートに対して送信する（ステップＳ６０４）。具体的には、ポートＰ５を介して送信されたポート幅検出用パケットに対しては、そのポートＰ５のポート番号をペイロードに含むポート幅検出用ポート情報がポートＰ５に対して送信される。そのポート幅検出用ポート情報は、第２の通信制御装置４においてアドレス変換され、第２の情報処理装置４０のポートＬＰ０に送信される。そのポート幅検出用ポート情報は、通信部２１を介してポート幅検出用ポート情報受付部８４で受け付けられる。同様にして、ポートＰ６，Ｐ７を介して、ポート幅検出用ポート情報が第２の情報処理装置４０に送信される。なお、この具体例では、範囲検出用パケットをも利用してポート幅の検出を行うため、この段階では、ポート幅の検出は行われない。また、ポートＰ７を介して送信されたポート幅検出用パケットは、第２の通信制御装置４の特性を判断するためのパケットである特性判断用パケットをかねているため、第２の通信制御装置４のポートＰ７を介して送信されたポート幅検出用ポート情報は、通信部２１から特性判断部４３にも渡される。
【０２４３】
第２の情報処理装置４０の範囲検出用パケット送信部２３は、範囲検出用パケット（ＵＤＰのパケットであるとする）をポートＬＰ２からサーバ５０のポートＰ３に送信する（ステップＳ６０６）。なお、この具体例では、この範囲検出用パケットは、ポート幅検出用パケットもかねている。
【０２４４】
ポートＰ３は、ポート幅検出用パケットの送信先であるポートＰ４とは異なるポートである。したがって、第２の通信制御装置４のポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプの場合、すなわち、第２の通信制御装置４がＰＳ  ＮＡＴである場合には、その範囲検出用パケットが通過する第２の通信制御装置４におけるポートＰ８は、ポートＬＰ２から送信されたポート幅検出用パケットの通過したポートＰ７と異なるポートとなるが、第２の通信制御装置４のポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプ以外の場合には、ポートＰ７と、ポートＰ８とは等しいポートとなる。
【０２４５】
サーバ５０の検出用ポート検出部９１は、ポートＰ３に送信された範囲検出用パケットを、通信部６１を介して受け付ける。検出用ポート検出部９１は、そのパケットのヘッダに含まれる第２の通信制御装置４のポートＰ８のポート番号を検出する（ステップＳ６０７）。検出用ポート情報送信部９２は、その検出されたポートＰ８のポート番号をペイロードに含む検出用ポート情報を、第２の通信制御装置４のポートＰ８に送信する（ステップＳ６０８）。その検出用ポート情報は第２の通信制御装置４でアドレス変換され、第２の情報処理装置４０のポートＬＰ２に送信され、検出用ポート情報受付部８１で受け付けられる。なお、この具体例では、サーバ５０のポートＰ３に対して送信された範囲検出用パケットは、ポート幅検出用パケット、特性判断用パケットをかねているため、検出用ポート情報は、通信部２１から、ポート幅検出用ポート情報受付部８４、特性判断部４３にも渡される。
【０２４６】
この具体例では、特性判断用パケットをポート幅検出用パケット、および範囲検出用パケットとかねているため、サーバ５０の特性判断用ポート検出部９５、および特性判断用ポート情報送信部９６は用いられないことになる。
【０２４７】
ポート幅検出部８５は、ポート幅検出用ポート情報受付部８４において受け付けられた第２の通信制御装置４のポートＰ５、Ｐ６、Ｐ７、Ｐ８のポート番号に基づいて、第２の通信制御装置４のポート幅の検出を行う（ステップＳ６０５）。具体的には、ポートＰ８とポートＰ７との差が０でない場合には、ポートＰ６とポートＰ５の差、ポートＰ７とポートＰ６の差、ポートＰ８とポートＰ７の差のうち、一番小さい値を第２の通信制御装置４のポート幅として検出する。一方、ポートＰ８とポートＰ７との差が０である場合には、ポートＰ６とポートＰ５の差、ポートＰ７とポートＰ６の差のうち、小さい方を第２の通信制御装置４のポート幅として検出する。この具体例では、第２の通信制御装置４がＰＳ  ＮＡＴではないため、ポートＰ８とポートＰ７との差は０となる。また、この具体例では、ポート幅が「１」と検出されたとする。
【０２４８】
特性判断部４３は、ポートＰ７、Ｐ８のポート番号に基づいて、第２の通信制御装置４の特性を判断する（ステップＳ５０１）。具体的には、ポートＰ７とポートＰ８が等しい場合には、第２の通信制御装置４の特性がＦｕｌｌ  Ｃｏｎｅ  ＮＡＴ、Ｒ  ＮＡＴ、ＰＲ  ＮＡＴ（これら３つのアドレス割り当てタイプがＣｏｎｅのＮＡＴをＣｏｎｅ系のＮＡＴと呼ぶことにする）、ＡＳ  ＮＡＴのいずれかである（すなわち、ポート割り当てルールがＣｏｎｅタイプ、あるいはＡｄｄｒｅｓｓ  Ｓｅｎｓｉｔｉｖｅタイプである）と判断され、ポートＰ７とポートＰ８が異なる場合には、第２の通信制御装置４の特性がＰＳ  ＮＡＴである（すなわち、ポート割り当てルールがＰｏｒｔ  Ｓｅｉｓｉｔｉｖｅタイプである）と判断される。この具体例では、第２の通信制御装置４がＰＳ  ＮＡＴではないため、前述のように、ポートＰ７とポートＰ８が等しく、特性判断部４３は、第２の通信制御装置４がＰＳ  ＮＡＴでないと判断する（ステップＳ５０２）。その結果、発呼側である第２の情報処理装置４０が受信側の情報処理装置として動作することになる（ステップＳ５０３）。
【０２４９】
第２の情報処理装置４０のポート割り当てパケット送信部４１は、サーバ５０から送信された第１の通信制御装置３のアドレスを用いることにより、第１の通信制御装置３のポートＰ１にＵＤＰのパケットであるポート割り当てパケットを送信する（ステップＳ６０９）。このポート割り当てパケットも、第２の情報処理装置４０のポートＬＰ２から送信される。このポート割り当てパケットは、第２の通信制御装置４のポートＰ９を介して送信される。第２の通信制御装置４がＡＳ  ＮＡＴであればポートＰ８とポートＰ９が異なることになり、第２の通信制御装置４がＣｏｎｅ系のＮＡＴであればポートＰ８とポートＰ９は等しいことになる。なお、このポート割り当てパケットの寿命（例えば、そのパケットに設定されるＴＴＬなど）を設定することにより、ポート割り当てパケットがポートＰ１に到達する前に消滅するようにしてもよい。ポート割り当てパケットを送信するのは、第２の通信制御装置４において送信履歴を残すためであり、ポート割り当てパケットが第１の通信制御装置３に到達しなくてもよいからである。
【０２５０】
範囲検出用パケット送信部２３は、ＵＤＰのパケットである範囲検出用パケットを第２の情報処理装置４０のポートＬＰ３からサーバ５０のポートＰ４に送信する（ステップＳ６１０）。ポートＬＰ３は、ポートＬＰ０、ＬＰ１、ＬＰ２のいずれとも異なる、第２の情報処理装置４０において新たに割り当てられたポートである。その範囲検出用パケットは、第２の通信制御装置４のポートＰ１０を介して送信される。ここで、ポートＰ１０は、ポートＰ７、Ｐ８、Ｐ９のいずれとも異なるポートである。その範囲検出用パケットは、サーバ５０の検出用ポート検出部９１で受け付けられ、ヘッダに含まれるポートＰ１０のポート番号が検出される（ステップＳ６１１）。そのポート番号を含む検出用ポート情報は、検出用ポート情報送信部９２からポートＰ１０を介して第２の情報処理装置４０に送信される（ステップＳ６１２）。その検出用ポート情報は、第２の情報処理装置４０の検出用ポート情報受付部８１で受け付けられる。そして、範囲検出部８２によって、バブルパケット送信対象ポートの検出が行われる（ステップＳ６１３）。この検出では、ポートＰ８のポート位置から、ポートＰ１０のひとつ手前に割り当てられるはずのポート位置までがバブルパケット送信対象ポートとして検出される。第２の通信制御装置４の特性によっては、ポートＰ８とポートＰ９が等しい場合もありうるが、第２の通信制御装置４の特性にかかわらず、ポートＰ９とポートＰ１０は異なるからである。ポートＰ１０のひとつ手前に割り当てられるはずのポート位置は、ポートＰ１０のポート番号から、ポート幅検出部８５によって検出された第２の通信制御装置４のポート幅（この具体例では「１」）だけ引いたポート番号によって示される位置である。バブルパケット送信対象ポート送信部４２は、範囲検出部８２によって検出されたバブルパケット送信対象ポートを示すバブルパケット送信対象ポート情報を、第１の情報処理装置３０に送信する指示と共に、サーバ５０に送信する（ステップＳ６１４）。また、ポート幅送信部８６も、第２の通信制御装置４のポート幅を示すポート幅情報を、第１の情報処理装置３０に送信する指示と共に、サーバ５０に送信する（ステップＳ６１４）。また、特性送信部４４も、第２の通信制御装置４の特性を示す情報、すなわち第２の通信制御装置４がＰＳ  ＮＡＴではない旨の特性情報を、第１の情報処理装置３０に送信する指示と共に、サーバ５０に送信する。
【０２５１】
それらの情報は、サーバ５０において中継され、第１の通信制御装置３のポートＰ１を介して、第１の情報処理装置３０に送信される（ステップＳ６１５）。バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部１６で受け付けられる。ポート幅情報は、ポート幅受付部１８で受け付けられると共に、図示しない経路によってバブルパケット送信部１２に渡される。特性情報はポート幅検出用パケット送信部１５、範囲検出用パケット送信部１３、バブルパケット送信部１２等に渡され、第２の通信制御装置４がＰＳ  ＮＡＴではなかったため、第１の情報処理装置３０が送信側の装置としての処理シーケンスを行うと判断される。
【０２５２】
サーバ５０は、受信側の第２の通信制御装置４のＩＰアドレスを第１の情報処理装置３０に送信する（ステップＳ６１６）。
【０２５３】
第１の情報処理装置３０のポート幅検出用パケット送信部１５は、第１の情報処理装置３０の異なるポートＬＰ４、ＬＰ５から、それぞれＵＤＰパケットであるポート幅検出用パケットをサーバ５０のポートＰ３に送信する（ステップＳ６１７）。それらのポート幅検出用パケットは、第１の通信制御装置３の異なるポートＰ１１，Ｐ１２を介してサーバ５０に送信され、ポート幅検出用ポート検出部９３で受け付けられる。ポート幅検出用ポート検出部９３で、第２の情報処理装置４０から送信されたポート幅検出パケットの場合と同様にして、ポートＰ１１，Ｐ１２のポート番号が検出される（ステップＳ６１８）。ポート幅検出用ポート情報送信部９４は、ポートＰ１１，Ｐ１２の検出されたポート番号をペイロードに含むパケットであるポート幅検出用ポート情報を、それぞれポートＰ１１，Ｐ１２を介して第１の情報処理装置３０に送信する（ステップＳ６１９）。そのポート幅検出用ポート情報は、ポート幅検出用ポート情報受付部７４において受け付けられる。なお、この具体例では、範囲検出用パケットをも利用してポート幅の検出を行うため、この段階では、ポート幅の検出は行われない。
【０２５４】
範囲検出用パケット送信部１３は、ＵＤＰパケットである範囲検出用パケットを第１の情報処理装置３０のポートＬＰ６から送信する（ステップＳ６２１）。この範囲検出用パケットは、第１の通信制御装置３のポートＰ１３を介して、サーバ５０のポートＰ３に送信される。ここで、この範囲検出用パケットは、ポート幅検出用パケットをかねている。また、ポートＬＰ６は、ポートＬＰ４，ＬＰ５のそれぞれと異なる、第１の情報処理装置３０において新たに割り当てられたポートであるとする。
【０２５５】
その範囲検出用パケットは、サーバ５０の検出用ポート検出部９１で受け付けられ、ポートＰ１３のポート番号が検出される（ステップＳ６２２）。検出用ポート情報送信部９２は、その検出されたポートＰ１３のポート番号をペイロードに含むパケットである検出用ポート情報を、ポートＰ１３を介して第１の情報処理装置３０に送信する（ステップＳ６２３）。その検出用ポート情報は、検出用ポート情報受付部７１で受け付けられる。また、その範囲検出用パケットはポート幅検出用パケットをかねているため、通信部１１は、その検出用ポート情報をポート幅検出用ポート情報受付部７４にも渡す。
【０２５６】
ポート幅検出部７５は、ポート幅検出用ポート情報受付部８４において受け付けられた第１の通信制御装置３のポートＰ１１、Ｐ１２、Ｐ１３のポート番号に基づいて、第１の通信制御装置３のポート幅の検出を行う（ステップＳ６２０）。具体的には、ポートＰ１２とポートＰ１１の差、ポートＰ１３とポートＰ１２の差のうち、小さい方を第１の通信制御装置３のポート幅として検出する。この具体例では、ポート幅が「１」と検出されたとする。
【０２５７】
バブルパケット送信部１２は、バブルパケット送信対象ポート情報が示す範囲のバブルパケット送信対象ポートに対して、バブルパケットを送信する（ステップＳ６２４）。このバブルパケットは、第１の情報処理装置３０のポートＬＰ６から送信される。また、バブルパケット送信対象ポートが複数のポートを含む範囲である場合には、バブルパケットは、ポート幅受付部１８で受け付けられた第２の通信制御装置４のポート幅情報の示すポート幅（この具体例では「１」）ごとに送信される。この具体例では、図３７で示されるように、バブルパケットが第１の通信制御装置３のポートＰ１４からポートＰ１５までのポートを介して送信されたものとする。なお、第２の通信制御装置４の特性によっては、バブルパケットをポートＬＰ２において受け付けることができる場合もあるが、この具体例では、第１の情報処理装置３０と第２の情報処理装置４０との間の通信の確立を確実に行うことができるように、さらに処理を進める。
【０２５８】
範囲検出用パケット送信部１３は、範囲検出用パケットを第１の情報処理装置３０のポートＬＰ７からサーバ５０のポートＰ３に送信する（ステップＳ６２５）。ポートＬＰ７は、ポートＬＰ６とは異なるポートであり、第１の情報処理装置３０において新たに割り当てられたポートである。ポートＬＰ７が新たなポートであるため、その範囲検出用パケットの通過するポートＰ１６は、ポートＰ１５と異なるポートである。ポートＰ１６を介して送信された範囲検出用パケットは、サーバ５０の検出用ポート検出部９１で受け付けられ、ポートＰ１６のポート番号が検出される（ステップＳ６２６）。検出用ポート情報送信部９２は、その検出されたポート番号をペイロードに含むパケットである検出用ポート情報を第１の通信制御装置３のポートＰ１６を介して第１の情報処理装置３０に送信する（ステップＳ６２７）。サーバ５０から送信された検出用ポート情報は、検出用ポート情報受付部７１で受け付けられる。そして、範囲検出部７２は、ポートＰ１３と、ポートＰ１６のポート位置に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する（ステップＳ６２８）。この検出では、ポートＰ１３のポート位置から、ポートＰ１６のひとつ手前に割り当てられるはずのポート位置までがバブルパケット送信ポートを含む範囲として検出される。第１の通信制御装置３の特性にかかわらず、ポートＰ１５とポートＰ１６は異なるため、その範囲にポートＰ１６は含まれない。ポートＰ１６のひとつ手前に割り当てられるはずのポート位置は、ポートＰ１６のポート番号から、ポート幅検出部７５によって検出された第１の通信制御装置３のポート幅（この具体例では「１」）だけ引いたポート番号によって示される位置である。範囲送信部７３は、範囲検出部７２によって検出されたポートの範囲を示す範囲情報を、第２の情報処理装置４０に送信する指示と共に、サーバ５０に送信する（ステップＳ６２９）。また、ポート幅送信部７６も、第１の通信制御装置３のポート幅を示すポート幅情報を、第２の情報処理装置４０に送信する指示と共に、サーバ５０に送信する（ステップＳ６２９）。
【０２５９】
それらの情報は、サーバ５０において中継され、第２の通信制御装置４のポートＰ２を介して、第２の情報処理装置４０に送信される（ステップＳ６３０）。範囲情報は、範囲受付部２７で受け付けられる。ポート幅情報は、ポート幅受付部２８で受け付けられる。返信パケット送信部２９は、範囲受付部２７が受け付けた範囲情報の示す範囲のポートに、返信パケットを送信する（ステップＳ６３１）。
【０２６０】
この返信パケットは、第１の情報処理装置３０のポートＬＰ６から送信される。また、範囲情報が複数のポートを含む範囲である場合には、返信パケットは、ポート幅受付部２８で受け付けられた第１の通信制御装置３のポート幅情報の示すポート幅（この具体例では「１」）ごとに送信される。この具体例では、図３８で示されるように、返信パケットが第２の通信制御装置４のポートＰ９を介して送信される。第２の通信制御装置４は、ＰＳ  ＮＡＴではないため、第１の通信制御装置３に対して送信される返信パケットは、すべてポートＰ９を介して送信されることになる。このように、すべての返信パケットがポートＰ９から送信されるように、第２の情報処理装置４０は、あらかじめポート割り当てパケットを、ポートＬＰ２から第１の通信制御装置３に送信した。
【０２６１】
第２の情報処理装置４０から送信された返信パケットのうち、ポートＰ９に向けて送信されたバブルパケットの通過したバブルパケット送信ポートに送信された返信パケットは、第１の通信制御装置３でアドレス変換され、第１の情報処理装置３０の返信パケット受付部２４で受け付けられることになる（ステップＳ６３２）。第１の通信制御装置３の特性によっては、複数の返信パケットが第１の情報処理装置３０によって受け付けられることもある。
【０２６２】
このようにして、第１の情報処理装置３０と第２の情報処理装置４０との間の通信が確立することになる。
【０２６３】
ここで、本実施の形態による通信システムにおいて、ポート割り当てパケットを送信する理由について簡単に説明する。バブルパケットを送信する以前に、ポート割り当てパケットを第１の通信制御装置３に送信することによって、第２の通信制御装置４においてポートＰ９が割り当てられる。受信側の装置はＰＳ  ＮＡＴではないため（図２９参照）、第２の通信制御装置４は、ＰＳ  ＮＡＴではない（すなわち、ポート割り当てルールがＰｏｒｔ  Ｓｅｎｓｉｔｉｖｅタイプではない）。したがって、このポート割り当てパケットを送信したポートＬＰ２から返信パケットを第１の通信制御装置３に送信することにより、その返信パケットがポート割り当てパケットの送信によって割り当てられた第２の通信制御装置４のポートＰ９を介して送信されることになる。
【０２６４】
そのポートＰ９を含む範囲を検出し、その範囲にバブルパケットを送信することによって、少なくともひとつのバブルパケットをポートＰ９に対して送信することができる。その後、バブルパケット送信ポートを含むポートの範囲に、ポートＬＰ２から返信パケットを送信することによって、ポートＰ９に送信されたバブルパケットの通過した第１の通信制御装置３のポートに対して、ポートＰ９を介して返信パケットを送信することができる。その結果、たとえ第１の通信制御装置３がＰＲ  ＮＡＴ、ＰＳ  ＮＡＴを用いていた場合であっても、返信パケットが第１の情報処理装置３０で受け付けられることとなり、第１の情報処理装置３０と第２の情報処理装置４０との間の通信を確立することができる。このように、ポート割り当てパケットは、返信パケットの通過するポートをあらかじめ第２の通信制御装置４において割り当てておくため（換言すると、バブルパケット送信対象ポートの範囲を決定するため）に送信されるものである。
【０２６５】
［具体例２］
具体例２では、第２の通信制御装置４がＰＳ  ＮＡＴを用いており、第１の通信制御装置３がＰＳ  ＮＡＴ以外を用いている場合について説明する。なお、第２の情報処理装置４０が発呼側であるのは、具体例１と同様であるとする。
【０２６６】
第２の情報処理装置４０からポート幅検出用パケット、範囲検出用パケット、ポート割り当てパケットが送信され、第２の通信制御装置４のポート幅が検出され、バブルパケット送信対象ポートの位置が検出され、第２の通信制御装置４の特性が判断される動作は、具体例１と同様に行われるものとする。
【０２６７】
第２の情報処理装置４０からサーバ５０を介してポート幅情報、バブルパケット送信対象ポート情報、特性情報が送信されることにより（ステップＳ６１４、Ｓ６１５）、第１の情報処理装置３０は、第２の通信制御装置４がＰＳ  ＮＡＴであることを知ることになる。すると、第１の情報処理装置３０は、ステップＳ６０１からステップＳ６１４までの処理、およびステップＳ５０４の着呼側（第１の情報処理装置３０側）の第１の通信制御装置３の特性を判断する処理（具体例１において、図３４、図３５を用いて説明した処理）を実行する。これらの処理は、受信側と送信側とが入れ替わる以外、具体例１の説明と同様であり、その説明を省略する。この具体例では、第１の通信制御装置３がＰＡ  ＮＡＴを用いていないため、着呼側が受信側であると判断される（ステップＳ５０６）。そして、具体例１における受信側と送信側とが入れ替わった形態において、バブルパケットの送信や、バブルパケット送信ポートを含む範囲の検出、返信パケットの送信等が行われ、第１の情報処理装置３０と第２の情報処理装置４０との間の通信が確立することになる。これらの詳細な説明については、具体例１と同様であり、省略する。
【０２６８】
なお、上記各具体例では、ポート割り当てパケットを、１回目の範囲検出用パケットを送信したポートと同じポート（ポートＬＰ２）から送信する場合について説明したが、ポート割り当てパケットを、２回目の範囲検出用パケットを送信したポートと同じポート（ポートＬＰ３）から送信してもよい。この場合には、バブルパケット送信対象ポートは、ポートＰ８の次に割り当てられるポートから、ポートＰ１０までとなる。あるいは、ポート割り当てパケットと、２回の範囲検出用パケットとを、それぞれ別のポート（それぞれ、第２の情報処理装置４０において新たに割り当てられたポートであるとする）から送信してもよい。この場合には、バブルパケット送信対象ポートは、１回目の範囲検出パケットの通過した第２の通信制御装置４のポートの次に割り当てられるポートから、２回目の範囲検出パケットの通過した第２の通信制御装置４のポートのひとつ手前に割り当てられるポートまでとなる。なお、これらのバブルパケット送信対象ポートは最低限のポートとして説明したものであり、これらのバブルパケット送信対象ポートを含むより広いポートの範囲を、バブルパケット送信対象ポートとしてもよい。
【０２６９】
同様に、バブルパケットの送信も、ポートＰＬ６からではなく、ポートＰＬ７から行ってもよい。この場合にも、返信パケットを送信する範囲は、ポートＰ１３の次に割り当てられるポートから、ポートＰ１６までとなる。あるいは、バブルパケットと、２回の範囲検出用パケットとを、それぞれ別のポート（それぞれ、第１の情報処理装置３０において新たに割り当てられたポートであるとする）から送信してもよい。この場合には、バブルパケット送信ポートを含むポートの範囲は、１回目の範囲検出パケットの通過した第１の通信制御装置３のポートの次に割り当てられるポートから、２回目の範囲検出パケットの通過した第１の通信制御装置３のポートのひとつ手前に割り当てられるポートまでとなる。なお、これらのバブルパケット送信ポートを含むポートの範囲は最低限の範囲として説明したものであり、これらのポートの範囲を含むより広いポートの範囲を、バブルパケット送信ポートを含むポートの範囲としてもよい。
【０２７０】
また、上記各具体例では、サーバ５０と情報処理装置との間の通信回数を少なくするために、ひとつのパケットが複数の役割を有しており、効率よくパケットの通信を行う場合について説明したが、ひとつのパケットがひとつの役割を有するようにパケットの送信を行ってもよい。また、上記各具体例では、通信制御装置の特性判断と、情報処理装置間の通信の確立とを並行して行う場合について説明したが、それらの処理を別々に行ってもよい。そのような場合に、特性の判断において、特性判断用ポート検出部９５、特性判断用ポート情報送信部９６を用いてもよい。
【０２７１】
以上のように、本実施の形態による通信システムによれば、第１の通信制御装置３、および第２の通信制御装置４が両方とも、ＰＳ  ＮＡＴである場合を除いて、第１の情報処理装置３０と第２の情報処理装置４０との間の通信を確立することができる。さらに、その通信の確立を、通信制御装置がＰＳ  ＮＡＴを用いているかどうかを判断するだけで、細かい判断をすることなく、実行することができる。
【０２７２】
また、実施の形態１の方法であれば、送信側の装置がＰＲ  ＮＡＴである場合には、送受信の入れ替えを行う必要があったが（図１７参照）、本実施の形態の方法であれば、送信側、受信側の情報処理装置のいずれかがＰＲ  ＮＡＴであったとしても、送受信の入れ替えを行う必要がない。したがって、Ｃｏｎｅ系のＮＡＴが通信システムにおいて用いられている場合には、送受信の入れ替えを行うことなく、情報処理装置間での通信を確立することができる（図３９参照）。
【０２７３】
また、本実施の形態では、通信制御装置がＡＳ  ＮＡＴを用いているかどうかの判断を行わなくてよいため（ＰＳ  ＮＡＴを用いているのか、そうでないのかについての判断のみを行えばよい）、２以上のサーバを用いた通信制御装置の特定の判断を行わなくてよいことになり、通信システムを簡易な構成とすることができる。
【０２７４】
なお、本実施の形態では、ポート幅の検出、バブルパケット送信ポートを含むポートの範囲の検出、バブルパケット送信対象ポートの検出を情報処理装置において行う場合について説明したが、それらの処理のうち任意の１以上の処理を、実施の形態１と同様にサーバ５０において行ってもよい。
【０２７５】
また、本実施の形態では、バブルパケット送信対象ポートの検出を行うために、ポート割り当てパケットの送信の前後に、２個の範囲検出用パケットを送信する場合について説明したが、一方の範囲検出用パケットのみを送信し、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポートの上限あるいは下限のみを示すものであってもよい。この場合には、その範囲に含まれうるすべてのポートに対して、バブルパケットを送信してもよい。
【０２７６】
また、バブルパケットを、受信側の通信制御装置におけるすべてのポートに送信するようにしてもよい。そのようにすることで、ポート割り当てパケットの送信で用いられたポートに対してバブルパケットを送信することができる。ここで、すべてのポートといった場合においても、あらかじめ用途の決まっているウェルノーン（Ｗｅｌｌ−ｋｎｏｗｎ）ポートを除外し、Ｗｅｌｌ−ｋｎｏｗｎポート以外に返信パケットを送信してもよい。また、所定のポート幅ごとにバブルパケットを送信する場合には、その基点となるポートの位置が送信側の情報処理装置に対して知らされるようにしてもよい。
【０２７７】
また、本実施の形態においても、片方の通信制御装置が存在しない通信システムであっても、実施の形態３の場合と同様に、情報処理装置間の通信を確立することができることは、いうまでもない。
【０２７８】
また、上記各実施の形態において、通信システムは、バブルパケットを送信する情報処理装置と、バブルパケット送信ポートを含むポートの範囲を検出するための処理を行うサーバ（このサーバは、２以上のサーバであってもよい）とを備えた通信システムであって、そのバブルパケット送信ポートを含むポートの範囲を検出するためのものであってもよい。すなわち、本発明における通信システムは、以下のような通信システムであってもよい。この通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置は、通信制御装置を介して、通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、１以上のバブルパケットの送信で用いられる、通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットをサーバに送信する範囲検出用パケット送信部と、を備え、サーバは、範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出部を備えた、ものである。この通信システムにおいて、バブルパケットの送信先は、例えば、情報処理装置の通信相手である他の通信制御装置であってもよく、通信相手である他の情報処理装置の通信を制御する通信制御装置などであってもよい。また、この通信システムにおいて、サーバにおいて検出されたポートの範囲は、送信部によって情報処理装置に送信されてもよく、あるいは、その他の方法によって情報処理装置に渡されてもよい。その他の方法としては、例えば、ポートの範囲を示す情報を記録媒体に記録し、情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、サーバにおいてポートの範囲を示す情報が表示され、その表示を見ることによって、ユーザが情報処理装置にポートの範囲を示す情報を入力することであってもよい。また、実施の形態４のように、その通信システムにおいて１以上のバブルパケットを送信してもよい。
【０２７９】
また、他の通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置は、通信制御装置を介して、通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信部と、１以上のバブルパケットの送信で用いられる、通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットをサーバに送信する範囲検出用パケット送信部と、範囲検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、１以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、を備え、サーバは、範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した通信制御装置のポートの位置を検出する検出用ポート検出部と、検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を情報処理装置に送信する検出用ポート情報送信部と、を備えた、ものである。このように、範囲の検出をサーバではなく、情報処理装置において行ってもよい。この通信システムにおいて、バブルパケットの送信先は、例えば、情報処理装置の通信相手である他の通信制御装置であってもよく、通信相手である他の情報処理装置の通信を制御する通信制御装置などであってもよい。また、この通信システムにおいて、情報処理装置において検出されたポートの範囲は、送信部によって他の情報処理装置に送信されてもよく、あるいは、その他の方法によって他の情報処理装置に渡されてもよい。その他の方法としては、例えば、ポートの範囲を示す情報を記録媒体に記録し、他の情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、情報処理装置においてポートの範囲を示す情報が表示され、その表示を見ることによって、ユーザが他の情報処理装置にポートの範囲を示す情報を入力することであってもよい。また、実施の形態４のように、その通信システムにおいて１以上のバブルパケットを送信してもよい。
【０２８０】
また、上記各実施の形態において、第１のサーバ６，６０、サーバ５０が情報処理装置に相手方の通信制御装置のＩＰアドレスを通知する機能を有する場合について説明したが、この機能は、第１のサーバ６等とは別のサーバにおいて実現されてもよい。すなわち、一方の情報処理装置に他方の通信制御装置のアドレスを通知するサーバと、範囲検出パケット等に関する処理を行うサーバとは別のサーバであってもよい。また、一方の情報処理装置に他方の情報処理装置のアドレスを通知する処理や、発呼側の情報処理装置が相手方（着呼側）の情報処理装置を呼び出す処理等において、ＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いてもよい。
【０２８１】
なお、上記各実施の形態における説明では、ポート幅情報の示すポート幅ごとに返信パケットを送信するとしたが、ポート幅に関わりなく、ポート間隔「１」で返信パケットを送信してもよい。
【０２８２】
また、上記各実施の形態における説明では、範囲情報の示すポートの範囲に返信パケットを送信するとしたが、返信パケットを、送信側の通信制御装置におけるすべてのポートに送信するようにしてもよい。そのようにすることで、バブルパケットの送信で用いられたバブルパケット送信ポートに対して、返信パケットを送信することができる。また、範囲情報により、範囲の上限、あるいは下限のみが示される場合には、その範囲におけるすべてのポートに返信パケットを送信してもよい。ここで、すべてのポートといった場合においても、あらかじめ用途の決まっているウェルノーン（Ｗｅｌｌ−ｋｎｏｗｎ）ポートを除外し、Ｗｅｌｌ−ｋｎｏｗｎポート以外に返信パケットを送信してもよい。また、所定のポート幅ごとに返信パケットを送信する場合には、その基点となるポートの位置が受信側の情報処理装置に対して知らされるようにしてもよい。
【０２８３】
また、上記各実施の形態における説明では、通信制御装置で用いるＮＡＴの種類を第１のサーバ６等において、あるいは情報処理装置において判断する場合について説明したが、例えば、ユーザによる手入力等により情報処理装置から入力された通信制御装置の特性（ＮＡＴの種類）を第１のサーバ６等で保持するようにしてもよく、あるいは、通信制御装置が保持している記憶手段（例えば、不揮発性のメモリなど）に特性が記憶されており、第１のサーバ６等は、その記憶されている特性を読み出すことにより、通信制御装置の特性を判断するようにしてもよい。なお、この通信制御装置の特性は、通信制御装置以外で記憶されていてもよい。例えば、所定のデータベースサーバが、通信制御装置のＩＤや型番と対応付けて、特性を記憶していてもよい。
【０２８４】
また、上記各実施の形態では、第１のサーバ６等において、あるいは、情報処理装置において通信制御装置の特性を検出する場合について説明したが、その検出のタイミングは問わない。すなわち、いずれかの情報処理装置からの通信を確立する旨の要求があった後でもよく、あるいは、情報処理装置が第１のサーバ６等に接続された時点で、あらかじめ特性の判断を行っていてもよい。
【０２８５】
また、通信制御装置のＩＰアドレスや、通信制御装置のポート幅等についても、第１のサーバ６等から送信されず、ユーザによる手入力によって、情報処理装置に渡されてもよく、あるいは、通信制御装置等において記憶されているポート幅等を取得してもよい。
【０２８６】
また、第１のサーバ６等や受信側の情報処理装置から送信側の情報処理装置にバブルパケット送信対象ポートが知らされる場合について説明したが、バブルパケット送信対象ポートが送信側の情報処理装置においてあらかじめ設定されていてもよく、あるいは、ユーザによる手入力や所定のサーバにアクセスすること等により送信側の情報処理装置がバブルパケット送信対象ポートの位置を検知するようにしてもよい。
【０２８７】
また、実施の形態１〜３では、第１のサーバと第２のサーバとが直接、通信を行う場合について説明したが、例えば、第１のサーバと第２のサーバとは、所定の共有記録媒体を介して、サーバ間の情報（例えば、図１２におけるポートＰ８のポート番号など）の共有を行ってもよい。
【０２８８】
また、上記各実施の形態では、バブルパケット送信対象ポートを所定のポートに限定するために、バブルパケット送信対象ポート情報を送信する場合について主に説明したが、このバブルパケット送信対象ポート情報は、バブルパケット送信対象ポートを限定するためではなく、単に、バブルパケットの送信先のポートを指定するためにのみ送信されるものであってもよい。
【０２８９】
また、上記各実施の形態では、各情報処理装置が通信制御装置を１つだけ介して通信回線５に接続される場合について説明したが、複数の通信制御装置を介して通信回線５に接続されている場合（すなわち、多段接続のＮＡＴ）であっても、情報処理装置間の通信を確立することができ得る。 
【０２９０】
また、上記各実施の形態では、第１の通信制御装置３、および第２の通信制御装置４がＮＡＴの機能を有するものであると説明したが、第１の通信制御装置３、および第２の通信制御装置４は、ＮＡＴの機能に代えて、あるいはＮＡＴの機能と共にパケットフィルタリングのファイアウォール（Ｆｉｒｅｗａｌｌ）の機能を有するものであってもよい。ここで、パケットフィルタリングとは、例えば、前述の受信フィルタルールに基づいた受信パケットの選択を行うものである。第１の通信制御装置３が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側（第１の情報処理装置１等の側）からグローバル側（通信回線５）へのバブルパケットの送信によって第１の通信制御装置３に送信履歴を残すことで、バブルパケット送信ポートに送信された返信パケットを受け付けることができるようになる。また、第２の通信制御装置４が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側（第２の情報処理装置２等の側）からグローバル側へのバブルパケット送信対象ポートを介した返信パケットの送信によって、第１の情報処理装置１等と、第２の情報処理装置２等との間での通信が確立され得ることとなる。
【０２９１】
また、第１の情報処理装置１等、および第２の情報処理装置２等は、アプリケーションとしてのファイアウォールの機能を実装するものであってもよく、そうでなくてもよい。
【０２９２】
また、上記各実施の形態では、第１のサーバ６等をＩＰアドレスによって特定する場合について説明したが、第１のサーバ６等をドメイン名（例えば、ｓｅｒｖｅｒ．ｐａｎａ．ｎｅｔなど）によって特定してもよい。この場合には、そのドメイン名がＤＮＳサーバを用いて、ＩＰアドレスに変換されることにより、第１のサーバ６等を特定することができる。
【０２９３】
また、上記各実施の形態における通信で用いられるプロトコルは、ＩＰｖ４（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４）であってもよく、あるいは、ＩＰｖ６（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６）であってもよい。
【０２９４】
また、上記各実施の形態において、各処理（各機能）は、単一の装置（システム）によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【０２９５】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成してもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラム制御によるソフトウェアにより構成してもよい。なお、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、第２の情報処理装置と通信する第１の情報処理装置における処理を実行させるためのプログラムであって、第１の通信制御装置を介して、第１の通信制御装置に送信履歴を残すためのバブルパケットを第２の通信制御装置に送信するバブルパケット送信ステップと、バブルパケットの送信で用いられる、第１の通信制御装置のポートであるバブルパケット送信ポートに対して、第２の情報処理装置から第２の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付ステップと、を実行させるためのものである。
【０２９６】
また、このプログラムでは、コンピュータに、バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させてもよい。
【０２９７】
また、このプログラムでは、範囲検出用パケット送信ステップで、バブルパケット送信ステップにおけるバブルパケットの送信の前後において、それぞれ範囲検出用パケットを送信してもよい。
【０２９８】
また、このプログラムでは、範囲検出用パケット送信ステップで、バブルパケットの送信の前後で、それぞれ異なるアドレスに範囲検出用パケットを送信してもよい。
【０２９９】
また、このプログラムでは、コンピュータに、第２の通信制御装置におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、バブルパケット送信ステップでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【０３００】
また、このプログラムでは、バブルパケット送信対象ポートが、第２の情報処理装置が、第１の情報処理装置と第２の情報処理装置との間の通信を確立させるサーバとの間で情報の送受信を行うポートであってもよい。
【０３０１】
また、このプログラムでは、コンピュータに、第１の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、第１の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させてもよい。
【０３０２】
また、このプログラムでは、第１の通信制御装置は、第２の情報処理装置から、第２の通信制御装置を介して、第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、コンピュータに、第２の情報処理装置からのバブルパケットの送信で用いられた、第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信ステップをさらに実行させてもよい。
【０３０３】
また、このプログラムでは、コンピュータに、返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、返信パケット送信ステップでは、範囲情報の示す範囲のポートに返信パケットを送信してもよい。
【０３０４】
また、このプログラムでは、コンピュータに、第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、返信パケット送信ステップでは、ポート幅情報の示すポート幅ごとに返信パケットを送信してもよい。
【０３０５】
また、上記各実施の形態による情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置の通信を制御する第１の通信制御装置と、第２の情報処理装置の通信を制御する第２の通信制御装置とを介して、第２の情報処理装置と通信する第１の情報処理装置における処理を実行させるためのプログラムであって、第１の通信制御装置は、第２の情報処理装置から、第２の通信制御装置を介して、当該第２の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、第２の情報処理装置からのバブルパケットの送信に用いられた、第２の通信制御装置のポートを少なくとも含む１以上のポートに対して返信パケットを送信する返信パケット送信ステップを実行させるためのものである。
【０３０６】
また、このプログラムでは、コンピュータに、返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、返信パケット送信ステップでは、範囲情報の示す範囲のポートに返信パケットを送信してもよい。
【０３０７】
また、このプログラムは、コンピュータに、第２の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、返信パケット送信ステップでは、ポート幅情報の示すポート幅ごとに返信パケットを送信してもよい。
【０３０８】
また、上記各実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第１の情報処理装置、および第２の情報処理装置が、第１の情報処理装置の通信を制御する第１の通信制御装置、および第２の情報処理装置の通信を制御する第２の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、第１の情報処理装置、および第２の情報処理装置と、情報を送受信する情報送受信ステップと、第１の通信制御装置、および第２の通信制御装置の特性を判断する特性判断ステップと、特性判断ステップでの判断結果に応じて、第１の情報処理装置、および第２の情報処理装置のいずれかを送信側（送信側情報処理装置）に決定し、他方を受信側（受信側情報処理装置）に決定する送受信決定ステップと、を実行させるためのものである。
【０３０９】
また、このプログラムでは、コンピュータに、受信側情報処理装置の通信を制御する通信制御装置（受信側通信制御装置）における、送信側情報処理装置が、送信側情報処理装置の通信を制御する通信制御装置（送信側通信制御装置）に送信履歴を残すためのバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、送信側情報処理装置に送信するバブルパケット送信対象ポート送信ステップをさらに実行させてもよい。
【０３１０】
また、このプログラムでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートが、情報送受信部と受信側情報処理装置との通信で用いられる、受信側通信制御装置のポートであってもよい。
【０３１１】
また、このプログラムでは、コンピュータに、送信側情報処理装置から、受信側通信制御装置におけるバブルパケット送信対象ポートに対するバブルパケットの送信で用いられる、送信側通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付けることにより、バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、をさらに実行させてもよい。
【０３１２】
また、このプログラムでは、範囲検出ステップで、複数のアドレスに送信された範囲検出用パケットに基づいて、検出を行ってもよい。
【０３１３】
また、このプログラムでは、コンピュータに、送信側情報処理装置から送信側通信制御装置を介して送信された、送信側通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、送信側通信制御装置におけるポート幅を検出するポート幅検出ステップと、ポート幅検出ステップで検出した送信側通信制御装置のポート幅を示す情報であるポート幅情報を送信するポート幅送信ステップと、をさらに実行させてもよい。
【０３１４】
また、上記プログラムでは、コンピュータに、範囲検出用パケットが通過した第１の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、をさらに実行させてもよい。
【０３１５】
また、上記プログラムでは、コンピュータに、ポート幅検出用パケットが通過した第１の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、ポート幅検出用ポート情報受付ステップで受け付けたポート幅検出用ポート情報に基づいて、第１の通信制御装置におけるポート幅を検出するポート幅検出ステップと、ポート幅検出ステップで検出した第１の通信制御装置のポート幅を示す情報であるポート幅情報を、サーバを介して第２の情報処理装置に送信するポート幅送信ステップと、をさらに実行させてもよい。
【０３１６】
また、このプログラムでは、コンピュータに、第２の通信制御装置におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、バブルパケット送信ステップでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【０３１７】
また、上記プログラムでは、バブルパケット送信対象ポート情報が、１以上のバブルパケット送信対象ポートの位置を示す情報であり、バブルパケット送信ステップにおいて、バブルパケット送信対象ポート情報の示す１以上のバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【０３１８】
また、上記プログラムでは、コンピュータに、返信パケットを送信するためのポートを第１の通信制御装置において割り当てるためのポート割り当てパケットを送信するポート割り当てパケット送信ステップをさらに実行させ、返信パケット送信ステップにおいて、ポート割り当てパケットが送信された第１の情報処理装置のポートから返信パケットを送信してもよい。
【０３１９】
また、上記プログラムでは、コンピュータに、ポート割り当てパケットの送信で用いられる、第１の通信制御装置のポートであるポート割り当てパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させてもよい。
【０３２０】
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する情報処理装置における処理を実行させるためのプログラムであって、通信制御装置を介して、通信制御装置に送信履歴を残すための１以上のバブルパケットを送信するバブルパケット送信ステップと、１以上のバブルパケットの送信で用いられる、通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップと、を実行させるためのものである。
【０３２１】
また、このプログラムでは、コンピュータに、範囲検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、１以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、をさらに実行させてもよい。
【０３２２】
また、このプログラムでは、コンピュータに、範囲検出ステップで検出した１以上のバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップをさらに実行させてもよい。
【０３２３】
また、上記各実施の形態におけるサーバ装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて１以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出した１以上のバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、を実行させるためのものである。
【０３２４】
また、他のプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために送信される１以上のバブルパケットの送信で用いられる、通信制御装置のポートである１以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した通信制御装置のポートの位置を検出する検出用ポート検出ステップと、検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を情報処理装置に送信する検出用ポート情報送信ステップと、を実行させるものである。
【０３２５】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受け付ける受付ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理（ハードウェアでしか行われない処理）は含まれない。
【０３２６】
また、このプログラムは、サーバなどからダウンロードされることによって流通してもよく、所定の記録媒体（例えば、ＣＤ−ＲＯＭなどの光ディスクや磁気ディスク、半導体メモリなど）に記録されることにより流通してもよい。
【０３２７】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【産業上の利用可能性】
【０３２８】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【図面の簡単な説明】
【０３２９】
【図１】本発明の実施の形態１による通信システムの構成を示すブロック図
【図２】同実施の形態による第１の情報処理装置の構成を示すブロック図
【図３】同実施の形態による第２の情報処理装置の構成を示すブロック図
【図４】同実施の形態による第１および第２のサーバの構成を示すブロック図
【図５】同実施の形態による通信システムの動作を示すフローチャート
【図６】同実施の形態における送受信の決定に関する処理を示すフローチャート
【図７】同実施の形態における通信制御装置の特性の判断について説明するための図
【図８】同実施の形態における通信制御装置の特性の判断について説明するための図
【図９】同実施の形態における通信制御装置の特性の判断について説明するための図
【図１０】同実施の形態における通信の確立に関する処理を示すフローチャート
【図１１】同実施の形態におけるポート幅の検出について説明するための図
【図１２】同実施の形態における具体例について説明するための図
【図１３】同実施の形態における具体例について説明するための図
【図１４】同実施の形態における具体例について説明するための図
【図１５】同実施の形態における具体例について説明するための図
【図１６】同実施の形態における具体例について説明するための図
【図１７】同実施の形態における接続可能な通信制御装置の特性の組み合わせを示す図
【図１８】本発明の実施の形態２による第１の情報処理装置の構成を示すブロック図
【図１９】同実施の形態による第２の情報処理装置の構成を示すブロック図
【図２０】同実施の形態による第１および第２のサーバの構成を示すブロック図
【図２１】同実施の形態における通信の確立に関する処理を示すフローチャート
【図２２】同実施の形態における通信の確立に関する処理を示すフローチャート
【図２３】同実施の形態における通信の確立に関する処理を示すフローチャート
【図２４】本発明の実施の形態３による通信システムの構成を示すブロック図
【図２５】本発明の実施の形態４による通信システムの構成を示すブロック図
【図２６】同実施の形態による第１の情報処理装置の構成を示すブロック図
【図２７】同実施の形態による第２の情報処理装置の構成を示すブロック図
【図２８】同実施の形態によるサーバの構成を示すブロック図
【図２９】同実施の形態における送受信の決定に関する処理を示すフローチャート
【図３０】同実施の形態における通信制御装置の特性の判断について説明するための図
【図３１】同実施の形態における通信の確立に関する処理を示すフローチャート
【図３２】同実施の形態における通信の確立に関する処理を示すフローチャート
【図３３】同実施の形態における通信の確立に関する処理を示すフローチャート
【図３４】同実施の形態における具体例について説明するための図
【図３５】同実施の形態における具体例について説明するための図
【図３６】同実施の形態における具体例について説明するための図
【図３７】同実施の形態における具体例について説明するための図
【図３８】同実施の形態における具体例について説明するための図
【図３９】同実施の形態における接続可能な通信制御装置の特性の組み合わせを示す図
【図４０】通信システムの一例を示す図
【図４１】従来の接続可能なＮＡＴの組み合わせを示す図
【符号の説明】
【０３３０】
１    第１の情報処理装置
２    第２の情報処理装置
３    第１の通信制御装置
４    第２の通信制御装置
５    通信回線
６    第１のサーバ
７    第２のサーバ
１１，２１，６１，７１    通信部
１２，２２    バブルパケット送信部
１３，２３    範囲検出用パケット送信部
１４，２４    返信パケット送信部
１５，２５    ポート幅検出用パケット送信部 
１６，２６    バブルパケット送信対象ポート受付部
１７，２７    範囲受付部
１８，２８    ポート幅受付部
１９，２９    返信パケット送信部
６２    情報送信部
６３    特性判断部
６４    送受信決定部
６５    バブルパケット送信対象ポート送信部
６６    範囲検出部
６７    範囲送信部
６８    ポート幅検出部
６９    ポート幅送信部
【図１】
2006136031.tif 000003
【図２】
2006136031.tif 000004
【図３】
2006136031.tif 000005
【図４】
2006136031.tif 000006
【図５】
2006136031.tif 000007
【図６】
2006136031.tif 000008
【図７】
2006136031.tif 000009
【図８】
2006136031.tif 000010
【図９】
2006136031.tif 000011
【図１０】
2006136031.tif 000012
【図１１】
2006136031.tif 000013
【図１２】
2006136031.tif 000014
【図１３】
2006136031.tif 000015
【図１４】
2006136031.tif 000016
【図１５】
2006136031.tif 000017
【図１６】
2006136031.tif 000018
【図１７】
2006136031.tif 000019
【図１８】
2006136031.tif 000020
【図１９】
2006136031.tif 000021
【図２０】
2006136031.tif 000022
【図２１】
2006136031.tif 000023
【図２２】
2006136031.tif 000024
【図２３】
2006136031.tif 000025
【図２４】
2006136031.tif 000026
【図２５】
2006136031.tif 000027
【図２６】
2006136031.tif 000028
【図２７】
2006136031.tif 000029
【図２８】
2006136031.tif 000030
【図２９】
2006136031.tif 000031
【図３０】
2006136031.tif 000032
【図３１】
2006136031.tif 000033
【図３２】
2006136031.tif 000034
【図３３】
2006136031.tif 000035
【図３４】
2006136031.tif 000036
【図３５】
2006136031.tif 000037
【図３６】
2006136031.tif 000038
【図３７】
2006136031.tif 000039
【図３８】
2006136031.tif 000040
【図３９】
2006136031.tif 000041
【図４０】
2006136031.tif 000042
【図４１】
2006136031.tif 000043