JP3933182B2 - 通信システム、情報処理装置、サーバ、および通信方法 - Google Patents
通信システム、情報処理装置、サーバ、および通信方法 Download PDFInfo
- Publication number
- JP3933182B2 JP3933182B2 JP2005514980A JP2005514980A JP3933182B2 JP 3933182 B2 JP3933182 B2 JP 3933182B2 JP 2005514980 A JP2005514980 A JP 2005514980A JP 2005514980 A JP2005514980 A JP 2005514980A JP 3933182 B2 JP3933182 B2 JP 3933182B2
- Authority
- JP
- Japan
- Prior art keywords
- port
- packet
- communication control
- range
- information processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000004891 communication Methods 0.000 title claims description 1006
- 230000010365 information processing Effects 0.000 title claims description 722
- 238000000034 method Methods 0.000 title claims description 62
- 238000001514 detection method Methods 0.000 claims description 762
- 230000005540 biological transmission Effects 0.000 claims description 734
- 244000309464 bull Species 0.000 claims 7
- 230000003796 beauty Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 50
- 230000006870 function Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 7
- 101000884385 Homo sapiens Arylamine N-acetyltransferase 1 Proteins 0.000 description 2
- 101001034811 Homo sapiens Eukaryotic translation initiation factor 4 gamma 2 Proteins 0.000 description 2
- 101000639975 Homo sapiens Sodium-dependent noradrenaline transporter Proteins 0.000 description 2
- 102100033769 Sodium-coupled neutral amino acid transporter 3 Human genes 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 101000884399 Homo sapiens Arylamine N-acetyltransferase 2 Proteins 0.000 description 1
- 101000713305 Homo sapiens Sodium-coupled neutral amino acid transporter 1 Proteins 0.000 description 1
- 102100036916 Sodium-coupled neutral amino acid transporter 1 Human genes 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Description
【0001】
本発明は、複数の情報処理装置間における通信を確立させる通信システム等に関するものである。
【背景技術】
【0002】
まず、NAT(Network Address Translation)の分類について説明する。NATには、送信ポート割り当てルールと受信フィルタルールがあり、その組み合わせによりNATの分類がなされる。送信ポート割り当てルールには、パケットの宛先(IPアドレス、ポート)に依存せず、NATのローカル側(たとえば、LAN側)の情報処理装置のポートとIPアドレスが同じであれば、NATに割り当てられるグローバル側(たとえば、インターネットなどのWAN側)のポートが同一となるConeタイプと、パケットの宛先アドレスごとに新しいポートが割り当てられるAddress Sensitiveタイプと、パケットの宛先ポートごとに新しいポートが割り当てられるPort Sensitiveタイプがある。NATのローカル側からパケットが送信されたポートに対してグローバル側からのパケットの受信可能性を判断する受信フィルタルールには、そのポートからパケットを送信したアドレスからのみしかパケットを受信しないAddress Sensitiveフィルタと、そのポートからパケットを送信したポートからのみしかパケットを受信しないPort Sensitiveフィルタと、フィルタが存在しないNoフィルタがある。これらの送信ポート割り当てルールと、受信フィルタルールとを組み合わせることにより、NATを下記の5種類に分類することができる。
【0003】
Full Cone NAT:送信ポート割り当てルールがConeタイプであり、受信ポートフィルタルールがNoフィルタであるもの。
【0004】
Restricted Cone NAT:送信ポート割り当てルールがConeタイプであり、受信ポートフィルタルールがAddress Sensitiveフィルタであるもの。
【0005】
Port Restricted Cone NAT:送信ポート割り当てルールがConeタイプであり、受信ポートフィルタルールがPort Sensitiveフィルタであるもの。
【0006】
Address Sensitive Symmetric NAT:送信ポート割り当てルールがAddress Sensitiveタイプであり、受信ポートフィルタルールがAddress Sensitiveフィルタであるもの。
【0007】
Port Sensitive Symmetric NAT:送信ポート割り当てルールがPort Sensitiveタイプであり、受信ポートフィルタルールがPort Sensitiveフィルタであるもの。
【0008】
このようなNATを用いた通信において、図40で示されるようなPC1とPC2との間でのサーバを介さない通信を確立する場合について考えられてきている。
【0009】
上記の技術内容は、例えば、D.Yon、「Connection−Oriented Media Transport in SDP」、[Online]、2003年3月、[2003年9月29日検索]、インターネット<URL:http://www.ietf.org/internet−drafts/draft−ietf−mmusic−sdp−comedia−05.txt>(以下、「非特許文献1」という。)、またはY.Takeda、「Symmetric NAT Traversal using STUN」、[Online]、2003年6月、[2003年9月29日検索]、インターネット<URL:http://www.ietf.org/internet−drafts/draft−takeda−symmetric−nat−traversal−00.txt>(以下、「非特許文献2」という。)に記載されている。さらに、J.Rosenberg、J.Weinberger、C.Huitema、R.Mahy、「STUN − Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)」、[Online]、2003年3月、Network Working Group Request for Comments: 3489、[2003年9月29日検索]、インターネット<URL:http://www.ietf.org/rfc/rfc3489.txt>(以下、「非特許文献3」という。)に記載されている。
【0010】
しかしながら、この場合においても、通信を確立することのできないNATの組み合わせがあり得る。図40において、NAT1のローカル側に接続された情報処理装置であるPC1からPC2に対して通信を行う場合に、NAT1を送信側のNAT、NAT2を受信側のNATと呼ぶこととする。すると、PC1とPC2との間で通信を確立することができるNATの組み合わせは、図41で示されるようになる。なお、図41におけるNATの略称については、下記の実施の形態において説明するとおりである。
【0011】
ここで、図41における「*1」の接続は、従来から知られており、「*2」の接続は、上記非特許文献1に記載されており、「*3」の接続は、上記非特許文献2に記載されている。また、通信を確立することができるNATの組み合わせであっても、「*3」の接続においては、NATのポート幅が確実にわかり、かつ、受信側のNATの最新ポートの位置を確実に知ることができない限り、通信を確立することができず、不確実性が残るという問題もある。
【0012】
また、情報処理装置間の通信を確立する前提として、一方の情報処理装置から送信されたバブルパケット(NATに送信履歴を残すために送信されるパケット)の通過したNATのポートの範囲を検出したい。
【発明の開示】
【0013】
本発明の目的のひとつは、通信を制御する通信制御装置を介して通信を行う複数の情報処理装置間における通信の確立を、より確実に行うことができる通信システム等を提供することである。
【0014】
本発明の他の目的は、情報処理装置から送信されたバブルパケットの通過した通信制御装置におけるポートの範囲を検出することができる通信システム等を提供することである。
【0015】
上記目的を達成するため、本発明による通信システムは、第1の情報処理装置と、第2の情報処理装置と、前記第1の情報処理装置の通信を制御する第1の通信制御装置と、前記第2の情報処理装置の通信を制御する第2の通信制御装置と、前記第1の情報処理装置と前記第2の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、前記第1の情報処理装置は、前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、前記第2の情報処理装置は、前記バブルパケット送信ポートを少なくとも含む1以上のポートに対して前記返信パケットを送信する返信パケット送信部を備えたものである。
【0016】
このような構成により、バブルパケットの送信によって割り当てられた第1の通信制御装置のポートに対して、返信パケットを送信することによって、第1の情報処理装置と第2の情報処理装置間における通信を確立することができ得る。
【0017】
また、本発明による第1の情報処理装置は、第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置であって、前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に送信するバブルパケット送信部と、前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備えたものである。
【0018】
このような構成により、第2の情報処理装置との間で通信を確立させるために用いられるバブルパケット送信ポートを、バブルパケットを送信することによって第1の通信制御装置に割り当てることができ、そのバブルパケット送信ポートに送信された返信パケットを受け付けることによって、第1の情報処理装置と第2の情報処理装置との間の通信を確立することができ得る。
【0019】
また、本発明によるサーバは、第1の情報処理装置、および第2の情報処理装置が、前記第1の情報処理装置の通信を制御する第1の通信制御装置、および前記第2の情報処理装置の通信を制御する第2の通信制御装置を介して行う通信を確立させるサーバであって、前記第1の情報処理装置、および前記第2の情報処理装置と、情報を送受信する情報送受信部と、前記第1の通信制御装置、および前記第2の通信制御装置の特性を判断する特性判断部と、前記特性判断部による判断結果に応じて、前記第1の情報処理装置、および前記第2の情報処理装置のいずれかを送信側(送信側情報処理装置)に決定し、他方を受信側(受信側情報処理装置)に決定する送受信決定部と、を備えたものである。
【0020】
このような構成により、第1の通信制御装置、および第2の通信制御装置の特性に応じて、第1の情報処理装置と第2の情報処理装置との間での通信を確立できるように、第1の情報処理装置、および第2の情報処理装置の一方を送信側に決定し、他方を受信側に決定することができる。
【0021】
また、本発明によるサーバは、第1の情報処理装置、および第2の情報処理装置が、前記第1の情報処理装置の通信を制御する第1の通信制御装置、および前記第2の情報処理装置の通信を制御する第2の通信制御装置を介して行う通信を確立させるサーバであって、前記第1の情報処理装置から、前記第2の通信制御装置に対する前記第1の通信制御装置に送信履歴を残すためのバブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を検出する検出用ポート検出部と、前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第1の情報処理装置に送信する検出用ポート情報送信部と、を備えたものである。
【0022】
このような構成により、第1の情報処理装置においてバブルパケット送信ポートを含むポートの範囲を検出するために用いられる検出用ポート情報を第1の情報処理装置に送信することができる。
【0023】
また、本発明によるサーバは、第1の情報処理装置、および第2の情報処理装置が、前記第1の情報処理装置の通信を制御する第1の通信制御装置、および前記第2の情報処理装置の通信を制御する第2の通信制御装置を介して行う通信を確立させるサーバであって、前記第1の情報処理装置が前記第1の通信制御装置に送信履歴を残すためのバブルパケットを送信する対象の前記第2の通信制御装置におけるポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、前記第1の情報処理装置に送信するバブルパケット送信対象ポート送信部を備えたものである。
【0024】
このような構成により、バブルパケット送信対象ポートの位置を、バブルパケット送信対象ポート情報によって第1の情報処理装置に知らせることができる。
【0025】
また、本発明による通信システムは、情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、前記情報処理装置は、前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための1以上のバブルパケットを送信するバブルパケット送信部と、1以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、を備え、前記サーバは、前記範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて1以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部を備えた、ものである。
【0026】
このような構成により、情報処理装置から送信された範囲検出用パケットによって、サーバにおいてバブルパケット送信ポートを含むポートの範囲を検出することができる。その検出されたバブルパケット送信ポートを含むポートの範囲に他の装置からパケットを送信することによって、そのパケットが情報処理装置で受け付けられ得ることになる。
【0027】
また、本発明による通信システムは、情報処理装置と、前記情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、前記情報処理装置は、前記通信制御装置を介して、前記通信制御装置に送信履歴を残すための1以上のバブルパケットを送信するバブルパケット送信部と、1以上の前記バブルパケットの送信で用いられる、前記通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに送信する範囲検出用パケット送信部と、前記範囲検出用パケットが通過した前記通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、1以上の前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、を備え、前記サーバは、前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記通信制御装置のポートの位置を検出する検出用ポート検出部と、前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記情報処理装置に送信する検出用ポート情報送信部と、を備えた、ものである。
【0028】
このような構成により、情報処理装置から送信された範囲検出用パケットによって、情報処理装置においてバブルパケット送信ポートを含むポートの範囲を検出することができる。その検出されたバブルパケット送信ポートを含むポートの範囲に他の装置からパケットを送信することによって、そのパケットが情報処理装置で受け付けられ得ることになる。
【発明の効果】
【0029】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【発明を実施するための最良の形態】
【0030】
(実施の形態1)
本発明の実施の形態1による通信システムについて、図面を参照しながら説明する。
【0031】
図1は、本実施の形態による通信システムの構成を示すブロック図である。図1において、本実施の形態による通信システムは、第1の情報処理装置1と、第2の情報処理装置2と、第1の通信制御装置3と、第2の通信制御装置4と、第1のサーバ6と、第2のサーバ7とを備える。第1の通信制御装置3、第2の通信制御装置4、第1のサーバ6、および第2のサーバ7は、有線または無線の通信回線5を介して接続されている。この通信回線5は、例えば、インターネットである。
【0032】
なお、図1では、第1の通信制御装置3、および第2の通信制御装置4にそれぞれ、第1の情報処理装置1、および第2の情報処理装置2のみが接続されている場合について示しているが、これ以外の装置が、第1の通信制御装置3、および第2の通信制御装置4に接続されていてもよい。
【0033】
図2は、第1の情報処理装置1の構成を示すブロック図である。図2において、第1の情報処理装置1は、通信部11と、バブルパケット送信部12と、範囲検出用パケット送信部13と、返信パケット受付部14と、ポート幅検出用パケット送信部15と、バブルパケット送信対象ポート受付部16と、範囲受付部17と、ポート幅受付部18と、返信パケット送信部19とを備える。
【0034】
通信部11は、バブルパケット送信部12等の第1の情報処理装置1の内部の各構成要素と、第1の通信制御装置3との間における通信を行う。
【0035】
バブルパケット送信部12は、通信部11および第1の通信制御装置3を介して、バブルパケットを第2の通信制御装置4に送信する。ここで、バブルパケットとは、第1の情報処理装置1と第2の情報処理装置2との間における通信を確立するために、第1の通信制御装置3に送信履歴を残すためのパケットである。また、通信を確立するとは、第1の情報処理装置1と、第2の情報処理装置2との間において、サーバを介さないピアー・ツー・ピアー(Peer to Peer)の通信を開始することをいう。また、送信履歴を残すとは、第1の通信制御装置3において、後述する返信パケットを受け付けるためのポートを割り当てる(ポートを開く)ことをいう。なお、一般に、その送信履歴を残すことを目的としてバブルパケットが送信されるものであるが、所定のパケットが送信された結果、返信パケットを受け付けるための送信履歴が第1の通信制御装置3に残されてもよい(この場合、その送信履歴を残した所定のパケットが、バブルパケットということになる)。このバブルパケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。このバブルパケットは、例えば、UDP(User Datagram Protocol)のようなコネクションレス型のプロトコルによって送信される。
【0036】
範囲検出用パケット送信部13は、範囲検出用パケットを第1のサーバ6または第2のサーバ7に送信する。この範囲検出用パケットは、バブルパケット送信ポートを含むポートの範囲を検出するために用いられるものである。ここで、バブルパケット送信ポートとは、バブルパケットの送信で用いられる、第1の通信制御装置3のポートのことである。この範囲検出用パケットは、バブルパケットが送信される前に、および/またはバブルパケットが送信された後に、送信される。バブルパケットの送信の前後において範囲検出用パケットを送信する場合には、その前後において、それぞれ異なるアドレス(IPアドレス)に範囲検出用パケットを送信してもよい。この範囲検出用パケットは、例えば、UDPや、TCP(Transmission Control Protocol)によって送信される。この範囲検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【0037】
返信パケット受付部14は、第2の情報処理装置2から第2の通信制御装置4を介して送信された返信パケットを受け付ける。この返信パケットは、第1の通信制御装置3におけるバブルパケットの送信によって割り当てられたポート、すなわちバブルパケット送信ポートに対して、送信されたものである。この返信パケットを受け付けることにより、第1の情報処理装置1と第2の情報処理装置2との間での通信が確立することとなる。この返信パケットは、例えば、UDPによって送信される。この返信パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【0038】
ポート幅検出用パケット送信部15は、第1の通信制御装置3におけるポート幅を検出するためのポート幅検出用パケットを、第1の通信制御装置3を介して第1のサーバ6に送信する。ここで、ポート幅とは、連続して使用される(割り当てられる)ポートの幅(間隔)のことである。例えば、ポート幅が「1」の場合には、ポート番号「20000」のポートの次に使用されるポートは、ポート番号「20001」のポートである。一方、ポート幅が「2」の場合には、ポート番号「20000」のポートの次に使用されるポートは、ポート番号「20002」のポートとなる。このポート幅検出用パケットは、例えば、UDPや、TCPによって送信される。このポート幅検出用パケットには、何らかの情報が含まれていてもよく、何も情報が含まれていなくてもよい。
【0039】
バブルパケット送信対象ポート受付部16は、バブルパケット送信対象ポート情報を受け付ける。ここで、バブルパケット送信対象ポート情報とは、第2の通信制御装置4におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示す情報である。例えば、バブルパケット送信対象ポートのポート番号が、バブルパケット送信対象ポート情報に含まれることにより、バブルパケット送信対象ポートの位置を第1の情報処理装置1が知ることができる。このバブルパケット送信対象ポートとしては、例えば、第2の情報処理装置2が、第1のサーバ6との間で情報の送受信を行うポートがある。
【0040】
以上のバブルパケット送信部12からバブルパケット送信対象ポート受付部16までの各部は、第1の情報処理装置1が送信側の情報処理装置として動作する場合に用いられる。ここで、送信側の情報処理装置とは、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立する際における、バブルパケットを送信する側のことである。本実施の形態では、後述する送受信の入れ替えが行われない限り、バブルパケットを送信する側と、通信(コネクション)の要求を出す側(発呼側)とが同じであるため、送信側とは、通信の要求を出す側でもある。一方、その反対側の情報処理装置、すなわちバブルパケットに対する返信パケット送信する側の情報処理装置を、受信側の情報処理装置という。本実施の形態では、送受信の入れ替えが行われない限り、返信パケットを送信する側と、通信の要求を受け取る側(着呼側)とが同じであるため、受信側とは、通信の要求を受け取る側でもある。以下に説明する範囲受付部17から返信パケット送信部19までの各部は、第1の情報処理装置1が受信側の情報処理装置として動作する場合に用いられる。
【0041】
範囲受付部17は、範囲情報を受け付ける。ここで、範囲情報とは、返信パケット送信部19が返信パケットを第2の通信制御装置4に送信するポートの範囲を示す情報である。範囲情報では、第2の通信制御装置4におけるバブルパケット送信ポート(第2の情報処理装置2から第1の通信制御装置3へのバブルパケットの送信で用いられたポート)を含むポートの範囲が、例えば、ポート番号によって示される。なお、範囲情報では、ポートの上限のみ、もしくはポートの下限のみが示されることによりポートの範囲が示されてもよく、またはポートの上限と下限とによってポートの範囲が示されてもよい。ここで、ポートの上限とは、ポート番号の大きい方のポートを指すものとし、ポートの下限とは、ポート番号の小さい方のポートを指すものとする。
【0042】
ポート幅受付部18は、第2の通信制御装置4におけるポート幅を示す情報であるポート幅情報を受け付ける。
【0043】
返信パケット送信部19は、第2の通信制御装置4におけるバブルパケット送信ポートを少なくとも含む1以上のポートに対して返信パケットを送信する。このときに、範囲受付部17が受け付けた範囲情報の示す範囲のポートに返信パケットを送信することによって、第2の通信制御装置4におけるバブルパケット送信ポートを含むポートに対して返信パケットを送信することができる。また、2以上のポートに対して返信パケットを送信する場合には、ポート幅情報の示すポート幅ごとに返信パケットを送信する。その結果、ポート幅情報の示すポート幅が2以上の場合には、効率よく返信パケットを送信することができる。また、返信パケットは、例えば、第1の情報処理装置1が第1のサーバ6と通信を行うポートから送信してもよい。
【0044】
図3は、第2の情報処理装置2の構成を示すブロック図である。図3において、第2の情報処理装置2は、通信部21と、バブルパケット送信部22と、範囲検出用パケット送信部23と、返信パケット受付部24と、ポート幅検出用パケット送信部25と、バブルパケット送信対象ポート受付部26と、範囲受付部27と、ポート幅受付部28と、返信パケット送信部29とを備える。ここで、第2の情報処理装置2における通信部21から返信パケット送信部29までの各部は、第1の情報処理装置1、第1の通信制御装置3と、第2の情報処理装置2、第2の通信制御装置4が入れ替わる以外、第1の情報処理装置1における通信部11から返信パケット送信部19までの構成と同様であり、その説明を省略する。
【0045】
なお、第2の情報処理装置2におけるバブルパケット送信部22からバブルパケット送信対象ポート受付部26までは、第2の情報処理装置2が送信側として動作する場合に用いられる。一方、範囲受付部27から返信パケット送信部29までは、第2の情報処理装置2が受信側として動作する場合に用いられる。
【0046】
第1の通信制御装置3は、第1の情報処理装置1の通信を制御するものであり、いわゆるナット(NAT)を用いて、ローカル側(第1の情報処理装置1側)と、グローバル側(通信回線5側)との通信を制御する。このNATには、フルコーンナット(Full Cone NAT)や、レストリクティッドコーンナット(Restricted Cone NAT。以下、「R NAT」と略す)、ポートレストリクティッドコーンナット(Port Restricted Cone NAT。以下、「PR NAT」と略す)、アドレスセンシティブシンメトリックナット(Address Sensitive Symmetric NAT。以下、「AS NAT」と略す)、ポートセンシティブシンメトリックナット(Port Sensitive Symmetric NAT。以下、「PS NAT」と略す)がある。
【0047】
また、第2の通信制御装置4は、第2の情報処理装置2の通信を制御するものであり、第1の通信制御装置3と同様に、ナットを用いている。後述するように、第1の通信制御装置3と、第2の通信制御装置4の組み合わせとしては、PS NAT同士の組み合わせ以外で、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができ得る。なお、第1の通信制御装置3、および第2の通信制御装置4では、ポートの割り当ては、所定のポート幅ごとに、ポート番号が増大するよう、あるいは減少するように行われるものとする。以下の説明では、ポート番号が増大するように割り当てられる場合について説明する。
【0048】
図4は、第1のサーバ6、および第2のサーバ7の構成を示すブロック図である。図4において、第1のサーバ6は、通信部61と、情報送受信部62と、特性判断部63と、送受信決定部64と、バブルパケット送信対象ポート送信部65と、範囲検出部66と、範囲送信部67と、ポート幅検出部68と、ポート幅送信部69とを備える。また、第2のサーバ7は、通信部71を備える。
【0049】
通信部61,71は、情報送受信部62などの第1のサーバ6の各部と、第1の情報処理装置1や第2の情報処理装置2などとの通信を行う。また、通信部61と通信部71とはサーバ間での情報のやり取りを行う。なお、第2のサーバ7には、通信部71しか明示していないが、この通信部71以外にも、その他の構成要素を備えていてもよい。
【0050】
情報送受信部62は、第1の情報処理装置1、および第2の情報処理装置2と、情報を送受信する。この情報送受信部62による情報の送受信は、通信部61や、通信部71を介して行われる。
【0051】
特性判断部63は、第1の通信制御装置3、および第2の通信制御装置4の特性を判断する。ここで、第1の通信制御装置3、および第2の通信制御装置4の特性とは、第1の通信制御装置3等で用いられているNATの種類のことである。したがって、第1の通信制御装置3の特性は、例えば、Full Cone NATや、AS NATであるというように判断される。
【0052】
送受信決定部64は、特性判断部63による判断結果に応じて、第1の情報処理装置1、および第2の情報処理装置2のいずれかを送信側(送信側情報処理装置)に決定し、他方を受信側(受信側情報処理装置)に決定する。この決定により、第1の通信制御装置3、および第2の通信制御装置4のうち、送信側情報処理装置の通信を制御する通信制御装置が送信側通信制御装置となり、受信側情報処理装置の通信を制御する通信制御装置が受信側通信制御装置となる。
【0053】
バブルパケット送信対象ポート送信部65は、受信側通信制御装置におけるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を送信側情報処理装置に送信する。
【0054】
範囲検出部66は、送信側情報処理装置から送信された範囲検出用パケットを受け付け、その受け付けた範囲検出用パケットに基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。このポートの範囲の検出は、範囲検出用パケットのヘッダに含まれるポート番号を取得し、所定のメモリ等に記録することなどであってもよい。なお、範囲検出用パケットは、送信側情報処理装置から通信部61に対して送信されたものであってもよく、あるいは、第2のサーバ7の通信部71に送信されたものを、通信部61を介して受け取ったものであってもよい。後者の場合、第1のサーバ6と第2のサーバ7では、IPアドレスが異なっているものとする。
【0055】
範囲送信部67は、範囲検出部66が検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を受信側情報処理装置に対して送信する。
【0056】
ポート幅検出部68は、送信側情報処理装置から送信側通信制御装置を介して送信されたポート幅検出用パケットを受け付ける。ここで、ポート幅検出用パケットとは、送信側通信制御装置におけるポート幅を検出するために用いられるパケットである。ポート幅検出部68は、その受け付けたポート幅検出用パケットに基づいて、送信側通信制御装置におけるポート幅を検出する。
【0057】
ポート幅送信部69は、ポート幅検出部68が検出したポート幅を示す情報であるポート幅情報を受信側情報処理装置に送信する。
【0058】
次に、本実施の形態による通信システムの動作について説明する。特に、図5のフローチャートを用いて、第1の情報処理装置1と第2の情報処理装置2とが通信を開始するまでの通信方法について説明する。
【0059】
(ステップS101)第1のサーバ6における特性判断部63によって第1の通信制御装置3や第2の通信制御装置4の特性を判断することにより、第1の情報処理装置1、および第2の情報処理装置2のいずれが送信側となり、受信側となるのかを決定する。
【0060】
ここで、送信側でPS NATが用いられ、受信側でAS NATが用いられる場合、または、送信側でPR NATが用いられ、受信側でAS NAT、もしくはPS NATが用いられる場合には、情報処理装置間における通信を確立することができないために、この送信側と受信側の決定が行われる。なお、送信側と受信側とがPS NATを用いている場合には、本実施の形態による方法では、情報処理装置間の通信を確立することはできない。上記の場合に通信を確立することができない理由については、後述することとする。
【0061】
(ステップS102)送信側情報処理装置から受信側通信制御装置に対してバブルパケットを送信し、バブルパケット送信ポートを少なくとも含む1以上のポートに受信側情報処理装置から返信パケットを送信することによって通信が確立される。なお、ステップS101、S102の詳細な処理については、後述する。
【0062】
図6は、ステップS101における第1のサーバ6が送受信を決定する処理について示すフローチャートである。ここで、このフローチャートの説明では、第1の情報処理装置1から第2の情報処理装置2に対して通信を行おうとしているとする。したがって、第1の情報処理装置1、および第1の通信制御装置3が送信側の装置となり、第2の情報処理装置2、および第2の通信制御装置4が受信側の装置となる。なお、第2の情報処理装置2から第1の情報処理装置1に対して通信を行うとした場合には、第1の情報処理装置1、および第1の通信制御装置3と、第2の情報処理装置2、および第2の通信制御装置4が入れ替わる以外は、以下のフローチャートの説明と同様である。
【0063】
(ステップS201)第1のサーバ6の特性判断部63は、送信側の第1の通信制御装置3の特性を判断する。特性の判断方法については、後述する。
【0064】
(ステップS202)送受信決定部64は、第1の通信制御装置3がPS NATを用いているかどうか判断する。そして、PS NATを用いている場合には、ステップS205に進み、用いていない場合には、ステップS203に進む。
【0065】
(ステップS203)送受信決定部64は、第1の通信制御装置3が、PR NATを用いているかどうか判断する。そして、PR NATを用いている場合には、ステップS204に進み、用いていない場合には、送受信の決定処理は終了となる。すなわち、第1の情報処理装置1、および第1の通信制御装置3を送信側の装置とし、第2の情報処理装置2、および第2の通信制御装置4を受信側の装置として、ステップS102の通信の確立の処理を行う。
【0066】
(ステップS204)送受信決定部64は、送受信の入れ替えを行い、送受信の決定処理は終了となる。すなわち、第1の情報処理装置1、および第1の通信制御装置3を受信側の装置とし、第2の情報処理装置2、および第2の通信制御装置4を送信側の装置として、ステップS102の通信の確立の処理を行う。
【0067】
(ステップS205)特性判断部63は、受信側の第2の通信制御装置4の特性を判断する。
【0068】
(ステップS206)送受信決定部64は、第2の通信制御装置4がPS NATを用いているかどうか判断する。そして、PS NATを用いている場合には、送信側、受信側の双方がPS NATを用いていることとなり、通信を確立することができず、エラーとなる。一方、PS NATを用いていない場合には、ステップS207に進む。
【0069】
(ステップS207)送受信決定部64は、第2の通信制御装置4がAS NATを用いているかどうか判断する。そして、AS NATを用いている場合には、ステップS204に進み、そうでない場合には、送受信の決定処理は終了となる。すなわち、第1の情報処理装置1、および第1の通信制御装置3を送信側の装置とし、第2の情報処理装置2、および第2の通信制御装置4を受信側の装置として、ステップS102の通信の確立の処理を行う。
【0070】
なお、このフローチャートは、送受信の決定を行う処理の一例であって、これ以外の方法によって送受信の決定を行ってもよい。例えば、このフローチャートにおいて、送信側がPR NATを用いている場合には、判断処理の回数を少なくするために、受信側で用いられているNATの種類を判別することなく送受信の入れ替えを行っているが、判断処理の回数が多くてもよい場合には、送信側がPR NATを用いていると判断された後に、受信側がPS NATか、AS NATを用いているかどうか判断し、その結果、いずれかを用いていると判断された場合にのみ、送受信の入れ替えを行うようにしてもよい。
【0071】
次に、図7〜図9を用いて、第1の通信制御装置3の特性の判断方法について説明する。なお、第2の通信制御装置4の特性も、同様にして判断することができる。
【0072】
図7において、第1の情報処理装置1は、所定のパケットを第1のサーバ6のポートP101に送信する。ここで、そのパケットは、第1の通信制御装置3のポートP100を通過したとする。その送信されたパケットは、通信部61を介して特性判断部63が受け付ける。そして、特性判断部63は、そのパケットを受け付けることによって検知した第1の通信制御装置3のポートP100に対してパケットを送信する旨の指示を、通信部61を介して第2のサーバ7の通信部71に渡す。このようにして、通信部71からポートP100に対して、パケットが送信される。その通信部71からのポートP100に対するパケットを第1の情報処理装置1が受け付けることができる場合には、特性判断部63は、第1の通信制御装置3がFull Cone NATを用いていると判断する。一方、通信部71からのポートP100に対するパケットを第1の情報処理装置1が受け付けることができない場合には、図8で説明する方法により判断を行う。
【0073】
図8において、第1の情報処理装置1は、所定のパケットを第1のサーバ6のポートP101、ポートP103と、第2のサーバ7のポートP102に送信する。特性判断部63は、そのポートP101、P103に送信されたパケットを受け付け、また、ポートP102に送信されたパケットを、通信部71を介して受け付ける。そして、パケットの通過した第1の通信制御装置3におけるポートPa、Pbが同一であるかどうか判断する。そして、ポートPaとポートPbが異なっている場合には、第1の通信制御装置3がPS NATを用いていると判断する。
【0074】
ポートPaとポートPbとが等しい場合には、ポートPbとポートPcが等しいかどうか判断する。そして、ポートPbとポートPcが異なっている場合には、第1の通信制御装置3がAS NATを用いていると判断する。ポートPa、ポートPb、ポートPcが同じである場合には、図9で説明する方法により判断を行う。
【0075】
図9において、第1の情報処理装置1は、所定のパケットを第1のサーバ6のポートP101に送信する。特性判断部63は、そのパケットを受け付け、そのパケットの通過した第1の通信制御装置3におけるポートP100に対して、ポートP101とは異なるポートP103からパケットを送信する。第1の情報処理装置1がポートP103からのパケットを受信できる場合には、特性判断部63は、第1の通信制御装置3がR NATを用いていると判断し、第1の情報処理装置1がポートP103からのパケットを受信できない場合には、特性判断部63は、第1の通信制御装置3がPR NATを用いていると判断する。
【0076】
このように、図7〜図9を用いて説明した方法によって、特性判断部63は、第1の通信制御装置3の特性を判断することができる。なお、上記説明では、細かい説明を省略しているが、第1の情報処理装置1からのパケットの送信等は、特性判断部63の指示によってなされるものである。
【0077】
次に、図5のフローチャートにおけるステップS102の処理について、図10を用いて説明する。図10は、通信の確立に関する、送信側の情報処理装置、サーバ、受信側の情報処理装置の間における情報のやり取りや処理を説明するための図である。なお、図10におけるサーバとは、第1のサーバ6と、第2のサーバ7の両方を示すものである。また、説明の便宜のため、第1の情報処理装置1、および第1の通信制御装置3が送信側であるとし、第2の情報処理装置2、および第2の通信制御装置4が受信側であるとする。
【0078】
(ステップS301)第1のサーバ6における情報送受信部62は、第2の通信制御装置4のIPアドレスを示すアドレス情報を第1の情報処理装置1に送信する。その送信されたアドレス情報は、第1の情報処理装置1の通信部11で受け付けられ、バブルパケット送信部12に渡される。
【0079】
(ステップS302)バブルパケット送信対象ポート送信部65は、バブルパケット送信対象ポート情報を第1の情報処理装置1に送信する。その送信されたバブルパケット送信対象ポート情報は、通信部11を介してバブルパケット送信対象ポート受付部16で受け付けられ、バブルパケット送信部12に渡される。
【0080】
(ステップS303)第1の情報処理装置1におけるポート幅検出用パケット送信部15は、ポート幅検出用パケットを第1のサーバ6に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第1の通信制御装置3のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第1の情報処理装置1におけるポート番号がそれぞれ異なる複数のポートから送信される。図11は、ポート幅検出用パケットの送信について説明するための図である。ポート幅検出用パケット送信部15は、それぞれ異なるポートP205〜P208から順次、第1のサーバ6のポートP200にポート幅検出用パケットを送信する。すると、第1の通信制御装置3において、それらのパケットは、それぞれ異なるポートP201〜P204を通過することとなる。なお、図11では、ポートP205からP208の順番でパケットが送信されたとする。また、第1の情報処理装置1は、ポート幅検出用パケットを送信する以前に、ポートP205〜P208を第1のサーバ6との通信で用いていないものとする。
【0081】
(ステップS304)第1のサーバ6におけるポート幅検出部68は、第1の情報処理装置1から送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、ポート幅を検出する。このポート幅の検出方法について説明する。ポート幅検出部68は、ポート幅検出用パケットを受け付けることにより、各ポート幅検出用パケットの送信で用いられた第1の通信制御装置3のポートP201〜P204を検知することができる。そして、例えばポートP202と、ポートP201のポート間隔が12であり、ポートP203と、ポートP202のポート間隔が6であり、ポートP204と、ポートP203のポート間隔が18である場合には、一番小さいポート間隔である「6」をポート幅として検出してもよい。一方、それらのポート間隔の最大公約数をポート幅として検出してもよい。例えば、ポートP202と、ポートP201のポート間隔が12であり、ポートP203と、ポートP202のポート間隔が6であり、ポートP204と、ポートP203のポート間隔が9である場合には、それらの最大公約数である「3」をポート幅として検出してもよい。そのようにして検出されたポート幅は、ポート幅送信部69に渡される。また、ポート幅の検出方法は、これらに限定されるものではなく、その他の方法によってポート幅を検出してもよい。さらに、ポート幅を検出するときに送信されるポート幅検出用パケットの数も、4個に限定されるものではなく、ポート幅を検出できる範囲において任意に設定することができる。
【0082】
(ステップS305)範囲検出用パケット送信部13は、範囲検出用パケットを第1の通信制御装置3を介して、第1のサーバ6に送信する。この送信において、範囲検出用パケットが第1の通信制御装置3において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。バブルパケット送信ポートを含むポートの範囲を適切に限定することができるようにするためである。例えば、範囲検出用パケット送信部13は、第1の情報処理装置1と第1のサーバ6との間の通信でそれまでに用いていない第1の情報処理装置1のポートを用いて、範囲検出用パケットを送信する。このようにして送信された範囲検出用パケットは、第1のサーバ6の範囲検出部66において受け付けられる。この範囲検出部66は、受け付けた範囲検出用パケットのヘッダに含まれるポート番号を参照することにより、範囲検出用パケットの送信で用いられた第1の通信制御装置3のポートの位置を知ることができる。
【0083】
(ステップS306)バブルパケット送信部12は、ステップS301で送信されたアドレス情報によって示される第2の通信制御装置4のIPアドレスと、ステップS302で送信されたバブルパケット送信対象ポート情報とに基づいて、第2の通信制御装置4のバブルパケット送信対象ポートにバブルパケットを送信する。なお、ここでは、そのバブルパケットの送信によって通信が確立しないという前提の基に、以下のステップについて説明するが、仮に、第2の通信制御装置4がFull Cone NATを用いており、バブルパケット送信対象ポートが第2の情報処理装置2と第1のサーバ6との間で情報の送受信を行うために用いられるポート等のように、すでに第2の情報処理装置2によって使用されているポートである場合には、第2の情報処理装置2がバブルパケットを受け取ることとなり、通信が確立することになる。
【0084】
(ステップS307)範囲検出用パケット送信部13は、範囲検出用パケットを第1の通信制御装置3を介して、第2のサーバ7に送信する。その範囲検出用パケットは、通信部71、および通信部61を介して範囲検出部66で受け付けられる。なお、第1の通信制御装置3がAS NATを用いている可能性がある場には、このように第2のサーバ7に範囲検出用パケットを送信する必要があるが、第1の通信制御装置3がAS NATを用いている可能性がない場合には、バブルパケット送信後の範囲検出用パケットも、第1のサーバ6に送信してもよい。この場合には、ステップS305と同様に、例えば、第1のサーバ6との間の通信でそれまでに用いていない第1の情報処理装置1のポートを用いて、その範囲検出用パケットの送信を行うものとする。このようにして送信された範囲検出用パケットは、第1のサーバ6の範囲検出部66において受け付けられる。この範囲検出部66は、範囲検出用パケットの送信で用いられた第1の通信制御装置3のポートの位置を知ることができる。
【0085】
(ステップS308)範囲検出部66は、ステップS305、およびステップS307で送信された範囲検出用パケットに基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。具体的には、ステップS305における範囲検出用パケットの送信で用いられた第1の通信制御装置3のポートから、ステップS307における範囲検出用パケットの送信で用いられた第1の通信制御装置3のポートまでを、バブルパケット送信ポートを含むポートの範囲として検出する。
【0086】
(ステップS309)範囲送信部67は、範囲検出部66で検出された、バブルパケット送信ポートを含むポートの範囲を示す範囲情報を第2の情報処理装置2に送信する。その範囲情報は、第2の情報処理装置2における範囲受付部27で受け付けられ、返信パケット送信部29に渡される。
【0087】
(ステップS310)情報送受信部62は、第1の通信制御装置3のIPアドレスを示すアドレス情報を、第2の情報処理装置2に送信する。その送信されたアドレス情報は、通信部21で受け付けられ、返信パケット送信部29に渡される。
【0088】
(ステップS311)ポート幅送信部69は、ポート幅検出部68によって検出されたポート幅を示すポート幅情報を第2の情報処理装置2に送信する。そのポート幅情報は、第2の情報処理装置2におけるポート幅受付部28で受け付けられ、返信パケット送信部29に渡される。
【0089】
(ステップS312)返信パケット送信部29は、ステップS310で受け取ったアドレス情報の示すIPアドレスによって特定される第1の通信制御装置3に対して返信パケットを送信する。この返信パケットは、範囲受付部27から受け取った範囲情報の示す範囲のポートに対して、ポート幅情報の示すポート幅ごとに送信される。
【0090】
(ステップS313)第1の情報処理装置1の返信パケット受付部14は、第2の情報処理装置2から送信された返信パケットを受け付ける。この返信パケットを受け付けることにより、第1の情報処理装置1と、第2の情報処理装置2との間の通信が確立することとなる。そして、この後、第1の情報処理装置1と第2の情報処理装置2との間で、第1のサーバ6や第2のサーバ7を介さない情報の送受信(例えば、トンネル通信)が行われる。
【0091】
なお、図10において、ポート幅の検出(ステップS303、S304)は、ポート幅情報の送信(ステップS311)より以前に行われていればよく、例えば、ポート幅の検出(ステップS304)の直後に、ポート幅情報が受信側に送信されてもよい。また、送信側のアドレスの送信(ステップS310)も、例えば、受信側のアドレスの送信(ステップS301)と同時に送信してもよい。このように、図10においては、処理の順序に関して、ある程度の任意性がある。
【0092】
また、返信パケットの送信において、ポート幅情報の示すポート幅ごとに返信パケットを送信していたとしても、返信パケットが受け付けられない場合(すなわち、返信パケットを送信してから所定時間が経過しても、第2の情報処理装置2が返信パケット受け付けた旨を第1の情報処理装置1から受け取れない場合)には、検出されたポート幅が異なっている場合も考えられるため、第2の情報処理装置2は、ポート幅を1に設定して、再度、返信パケットの送信を行ってもよい。あるいは、ポート幅を最大公約数により算出している場合には、最大公約数から1までの公約数を順次ポート幅に設定し、再度、返信パケットの送信を行ってもよい。例えば、検出されたポート幅が「8」、「4」である場合には、最大公約数である「4」をポート幅として設定して返信パケットの送信を行い、それによって通信を確立できなかった場合には、[2]をポート幅として設定して返信パケットの送信を行ってもよい。それによっても通信を確立できなかった場合には、ポート幅は「1」に設定される。
【0093】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第1の通信制御装置3、第2の通信制御装置4、第1のサーバ6、第2のサーバ7のIPアドレス(第1および第2の通信制御装置3,4については、通信回線5側のアドレス)は、それぞれ以下のとおりであるとする。
【0094】
第1の通信制御装置3:202.132.10.6
第2の通信制御装置4:131.206.10.240
第1のサーバ6:155.32.10.10
第2のサーバ7:155.32.10.20
また、第1の情報処理装置1から第2の情報処理装置2への接続要求を行うものとする。すなわち、第1の情報処理装置1が送信側であるとして処理を開始するものとする。
【0095】
以下の具体例においては、具体例1において、第1の通信制御装置3がAS NATであり、第2の通信制御装置4がPS NATである場合について説明する。また、具体例2において、第1の通信制御装置3がPS NATであり、第2の通信制御装置4がAS NATである場合について説明する。また、具体例3において、第1の通信制御装置3がPS NATであり、第2の通信制御装置4がPR NATである場合について説明する。さらに、具体例4において、第1の通信制御装置3、および第2の通信制御装置4がFull Cone NATである場合について説明する。
【0096】
[具体例1]
図12、図13は、具体例1について説明するための図である。まず、第1の情報処理装置1から接続要求が行われる動作について説明する。図12において、第1の情報処理装置1は、第1のサーバ6のIPアドレス「155.32.10.10」、および第2のサーバ7のIPアドレス「155.32.10.20」をあらかじめ知っており、その第1のサーバ6に対して、第1の情報処理装置1の機器ID「1234567890123456」を送信する。ここで、この機器IDとしては、例えば、MACアドレスや、EUI64ベースのアドレスなどのGUID(Global Unique ID)を用いることができる。この機器IDの送信は、第1の通信制御装置3のポートP1を介して、第1のサーバ6のポートP3に対して行われる。この送信によって、第1のサーバ6の情報送受信部62は、第1の情報処理装置1の機器IDと、第1の通信制御装置3のIPアドレス「202.132.10.6」と、第1の通信制御装置3におけるポートP1のポート番号「10130」とを知ることができる。これらの情報は、情報送受信部62において保持される。
【0097】
次に、第1の情報処理装置1は、接続を要求する第2の情報処理装置2の機器ID「9876543210123456」を第1のサーバ6に送信することにより、第2の情報処理装置2への接続要求を行う。すると、第1のサーバ6の情報送受信部62が、その接続要求を受け取り、第2の情報処理装置2が第1のサーバ6にすでにアクセスしているかどうか判断する。この第2の情報処理装置2によるアクセスも、上述の第1の情報処理装置1と同様にして、第2の情報処理装置2の機器IDを送信することによってなされる。したがって、第2の情報処理装置2が第1のサーバ6にアクセスしていた場合には、第1のサーバ6は、第2の情報処理装置2の機器ID「9876543210123456」と、第2の通信制御装置4のIPアドレス「131.206.10.240」と、第2の情報処理装置2と第1のサーバ6の間での情報の送受信で用いられる第2の通信制御装置4のポートP2のポート番号「21000」とを知っており、それらが情報送受信部62において保持されていることとなる。第2の情報処理装置2が第1のサーバ6にすでにアクセスしている場合には、情報送受信部62が、特性判断部63に対して送受信の決定(ステップS101)を行う旨の指示を渡すことにより、送受信の決定の処理を開始させる。一方、第2の情報処理装置2が第1のサーバ6にアクセスしていない場合には、第1の情報処理装置1からの接続要求は、エラーとなり、第1の情報処理装置1と第2の情報処理装置2の間の通信は確立できない。
【0098】
送受信の決定において、特性判断部63が送信側の通信制御装置である第1の通信制御装置3の特性を判断する(ステップS201)。そして、第1の通信制御装置3が、AS NATを用いていると判断される。そして、その旨が送受信決定部64に渡される。送受信決定部64は、送信側の通信制御装置がPS NATを用いておらず、また、PR NATを用いていないと判断する(ステップS202、S203)。その結果、送受信の入れ替えは行われず、第1の情報処理装置1、第1の通信制御装置3が送信側であり、第2の情報処理装置2、第2の通信制御装置4が受信側である旨が、情報送受信部62、バブルパケット送信対象ポート送信部65、範囲送信部67、ポート幅送信部69に渡される。
【0099】
情報送受信部62が、第1の情報処理装置1が送信側である旨を受け取ると、受信側の第2の通信制御装置4のIPアドレス「131.206.10.240」を示すアドレス情報を第1の情報処理装置1にポートP1を介して送信する(ステップS301)。また、バブルパケット送信対象ポート送信部65は、第2の通信制御装置4のポートP2のポート番号「21000」を示す情報であるバブルパケット送信対象ポート情報を第1の情報処理装置1にポートP1を介して送信する(ステップS302)。
【0100】
すると、それらの情報は第1の情報処理装置1の通信部11で受信され、第2の通信制御装置4のIPアドレス「131.206.10.240」を示すアドレス情報はバブルパケット送信部12に渡され、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部16に渡される。そして、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部16で受け付けられ、バブルパケット送信部12に渡される。このようにして、バブルパケット送信部12は、バブルパケットの送信先である第2の通信制御装置4のIPアドレスを取得する。
【0101】
通信部11が、バブルパケット送信対象ポート情報等を受け付けた旨をポート幅検出用パケット送信部15に伝えると、ポート幅検出用パケット送信部15は、複数のポート幅検出用パケットを図11で示すようにして送信する(ステップS303)。なお、図12、図13では、ポート幅検出用パケットの送信については明示していない。そのポート幅検出用パケットは、ポート幅検出部68で受け付けられ、ポート幅が検出される。この場合、ポート幅は「1」と検出されたとする(ステップS304)。検出されたポート幅は、ポート幅送信部69に渡される。
【0102】
バブルパケット送信部12は、バブルパケットを送信する前に、範囲検出用パケット送信部13に対して範囲検出用パケットを送信する旨の指示を渡す。すると、範囲検出用パケット送信部13は、第1のサーバ6との通信で用いているポートとは異なるポートを用いて、第1のサーバ6に対して範囲検出用パケットを送信する(ステップS305)。なお、この範囲検出用パケットの送信先ポートであるポートP6は、第1のサーバ6から第1の情報処理装置1に対して示されたものであるとする。この範囲検出用パケットは、第1の通信制御装置3のポートP5を用いて送信されたとする。すると、その範囲検出用パケットを受け付けた範囲検出部66は、その第1の通信制御装置3のポートP5のポート番号「10135」を検出する。範囲検出部66は、そのポートP5のポート番号「10135」を保持しておく。
【0103】
範囲検出用パケット送信部13は、範囲検出用パケットの送信後に、範囲検出用パケットを送信した旨をバブルパケット送信部12に伝える。すると、バブルパケット送信部12は、通信部11から受け取ったアドレス情報の示すIPアドレス「131.206.10.240」の第2の通信制御装置4におけるポート番号が「21000」のバブルパケット送信対象ポートに対してバブルパケットを送信する(ステップS306)。ここで、そのバブルパケットは、第1の通信制御装置3のポートP7(ポート番号「10142」)を用いて送信されたとする。
【0104】
バブルパケット送信部12は、バブルパケットの送信後に、範囲検出用パケットを送信する旨の指示を範囲検出用パケット送信部13に渡す。すると、範囲検出用パケット送信部13は、IPアドレスが「155.32.10.20」である第2のサーバ7に対して、範囲検出用パケットを送信する(ステップS307)。なお、バブルパケットと2回目の範囲検出用パケットとは、1回目の範囲検出用パケットの送信された第1の情報処理装置1のポートから送信されるものとする。
【0105】
バブルパケットの送信後に送信された範囲検出用パケットは、第1の通信制御装置3のポートP8を用いて送信されたとする。すると、範囲検出部66は、第2のサーバ7の通信部71、および第1のサーバ6の通信部61を介してその範囲検出用パケットを受け付け、ポートP8のポート番号「10145」を検出する。そして、範囲検出部66は、保持していたポートP5のポート番号「10135」と、検出したポートP8のポート番号「10145」とを、それぞれ下限と上限とする範囲を検出する(ステップS308)。そして、その範囲を範囲送信部67に渡すと、範囲送信部67は、第2の通信制御装置4のポートP2を介して第2の情報処理装置2に、その範囲を示す範囲情報を送信する(ステップS309)。その範囲情報は、第2の情報処理装置2の範囲受付部27で受け付けられ、返信パケット送信部29に渡される。
【0106】
なお、ポートP5,P7,P8が連続したポート番号となっていないが、これは、第1の通信制御装置3のローカル側に第1の情報処理装置1以外の装置(図示せず)が接続されており、範囲検出用パケットの送信からバブルパケットの送信まで、またはバブルパケットの送信から範囲検出用パケットの送信までに、その装置に対して、第1の通信制御装置3のポートが割り当てられることによって生じるものである。
【0107】
範囲情報を送信した旨を、範囲送信部67が情報送受信部62とポート幅送信部69に伝えると、情報送受信部62は、第1の通信制御装置3のIPアドレス「202.132.10.6」を示すアドレス情報を第2の情報処理装置2に送信する(ステップS310)。また、ポート幅送信部69は、第2の情報処理装置2に、ポート幅検出部68によって検出されたポート幅を示すポート幅情報を送信する(ステップS311)。すると、第1の通信制御装置3のIPアドレスを示すアドレス情報は、通信部21から返信パケット送信部29に渡され、ポート幅情報は、ポート幅受付部28に渡されて、返信パケット送信部29に渡される。このようにして、返信パケット送信部29は、返信パケットの送信先である第1の通信制御装置3のIPアドレスを取得する。
【0108】
返信パケット送信部29は、通信部21から受け取ったアドレス情報の示すIPアドレス「202.132.10.6」の第1の通信制御装置3に対して返信パケットを送信する。この返信パケットは、図13で示されるように、範囲情報によって示されるポート番号「10135」から「10145」のポートに対して、ポート幅情報の示すポート幅「1」ごとに送信される。ここで、第2の通信制御装置4は、PS NATであるため、第2の情報処理装置2から送信される返信パケットは、ポートP10からポートP11までの11個のポートを用いて送信される(ステップS312)。第1の通信制御装置3では、バブルパケットの送信により、ポートP7に送信履歴が残っているため、返信パケットのうち、ポートP7(ポート番号「10142」)に送信された返信パケットは、第1の情報処理装置1に渡され、通信部11を介して返信パケット受付部14で受け付けられる(ステップS313)。このようにして、第1の情報処理装置1は、返信パケットの送信で用いられた第2の通信制御装置4のポートの位置を知ることができる。その後、第1の情報処理装置1が、そのポートに対して、第1の通信制御装置3におけるポートP7を介して情報を送信することにより、第1の情報処理装置1と第2の情報処理装置2との間の通信が確立され、サーバを介さないで直接、UDPによる通信を行うことができる。
【0109】
なお、この具体例1において、バブルパケット送信ポート(ポートP7)のポート番号が「10140」であり、第1の通信制御装置3のポート幅が「5」である場合には、返信パケットは、3つのポート、すなわちポートP5,P7,P8にのみ送信されることとなり、返信パケットの送信を効率よく行うことができる。
【0110】
また、この具体例1において、第2の情報処理装置2が第1のサーバ6と通信を行うポート(第2の情報処理装置2のポート)から返信パケットを送信する場合について説明したが、他のポートから返信パケットを送信してもよい。例えば、第1のサーバ6がバブルパケット送信対象ポートの位置を検出するために、第2の情報処理装置2から第1のサーバ6に送信されたパケットが送信された第2の情報処理装置2のポートから返信パケットを送信してもよい。なお、この場合には、そのパケットの通過した第2の通信制御装置4のポートがバブルパケット送信対象ポートとなる。
【0111】
また、この具体例1では、バブルパケットと2回目の範囲検出用パケットとが、1回目の範囲検出用パケットの送信された第1の情報処理装置1のポートから送信される場合について説明したが、バブルパケットと、2個の範囲検出用パケットとは、第1の情報処理装置1において新たに割り当てられたそれぞれ異なるポートから送信されてもよい。
【0112】
[具体例2]
具体例2では、第1の通信制御装置3がPS NATを用いており、第2の通信制御装置4がAS NATを用いている場合について説明する。
【0113】
第1の情報処理装置1から接続要求が行われる動作については、具体例1と同様であり、その説明を省略する。
【0114】
次に、送受信の決定を行う動作について説明する。特性判断部63が送信側の通信制御である第1の通信制御装置3の特性を判断する(ステップS201)。そして、第1の通信制御装置3がPS NATを用いていると判断され、その旨が送受信決定部64に渡される。送受信決定部64は、送信側の通信制御装置がPS NATを用いていると判断し(ステップS202)、特性判断部63に受信側の第2の通信制御装置4の特性を判断する旨の指示を渡す。すると、特性判断部63は、第2の通信制御装置4の特性を判断する(ステップS205)。そして、第2の通信制御装置4がAS NATを用いていると判断され、その旨が送受信決定部64に渡される。送受信決定部64は、受信側の通信制御装置がAS NATを用いていると判断し(ステップS206、S207)、送受信の入れ替えを行う(ステップS204)。したがって、第1の情報処理装置1、第1の通信制御装置3が受信側に設定され、第2の情報処理装置2、第2の通信制御装置4が送信側に設定される。そして、第1の情報処理装置1、第1の通信制御装置3が受信側に設定され、第2の情報処理装置2、第2の通信制御装置4が送信側に設定された旨が、情報送受信部62、バブルパケット送信対象ポート送信部65、範囲送信部67、ポート幅送信部69に渡される。この後の動作については、第1の情報処理装置1と第2の情報処理装置とが入れ替わり、第1の通信制御装置3と第2の通信制御装置4とが入れ替わった以外、具体例1と同様であり、その説明を省略する。
【0115】
なお、第1の情報処理装置1、第1の通信制御装置3が受信側であり、第2の情報処理装置2、第2の通信制御装置4が送信側である旨は、第1の情報処理装置1や第2の情報処理装置2に対して通知されてもよく、あるいは、第1の情報処理装置1や第2の情報処理装置2は、バブルパケット送信対象ポート情報を受け取った場合に送信側であることを検知し、一方、範囲情報を受け取った場合に受信側であることを検知してもよい。
【0116】
[具体例3]
具体例3では、第1の通信制御装置3がPS NATを用いており、第2の通信制御装置4がPR NATを用いている場合について説明する。
【0117】
第1の情報処理装置1から接続要求が行われる動作については、具体例1と同様であり、その説明を省略する。
【0118】
次に、送受信の決定を行う動作について説明する。特性判断部63が送信側の通信制御である第1の通信制御装置3の特性を判断する(ステップS201)。そして、第1の通信制御装置3がPS NATを用いていると判断され、その旨が送受信決定部64に渡される。送受信決定部64は、送信側の通信制御装置がPS NATを用いていると判断し(ステップS202)、特性判断部63に受信側の第2の通信制御装置4の特性を判断する旨の指示を渡す。すると、特性判断部63は、第2の通信制御装置4の特性を判断する(ステップS205)。そして、第2の通信制御装置4がPR NATを用いていると判断され、その旨が送受信決定部64に渡される。送受信決定部64は、受信側の通信制御装置がPS NATを用いておらず、またAS NATを用いていない判断する(ステップS206、S207)。その結果、送受信の入れ替えは行われず、第1の情報処理装置1、第1の通信制御装置3が送信側であり、第2の情報処理装置2、第2の通信制御装置4が受信側である旨が、情報送受信部62、バブルパケット送信対象ポート送信部65、範囲送信部67、ポート幅送信部69に渡される。
【0119】
この後、第1の情報処理装置1からバブルパケットや範囲検出用パケットが送信され、範囲情報や、第1の通信制御装置3のIPアドレス、ポート幅情報などが第2の情報処理装置2で受信される動作については、具体例1と同様であり、その説明を省略する。
【0120】
図14は、第2の情報処理装置2からの返信パケットの送信について説明するための図である。図14において、第2の情報処理装置2の返信パケット送信部29は、範囲受付部27が第1のサーバ6から受け付けた範囲情報に基づいて、IPアドレス「202.132.10.6」の第1の通信制御装置3におけるポート番号「10135」のポートP5から、ポート番号「10145」のポートP8までに対して返信パケットを送信する(ステップS312)。この返信パケットの送信は、ポート幅受付部28が受け付けたポート幅情報の示すポート幅「1」ごとになされる。なお、第2の通信制御装置4がPR NATを用いているため、返信パケットは、ポートP2を介して第1の通信制御装置3に送信される。すなわち、返信パケットは、第1のサーバ6と通信を行う第2の情報処理装置2のポートから送信される。これ以外の動作は、具体例1と同様であり、その説明を省略する。
【0121】
なお、この具体例3では、送信側の第1の通信制御装置3がAS NATではない。したがって、範囲検出用パケット送信部13が、その旨を特性判断部63等から受け取り、バブルパケット送信後の範囲検出用パケットを、第2のサーバ7ではなく、第1のサーバ6に送信するようにしてもよい。ここで、この具体例3の場合には、送信側の第1の通信制御装置3がPS NATを用いているため、範囲検出用パケットを第1のサーバ6に送信するときにも、そのパケットを送信する第1の情報処理装置1におけるポートを、第1のサーバ6とのポート1を介した通信で用いるポートと同一のポートとしてもよい。ただし、この場合にも、第1の通信制御装置3において新たなポートが割り当てられるようにするため、第1のサーバ6における異なるポートであるポートP3と、ポートP6とに対して範囲検出用パケットを送信する必要がある。
【0122】
[具体例4]
具体例4では、第1の通信制御装置3、および第2の通信制御装置4がFull Cone NATを用いている場合について説明する。なお、この場合に特徴的な部分のみ説明することとし、上記の具体例と同様な点については、説明を省略することとする。
【0123】
第1の情報処理装置1から接続要求が行われる動作については、具体例1と同様であり、その説明を省略する。
【0124】
次に、送受信の決定においては、両方の通信制御装置がFull Cone NATであるために、送受信の入れ替えは行われず、第1の情報処理装置1、第1の通信制御装置3が送信側であり、第2の情報処理装置2、第2の通信制御装置4が受信側に決定される。
【0125】
次に、バブルパケットの送信等について図15、図16を用いて簡単に説明する。図15において、第1の通信制御装置3がFull Cone NATであれば、範囲検出用パケットと、バブルパケットとは、同一のポートP5を用いて送信されることとなる。したがって、バブルパケット送信ポートは、範囲情報によって、1つに特定されることとなる。そのため、図16で示されるように、第2の情報処理装置2から送信される返信パケットは、ポートP2を介して、ポートP5に送信され、このようにして、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができる。
【0126】
この説明では、図10での処理の流れに沿うように説明したが、第2の通信制御装置4がFull Cone NATである場合には、送信されたバブルパケットを第2の情報処理装置2で受け取ることができるため、その時点において、通信が確立されることとなる。したがって、範囲検出用パケットの送信や、返信パケットの送信を行わなくてもよい。
【0127】
なお、上記各具体例においてバブルパケットの送信先をポートP2(第2の情報処理装置2が第1のサーバ6との通信で用いているポート)としているのは、送信側の第1の通信制御装置3がPR NAT,あるいはPS NATを用いており、かつ、受信側の第2の通信制御装置4がFull Cone NAT,R NAT,あるいはPR NATを用いている場合にも通信を確立することができるようにするためである。したがって、それ以外の場合(例えば、具体例4の場合)であれば、ポートP2以外にバブルパケット送信してもよい。特に、第1の通信制御装置3がFull Cone NATである場合には、バブルパケットは第2の通信制御装置4でない装置に送信されてもよい。
【0128】
また、送信側の第1の通信制御装置3がAS NAT以外を用いている場合には、第2のサーバ7に送信する範囲検出用パケットを、第1のサーバ6に送信してもよい。
【0129】
また、バブルパケットの送信の前後で送信する範囲検出用パケットを、それぞれ第1の情報処理装置1において新たに割り当てられたポートを用いて第1のサーバ6に送信してもよい。このようにすることで、範囲検出用パケットの送信ごとに第1の通信制御装置3において新たなポートが割り当てられることとなり、バブルパケット送信ポートを含むポートの範囲を検出することができる。したがって、送信側の第1の通信制御装置3がAS NATを用いている場合であっても、第2のサーバ7を用いることなく、バブルパケット送信パケットを含むポートの範囲を検出することができる。なお、バブルパケットと、範囲検出用パケットとを、第1の情報処理装置1において異なるポートから送信した場合には、その範囲検出用パケットの通過した第1の通信制御装置3のポートと、バブルパケットの通過した第1の通信制御装置3のポートは異なる。したがって、このような場合には、バブルパケットの送信されたポートとは異なるポート(第1の情報処理装置1におけるポート)から送信された範囲検出用パケットの通過したポート(第1の通信制御装置3におけるポート)よりも、1ポート幅だけバブルパケット送信ポートに近いポートの位置を、返信パケットを送信する範囲の端としてもよい。範囲検出用パケットを2回送信する場合には、一方の範囲検出用パケットを送信するポート(第1の情報処理装置1におけるポート)と、バブルパケットを送信するポートとを同一のポートとしてもよい。このような場合には、バブルパケット送信ポートを含むポートの範囲に、バブルパケットを送信するポートと同じポート(第1の情報処理装置1におけるポート)から送信した範囲検出用パケットの通過した第1の通信制御装置3のポートを含めるようにする。
【0130】
さらに、送信側の第1の通信制御装置3がFull Cone NAT,R NAT,PR NATのいずれかである場合には、バブルパケットを送信する前後のいずれかのみに、範囲検出用パケットを送信するだけでもよい。第1の通信制御装置3がR NAT、PR NATのいずれかを用いている場合にも、バブルパケットと範囲検出用パケットとを第1の情報処理装置1の同一のポートから送信しているのであれば、図15で示されるように、ポートP5、ポートP7、ポートP8は同一のポートとなり、その1つの範囲検出用パケットによってバブルパケット送信ポートを特定できるからである。また、送信側の第1の通信制御装置3が、例えば、第1のサーバ6との通信を行うポート(例えば、図15のポートP1)を介してバブルパケットを送信する場合には、範囲検出用パケットを送信しなくてもよい。
【0131】
図17は、通信制御装置で用いるNATの種類に関し、接続可能かどうかを示す表である。本実施の形態による通信システムでは、第1の通信制御装置3と、第2の通信制御装置4との両方がPS NATを用いている場合以外は、第1の情報処理装置1と第2の情報処理装置2との接続を行うことが可能である。上記各具体例における説明では、通信制御装置で用いているNATの種類に応じた例外的な取り扱いに関する記載も行ったが、通信制御装置で用いているNATの種類に関わらず、バブルパケット送信前の範囲検出用パケットと、バブルパケット送信後の範囲検出用パケットを異なるアドレスに送信し、バブルパケットの送信先のポートを、受信側の情報処理装置がサーバとの情報の送受信で用いているポートとし、範囲検出用パケットを用いて検出されたバブルパケット送信ポートを含むポートの範囲に返信パケットを送信することで、図17の「○」の組み合わせについては、情報処理装置間の接続を行うことができる。また、図17の「△」の組み合わせについても、送受信の入れ替えを行うことによって、情報処理装置間の接続を行うことができる。
【0132】
ここで、送信側でPS NATが用いられ、受信側でPS NAT、AS NATが用いられる場合、送信側でPR NATが用いられ、受信側でAS NAT、あるいはPS NATが用いられる場合に、情報処理装置間における通信をなぜ確立することができないのかについて、図12〜図14を用いて簡単に説明しておく。
【0133】
(1)送信側がPS NAT、受信側がPS NAT、AS NATの場合
この場合には、第1の通信制御装置3がPS NATを用いているため、バブルパケットをポートP2に送信したとすると、第1の情報処理装置1は、そのポートP2から送信された返信パケットのみを受け付けることができる。一方、第2の通信制御装置4がPS NAT、あるいはAS NATを用いており、第2の通信制御装置4は、ポートP2を第1のサーバ6との通信で用いているため、第2の情報処理装置2はポートP2を介して第1の通信制御装置3に返信パケットを送信することができない(すなわち、図14のように、返信パケットを送信することはできない)。したがって、この場合には、通信を確立することができないこととなる。ただし、送信側と受信側の両方がPS NATである場合以外は、送信側と受信側とを入れ替えることにより、通信を確立することができ得る。
【0134】
(2)送信側がPR NAT、受信側がPS NAT、AS NATの場合
この場合も、上記(1)と同様に、第1の通信制御装置3がPR NATを用いているため、バブルパケットをポートP2送信したとすると、第1の情報処理装置1は、そのポートP2からの返信パケットのみを受け付けることができる。一方、第2の通信制御装置が、AS NAT,あるいはPS NATを用いているため、ポートP2を介して返信パケットを返信することはできない。したがって、この場合には通信を確立できないこととなる。なお、この場合には、第1の通信制御装置3におけるポートP5,P7,P8が同一のポートとなることは前述のとおりである。この場合にも、送信側と受信側とを入れ替えることにより、通信を確立することができ得る。
【0135】
以上のように、本実施の形態による通信システムによれば、第1の通信制御装置3、および第2の通信制御装置4が両方とも、PS NATである場合を除いて、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができる。
【0136】
(実施の形態2)
本発明の実施の形態2による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、バブルパケット送信ポートを含むポートの範囲の検出や、ポート幅の検出等をサーバではなく、情報処理装置において行うことによって、サーバの処理負荷を軽減するものである。
【0137】
本実施の形態による通信システムの構成は、第1の情報処理装置1、第2の情報処理装置2、第1のサーバ6に代えて、それぞれ第1の情報処理装置10、第2の情報処理装置20、第1のサーバ60を備える以外、図1と同様であり、その説明を省略する。
【0138】
図18は、本実施の形態による第1の情報処理装置10の構成を示すブロック図である。図18において、第1の情報処理装置10は、通信部11と、バブルパケット送信部12と、範囲検出用パケット送信部13と、返信パケット受付部14と、ポート幅検出用パケット送信部15と、バブルパケット送信対象ポート受付部16と、範囲受付部17と、ポート幅受付部18と、返信パケット送信部19と、検出用ポート情報受付部71と、範囲検出部72と、範囲送信部73と、ポート幅検出用ポート情報受付部74と、ポート幅検出部75と、ポート幅送信部76とを備える。なお、検出用ポート情報受付部71、範囲検出部72、範囲送信部73、ポート幅検出用ポート情報受付部74、ポート幅検出部75、ポート幅送信部76以外の構成および動作は、ポート幅受付部18が第2の情報処理装置20から第1のサーバ60を介して送信されたポート幅情報を受け付ける以外、実施の形態1と同様であり、その説明を省略する。
【0139】
検出用ポート情報受付部71は、第1のサーバ60から送信された検出用ポート情報を、通信部11を介して受け付ける。ここで、検出用ポート情報とは、範囲検出用パケット送信部13によって送信された範囲検出用パケットが通過した第1の通信制御装置3のポートの位置を示す情報である。
【0140】
範囲検出部72は、検出用ポート情報受付部71が受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。このポートの範囲の検出は、検出用ポート情報のパケットのペイロードに含まれるポート番号を取得し、所定のメモリ等に記録することなどであってもよい。
【0141】
範囲送信部73は、範囲検出部72が検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を、第1のサーバ60を介して第2の情報処理装置20に送信する。
【0142】
ポート幅検出用ポート情報受付部74は、ポート幅検出用ポート情報を受け付ける。ここで、ポート幅検出用ポート情報とは、ポート幅検出用パケット送信部15によって送信されたポート幅検出用パケットが通過した第1の通信制御装置3のポートの位置を示す情報である。このポート幅検出用ポート情報は、第1のサーバ60から送信されたものである。
【0143】
ポート幅検出部75は、ポート幅検出用ポート情報受付部74が受け付けたポート幅検出用ポート情報に基づいて、第1の通信制御装置3におけるポート幅を検出する。このポート幅の検出は、実施の形態1におけるポート幅検出部68と同様に行われるものであり、その説明を省略する。
【0144】
ポート幅送信部76は、ポート幅検出部75が検出した第1の通信制御装置3のポート幅を示す情報であるポート幅情報を、第1のサーバ60を介して第2の情報処理装置20に送信する。
【0145】
なお、第1の情報処理装置10におけるバブルパケット送信部12からバブルパケット送信対象ポート受付部16まで、および検出用ポート情報受付部71からポート幅送信部76までは、第1の情報処理装置10が送信側として動作する場合に用いられる。一方、範囲受付部17から返信パケット送信部19までは、第1の情報処理装置10が受信側として動作する場合に用いられる。
【0146】
図19は、本実施の形態による第2の情報処理装置20の構成を示すブロック図である。図19において、第2の情報処理装置20は、通信部21と、バブルパケット送信部22と、範囲検出用パケット送信部23と、返信パケット受付部24と、ポート幅検出用パケット送信部25と、バブルパケット送信対象ポート受付部26と、範囲受付部27と、ポート幅受付部28と、返信パケット送信部29と、検出用ポート情報受付部81と、範囲検出部82と、範囲送信部83と、ポート幅検出用ポート情報受付部84と、ポート幅検出部85と、ポート幅送信部86とを備える。ここで、第2の情報処理装置20における通信部21からポート幅送信部86までの各部は、第1の情報処理装置10、第1の通信制御装置3と、第2の情報処理装置20、第2の通信制御装置4が入れ替わる以外、第1の情報処理装置10における通信部11からポート幅送信部76までの構成と同様であり、その説明を省略する。
【0147】
なお、第2の情報処理装置20におけるバブルパケット送信部22からバブルパケット送信対象ポート受付部26まで、および検出用ポート情報受付部81からポート幅送信部86までは、第2の情報処理装置20が送信側として動作する場合に用いられる。一方、範囲受付部27から返信パケット送信部29までは、第2の情報処理装置20が受信側として動作する場合に用いられる。
【0148】
図20は、本実施の形態による第1のサーバ60の構成を示すブロック図である。図20において、第1のサーバ60は、通信部61と、情報送受信部62と、特性判断部63と、送受信決定部64と、バブルパケット送信対象ポート送信部65と、検出用ポート検出部91と、検出用ポート情報送信部92と、ポート幅検出用ポート検出部93と、ポート幅検出用ポート情報送信部94とを備える。なお、検出用ポート検出部91、検出用ポート情報送信部92、ポート幅検出用ポート検出部93、ポート幅検出用ポート情報送信部94以外の構成および動作は、実施の形態1と同様であり、その説明を省略する。
【0149】
検出用ポート検出部91は、送信側情報処理装置から送信された範囲検出用パケットを受け付け、その範囲検出用パケットに基づいて範囲検出用パケットが通過した送信側通信制御装置のポートの位置を検出する。そのポート位置の検出は、範囲検出用パケットに含まれる(例えば、範囲検出用パケットのヘッダに含まれる)範囲検出用パケットが通過した送信側通信制御装置のポートの位置を取得することによって行われる。なお、範囲検出用パケットは、送信側情報処理装置から通信部61に対して送信されたものであってもよく、あるいは、第2のサーバ7の通信部71に送信されたものを、通信部61を介して受け取ったものであってもよい。後者の場合、第1のサーバ60と第2のサーバ7では、IPアドレスが異なっているものとする。
【0150】
検出用ポート情報送信部92は、検出用ポート検出部91が検出したポートの位置を示す検出用ポート情報を送信側情報処理装置に送信する。
【0151】
ポート幅検出用ポート検出部93は、送信側情報処理装置から送信側通信制御装置を介して送信されたポート幅検出用パケットを受け付け、そのポート幅検出用パケットに基づいて、そのポート幅検出用パケットが通過した送信側通信制御装置のポートの位置を検出する。
【0152】
ポート幅検出用ポート情報送信部94は、ポート幅検出用ポート検出部93が検出した、ポート幅検出用パケットが通過した送信側通信制御装置のポートの位置を示すポート幅検出用ポート情報を送信側情報処理装置に送信する。
【0153】
次に、本実施の形態による通信システムの動作について説明する。なお、本実施の形態による通信システムの動作は、バブルパケット送信ポートを含むポートの範囲の検出や、ポート幅の検出を第1の情報処理装置10、第2の情報処理装置20で行う以外、実施の形態1における図5で示される動作と同様であり、その説明を省略する。
【0154】
次に、図5のフローチャートにおけるステップS102の処理について、図21〜図23を用いて説明する。図21〜図23は、送信側、サーバ、受信側の間における情報のやり取りや処理を説明するための図である。なお、図21〜図23におけるサーバとは、第1のサーバ60と、第2のサーバ7の両方を示すものである。また、説明の便宜のため、第1の情報処理装置10、および第1の通信制御装置3が送信側であるとし、第2の情報処理装置20、および第2の通信制御装置4が受信側であるとする。また、ステップS301〜S303、S305〜S307、S310、S312、S313の処理は、実施の形態1における図10に関する説明と同様であり、その説明を省略する。
【0155】
(ステップS401)第1のサーバ60のポート幅検出用ポート検出部93は、第1の情報処理装置10から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部93は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0156】
(ステップS402)ポート幅検出用ポート情報送信部94は、ポート幅検出用ポート検出部93によって検出された、ポート幅検出用パケットの通過した第1の通信制御装置3のポートの位置を示す情報であるポート幅検出用ポート情報を第1の情報処理装置10に送信する。そのポート幅検出用ポート情報は、第1の情報処理装置10におけるポート幅検出用ポート情報受付部74で受け付けられる。
【0157】
(ステップS403)ポート幅検出部75は、ポート幅検出用ポート情報受付部74で受け付けられたポート幅検出用ポート情報に基づいて、第1の通信制御装置3のポート幅を検出する。なお、このポート幅の検出は、実施の形態1と同様に行われるものであり、その説明を省略する。
【0158】
(ステップS404)第1のサーバ60の検出用ポート検出部91は、第1の情報処理装置10から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0159】
(ステップS405)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を示す検出用ポート情報を第1の情報処理装置10に送信する。その検出用ポート情報は、第1の情報処理装置10における検出用ポート情報受付部71で受け付けられる。
【0160】
(ステップS406)第1のサーバ60の検出用ポート検出部91は、第1の情報処理装置10から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0161】
(ステップS407)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を示す検出用ポート情報を第1の情報処理装置10に送信する。その検出用ポート情報は、第1の情報処理装置10における検出用ポート情報受付部71で受け付けられる。
【0162】
(ステップS408)第1の情報処理装置10の範囲検出部72は、ステップS305、S307で送信した範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を、検出用ポート情報受付部71が受け付けた検出用ポート情報から取得し、その2つのポートの位置を両端とするポートの範囲を検出する。
【0163】
(ステップS409)第1の情報処理装置10の範囲送信部73は、ステップS408で検出されたポートの範囲を示す情報である範囲情報を、その範囲情報を第2の情報処理装置20に送信する旨の指示と共に第1のサーバ60に送信する。
【0164】
(ステップS410)第1のサーバ60の通信部61は、範囲情報を受信し、その範囲情報を第2の情報処理装置20に送信する。その範囲情報は、第2の情報処理装置20の範囲受付部27で受け付けられる。
【0165】
(ステップS411)ポート幅送信部76は、ステップS403で検出された第1の通信制御装置3のポート幅を示すポート幅情報を、そのポート幅情報を第2の情報処理装置20に送信する旨の指示と共に第1のサーバ60に送信する。
【0166】
(ステップS412)第1のサーバ60の通信部61は、ポート幅情報を受信し、そのポート幅情報を第2の情報処理装置20に送信する。その範囲情報は、第2の情報処理装置20のポート幅受付部28で受け付けられる。
【0167】
なお、図21〜図23において、図10と同様に処理の順序に関して、ある程度の任意性がある。例えば、送信側のアドレス送信(ステップS310)は、受信側のアドレス送信(ステップS301)と同じタイミングで行ってもよい。特に、図22において、範囲検出用パケットの送信と、バブルパケットの送信(ステップS305〜S307)は、検出用ポート情報の受信を待つことなく行ってもよい。ただし、検出用ポート情報の受信が行われてから、範囲検出(ステップS408)が行われることになる。
【0168】
また、本実施の形態における通信システムの動作の具体例については、送信側通信制御装置におけるポート幅の検出を、送信側情報処理装置で行い、バブルパケット送信ポートを含むポートの範囲の検出を送信側情報処理装置で行い、それらに付随して行われる処理(例えば、範囲情報の第1の情報処理装置10から第2の情報処理装置20までの送信など)を行う以外、実施の形態1における具体例と同様であり、その説明を省略する。
【0169】
以上から、本実施の形態による通信システムでは、実施の形態1と同様の効果に加え、第1の通信制御装置3、あるいは第2の通信制御装置4におけるポート幅の検出や、バブルパケット送信ポートを含むポートの範囲の検出等を第1の情報処理装置10、あるいは第2の情報処理装置20において行うことによって、第1のサーバ60における処理負担を軽減することができる。特に、待ち受けの必要な処理(例えば、1回目の範囲検出用パケットが送信された後に、2回目の範囲検出用パケットが送信されるのを待つ処理など)は処理負担が大きいため、そのような待ち受けの必要な処理をサーバで行わないことにより、第1のサーバ60における処理負担が大幅に軽減される。
【0170】
なお、本実施の形態では、通信制御装置のポート幅の検出、バブルパケット送信ポートを含むポートの範囲の検出を情報処理装置において行う場合について説明したが、そのどちらかの処理を実施の形態1と同様に、サーバにおいて行うようにしてもよい。
【0171】
また、本実施の形態では、通信制御装置の特性の判断はサーバにおいて行う場合について説明したが、通信制御装置の特性判断も、情報処理装置において行うようにしてもよい。この場合にも、情報処理装置から送信したパケットの通過した通信制御装置のポートの位置を示す情報を、サーバから情報処理装置に送信することによって、情報処理装置において通信制御装置の特性の判断を実施の形態1と同様に行うことができる。
【0172】
(実施の形態3)
本発明の実施の形態3による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、片方の情報処理装置が、通信制御装置を介さないで直接通信を行うものである。
【0173】
図24は、本実施の形態による通信システムの構成を示すブロック図である。図24において、本実施の形態による通信システムは、第1の情報処理装置1と、第2の情報処理装置2と、第1の通信制御装置3と、第1のサーバ6と、第2のサーバ7とを備える。なお、この図24で示される本実施の形態による通信システムは、第2の通信制御装置を備えない以外、実施の形態1による通信システムと同様のものである。また、第1の情報処理装置1、第2の情報処理装置2、第1のサーバ6、第2のサーバ7の構成および動作は、実施の形態1と同様であり、その説明を省略する。
【0174】
ここで、第2の情報処理装置2は、通信制御装置を介さないで通信を行うものであるため、第2の情報処理装置2は、あたかもFull Cone NATの通信制御装置を介して通信を行っているように判断される。したがって、本実施の形態における動作は、実施の形態1において第2の通信制御装置4がFull Cone NATである場合と同様の処理となり、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができる。
【0175】
以上のように、本実施の形態による通信システムによれば、第2の情報処理装置2が通信制御装置を介さないで通信を行う場合であっても、第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができる。
【0176】
なお、本実施の形態では、実施の形態1の通信システムにおいて、第2の通信制御装置を備えない構成について説明したが、実施の形態2の通信システムにおいて、第2の通信制御装置を備えない構成であってもよい。このような、第2の情報処理装置が通信制御装置を介さない場合であっても、第1の情報処理装置と第2の情報処理装置との間の通信を確立することができる。
【0177】
また、本実施の形態では、第2の情報処理装置2が通信制御装置を介さないで通信を行う場合について説明したが、第2の情報処理装置2は、通信制御装置を介して通信を行い、第1の情報処理装置1が通信制御装置を介さないで通信を行う場合であっても、同様に第1の情報処理装置1と第2の情報処理装置2との間の通信を確立することができる。
【0178】
また、上記各実施の形態における説明では、情報処理装置および通信制御装置の送信側、受信側を決めるときに、まず一方の情報処理装置等を送信側と暫定的に決定してから、通信制御装置の特性に応じて、それを入れ替える場合について説明したが、情報処理装置から、他の情報処理装置と通信を確立したい旨を第1のサーバ6等が受け取ったときに、第1の通信制御装置3および第2の通信制御装置4の特性を判断し、その判断結果に応じて、送信側の情報処理装置や、受信側の情報処理装置等の決定を行うようにしてもよい(この場合には、「送受信の入れ替え」という概念はないこととなる)。
【0179】
(実施の形態4)
本発明の実施の形態4による通信システムについて、図面を参照しながら説明する。本実施の形態による通信システムは、1以上のバブルパケットを送信するものである。
【0180】
図25は、本実施の形態による通信システムの構成を示すブロック図である。図25において、本実施の形態による通信システムは、第1の情報処理装置30と、第2の情報処理装置40と、第1の通信制御装置3と、第2の通信制御装置4と、サーバ50とを備える。第1の通信制御装置3、第2の通信制御装置4は、実施の形態1と同様であり、その説明を省略する。
【0181】
図26は、本実施の形態による第1の情報処理装置30の構成を示すブロック図である。図26において、第1の情報処理装置30は、通信部11と、バブルパケット送信部12と、範囲検出用パケット送信部13と、返信パケット受付部14と、ポート幅検出用パケット送信部15と、バブルパケット送信対象ポート受付部16と、範囲受付部17と、ポート幅受付部18と、返信パケット送信部19と、検出用ポート情報受付部71と、範囲検出部72と、範囲送信部73と、ポート幅検出用ポート情報受付部74と、ポート幅検出部75と、ポート幅送信部76と、ポート割り当てパケット送信部31と、バブルパケット送信対象ポート送信部32と、特性判断部33と、特性送信部34とを備える。なお、ポート割り当てパケット送信部31、バブルパケット送信対象ポート送信部32、特性判断部33、特性送信部34以外の構成および動作は、バブルパケット送信部12が1以上のバブルパケットを送信し、検出用ポート情報受付部71および範囲検出部72が、バブルパケット送信ポートに関する範囲の検出の処理と共に、後述するポート割り当てパケット送信部31が送信したポート割り当てパケットに関する範囲の検出の処理をも行う以外、実施の形態2と同様であり、その説明を省略する。
【0182】
ポート割り当てパケット送信部31は、返信パケットを送信するためのポートを第1の通信制御装置3において割り当てるためのポート割り当てパケットを送信する。このポート割り当てパケットは、第2の通信制御装置4に対して送信される。ポート割り当てパケットの送信される第2の通信制御装置4におけるポートは、任意である。例えば、第2の情報処理装置40がサーバ50との通信で用いられる第2の通信制御装置4のポートに対して、ポート割り当てパケットが送信される。なお、返信パケット送信部19は、返信パケットを送信する場合に、このポート割り当てパケット送信部31がポート割り当てパケットを送信した第1の情報処理装置30のポートから、返信パケットを送信するものとする。
【0183】
バブルパケット送信対象ポート送信部32は、範囲検出部72によって検出された、ポート割り当てパケット送信部31の通過した第1の通信制御装置3のポート(「ポート割り当てパケット送信ポート」とする)を含む1以上のポートの範囲を、バブルパケット送信対象ポート情報として、サーバ50を介して第2の情報処理装置40に送信する。
【0184】
特性判断部33は、第1の通信制御装置3の特性を判断する。具体的には、特性判断用パケットをサーバ50に送信し、その特性判断用パケットの通過した第1の通信制御装置3のポートの位置を示す情報である特性判断用パケット情報を受け付けることにより、第1の通信制御装置3の特性を判断する。
【0185】
特性送信部34は、特性判断部33が判断した第1の通信制御装置3の特性を示す情報である特性情報を、サーバ50を介して、第2の情報処理装置40に送信する。
【0186】
なお、本実施の形態では、第1の情報処理装置30におけるバブルパケット送信部12からバブルパケット送信対象ポート受付部16まで、および検出用ポート情報受付部71からポート幅送信部76までは、第1の情報処理装置30が送信側として動作する場合に用いられる。一方、範囲受付部17から返信パケット送信部19まで、範囲検出用パケット送信部13、ポート割り当てパケット送信部31、バブルパケット送信対象ポート送信部32、および検出用ポート情報受付部71からポート幅送信部76までは、第1の情報処理装置30が受信側として動作する場合に用いられる。すなわち、範囲検出用パケット送信部13、および検出用ポート情報受付部71からポート幅送信部76までは、第1の情報処理装置30が送信側として動作する場合にも、受信側として動作する場合にも用いられる。本実施の形態では、範囲検出用パケット送信部13、および検出用ポート情報受付部71からポート幅送信部76までの各構成を、第1の情報処理装置30が送信側として動作する場合、および受信側として動作する場合の両者において用いる形態について説明するが、それらの各構成のうち、1以上の構成について、第1の情報処理装置30が送信側として動作する場合、および受信側として動作する場合のそれぞれについて、別々に備えるようにしてもよい。
【0187】
図27は、本実施の形態による第2の情報処理装置40の構成を示すブロック図である。図27において、第2の情報処理装置40は、通信部21と、バブルパケット送信部22と、範囲検出用パケット送信部23と、返信パケット受付部24と、ポート幅検出用パケット送信部25と、バブルパケット送信対象ポート受付部26と、範囲受付部27と、ポート幅受付部28と、返信パケット送信部29と、検出用ポート情報受付部81と、範囲検出部82と、範囲送信部83と、ポート幅検出用ポート情報受付部84と、ポート幅検出部85と、ポート幅送信部86と、ポート割り当てパケット送信部41と、バブルパケット送信対象ポート送信部42と、特性判断部43と、特性送信部44とを備える。ここで、第2の情報処理装置40における通信部21からポート幅送信部86までの各部は、第1の情報処理装置30、第1の通信制御装置3と、第2の情報処理装置40、第2の通信制御装置4が入れ替わる以外、第1の情報処理装置30における通信部11からポート幅送信部76までの構成と同様であり、その説明を省略する。
【0188】
なお、本実施の形態では、第2の情報処理装置40におけるバブルパケット送信部22からバブルパケット送信対象ポート受付部26まで、および検出用ポート情報受付部81からポート幅送信部86までは、第2の情報処理装置40が送信側として動作する場合に用いられる。一方、範囲受付部27から返信パケット送信部29まで、範囲検出用パケット送信部23、ポート割り当てパケット送信部41、バブルパケット送信対象ポート送信部42、および検出用ポート情報受付部81からポート幅送信部86までは、第2の情報処理装置40が受信側として動作する場合に用いられる。すなわち、範囲検出用パケット送信部23、および検出用ポート情報受付部81からポート幅送信部86までは、第2の情報処理装置40が送信側として動作する場合にも、受信側として動作する場合にも用いられる。また、本実施の形態では、範囲検出用パケット送信部23、および検出用ポート情報受付部81からポート幅送信部86までの各構成を、第2の情報処理装置40が送信側として動作する場合、および受信側として動作する場合の両者において用いる形態について説明するが、それらの各構成のうち、1以上の構成について、第2の情報処理装置40が送信側として動作する場合、および受信側として動作する場合のそれぞれについて、別々に備えるようにしてもよい。
【0189】
図28は、本実施の形態によるサーバ50の構成を示すブロック図である。図28において、サーバ50は、通信部61と、情報送受信部62と、バブルパケット送信対象ポート送信部65と、検出用ポート検出部91と、検出用ポート情報送信部92と、ポート幅検出用ポート検出部93と、ポート幅検出用ポート情報送信部94と、特性判断用ポート検出部95と、特性判断用ポート情報送信部96と、バブルパケット送信対象ポート受付部97とを備える。なお、サーバ50における特性判断用ポート検出部95、特性判断用ポート情報送信部96、バブルパケット送信対象ポート受付部97以外の構成および動作は、検出用ポート検出部91、検出用ポート情報送信部92、ポート幅検出用ポート検出部93、ポート幅検出用ポート情報送信部94が送信側の情報処理装置、受信側の情報処理装置の両方について処理を行う以外、実施の形態2と同様であり、その説明を省略する。ここで、本実施の形態によるバブルパケット送信対象ポート送信部65は、バブルパケット送信対象ポート受付部97が受け付けたバブルパケット対象ポート情報を送信するものである。
【0190】
特性判断用ポート検出部95は、第1の情報処理装置30、あるいは第2の情報処理装置40から送信された特性判断用パケットを受け付け、その特性判断用パケットに基づいて、特性判断用パケットが通過した第1の通信制御装置3、あるいは第2の通信制御装置4のポートの位置を検出する。そのポート位置の検出は、特性判断用パケットに含まれる(例えば、特性判断用パケットのヘッダに含まれる)特性判断用パケットが通過した第1の通信制御装置3、あるいは第2の通信制御装置4のポートの位置を取得することによって行われる。
【0191】
特性判断用ポート情報送信部96は、特性判断用ポート検出部95が検出したポートの位置を示す特性判断用ポート情報を、特性判断用パケットを送信した情報処理装置に送信する。
【0192】
バブルパケット送信対象ポート受付部97は、バブルパケット送信対象ポートを示す情報であるバブルパケット送信対象ポート情報を受け付ける。このバブルパケット送信対象ポート情報によって示されるバブルパケット送信対象ポートは、1以上のポートである。
【0193】
次に、本実施の形態による通信システムの動作について説明する。なお、本実施の形態による通信システムの動作は、実施の形態1における図5で示される動作と同様であり、その説明を省略する。
【0194】
次に、図5のフローチャートにおけるステップS101の処理について、図29を用いて説明する。図29は、情報処理装置の送信側、および受信側を決定する処理について示すフローチャートである。ここで、このフローチャートの説明では、第2の情報処理装置40から第1の情報処理装置30に対して通信を行おうとしているとする。したがって、第1の情報処理装置30、および第1の通信制御装置3が着呼側の装置となり、第2の情報処理装置40、および第2の通信制御装置4が発呼側の装置となる。なお、第1の情報処理装置30から第2の情報処理装置40に対して通信を行うとした場合には、第1の情報処理装置30、および第1の通信制御装置3と、第2の情報処理装置40、および第2の通信制御装置4が入れ替わる以外は、以下のフローチャートの説明と同様である。なお、発呼側とは、相手方の装置との通信を要求する側のことであり、着呼側とは、発呼側の装置から通信の要求を受ける側のことである。
【0195】
(ステップS501)第2の情報処理装置40の特性判断部43は、発呼側の通信制御装置である第2の通信制御装置4の特性を判断する。特性の判断方法については、後述する。
【0196】
(ステップS502)特性判断部43は、第2の通信制御装置4がPS NATを用いているかどうか判断する。そして、PS NATを用いている場合には、特性送信部44が、第2の通信制御装置4がPS NATを用いている旨の特性情報を、サーバ50を介して第1の情報処理装置30に送信し、ステップS504に進み、そうでない場合には、ステップS503に進む。
【0197】
(ステップS503)特性判断部43は、発呼側の装置、すなわち第2の情報処理装置40を、受信側の装置、すなわちバブルパケットを受信する側の装置に決定する。そして、送受信の決定の処理は終了となる。
【0198】
(ステップS504)第1の情報処理装置30の特性判断部33は、着呼側の通信制御装置である第1の通信制御装置3の特性を判断する。特性の判断方法については、後述する。
【0199】
(ステップS505)特性判断部33は、第1の通信制御装置3がPS NATを用いているかどうか判断する。そして、PS NATを用いている場合には、送信側、受信側の双方がPS NATを用いていることとなり、エラーとなる。一方、PS NATを用いていない場合には、ステップS506に進む。
【0200】
(ステップS506)特性判断部33は、着呼側の装置、すなわち第1の情報処理装置30を、受信側の装置、すなわちバブルパケットを受信する側の装置に決定する。そして、送受信の決定の処理は終了となる。
【0201】
次に、図30を用いて、第1の通信制御装置3の特性の判断方法について説明する。なお、第2の通信制御装置4の特性も、同様にして判断することができる。
【0202】
図30において、第1の情報処理装置30の特性判断部33は、2つの特性判断用パケットを、同一のポートP100から、それぞれサーバ50のポートP300と、ポートP301とに送信する。ここで、ポートP300と、ポートP301とは異なるポートである。サーバ50の特性判断用ポート検出部95は、ポートP300,P301に送信された各特性判断用パケットの通過した第1の通信制御装置3のポートの位置(P200,P201)を検出する。そして、そのポートの位置を示す情報である特性判断用ポート情報が特性判断用ポート情報送信部96から第1の情報処理装置30に送信される。特性判断部33は、その特性判断用ポート情報を受け付け、ポートP200と、ポートP201とが等しいかどうかによって第1の通信制御装置3の特性を判断する。具体的には、ポートP200がポートP201と等しい場合には、第1の通信制御装置3がPS NATを用いていないと判断する。一方、ポートP200とポートP201が異なる場合には、第1の通信制御装置3がPS NATを用いていると判断する。
【0203】
次に、図5のフローチャートにおけるステップS102の処理について、図31〜図33を用いて説明する。図31〜図33は、通信の確立に関する、送信側の情報処理装置、サーバ、受信側の情報処理装置の間における情報のやり取りや処理を説明するための図である。また、説明の便宜のため、第1の情報処理装置30、および第1の通信制御装置3が送信側であるとし、第2の情報処理装置40、および第2の通信制御装置4が受信側であるとする。
【0204】
(ステップS601)サーバ50における情報送受信部62は、第1の通信制御装置3のIPアドレスを示すアドレス情報を第2の情報処理装置40に送信する。その送信されたアドレス情報は、第2の情報処理装置40の通信部21で受け付けられ、ポート割り当てパケット送信部41に渡される。
【0205】
(ステップS602)第2の情報処理装置40におけるポート幅検出用パケット送信部25は、ポート幅検出用パケットをサーバ50に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第2の通信制御装置4のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第2の情報処理装置40におけるポート番号がそれぞれ異なる複数のポートから送信される。
【0206】
(ステップS603)サーバ50のポート幅検出用ポート検出部93は、第2の情報処理装置40から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部93は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第2の通信制御装置4のポートの位置を検出する。
【0207】
(ステップS604)ポート幅検出用ポート情報送信部94は、ポート幅検出用ポート検出部93によって検出された、ポート幅検出用パケットの通過した第2の通信制御装置4のポートの位置を示す情報であるポート幅検出用ポート情報を第2の情報処理装置40に送信する。そのポート幅検出用ポート情報は、第2の情報処理装置40におけるポート幅検出用ポート情報受付部84で受け付けられる。
【0208】
(ステップS605)ポート幅検出部85は、ポート幅検出用ポート情報受付部84で受け付けられたポート幅検出用ポート情報に基づいて、第2の通信制御装置4のポート幅を検出する。なお、このポート幅の検出は、実施の形態1と同様に行われるものであり、その説明を省略する。
【0209】
(ステップS606)範囲検出用パケット送信部23は、範囲検出用パケットを第2の通信制御装置4を介して、サーバ50に送信する。この送信において、範囲検出用パケットが第2の通信制御装置4において最新に割り当てられるポートを通過するようにパケットの送信を行うものとする。バブルパケット送信ポートを含むポートの範囲を適切に限定することができるようにするためである。例えば、範囲検出用パケット送信部23は、通信でそれまでに用いていない第2の情報処理装置40のポートを用いて、範囲検出用パケットを送信する。
【0210】
(ステップS607)サーバ50の検出用ポート検出部91は、第2の情報処理装置40から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第2の通信制御装置4のポートの位置を検出する。
【0211】
(ステップS608)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第2の通信制御装置4のポートの位置を示す検出用ポート情報を第2の情報処理装置40に送信する。その検出用ポート情報は、第2の情報処理装置40における検出用ポート情報受付部81で受け付けられる。
【0212】
(ステップS609)ポート割り当てパケット送信部41は、ポート割り当てパケットを第1の通信制御装置3に送信する。第1の通信制御装置3のアドレスは、ステップS601で送信されたものを用いる。
【0213】
(ステップS610)範囲検出用パケット送信部23は、範囲検出用パケットを第2の通信制御装置4を介して、サーバ50に送信する。
【0214】
(ステップS611)サーバ50の検出用ポート検出部91は、第2の情報処理装置40から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第2の通信制御装置4のポートの位置を検出する。
【0215】
(ステップS612)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第2の通信制御装置4のポートの位置を示す検出用ポート情報を第2の情報処理装置40に送信する。その検出用ポート情報は、第2の情報処理装置40における検出用ポート情報受付部81で受け付けられる。
【0216】
(ステップS613)第2の情報処理装置40の範囲検出部82は、ステップS606、S610で送信した範囲検出用パケットの通過した第2の通信制御装置4のポートの位置を、検出用ポート情報受付部81が受け付けた検出用ポート情報から取得し、その2つのポートの位置に基づいて、ポート割り当てパケット送信ポートを含むポートの範囲(バブルパケット送信対象ポート)を検出する。なお、このバブルパケット送信対象ポートは、1つのポートである場合もあり、あるいは、2以上のポートを含む場合もある。
【0217】
(ステップS614)第2の情報処理装置40のポート幅送信部86は、ステップS605で検出された第2の通信制御装置4のポート幅を示す情報であるポート幅情報を、そのポート幅情報を第1の情報処理装置30に送信する旨の指示と共にサーバ50に送信する。また、第2の情報処理装置40のバブルパケット送信対象ポート送信部42は、ステップS613で検出されたバブルパケット送信対象ポートを示すバブルパケット送信対象ポート情報を、そのバブルパケット送信対象ポート情報を第1の情報処理装置30に送信する旨の指示と共にサーバ50に送信する。これらの情報は、同一のパケットで送信されてもよく、あるいは、別々のパケットで送信されてもよい。
【0218】
(ステップS615)サーバ50の通信部61は、ポート幅情報とバブルパケット送信対象ポート情報を受信し、それらの情報を第1の情報処理装置30に送信する。バブルパケット送信対象ポートは、バブルパケット送信対象ポート受付部97において受け付けられ、バブルパケット送信対象ポート送信部65によって第1の情報処理装置30に送信される。そのポート幅情報は、第1の情報処理装置30のポート幅受付部18で受け付けられ、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部16で受け付けられる。
【0219】
(ステップS616)サーバ50における情報送受信部62は、第2の通信制御装置4のIPアドレスを示すアドレス情報を第1の情報処理装置30に送信する。その送信されたアドレス情報は、第1の情報処理装置30の通信部11で受け付けられ、バブルパケット送信部12に渡される。
【0220】
(ステップS617)第1の情報処理装置30におけるポート幅検出用パケット送信部15は、ポート幅検出用パケットをサーバ50に送信する。ここで、この送信においては、複数のポート幅検出用パケットの通過する第1の通信制御装置3のポートがそれぞれ異なるようにする。このポート幅検出用パケットは、例えば、第1の情報処理装置30におけるポート番号がそれぞれ異なる複数のポートから送信される。
【0221】
(ステップS618)サーバ50のポート幅検出用ポート検出部93は、第1の情報処理装置30から送信されたポート幅検出用パケットを受け付ける。そして、ポート幅検出用ポート検出部93は、ポート幅検出用パケットのヘッダに含まれる、そのポート幅検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0222】
(ステップS619)ポート幅検出用ポート情報送信部94は、ポート幅検出用ポート検出部93によって検出された、ポート幅検出用パケットの通過した第1の通信制御装置3のポートの位置を示す情報であるポート幅検出用ポート情報を第1の情報処理装置30に送信する。そのポート幅検出用ポート情報は、第1の情報処理装置30におけるポート幅検出用ポート情報受付部74で受け付けられる。
【0223】
(ステップS620)ポート幅検出部75は、ポート幅検出用ポート情報受付部74で受け付けられたポート幅検出用ポート情報に基づいて、第1の通信制御装置3のポート幅を検出する。なお、このポート幅の検出は、実施の形態1と同様に行われるものであり、その説明を省略する。
【0224】
(ステップS621)範囲検出用パケット送信部13は、範囲検出用パケットを第1の通信制御装置3を介して、サーバ50に送信する。
【0225】
(ステップS622)サーバ50の検出用ポート検出部91は、第1の情報処理装置30から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0226】
(ステップS623)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を示す検出用ポート情報を第1の情報処理装置30に送信する。その検出用ポート情報は、第1の情報処理装置30における検出用ポート情報受付部71で受け付けられる。
【0227】
(ステップS624)バブルパケット送信部12は、ステップS616で送信されたアドレス情報によって示される第2の通信制御装置4のIPアドレスと、ステップS614、S615で送信されたバブルパケット送信対象ポート情報とに基づいて、第2の通信制御装置4のバブルパケット送信対象ポートにバブルパケットを送信する。バブルパケット送信対象ポートが2以上のポートを含む場合には、バブルパケット送信部12は、ポート幅受付部18で受け付けられたポート幅情報の示すポート幅ごとに、バブルパケットを送信する。
【0228】
(ステップS625)範囲検出用パケット送信部13は、範囲検出用パケットを第1の通信制御装置3を介して、サーバ50に送信する。
【0229】
(ステップS626)サーバ50の検出用ポート検出部91は、第1の情報処理装置30から送信された範囲検出用パケットを受け付ける。そして、検出用ポート検出部91は、範囲検出用パケットのヘッダに含まれる、そのポート検出用パケットの通過した第1の通信制御装置3のポートの位置を検出する。
【0230】
(ステップS627)検出用ポート情報送信部92は、検出用ポート検出部91によって検出された、範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を示す検出用ポート情報を第1の情報処理装置30に送信する。その検出用ポート情報は、第1の情報処理装置30における検出用ポート情報受付部71で受け付けられる。
【0231】
(ステップS628)第1の情報処理装置30の範囲検出部72は、ステップS621、S625で送信した範囲検出用パケットの通過した第1の通信制御装置3のポートの位置を、検出用ポート情報受付部71が受け付けた検出用ポート情報から取得し、その2つのポートの位置に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する。なお、このポートの範囲は、1つのポートである場合もあり、あるいは、2以上のポートを含む場合もある。
【0232】
(ステップS629)第1の情報処理装置30の範囲送信部73は、ステップS628で検出されたポートの範囲を示す情報である範囲情報を、その範囲情報を第2の情報処理装置40に送信する旨の指示と共にサーバ50に送信する。また、ポート幅送信部76は、ステップS620で検出された第1の通信制御装置3のポート幅を示す情報であるポート幅情報を、そのポート幅情報を第2の情報処理装置40に送信する旨の指示と共にサーバ50に送信する。この範囲情報とポート幅情報とは、同一のパケットで送信されてもよく、あるいは、別々のパケットで送信されてもよい。
【0233】
(ステップS630)サーバ50の通信部61は、範囲情報、ポート幅情報を受信し、その範囲情報等を第2の情報処理装置40に送信する。その範囲情報は、第2の情報処理装置40の範囲受付部27で受け付けられる。ポート幅情報は、ポート幅受付部28で受け付けられる。
【0234】
(ステップS631)返信パケット送信部29は、ステップS601で受け取ったアドレス情報の示すIPアドレスによって特定される第1の通信制御装置3に対して返信パケットを送信する。この返信パケットは、範囲受付部27から受け取った範囲情報の示す範囲のポートに対して、ポート幅情報の示すポート幅ごとに送信される。
【0235】
(ステップS632)第1の情報処理装置30の返信パケット受付部14は、第2の情報処理装置40から送信された返信パケットを受け付ける。この返信パケットを受け付けることにより、第1の情報処理装置30と、第2の情報処理装置40との間の通信が確立することとなる。そして、この後、第1の情報処理装置30と第2の情報処理装置40との間で、サーバ50を介さない情報の送受信(例えば、トンネル通信)が行われる。
【0236】
なお、図31〜図33において、ポート幅の検出は、ポート幅情報の送信より以前に行われていればよく、例えば、ポート幅の検出の直後に、ポート幅情報が受信側に送信されてもよい。また、送信側のアドレスの送信(ステップS601)も、例えば、検出用ポート情報の送信(ステップS608)と同時に送信してもよい。このように、図31〜図33においては、処理の順序に関して、ある程度の任意性がある。また、図32において、範囲検出用パケットの送信と、ポート割り当てパケットの送信(ステップS606、S609、S610)や、範囲検出用パケットの送信と、バブルパケットの送信(ステップS621、S624、S625)は、検出用ポート情報の受信を待つことなく行ってもよい。
【0237】
次に、本実施の形態による通信システムの動作について、具体例を用いて説明する。この具体例において、第1の通信制御装置3等のIPアドレスは、第1のサーバ6がサーバ50となった以外、実施の形態1の具体例と同様であるとする。
【0238】
また、第2の情報処理装置40が発呼側であるとする。以下の具体例においては、具体例1において、第2の通信制御装置4がPS NAT以外である場合について説明する。また、具体例2において、第2の通信制御装置4がPS NATであり、第1の通信制御装置3がPS NAT以外である場合について説明する。
【0239】
なお、この具体例では、サーバ50と第1の情報処理装置30との間、あるいはサーバ50と第2の情報処理装置40との間でのパケットの送受信を効率よく行うために、送受信の決定(ステップS101)と、通信の確立(ステップS102)との処理の一部を並行して行う場合について説明する。
【0240】
[具体例1]
図34〜図38は、具体例について説明するための図である。なお、第1の情報処理装置30、および第2の情報処理装置40から、サーバ50に対するアクセスが行われており、サーバ50においてすでに、第1の通信制御装置3のIPアドレスと、第1の通信制御装置3のポートP1のポート番号と、第1の情報処理装置30の機器IDとが保持されているものとする。また同様に、サーバ50において、第2の通信制御装置4のIPアドレスと、第2の通信制御装置4のポートP2のポート番号と、第2の情報処理装置40の機器IDとが保持されているものとする。
【0241】
まず、第2の情報処理装置40から接続要求が行われる動作について説明する。図34において、第2の情報処理装置40は、サーバ50に対して、第1の情報処理装置30の機器IDと、接続要求とを送信する。すると、サーバ50は、第1の通信制御装置3のIPアドレスと、ポートP1のポート番号とを第2の情報処理装置40に送信する(ステップS601)。この送信は、ポートP2を介して行われる。
【0242】
第2の情報処理装置40のポート幅検出用パケット送信部25は、3つのポート幅検出用パケット(UDPのパケットであるとする)を、それぞれ第2の情報処理装置40のポートLP0、LP1、LP2から送信する。ここで、ポートLP0、LP1、LP2は、第2の情報処理装置40において新たに割り当てられた異なるポートであるとする。したがって、第2の通信制御装置4の特性にかかわらず、各ポート幅検出用パケットは第2の通信制御装置4において別々のポートP5、P6、P7を介してサーバ50に送信されることになる(ステップS602)。各ポート幅検出用パケットは、サーバ50の通信部61を介してポート幅検出用ポート検出部93で受け付けられ、各パケットのヘッダに含まれる第2の通信制御装置4のポートP5、P6、P7のポート番号が検出される(ステップS603)。ポート幅検出用ポート情報送信部94は、各ポート番号をペイロードに含むパケットであるポート幅検出用ポート情報を、それぞれのポート幅検出用パケットの通過した第2の通信制御装置4のポートに対して送信する(ステップS604)。具体的には、ポートP5を介して送信されたポート幅検出用パケットに対しては、そのポートP5のポート番号をペイロードに含むポート幅検出用ポート情報がポートP5に対して送信される。そのポート幅検出用ポート情報は、第2の通信制御装置4においてアドレス変換され、第2の情報処理装置40のポートLP0に送信される。そのポート幅検出用ポート情報は、通信部21を介してポート幅検出用ポート情報受付部84で受け付けられる。同様にして、ポートP6,P7を介して、ポート幅検出用ポート情報が第2の情報処理装置40に送信される。なお、この具体例では、範囲検出用パケットをも利用してポート幅の検出を行うため、この段階では、ポート幅の検出は行われない。また、ポートP7を介して送信されたポート幅検出用パケットは、第2の通信制御装置4の特性を判断するためのパケットである特性判断用パケットをかねているため、第2の通信制御装置4のポートP7を介して送信されたポート幅検出用ポート情報は、通信部21から特性判断部43にも渡される。
【0243】
第2の情報処理装置40の範囲検出用パケット送信部23は、範囲検出用パケット(UDPのパケットであるとする)をポートLP2からサーバ50のポートP3に送信する(ステップS606)。なお、この具体例では、この範囲検出用パケットは、ポート幅検出用パケットもかねている。
【0244】
ポートP3は、ポート幅検出用パケットの送信先であるポートP4とは異なるポートである。したがって、第2の通信制御装置4のポート割り当てルールがPort Sensitiveタイプの場合、すなわち、第2の通信制御装置4がPS NATである場合には、その範囲検出用パケットが通過する第2の通信制御装置4におけるポートP8は、ポートLP2から送信されたポート幅検出用パケットの通過したポートP7と異なるポートとなるが、第2の通信制御装置4のポート割り当てルールがPort Sensitiveタイプ以外の場合には、ポートP7と、ポートP8とは等しいポートとなる。
【0245】
サーバ50の検出用ポート検出部91は、ポートP3に送信された範囲検出用パケットを、通信部61を介して受け付ける。検出用ポート検出部91は、そのパケットのヘッダに含まれる第2の通信制御装置4のポートP8のポート番号を検出する(ステップS607)。検出用ポート情報送信部92は、その検出されたポートP8のポート番号をペイロードに含む検出用ポート情報を、第2の通信制御装置4のポートP8に送信する(ステップS608)。その検出用ポート情報は第2の通信制御装置4でアドレス変換され、第2の情報処理装置40のポートLP2に送信され、検出用ポート情報受付部81で受け付けられる。なお、この具体例では、サーバ50のポートP3に対して送信された範囲検出用パケットは、ポート幅検出用パケット、特性判断用パケットをかねているため、検出用ポート情報は、通信部21から、ポート幅検出用ポート情報受付部84、特性判断部43にも渡される。
【0246】
この具体例では、特性判断用パケットをポート幅検出用パケット、および範囲検出用パケットとかねているため、サーバ50の特性判断用ポート検出部95、および特性判断用ポート情報送信部96は用いられないことになる。
【0247】
ポート幅検出部85は、ポート幅検出用ポート情報受付部84において受け付けられた第2の通信制御装置4のポートP5、P6、P7、P8のポート番号に基づいて、第2の通信制御装置4のポート幅の検出を行う(ステップS605)。具体的には、ポートP8とポートP7との差が0でない場合には、ポートP6とポートP5の差、ポートP7とポートP6の差、ポートP8とポートP7の差のうち、一番小さい値を第2の通信制御装置4のポート幅として検出する。一方、ポートP8とポートP7との差が0である場合には、ポートP6とポートP5の差、ポートP7とポートP6の差のうち、小さい方を第2の通信制御装置4のポート幅として検出する。この具体例では、第2の通信制御装置4がPS NATではないため、ポートP8とポートP7との差は0となる。また、この具体例では、ポート幅が「1」と検出されたとする。
【0248】
特性判断部43は、ポートP7、P8のポート番号に基づいて、第2の通信制御装置4の特性を判断する(ステップS501)。具体的には、ポートP7とポートP8が等しい場合には、第2の通信制御装置4の特性がFull Cone NAT、R NAT、PR NAT(これら3つのアドレス割り当てタイプがConeのNATをCone系のNATと呼ぶことにする)、AS NATのいずれかである(すなわち、ポート割り当てルールがConeタイプ、あるいはAddress Sensitiveタイプである)と判断され、ポートP7とポートP8が異なる場合には、第2の通信制御装置4の特性がPS NATである(すなわち、ポート割り当てルールがPort Seisitiveタイプである)と判断される。この具体例では、第2の通信制御装置4がPS NATではないため、前述のように、ポートP7とポートP8が等しく、特性判断部43は、第2の通信制御装置4がPS NATでないと判断する(ステップS502)。その結果、発呼側である第2の情報処理装置40が受信側の情報処理装置として動作することになる(ステップS503)。
【0249】
第2の情報処理装置40のポート割り当てパケット送信部41は、サーバ50から送信された第1の通信制御装置3のアドレスを用いることにより、第1の通信制御装置3のポートP1にUDPのパケットであるポート割り当てパケットを送信する(ステップS609)。このポート割り当てパケットも、第2の情報処理装置40のポートLP2から送信される。このポート割り当てパケットは、第2の通信制御装置4のポートP9を介して送信される。第2の通信制御装置4がAS NATであればポートP8とポートP9が異なることになり、第2の通信制御装置4がCone系のNATであればポートP8とポートP9は等しいことになる。なお、このポート割り当てパケットの寿命(例えば、そのパケットに設定されるTTLなど)を設定することにより、ポート割り当てパケットがポートP1に到達する前に消滅するようにしてもよい。ポート割り当てパケットを送信するのは、第2の通信制御装置4において送信履歴を残すためであり、ポート割り当てパケットが第1の通信制御装置3に到達しなくてもよいからである。
【0250】
範囲検出用パケット送信部23は、UDPのパケットである範囲検出用パケットを第2の情報処理装置40のポートLP3からサーバ50のポートP4に送信する(ステップS610)。ポートLP3は、ポートLP0、LP1、LP2のいずれとも異なる、第2の情報処理装置40において新たに割り当てられたポートである。その範囲検出用パケットは、第2の通信制御装置4のポートP10を介して送信される。ここで、ポートP10は、ポートP7、P8、P9のいずれとも異なるポートである。その範囲検出用パケットは、サーバ50の検出用ポート検出部91で受け付けられ、ヘッダに含まれるポートP10のポート番号が検出される(ステップS611)。そのポート番号を含む検出用ポート情報は、検出用ポート情報送信部92からポートP10を介して第2の情報処理装置40に送信される(ステップS612)。その検出用ポート情報は、第2の情報処理装置40の検出用ポート情報受付部81で受け付けられる。そして、範囲検出部82によって、バブルパケット送信対象ポートの検出が行われる(ステップS613)。この検出では、ポートP8のポート位置から、ポートP10のひとつ手前に割り当てられるはずのポート位置までがバブルパケット送信対象ポートとして検出される。第2の通信制御装置4の特性によっては、ポートP8とポートP9が等しい場合もありうるが、第2の通信制御装置4の特性にかかわらず、ポートP9とポートP10は異なるからである。ポートP10のひとつ手前に割り当てられるはずのポート位置は、ポートP10のポート番号から、ポート幅検出部85によって検出された第2の通信制御装置4のポート幅(この具体例では「1」)だけ引いたポート番号によって示される位置である。バブルパケット送信対象ポート送信部42は、範囲検出部82によって検出されたバブルパケット送信対象ポートを示すバブルパケット送信対象ポート情報を、第1の情報処理装置30に送信する指示と共に、サーバ50に送信する(ステップS614)。また、ポート幅送信部86も、第2の通信制御装置4のポート幅を示すポート幅情報を、第1の情報処理装置30に送信する指示と共に、サーバ50に送信する(ステップS614)。また、特性送信部44も、第2の通信制御装置4の特性を示す情報、すなわち第2の通信制御装置4がPS NATではない旨の特性情報を、第1の情報処理装置30に送信する指示と共に、サーバ50に送信する。
【0251】
それらの情報は、サーバ50において中継され、第1の通信制御装置3のポートP1を介して、第1の情報処理装置30に送信される(ステップS615)。バブルパケット送信対象ポート情報は、バブルパケット送信対象ポート受付部16で受け付けられる。ポート幅情報は、ポート幅受付部18で受け付けられると共に、図示しない経路によってバブルパケット送信部12に渡される。特性情報はポート幅検出用パケット送信部15、範囲検出用パケット送信部13、バブルパケット送信部12等に渡され、第2の通信制御装置4がPS NATではなかったため、第1の情報処理装置30が送信側の装置としての処理シーケンスを行うと判断される。
【0252】
サーバ50は、受信側の第2の通信制御装置4のIPアドレスを第1の情報処理装置30に送信する(ステップS616)。
【0253】
第1の情報処理装置30のポート幅検出用パケット送信部15は、第1の情報処理装置30の異なるポートLP4、LP5から、それぞれUDPパケットであるポート幅検出用パケットをサーバ50のポートP3に送信する(ステップS617)。それらのポート幅検出用パケットは、第1の通信制御装置3の異なるポートP11,P12を介してサーバ50に送信され、ポート幅検出用ポート検出部93で受け付けられる。ポート幅検出用ポート検出部93で、第2の情報処理装置40から送信されたポート幅検出パケットの場合と同様にして、ポートP11,P12のポート番号が検出される(ステップS618)。ポート幅検出用ポート情報送信部94は、ポートP11,P12の検出されたポート番号をペイロードに含むパケットであるポート幅検出用ポート情報を、それぞれポートP11,P12を介して第1の情報処理装置30に送信する(ステップS619)。そのポート幅検出用ポート情報は、ポート幅検出用ポート情報受付部74において受け付けられる。なお、この具体例では、範囲検出用パケットをも利用してポート幅の検出を行うため、この段階では、ポート幅の検出は行われない。
【0254】
範囲検出用パケット送信部13は、UDPパケットである範囲検出用パケットを第1の情報処理装置30のポートLP6から送信する(ステップS621)。この範囲検出用パケットは、第1の通信制御装置3のポートP13を介して、サーバ50のポートP3に送信される。ここで、この範囲検出用パケットは、ポート幅検出用パケットをかねている。また、ポートLP6は、ポートLP4,LP5のそれぞれと異なる、第1の情報処理装置30において新たに割り当てられたポートであるとする。
【0255】
その範囲検出用パケットは、サーバ50の検出用ポート検出部91で受け付けられ、ポートP13のポート番号が検出される(ステップS622)。検出用ポート情報送信部92は、その検出されたポートP13のポート番号をペイロードに含むパケットである検出用ポート情報を、ポートP13を介して第1の情報処理装置30に送信する(ステップS623)。その検出用ポート情報は、検出用ポート情報受付部71で受け付けられる。また、その範囲検出用パケットはポート幅検出用パケットをかねているため、通信部11は、その検出用ポート情報をポート幅検出用ポート情報受付部74にも渡す。
【0256】
ポート幅検出部75は、ポート幅検出用ポート情報受付部84において受け付けられた第1の通信制御装置3のポートP11、P12、P13のポート番号に基づいて、第1の通信制御装置3のポート幅の検出を行う(ステップS620)。具体的には、ポートP12とポートP11の差、ポートP13とポートP12の差のうち、小さい方を第1の通信制御装置3のポート幅として検出する。この具体例では、ポート幅が「1」と検出されたとする。
【0257】
バブルパケット送信部12は、バブルパケット送信対象ポート情報が示す範囲のバブルパケット送信対象ポートに対して、バブルパケットを送信する(ステップS624)。このバブルパケットは、第1の情報処理装置30のポートLP6から送信される。また、バブルパケット送信対象ポートが複数のポートを含む範囲である場合には、バブルパケットは、ポート幅受付部18で受け付けられた第2の通信制御装置4のポート幅情報の示すポート幅(この具体例では「1」)ごとに送信される。この具体例では、図37で示されるように、バブルパケットが第1の通信制御装置3のポートP14からポートP15までのポートを介して送信されたものとする。なお、第2の通信制御装置4の特性によっては、バブルパケットをポートLP2において受け付けることができる場合もあるが、この具体例では、第1の情報処理装置30と第2の情報処理装置40との間の通信の確立を確実に行うことができるように、さらに処理を進める。
【0258】
範囲検出用パケット送信部13は、範囲検出用パケットを第1の情報処理装置30のポートLP7からサーバ50のポートP3に送信する(ステップS625)。ポートLP7は、ポートLP6とは異なるポートであり、第1の情報処理装置30において新たに割り当てられたポートである。ポートLP7が新たなポートであるため、その範囲検出用パケットの通過するポートP16は、ポートP15と異なるポートである。ポートP16を介して送信された範囲検出用パケットは、サーバ50の検出用ポート検出部91で受け付けられ、ポートP16のポート番号が検出される(ステップS626)。検出用ポート情報送信部92は、その検出されたポート番号をペイロードに含むパケットである検出用ポート情報を第1の通信制御装置3のポートP16を介して第1の情報処理装置30に送信する(ステップS627)。サーバ50から送信された検出用ポート情報は、検出用ポート情報受付部71で受け付けられる。そして、範囲検出部72は、ポートP13と、ポートP16のポート位置に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する(ステップS628)。この検出では、ポートP13のポート位置から、ポートP16のひとつ手前に割り当てられるはずのポート位置までがバブルパケット送信ポートを含む範囲として検出される。第1の通信制御装置3の特性にかかわらず、ポートP15とポートP16は異なるため、その範囲にポートP16は含まれない。ポートP16のひとつ手前に割り当てられるはずのポート位置は、ポートP16のポート番号から、ポート幅検出部75によって検出された第1の通信制御装置3のポート幅(この具体例では「1」)だけ引いたポート番号によって示される位置である。範囲送信部73は、範囲検出部72によって検出されたポートの範囲を示す範囲情報を、第2の情報処理装置40に送信する指示と共に、サーバ50に送信する(ステップS629)。また、ポート幅送信部76も、第1の通信制御装置3のポート幅を示すポート幅情報を、第2の情報処理装置40に送信する指示と共に、サーバ50に送信する(ステップS629)。
【0259】
それらの情報は、サーバ50において中継され、第2の通信制御装置4のポートP2を介して、第2の情報処理装置40に送信される(ステップS630)。範囲情報は、範囲受付部27で受け付けられる。ポート幅情報は、ポート幅受付部28で受け付けられる。返信パケット送信部29は、範囲受付部27が受け付けた範囲情報の示す範囲のポートに、返信パケットを送信する(ステップS631)。
【0260】
この返信パケットは、第1の情報処理装置30のポートLP6から送信される。また、範囲情報が複数のポートを含む範囲である場合には、返信パケットは、ポート幅受付部28で受け付けられた第1の通信制御装置3のポート幅情報の示すポート幅(この具体例では「1」)ごとに送信される。この具体例では、図38で示されるように、返信パケットが第2の通信制御装置4のポートP9を介して送信される。第2の通信制御装置4は、PS NATではないため、第1の通信制御装置3に対して送信される返信パケットは、すべてポートP9を介して送信されることになる。このように、すべての返信パケットがポートP9から送信されるように、第2の情報処理装置40は、あらかじめポート割り当てパケットを、ポートLP2から第1の通信制御装置3に送信した。
【0261】
第2の情報処理装置40から送信された返信パケットのうち、ポートP9に向けて送信されたバブルパケットの通過したバブルパケット送信ポートに送信された返信パケットは、第1の通信制御装置3でアドレス変換され、第1の情報処理装置30の返信パケット受付部24で受け付けられることになる(ステップS632)。第1の通信制御装置3の特性によっては、複数の返信パケットが第1の情報処理装置30によって受け付けられることもある。
【0262】
このようにして、第1の情報処理装置30と第2の情報処理装置40との間の通信が確立することになる。
【0263】
ここで、本実施の形態による通信システムにおいて、ポート割り当てパケットを送信する理由について簡単に説明する。バブルパケットを送信する以前に、ポート割り当てパケットを第1の通信制御装置3に送信することによって、第2の通信制御装置4においてポートP9が割り当てられる。受信側の装置はPS NATではないため(図29参照)、第2の通信制御装置4は、PS NATではない(すなわち、ポート割り当てルールがPort Sensitiveタイプではない)。したがって、このポート割り当てパケットを送信したポートLP2から返信パケットを第1の通信制御装置3に送信することにより、その返信パケットがポート割り当てパケットの送信によって割り当てられた第2の通信制御装置4のポートP9を介して送信されることになる。
【0264】
そのポートP9を含む範囲を検出し、その範囲にバブルパケットを送信することによって、少なくともひとつのバブルパケットをポートP9に対して送信することができる。その後、バブルパケット送信ポートを含むポートの範囲に、ポートLP2から返信パケットを送信することによって、ポートP9に送信されたバブルパケットの通過した第1の通信制御装置3のポートに対して、ポートP9を介して返信パケットを送信することができる。その結果、たとえ第1の通信制御装置3がPR NAT、PS NATを用いていた場合であっても、返信パケットが第1の情報処理装置30で受け付けられることとなり、第1の情報処理装置30と第2の情報処理装置40との間の通信を確立することができる。このように、ポート割り当てパケットは、返信パケットの通過するポートをあらかじめ第2の通信制御装置4において割り当てておくため(換言すると、バブルパケット送信対象ポートの範囲を決定するため)に送信されるものである。
【0265】
[具体例2]
具体例2では、第2の通信制御装置4がPS NATを用いており、第1の通信制御装置3がPS NAT以外を用いている場合について説明する。なお、第2の情報処理装置40が発呼側であるのは、具体例1と同様であるとする。
【0266】
第2の情報処理装置40からポート幅検出用パケット、範囲検出用パケット、ポート割り当てパケットが送信され、第2の通信制御装置4のポート幅が検出され、バブルパケット送信対象ポートの位置が検出され、第2の通信制御装置4の特性が判断される動作は、具体例1と同様に行われるものとする。
【0267】
第2の情報処理装置40からサーバ50を介してポート幅情報、バブルパケット送信対象ポート情報、特性情報が送信されることにより(ステップS614、S615)、第1の情報処理装置30は、第2の通信制御装置4がPS NATであることを知ることになる。すると、第1の情報処理装置30は、ステップS601からステップS614までの処理、およびステップS504の着呼側(第1の情報処理装置30側)の第1の通信制御装置3の特性を判断する処理(具体例1において、図34、図35を用いて説明した処理)を実行する。これらの処理は、受信側と送信側とが入れ替わる以外、具体例1の説明と同様であり、その説明を省略する。この具体例では、第1の通信制御装置3がPA NATを用いていないため、着呼側が受信側であると判断される(ステップS506)。そして、具体例1における受信側と送信側とが入れ替わった形態において、バブルパケットの送信や、バブルパケット送信ポートを含む範囲の検出、返信パケットの送信等が行われ、第1の情報処理装置30と第2の情報処理装置40との間の通信が確立することになる。これらの詳細な説明については、具体例1と同様であり、省略する。
【0268】
なお、上記各具体例では、ポート割り当てパケットを、1回目の範囲検出用パケットを送信したポートと同じポート(ポートLP2)から送信する場合について説明したが、ポート割り当てパケットを、2回目の範囲検出用パケットを送信したポートと同じポート(ポートLP3)から送信してもよい。この場合には、バブルパケット送信対象ポートは、ポートP8の次に割り当てられるポートから、ポートP10までとなる。あるいは、ポート割り当てパケットと、2回の範囲検出用パケットとを、それぞれ別のポート(それぞれ、第2の情報処理装置40において新たに割り当てられたポートであるとする)から送信してもよい。この場合には、バブルパケット送信対象ポートは、1回目の範囲検出パケットの通過した第2の通信制御装置4のポートの次に割り当てられるポートから、2回目の範囲検出パケットの通過した第2の通信制御装置4のポートのひとつ手前に割り当てられるポートまでとなる。なお、これらのバブルパケット送信対象ポートは最低限のポートとして説明したものであり、これらのバブルパケット送信対象ポートを含むより広いポートの範囲を、バブルパケット送信対象ポートとしてもよい。
【0269】
同様に、バブルパケットの送信も、ポートPL6からではなく、ポートPL7から行ってもよい。この場合にも、返信パケットを送信する範囲は、ポートP13の次に割り当てられるポートから、ポートP16までとなる。あるいは、バブルパケットと、2回の範囲検出用パケットとを、それぞれ別のポート(それぞれ、第1の情報処理装置30において新たに割り当てられたポートであるとする)から送信してもよい。この場合には、バブルパケット送信ポートを含むポートの範囲は、1回目の範囲検出パケットの通過した第1の通信制御装置3のポートの次に割り当てられるポートから、2回目の範囲検出パケットの通過した第1の通信制御装置3のポートのひとつ手前に割り当てられるポートまでとなる。なお、これらのバブルパケット送信ポートを含むポートの範囲は最低限の範囲として説明したものであり、これらのポートの範囲を含むより広いポートの範囲を、バブルパケット送信ポートを含むポートの範囲としてもよい。
【0270】
また、上記各具体例では、サーバ50と情報処理装置との間の通信回数を少なくするために、ひとつのパケットが複数の役割を有しており、効率よくパケットの通信を行う場合について説明したが、ひとつのパケットがひとつの役割を有するようにパケットの送信を行ってもよい。また、上記各具体例では、通信制御装置の特性判断と、情報処理装置間の通信の確立とを並行して行う場合について説明したが、それらの処理を別々に行ってもよい。そのような場合に、特性の判断において、特性判断用ポート検出部95、特性判断用ポート情報送信部96を用いてもよい。
【0271】
以上のように、本実施の形態による通信システムによれば、第1の通信制御装置3、および第2の通信制御装置4が両方とも、PS NATである場合を除いて、第1の情報処理装置30と第2の情報処理装置40との間の通信を確立することができる。さらに、その通信の確立を、通信制御装置がPS NATを用いているかどうかを判断するだけで、細かい判断をすることなく、実行することができる。
【0272】
また、実施の形態1の方法であれば、送信側の装置がPR NATである場合には、送受信の入れ替えを行う必要があったが(図17参照)、本実施の形態の方法であれば、送信側、受信側の情報処理装置のいずれかがPR NATであったとしても、送受信の入れ替えを行う必要がない。したがって、Cone系のNATが通信システムにおいて用いられている場合には、送受信の入れ替えを行うことなく、情報処理装置間での通信を確立することができる(図39参照)。
【0273】
また、本実施の形態では、通信制御装置がAS NATを用いているかどうかの判断を行わなくてよいため(PS NATを用いているのか、そうでないのかについての判断のみを行えばよい)、2以上のサーバを用いた通信制御装置の特定の判断を行わなくてよいことになり、通信システムを簡易な構成とすることができる。
【0274】
なお、本実施の形態では、ポート幅の検出、バブルパケット送信ポートを含むポートの範囲の検出、バブルパケット送信対象ポートの検出を情報処理装置において行う場合について説明したが、それらの処理のうち任意の1以上の処理を、実施の形態1と同様にサーバ50において行ってもよい。
【0275】
また、本実施の形態では、バブルパケット送信対象ポートの検出を行うために、ポート割り当てパケットの送信の前後に、2個の範囲検出用パケットを送信する場合について説明したが、一方の範囲検出用パケットのみを送信し、バブルパケット送信対象ポート情報は、バブルパケット送信対象ポートの上限あるいは下限のみを示すものであってもよい。この場合には、その範囲に含まれうるすべてのポートに対して、バブルパケットを送信してもよい。
【0276】
また、バブルパケットを、受信側の通信制御装置におけるすべてのポートに送信するようにしてもよい。そのようにすることで、ポート割り当てパケットの送信で用いられたポートに対してバブルパケットを送信することができる。ここで、すべてのポートといった場合においても、あらかじめ用途の決まっているウェルノーン(Well−known)ポートを除外し、Well−knownポート以外に返信パケットを送信してもよい。また、所定のポート幅ごとにバブルパケットを送信する場合には、その基点となるポートの位置が送信側の情報処理装置に対して知らされるようにしてもよい。
【0277】
また、本実施の形態においても、片方の通信制御装置が存在しない通信システムであっても、実施の形態3の場合と同様に、情報処理装置間の通信を確立することができることは、いうまでもない。
【0278】
また、上記各実施の形態において、通信システムは、バブルパケットを送信する情報処理装置と、バブルパケット送信ポートを含むポートの範囲を検出するための処理を行うサーバ(このサーバは、2以上のサーバであってもよい)とを備えた通信システムであって、そのバブルパケット送信ポートを含むポートの範囲を検出するためのものであってもよい。すなわち、本発明における通信システムは、以下のような通信システムであってもよい。この通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置は、通信制御装置を介して、通信制御装置に送信履歴を残すための1以上のバブルパケットを送信するバブルパケット送信部と、1以上のバブルパケットの送信で用いられる、通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットをサーバに送信する範囲検出用パケット送信部と、を備え、サーバは、範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて1以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出部を備えた、ものである。この通信システムにおいて、バブルパケットの送信先は、例えば、情報処理装置の通信相手である他の通信制御装置であってもよく、通信相手である他の情報処理装置の通信を制御する通信制御装置などであってもよい。また、この通信システムにおいて、サーバにおいて検出されたポートの範囲は、送信部によって情報処理装置に送信されてもよく、あるいは、その他の方法によって情報処理装置に渡されてもよい。その他の方法としては、例えば、ポートの範囲を示す情報を記録媒体に記録し、情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、サーバにおいてポートの範囲を示す情報が表示され、その表示を見ることによって、ユーザが情報処理装置にポートの範囲を示す情報を入力することであってもよい。また、実施の形態4のように、その通信システムにおいて1以上のバブルパケットを送信してもよい。
【0279】
また、他の通信システムは、情報処理装置と、情報処理装置の通信を制御する通信制御装置と、サーバとを備えた通信システムであって、情報処理装置は、通信制御装置を介して、通信制御装置に送信履歴を残すための1以上のバブルパケットを送信するバブルパケット送信部と、1以上のバブルパケットの送信で用いられる、通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットをサーバに送信する範囲検出用パケット送信部と、範囲検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、1以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、を備え、サーバは、範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した通信制御装置のポートの位置を検出する検出用ポート検出部と、検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を情報処理装置に送信する検出用ポート情報送信部と、を備えた、ものである。このように、範囲の検出をサーバではなく、情報処理装置において行ってもよい。この通信システムにおいて、バブルパケットの送信先は、例えば、情報処理装置の通信相手である他の通信制御装置であってもよく、通信相手である他の情報処理装置の通信を制御する通信制御装置などであってもよい。また、この通信システムにおいて、情報処理装置において検出されたポートの範囲は、送信部によって他の情報処理装置に送信されてもよく、あるいは、その他の方法によって他の情報処理装置に渡されてもよい。その他の方法としては、例えば、ポートの範囲を示す情報を記録媒体に記録し、他の情報処理装置がその記録媒体から情報を読み出すことであってもよく、あるいは、情報処理装置においてポートの範囲を示す情報が表示され、その表示を見ることによって、ユーザが他の情報処理装置にポートの範囲を示す情報を入力することであってもよい。また、実施の形態4のように、その通信システムにおいて1以上のバブルパケットを送信してもよい。
【0280】
また、上記各実施の形態において、第1のサーバ6,60、サーバ50が情報処理装置に相手方の通信制御装置のIPアドレスを通知する機能を有する場合について説明したが、この機能は、第1のサーバ6等とは別のサーバにおいて実現されてもよい。すなわち、一方の情報処理装置に他方の通信制御装置のアドレスを通知するサーバと、範囲検出パケット等に関する処理を行うサーバとは別のサーバであってもよい。また、一方の情報処理装置に他方の情報処理装置のアドレスを通知する処理や、発呼側の情報処理装置が相手方(着呼側)の情報処理装置を呼び出す処理等において、SIP(Session Initiation Protocol)を用いてもよい。
【0281】
なお、上記各実施の形態における説明では、ポート幅情報の示すポート幅ごとに返信パケットを送信するとしたが、ポート幅に関わりなく、ポート間隔「1」で返信パケットを送信してもよい。
【0282】
また、上記各実施の形態における説明では、範囲情報の示すポートの範囲に返信パケットを送信するとしたが、返信パケットを、送信側の通信制御装置におけるすべてのポートに送信するようにしてもよい。そのようにすることで、バブルパケットの送信で用いられたバブルパケット送信ポートに対して、返信パケットを送信することができる。また、範囲情報により、範囲の上限、あるいは下限のみが示される場合には、その範囲におけるすべてのポートに返信パケットを送信してもよい。ここで、すべてのポートといった場合においても、あらかじめ用途の決まっているウェルノーン(Well−known)ポートを除外し、Well−knownポート以外に返信パケットを送信してもよい。また、所定のポート幅ごとに返信パケットを送信する場合には、その基点となるポートの位置が受信側の情報処理装置に対して知らされるようにしてもよい。
【0283】
また、上記各実施の形態における説明では、通信制御装置で用いるNATの種類を第1のサーバ6等において、あるいは情報処理装置において判断する場合について説明したが、例えば、ユーザによる手入力等により情報処理装置から入力された通信制御装置の特性(NATの種類)を第1のサーバ6等で保持するようにしてもよく、あるいは、通信制御装置が保持している記憶手段(例えば、不揮発性のメモリなど)に特性が記憶されており、第1のサーバ6等は、その記憶されている特性を読み出すことにより、通信制御装置の特性を判断するようにしてもよい。なお、この通信制御装置の特性は、通信制御装置以外で記憶されていてもよい。例えば、所定のデータベースサーバが、通信制御装置のIDや型番と対応付けて、特性を記憶していてもよい。
【0284】
また、上記各実施の形態では、第1のサーバ6等において、あるいは、情報処理装置において通信制御装置の特性を検出する場合について説明したが、その検出のタイミングは問わない。すなわち、いずれかの情報処理装置からの通信を確立する旨の要求があった後でもよく、あるいは、情報処理装置が第1のサーバ6等に接続された時点で、あらかじめ特性の判断を行っていてもよい。
【0285】
また、通信制御装置のIPアドレスや、通信制御装置のポート幅等についても、第1のサーバ6等から送信されず、ユーザによる手入力によって、情報処理装置に渡されてもよく、あるいは、通信制御装置等において記憶されているポート幅等を取得してもよい。
【0286】
また、第1のサーバ6等や受信側の情報処理装置から送信側の情報処理装置にバブルパケット送信対象ポートが知らされる場合について説明したが、バブルパケット送信対象ポートが送信側の情報処理装置においてあらかじめ設定されていてもよく、あるいは、ユーザによる手入力や所定のサーバにアクセスすること等により送信側の情報処理装置がバブルパケット送信対象ポートの位置を検知するようにしてもよい。
【0287】
また、実施の形態1〜3では、第1のサーバと第2のサーバとが直接、通信を行う場合について説明したが、例えば、第1のサーバと第2のサーバとは、所定の共有記録媒体を介して、サーバ間の情報(例えば、図12におけるポートP8のポート番号など)の共有を行ってもよい。
【0288】
また、上記各実施の形態では、バブルパケット送信対象ポートを所定のポートに限定するために、バブルパケット送信対象ポート情報を送信する場合について主に説明したが、このバブルパケット送信対象ポート情報は、バブルパケット送信対象ポートを限定するためではなく、単に、バブルパケットの送信先のポートを指定するためにのみ送信されるものであってもよい。
【0289】
また、上記各実施の形態では、各情報処理装置が通信制御装置を1つだけ介して通信回線5に接続される場合について説明したが、複数の通信制御装置を介して通信回線5に接続されている場合(すなわち、多段接続のNAT)であっても、情報処理装置間の通信を確立することができ得る。
【0290】
また、上記各実施の形態では、第1の通信制御装置3、および第2の通信制御装置4がNATの機能を有するものであると説明したが、第1の通信制御装置3、および第2の通信制御装置4は、NATの機能に代えて、あるいはNATの機能と共にパケットフィルタリングのファイアウォール(Firewall)の機能を有するものであってもよい。ここで、パケットフィルタリングとは、例えば、前述の受信フィルタルールに基づいた受信パケットの選択を行うものである。第1の通信制御装置3が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側(第1の情報処理装置1等の側)からグローバル側(通信回線5)へのバブルパケットの送信によって第1の通信制御装置3に送信履歴を残すことで、バブルパケット送信ポートに送信された返信パケットを受け付けることができるようになる。また、第2の通信制御装置4が、そのような受信フィルタルールに基づいたファイアウォール機能を有する場合、ローカル側(第2の情報処理装置2等の側)からグローバル側へのバブルパケット送信対象ポートを介した返信パケットの送信によって、第1の情報処理装置1等と、第2の情報処理装置2等との間での通信が確立され得ることとなる。
【0291】
また、第1の情報処理装置1等、および第2の情報処理装置2等は、アプリケーションとしてのファイアウォールの機能を実装するものであってもよく、そうでなくてもよい。
【0292】
また、上記各実施の形態では、第1のサーバ6等をIPアドレスによって特定する場合について説明したが、第1のサーバ6等をドメイン名(例えば、server.pana.netなど)によって特定してもよい。この場合には、そのドメイン名がDNSサーバを用いて、IPアドレスに変換されることにより、第1のサーバ6等を特定することができる。
【0293】
また、上記各実施の形態における通信で用いられるプロトコルは、IPv4(Internet Protocol version 4)であってもよく、あるいは、IPv6(Internet Protocol version 6)であってもよい。
【0294】
また、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
【0295】
また、上記各実施の形態において、各構成要素は専用のハードウェアにより構成してもよく、あるいは、ソフトウェアにより実現可能な構成要素については、プログラム制御によるソフトウェアにより構成してもよい。なお、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、第2の情報処理装置と通信する第1の情報処理装置における処理を実行させるためのプログラムであって、第1の通信制御装置を介して、第1の通信制御装置に送信履歴を残すためのバブルパケットを第2の通信制御装置に送信するバブルパケット送信ステップと、バブルパケットの送信で用いられる、第1の通信制御装置のポートであるバブルパケット送信ポートに対して、第2の情報処理装置から第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付ステップと、を実行させるためのものである。
【0296】
また、このプログラムでは、コンピュータに、バブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させてもよい。
【0297】
また、このプログラムでは、範囲検出用パケット送信ステップで、バブルパケット送信ステップにおけるバブルパケットの送信の前後において、それぞれ範囲検出用パケットを送信してもよい。
【0298】
また、このプログラムでは、範囲検出用パケット送信ステップで、バブルパケットの送信の前後で、それぞれ異なるアドレスに範囲検出用パケットを送信してもよい。
【0299】
また、このプログラムでは、コンピュータに、第2の通信制御装置におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、バブルパケット送信ステップでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【0300】
また、このプログラムでは、バブルパケット送信対象ポートが、第2の情報処理装置が、第1の情報処理装置と第2の情報処理装置との間の通信を確立させるサーバとの間で情報の送受信を行うポートであってもよい。
【0301】
また、このプログラムでは、コンピュータに、第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、第1の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに実行させてもよい。
【0302】
また、このプログラムでは、第1の通信制御装置は、第2の情報処理装置から、第2の通信制御装置を介して、第2の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、コンピュータに、第2の情報処理装置からのバブルパケットの送信で用いられた、第2の通信制御装置のポートを少なくとも含む1以上のポートに対して返信パケットを送信する返信パケット送信ステップをさらに実行させてもよい。
【0303】
また、このプログラムでは、コンピュータに、返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、返信パケット送信ステップでは、範囲情報の示す範囲のポートに返信パケットを送信してもよい。
【0304】
また、このプログラムでは、コンピュータに、第2の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、返信パケット送信ステップでは、ポート幅情報の示すポート幅ごとに返信パケットを送信してもよい。
【0305】
また、上記各実施の形態による情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、第2の情報処理装置と通信する第1の情報処理装置における処理を実行させるためのプログラムであって、第1の通信制御装置は、第2の情報処理装置から、第2の通信制御装置を介して、当該第2の通信制御装置に送信履歴を残すためのバブルパケットが送信されるものであり、第2の情報処理装置からのバブルパケットの送信に用いられた、第2の通信制御装置のポートを少なくとも含む1以上のポートに対して返信パケットを送信する返信パケット送信ステップを実行させるためのものである。
【0306】
また、このプログラムでは、コンピュータに、返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップをさらに実行させ、返信パケット送信ステップでは、範囲情報の示す範囲のポートに返信パケットを送信してもよい。
【0307】
また、このプログラムは、コンピュータに、第2の通信制御装置におけるポート幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに実行させ、返信パケット送信ステップでは、ポート幅情報の示すポート幅ごとに返信パケットを送信してもよい。
【0308】
また、上記各実施の形態におけるサーバを実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、第1の情報処理装置、および第2の情報処理装置が、第1の情報処理装置の通信を制御する第1の通信制御装置、および第2の情報処理装置の通信を制御する第2の通信制御装置を介して行う通信を確立させるサーバにおける処理を実行させるためのプログラムであって、第1の情報処理装置、および第2の情報処理装置と、情報を送受信する情報送受信ステップと、第1の通信制御装置、および第2の通信制御装置の特性を判断する特性判断ステップと、特性判断ステップでの判断結果に応じて、第1の情報処理装置、および第2の情報処理装置のいずれかを送信側(送信側情報処理装置)に決定し、他方を受信側(受信側情報処理装置)に決定する送受信決定ステップと、を実行させるためのものである。
【0309】
また、このプログラムでは、コンピュータに、受信側情報処理装置の通信を制御する通信制御装置(受信側通信制御装置)における、送信側情報処理装置が、送信側情報処理装置の通信を制御する通信制御装置(送信側通信制御装置)に送信履歴を残すためのバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を、送信側情報処理装置に送信するバブルパケット送信対象ポート送信ステップをさらに実行させてもよい。
【0310】
また、このプログラムでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートが、情報送受信部と受信側情報処理装置との通信で用いられる、受信側通信制御装置のポートであってもよい。
【0311】
また、このプログラムでは、コンピュータに、送信側情報処理装置から、受信側通信制御装置におけるバブルパケット送信対象ポートに対するバブルパケットの送信で用いられる、送信側通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するための範囲検出用パケットを受け付けることにより、バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、をさらに実行させてもよい。
【0312】
また、このプログラムでは、範囲検出ステップで、複数のアドレスに送信された範囲検出用パケットに基づいて、検出を行ってもよい。
【0313】
また、このプログラムでは、コンピュータに、送信側情報処理装置から送信側通信制御装置を介して送信された、送信側通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、送信側通信制御装置におけるポート幅を検出するポート幅検出ステップと、ポート幅検出ステップで検出した送信側通信制御装置のポート幅を示す情報であるポート幅情報を送信するポート幅送信ステップと、をさらに実行させてもよい。
【0314】
また、上記プログラムでは、コンピュータに、範囲検出用パケットが通過した第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出したバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、をさらに実行させてもよい。
【0315】
また、上記プログラムでは、コンピュータに、ポート幅検出用パケットが通過した第1の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、ポート幅検出用ポート情報受付ステップで受け付けたポート幅検出用ポート情報に基づいて、第1の通信制御装置におけるポート幅を検出するポート幅検出ステップと、ポート幅検出ステップで検出した第1の通信制御装置のポート幅を示す情報であるポート幅情報を、サーバを介して第2の情報処理装置に送信するポート幅送信ステップと、をさらに実行させてもよい。
【0316】
また、このプログラムでは、コンピュータに、第2の通信制御装置におけるバブルパケットを送信する対象のポートであるバブルパケット送信対象ポートの位置を示すバブルパケット送信対象ポート情報を受け付けるバブルパケット送信対象ポート受付ステップをさらに実行させ、バブルパケット送信ステップでは、バブルパケット送信対象ポート情報の示すバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【0317】
また、上記プログラムでは、バブルパケット送信対象ポート情報が、1以上のバブルパケット送信対象ポートの位置を示す情報であり、バブルパケット送信ステップにおいて、バブルパケット送信対象ポート情報の示す1以上のバブルパケット送信対象ポートにバブルパケットを送信してもよい。
【0318】
また、上記プログラムでは、コンピュータに、返信パケットを送信するためのポートを第1の通信制御装置において割り当てるためのポート割り当てパケットを送信するポート割り当てパケット送信ステップをさらに実行させ、返信パケット送信ステップにおいて、ポート割り当てパケットが送信された第1の情報処理装置のポートから返信パケットを送信してもよい。
【0319】
また、上記プログラムでは、コンピュータに、ポート割り当てパケットの送信で用いられる、第1の通信制御装置のポートであるポート割り当てパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップをさらに実行させてもよい。
【0320】
また、上記各実施の形態における情報処理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成する情報処理装置における処理を実行させるためのプログラムであって、通信制御装置を介して、通信制御装置に送信履歴を残すための1以上のバブルパケットを送信するバブルパケット送信ステップと、1以上のバブルパケットの送信で用いられる、通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを送信する範囲検出用パケット送信ステップと、を実行させるためのものである。
【0321】
また、このプログラムでは、コンピュータに、範囲検出用パケットが通過した通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、検出用ポート情報受付ステップで受け付けた検出用ポート情報に基づいて、1以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、をさらに実行させてもよい。
【0322】
また、このプログラムでは、コンピュータに、範囲検出ステップで検出した1以上のバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップをさらに実行させてもよい。
【0323】
また、上記各実施の形態におけるサーバ装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために送信される1以上のバブルパケットの送信で用いられる、通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて1以上のバブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、範囲検出ステップで検出した1以上のバブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を送信する範囲送信ステップと、を実行させるためのものである。
【0324】
また、他のプログラムは、コンピュータに、情報処理装置、情報処理装置の通信を制御する通信制御装置、およびサーバを備える通信システムを構成するサーバにおける処理を実行させるためのプログラムであって、通信制御装置に送信履歴を残すために送信される1以上のバブルパケットの送信で用いられる、通信制御装置のポートである1以上のバブルパケット送信ポートを含むポートの範囲を検出するために用いられる、情報処理装置から送信された範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した通信制御装置のポートの位置を検出する検出用ポート検出ステップと、検出用ポート検出ステップで検出したポートの位置を示す検出用ポート情報を情報処理装置に送信する検出用ポート情報送信ステップと、を実行させるものである。
【0325】
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受け付ける受付ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
【0326】
また、このプログラムは、サーバなどからダウンロードされることによって流通してもよく、所定の記録媒体(例えば、CD−ROMなどの光ディスクや磁気ディスク、半導体メモリなど)に記録されることにより流通してもよい。
【0327】
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
【産業上の利用可能性】
【0328】
このように、本発明による通信システム等は、通信制御装置を介した複数の情報処理装置間での通信を確立することができ、情報処理装置間での通信を行うものとして有用である。
【図面の簡単な説明】
【0329】
【図1】本発明の実施の形態1による通信システムの構成を示すブロック図
【図2】同実施の形態による第1の情報処理装置の構成を示すブロック図
【図3】同実施の形態による第2の情報処理装置の構成を示すブロック図
【図4】同実施の形態による第1および第2のサーバの構成を示すブロック図
【図5】同実施の形態による通信システムの動作を示すフローチャート
【図6】同実施の形態における送受信の決定に関する処理を示すフローチャート
【図7】同実施の形態における通信制御装置の特性の判断について説明するための図
【図8】同実施の形態における通信制御装置の特性の判断について説明するための図
【図9】同実施の形態における通信制御装置の特性の判断について説明するための図
【図10】同実施の形態における通信の確立に関する処理を示すフローチャート
【図11】同実施の形態におけるポート幅の検出について説明するための図
【図12】同実施の形態における具体例について説明するための図
【図13】同実施の形態における具体例について説明するための図
【図14】同実施の形態における具体例について説明するための図
【図15】同実施の形態における具体例について説明するための図
【図16】同実施の形態における具体例について説明するための図
【図17】同実施の形態における接続可能な通信制御装置の特性の組み合わせを示す図
【図18】本発明の実施の形態2による第1の情報処理装置の構成を示すブロック図
【図19】同実施の形態による第2の情報処理装置の構成を示すブロック図
【図20】同実施の形態による第1および第2のサーバの構成を示すブロック図
【図21】同実施の形態における通信の確立に関する処理を示すフローチャート
【図22】同実施の形態における通信の確立に関する処理を示すフローチャート
【図23】同実施の形態における通信の確立に関する処理を示すフローチャート
【図24】本発明の実施の形態3による通信システムの構成を示すブロック図
【図25】本発明の実施の形態4による通信システムの構成を示すブロック図
【図26】同実施の形態による第1の情報処理装置の構成を示すブロック図
【図27】同実施の形態による第2の情報処理装置の構成を示すブロック図
【図28】同実施の形態によるサーバの構成を示すブロック図
【図29】同実施の形態における送受信の決定に関する処理を示すフローチャート
【図30】同実施の形態における通信制御装置の特性の判断について説明するための図
【図31】同実施の形態における通信の確立に関する処理を示すフローチャート
【図32】同実施の形態における通信の確立に関する処理を示すフローチャート
【図33】同実施の形態における通信の確立に関する処理を示すフローチャート
【図34】同実施の形態における具体例について説明するための図
【図35】同実施の形態における具体例について説明するための図
【図36】同実施の形態における具体例について説明するための図
【図37】同実施の形態における具体例について説明するための図
【図38】同実施の形態における具体例について説明するための図
【図39】同実施の形態における接続可能な通信制御装置の特性の組み合わせを示す図
【図40】通信システムの一例を示す図
【図41】従来の接続可能なNATの組み合わせを示す図
【符号の説明】
【0330】
1 第1の情報処理装置
2 第2の情報処理装置
3 第1の通信制御装置
4 第2の通信制御装置
5 通信回線
6 第1のサーバ
7 第2のサーバ
11,21,61,71 通信部
12,22 バブルパケット送信部
13,23 範囲検出用パケット送信部
14,24 返信パケット送信部
15,25 ポート幅検出用パケット送信部
16,26 バブルパケット送信対象ポート受付部
17,27 範囲受付部
18,28 ポート幅受付部
19,29 返信パケット送信部
62 情報送信部
63 特性判断部
64 送受信決定部
65 バブルパケット送信対象ポート送信部
66 範囲検出部
67 範囲送信部
68 ポート幅検出部
69 ポート幅送信部
Claims (18)
- 第1の情報処理装置と、第2の情報処理装置と、前記第1の情報処理装置の通信を制御する第1の通信制御装置と、前記第2の情報処理装置の通信を制御する第2の通信制御装置と、前記第1の情報処理装置と前記第2の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第1の情報処理装置は、
前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に向けて送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記バブルパケットの送信後に前記サーバに送信する範囲検出用パケット送信部と、
前記バブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なっており、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットに基づいて前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を示す情報である範囲情報を前記第2の情報処理装置に送信する範囲送信部と、を備え、
前記第2の情報処理装置は、
前記範囲情報を受け付ける範囲受付部と、
前記バブルパケット送信ポートを含む少なくとも1以上のポートに対して前記返信パケットを送信する返信パケット送信部と、を備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、通信システム。 - 前記第1の情報処理装置の前記範囲検出用パケット送信部は、前記バブルパケットを送信する前に、前記範囲検出用パケットをさらに送信し、
前記サーバは、前記バブルパケットの送信前および後に送信された前記範囲検出用パケットを受け付け、
前記範囲検出部は、当該範囲検出用パケットに基づいて前記バブルパケット送信ポートを含むポートの範囲を検出し、
前記範囲送信部は、前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を前記第2の情報処理装置に送信する、請求項1記載の通信システム。 - 前記第1の情報処理装置は、
前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第1の通信制御装置を介して前記サーバに送信するポート幅検出用パケット送信部をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて、前記第1の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第1の通信制御装置のポート幅を示す情報であるポート幅情報を前記第2の情報処理装置に送信するポート幅送信部と、をさらに備え、
前記第2の情報処理装置は、前記ポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項1または2記載の通信システム。 - 第1の情報処理装置と、第2の情報処理装置と、前記第1の情報処理装置の通信を制御する第1の通信制御装置と、前記第2の情報処理装置の通信を制御する第2の通信制御装置と、前記第1の情報処理装置と前記第2の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第1の情報処理装置は、
前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に向けて送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに前記バブルパケットの送信前および後に送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を前記バブルパケットの送信後に送信する範囲送信部と、
前記バブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なっており、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第1の情報処理装置に送信する検出用ポート情報送信部と、を備え、
前記第2の情報処理装置は、
前記範囲情報を受け付ける範囲受付部と、
前記バブルパケット送信ポートを含む1以上のポートに対して前記返信パケットを送信する返信パケット送信部と、を備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、通信システム。 - 第1の情報処理装置と、第2の情報処理装置と、前記第1の情報処理装置の通信を制御する第1の通信制御装置と、前記第2の情報処理装置の通信を制御する第2の通信制御装置と、前記第1の情報処理装置と前記第2の情報処理装置間の通信を確立させるサーバとを備えた通信システムであって、
前記第1の情報処理装置は、
前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に向けて送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記サーバに前記バブルパケットの送信前または後に送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を示す情報である範囲情報を前記バブルパケットの送信後に送信する範囲送信部と、
前記バブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制 御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備え、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なっており、
前記サーバは、
前記範囲検出用パケットを受け付け、当該範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を検出する検出用ポート検出部と、
前記検出用ポート検出部が検出したポートの位置を示す検出用ポート情報を前記第1の情報処理装置に送信する検出用ポート情報送信部と、を備え、
前記第2の情報処理装置は、
前記範囲情報を受け付ける範囲受付部と、
前記バブルパケット送信ポートを含む1以上のポートに対して前記返信パケットを送信する返信パケット送信部と、を備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、通信システム。 - 前記第1の情報処理装置は、
前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第1の通信制御装置を介して前記サーバに送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記第1の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第1の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第1の通信制御装置のポート幅を示す情報であるポート幅情報を、前記サーバを介して前記第2の情報処理装置に送信するポート幅送信部と、をさらに備え、
前記サーバは、
前記ポート幅検出用パケットを受け付け、当該ポート幅検出用パケットに基づいて前記ポート幅検出用パケットが通過した前記第1の通信制御装置のポートの位置を検出するポート幅検出用ポート検出部と、
前記ポート幅検出用ポート検出部が検出したポートの位置を示すポート幅検出用ポート情報を前記第1の情報処理装置に送信するポート幅検出用ポート情報送信部と、をさらに備え、
前記第2の情報処理装置は、
前記ポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項4または5記載の通信システム。 - 第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置であって、
前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に向けて送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記バブルパケットの送信前および後に送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を前記バブルパケットの送信後に送信する範囲送信部と、
前記バブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備えており、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なる、第1の情報処理装置。 - 第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置であって、
前記第1の通信制御装置を介して、前記第1の通信制御装置に送信履歴を残すためのバブルパケットを前記第2の通信制御装置に向けて送信するバブルパケット送信部と、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記バブルパケットの送信前または後に送信する範囲検出用パケット送信部と、
前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付部と、
前記検出用ポート情報受付部が受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を検出する範囲検出部と、
前記範囲検出部が検出した前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を示す情報である範囲情報を前記バブルパケットの送信後に送信する範囲送信部と、
前記バブルパケット送信ポートに対して、前記第2の情報処理装置から前記第2の通信制御装置を介して送信される返信パケットを受け付ける返信パケット受付部と、を備えており、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なる、第1の情報処理装置。 - 前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第1の通信制御装置を介して送信するポート幅検出用パケット送信部をさらに備えた、請求項7または8記載の第1の情報処理装置。
- 前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第1の通信制御装置を介して送信するポート幅検出用パケット送信部と、
前記ポート幅検出用パケットが通過した前記第1の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付部と、
前記ポート幅検出用ポート情報受付部が受け付けたポート幅検出用ポート情報に基づいて、前記第1の通信制御装置におけるポート幅を検出するポート幅検出部と、
前記ポート幅検出部が検出した前記第1の通信制御装置のポート幅を示す情報であるポート幅情報を、前記第2の情報処理装置に送信するポート幅送信部と、をさらに備えた、請求項7または8記載の第1の情報処理装置。 - 第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置であって、
前記第1の通信制御装置に向けて、前記第2の情報処理装置から、前記第2の通信制御装置を介して、当該第2の通信制御装置に送信履歴を残すためのバブルパケットが送信されており、
前記第2の情報処理装置からの前記バブルパケットの送信に用いられた、前記第2の通信制御装置のポートを少なくとも含む1以上のポートに対して返信パケットを送信する返信パケット送信部と、
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付部と、を備え、
前記返信パケット送信部は、前記範囲情報の示す範囲のポートに前記返信パケットを送信 する、第1の情報処理装置。 - 前記返信パケットを送信するポートの幅を示す情報であるポート幅情報を受け付けるポート幅受付部をさらに備え、
前記返信パケット送信部は、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項11記載の第1の情報処理装置。 - 第1の情報処理装置と、前記第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置と、前記第2の情報処理装置の通信を制御する第2の通信制御装置と、を備えた通信システムを構成する前記第1の情報処理装置に用いられる通信方法であって、
前記第1の通信制御装置に向けて、前記第2の情報処理装置から、前記第2の通信制御装置を介して、当該第2の通信制御装置に送信履歴を残すためのバブルパケットが送信されており、
前記第2の情報処理装置からの前記バブルパケットの送信に用いられた、前記第2の通信制御装置のポートを少なくとも含む1以上のポートに対して返信パケットを送信する返信パケット送信ステップと、
前記返信パケットを送信するポートの範囲を示す情報である範囲情報を受け付ける範囲受付ステップと、を備え、
前記返信パケット送信ステップにおいては、前記範囲情報の示す範囲のポートに前記返信パケットを送信する、通信方法。 - 前記返信パケットを送信するポートの幅を示す情報であるポート幅情報を受け付けるポート幅受付ステップをさらに備え、
前記返信パケット送信ステップにおいては、前記ポート幅情報の示すポート幅ごとに前記返信パケットを送信する、請求項13記載の通信方法。 - 第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置に用いられる通信方法であって、
前記第1の通信制御装置を介して、前記第2の通信制御装置に向けて送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケットを前記バブルパケットの送信前および後に送信する範囲検出用パケット送信ステップと、前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップにおいて受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの範囲を検出する範囲検出ステップと、
前記範囲検出ステップにおいて検出した前記バブルパケット送信ポートを含むポートの範囲を示す情報である範囲情報を前記バブルパケット送信ステップの後に送信する範囲送信ステップと、
前記バブルパケット送信ポートを含むポートの範囲に含まれる、前記第1の通信制御装置のポートを少なくとも含む1以上のポートに対して送信される返信パケットを受け付ける返信パケット受付ステップと、を備え、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なる、通信方法。 - 第1の情報処理装置の通信を制御する第1の通信制御装置と、第2の情報処理装置の通信を制御する第2の通信制御装置とを介して、前記第2の情報処理装置と通信する前記第1の情報処理装置に用いられる通信方法であって、
前記第1の通信制御装置を介して、前記第2の通信制御装置に向けて送信履歴を残すためのバブルパケットを送信するバブルパケット送信ステップと、
前記バブルパケットの送信で用いられる、前記第1の通信制御装置のポートであるバブルパケット送信ポートを含むポートの範囲を検出するために用いられる範囲検出用パケット を前記バブルパケットの送信前または後に送信する範囲検出用パケット送信ステップと、前記範囲検出用パケットが通過した前記第1の通信制御装置のポートの位置を示す検出用ポート情報を受け付ける検出用ポート情報受付ステップと、
前記検出用ポート情報受付ステップにおいて受け付けた検出用ポート情報に基づいて、前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を検出する範囲検出ステップと、
前記範囲検出ステップにおいて検出した前記バブルパケット送信ポートを含むポートの上限または下限を示す範囲を示す情報である範囲情報を前記バブルパケット送信ステップの後に送信する範囲送信ステップと、
前記バブルパケット送信ポートを含むポートの範囲に含まれる、前記第1の通信制御装置のポートを少なくとも含む1以上のポートに対して送信される返信パケットを受け付ける返信パケット受付ステップと、を備え、
前記範囲検出用パケットの送信で用いられる前記第1の通信制御装置のポートの位置と、前記バブルパケット送信ポートの位置とは異なる、通信方法。 - 前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、
前記第1の通信制御装置を介して送信するポート幅検出用パケット送信ステップをさらに備えた、請求項15または16記載の通信方法。 - 前記第1の通信制御装置におけるポート幅を検出するためのポート幅検出用パケットを、前記第1の通信制御装置を介して送信するポート幅検出用パケット送信ステップと、
前記ポート幅検出用パケットが通過した前記第1の通信制御装置のポートの位置を示すポート幅検出用ポート情報を受け付けるポート幅検出用ポート情報受付ステップと、
前記ポート幅検出用ポート情報受付ステップにおいて受け付けたポート幅検出用ポート情報に基づいて、前記第1の通信制御装置におけるポート幅を検出するポート幅検出ステップと、
前記ポート幅検出ステップにおいて検出した前記第1の通信制御装置のポート幅を示す情報であるポート幅情報を送信するポート幅送信ステップと、
をさらに備えた、請求項15または16記載の通信方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003365668 | 2003-10-27 | ||
JP2003365668 | 2003-10-27 | ||
PCT/JP2004/015721 WO2005041500A1 (ja) | 2003-10-27 | 2004-10-22 | 通信システム、情報処理装置、サーバ、および通信方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006024388A Division JP4389886B2 (ja) | 2003-10-27 | 2006-02-01 | 通信システム、情報処理装置、サーバ、および通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP3933182B2 true JP3933182B2 (ja) | 2007-06-20 |
JPWO2005041500A1 JPWO2005041500A1 (ja) | 2007-11-29 |
Family
ID=34510185
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005514980A Expired - Lifetime JP3933182B2 (ja) | 2003-10-27 | 2004-10-22 | 通信システム、情報処理装置、サーバ、および通信方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US7623513B2 (ja) |
EP (1) | EP1681811B1 (ja) |
JP (1) | JP3933182B2 (ja) |
KR (1) | KR20060102333A (ja) |
CN (1) | CN1875580A (ja) |
MY (1) | MY138020A (ja) |
TW (1) | TW200527860A (ja) |
WO (1) | WO2005041500A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8234383B2 (en) * | 2003-11-07 | 2012-07-31 | Panasonic Corporation | Bubble packet port identification using detection packets |
US7680065B2 (en) * | 2005-01-18 | 2010-03-16 | Cisco Technology, Inc. | System and method for routing information packets |
JP4665568B2 (ja) * | 2005-03-16 | 2011-04-06 | パナソニック株式会社 | 情報処理装置、ポート検出装置、情報処理方法、及びポート検出方法 |
JP4489008B2 (ja) * | 2005-11-16 | 2010-06-23 | 株式会社東芝 | 通信装置、通信方法および通信プログラム |
JP4600518B2 (ja) * | 2008-05-20 | 2010-12-15 | ソニー株式会社 | 情報処理装置、情報処理システム、および情報処理方法、並びにコンピュータ・プログラム |
JP5218357B2 (ja) * | 2009-09-25 | 2013-06-26 | ブラザー工業株式会社 | 通信方法、通信システム、端末装置 |
JP5887507B2 (ja) * | 2011-11-28 | 2016-03-16 | パナソニックIpマネジメント株式会社 | 通信機器間の接続確立方法、通信機器、及びサーバ装置 |
JP2016208162A (ja) * | 2015-04-17 | 2016-12-08 | 富士通株式会社 | 判定方法および情報処理装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7031275B1 (en) * | 2000-12-28 | 2006-04-18 | Utstarcom, Inc. | Address management for mobile nodes |
US6687245B2 (en) | 2001-04-03 | 2004-02-03 | Voxpath Networks, Inc. | System and method for performing IP telephony |
TWI232655B (en) * | 2002-05-07 | 2005-05-11 | Realtek Semiconductor Corp | Device and method for network address-port translation |
US7280557B1 (en) * | 2002-06-28 | 2007-10-09 | Cisco Technology, Inc. | Mechanisms for providing stateful NAT support in redundant and asymetric routing environments |
AU2003279775A1 (en) * | 2002-10-04 | 2004-05-04 | Woodstock Systems, Llc | Systems and devices accessing inaccessible servers |
JP2004180003A (ja) | 2002-11-27 | 2004-06-24 | Kitt Peak:Kk | 通信ネットワークシステムおよび通信の接続方法 |
US7899932B2 (en) * | 2003-01-15 | 2011-03-01 | Panasonic Corporation | Relayed network address translator (NAT) traversal |
US7245622B2 (en) * | 2003-03-27 | 2007-07-17 | Microsoft Corporation | Allowing IPv4 clients to communicate over an IPv6 network when behind a network address translator with reduced server workload |
JP3741312B2 (ja) | 2003-03-28 | 2006-02-01 | ソニー株式会社 | ネットワークシステムおよび通信方法、情報処理装置および方法、並びにプログラム |
US8239541B2 (en) * | 2003-11-07 | 2012-08-07 | Panasonic Corporation | Bidirectional connection setup between endpoints behind network address translators (NATs) |
EP1723533A1 (en) * | 2004-03-09 | 2006-11-22 | Clique Communications Llc | System and method for peer-to-peer connection of clients behind symmetric firewalls |
US7451212B2 (en) * | 2004-03-17 | 2008-11-11 | At&T Intellectual Property I, L.P. | Logical port configuration system |
US8050272B2 (en) * | 2004-06-29 | 2011-11-01 | Damaka, Inc. | System and method for concurrent sessions in a peer-to-peer hybrid communications network |
-
2004
- 2004-10-22 KR KR20067008114A patent/KR20060102333A/ko not_active Application Discontinuation
- 2004-10-22 EP EP04792863.5A patent/EP1681811B1/en not_active Expired - Lifetime
- 2004-10-22 JP JP2005514980A patent/JP3933182B2/ja not_active Expired - Lifetime
- 2004-10-22 CN CNA2004800316988A patent/CN1875580A/zh active Pending
- 2004-10-22 WO PCT/JP2004/015721 patent/WO2005041500A1/ja active Application Filing
- 2004-10-22 US US10/576,065 patent/US7623513B2/en active Active
- 2004-10-25 MY MYPI20044394 patent/MY138020A/en unknown
- 2004-10-26 TW TW93132378A patent/TW200527860A/zh unknown
-
2009
- 2009-10-07 US US12/574,774 patent/US7929541B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
MY138020A (en) | 2009-04-30 |
TW200527860A (en) | 2005-08-16 |
US20100023646A1 (en) | 2010-01-28 |
EP1681811B1 (en) | 2019-08-28 |
CN1875580A (zh) | 2006-12-06 |
JPWO2005041500A1 (ja) | 2007-11-29 |
KR20060102333A (ko) | 2006-09-27 |
US7929541B2 (en) | 2011-04-19 |
WO2005041500A1 (ja) | 2005-05-06 |
EP1681811A4 (en) | 2011-04-27 |
EP1681811A1 (en) | 2006-07-19 |
US20070140226A1 (en) | 2007-06-21 |
US7623513B2 (en) | 2009-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1739897B1 (en) | Information processing device, and bubble packet transmission method and program | |
US7522594B2 (en) | Method and apparatus to permit data transmission to traverse firewalls | |
US8234383B2 (en) | Bubble packet port identification using detection packets | |
JP4665568B2 (ja) | 情報処理装置、ポート検出装置、情報処理方法、及びポート検出方法 | |
EP1860554A1 (en) | Communication system, information processing system, connection server, processing server, information processing device, information processing method, and program | |
US20090043889A1 (en) | Communication system, data processing apparatus, server, data processing method, program that executes the data processing method, and recording medium to record the program | |
JP3933182B2 (ja) | 通信システム、情報処理装置、サーバ、および通信方法 | |
JP4389886B2 (ja) | 通信システム、情報処理装置、サーバ、および通信方法 | |
JP3933183B2 (ja) | 通信システム、情報処理装置、サーバ、および通信方法 | |
JP3849711B2 (ja) | 通信システム、情報処理装置、サーバ、および通信方法 | |
JP4389885B2 (ja) | 通信システム、情報処理装置、サーバ、および通信方法 | |
JP2008205676A (ja) | 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム | |
JP4389994B2 (ja) | 通信システム、情報処理装置、サーバ、および情報処理方法 | |
KR20110037833A (ko) | Ip 네트워크에서의 직접 통신 제공 방법 | |
KR20070023705A (ko) | 정보 처리 장치, 포트 검출 장치, 정보 처리 방법 및 포트검출 방법 | |
JP4345751B2 (ja) | 情報処理装置、及びバブルパケット送信方法 | |
JP2011151604A (ja) | 信号処理装置及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070227 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070312 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 3933182 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100330 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110330 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120330 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130330 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140330 Year of fee payment: 7 |