(57)【要約】【課題】対称型ＮＡＴなどのＮＡＴが介在する通信環境において、従来ではＵＤＰ  Hole  Punchingの適用が不可能であった場合でもＵＤＰ  Hole  Punchingの適用を可能にする。【解決手段】ＩＣＭＰパケットに基づいて、前段ルータまでのホップ数を取得し、中継装置のグローバルアドレスを取得し、端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号としホップ数をＴＴＬの設定値としたダミーパケットを中継装置を介して送信し、ダミーパケットに対して返信されるＩＣＭＰパケットに含まれるチェックサムを用いて、中継装置が使用したグローバルポートを算出し、中継装置のグローバルアドレス及びグローバルポートを端末に通知する機器と、通知された中継装置のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号としたパケットを送信する端末とを有する。【選択図】図１
2008147738.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのルータを含む通信網に接続可能な端末と、ＮＡＴ機能を有する中継装置を介して前記通信網に接続可能な機器との間で通信を行う通信方法であって、
前記端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを前記機器に送信させ、前記パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を前記機器に取得させる第１のステップと、
前記中継装置のグローバルアドレスを前記機器に取得させる第２のステップと、
前記端末のグローバルアドレス及びグローバルポートを前記機器に取得させる第３のステップと、
前記機器に前記端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つ前記第１のステップで取得させたホップ数をＴＴＬの設定値としたパケットであるダミーパケットを前記中継装置を介して送信させる第４のステップと、
前記ダミーパケットに対して前記前段ルータから返信されるＩＣＭＰパケットを前記機器に受信させ、前記ＩＣＭＰパケットに含まれるチェックサムを用いて、前記中継装置がダミーパケット送信に使用したグローバルポートを算出させる第５のステップと、
前記第２のステップにおいて取得したグローバルアドレスと、前記第５のステップにおいて算出したグローバルポートを前記端末に通知する第６のステップと
を有することを特徴とする通信方法。
【請求項２】
少なくとも一つのルータを含む通信網に接続可能な端末と、ＮＡＴ機能を有する中継装置を介して前記通信網に接続可能な機器との間で通信を行う通信システムであって、
前記端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを送信し、前記パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を取得し、前記中継装置のグローバルアドレスを取得し、前記端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つ前記ホップ数をＴＴＬの設定値としたパケットであるダミーパケットを前記中継装置を介して送信し、前記ダミーパケットに対して前記前段ルータから返信されるＩＣＭＰパケットを受信し、前記ＩＣＭＰパケットに含まれるチェックサムを用いて、前記中継装置がダミーパケット送信に使用したグローバルポートを算出し、前記中継装置のグローバルアドレス及び前記中継装置がダミーパケット送信に使用したグローバルポートを前記端末に通知する機器と、
前記機器から通知された前記中継装置のグローバルアドレス及び前記中継装置がダミーパケット送信に使用したグローバルポートを宛先アドレス及び宛先ポート番号としたパケットを送信する端末と、
を有することを特徴とする通信システム。
【請求項３】
少なくとも一つのルータを含む通信網に接続可能な端末と通信可能なであり、ＮＡＴ機能を有する中継装置を介して前記通信網に接続可能な機器であって、
前記端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを送信し、前記パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を取得し、前記中継装置のグローバルアドレスを取得し、前記端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つ前記ホップ数をＴＴＬの設定値としたパケットであるダミーパケットを前記中継装置を介して送信し、前記ダミーパケットに対して前記前段ルータから返信されるＩＣＭＰパケットを受信し、前記ＩＣＭＰパケットに含まれるチェックサムを用いて、前記中継装置がダミーパケット送信に使用したグローバルポートを算出し、前記中継装置のグローバルアドレス及び前記中継装置がダミーパケット送信に使用したグローバルポートを前記端末に通知することを特徴とする機器。
【請求項４】
少なくとも一つのルータを含む通信網に接続可能であり、ＮＡＴ機能を有する中継装置を介して前記通信網に接続可能な機器と通信を行う端末であって、
前記機器に対する通信において使用するグローバルアドレス及びグローバルポートを前記機器に通知し、前記機器から通知された前記中継装置のグローバルアドレス及び前記中継装置がダミーパケット送信に使用したグローバルポートを宛先アドレス及び宛先ポート番号としたパケットを送信することを特徴とする端末。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信方法、通信システム、機器、並びに端末に関し、より詳しくは、ＮＡＴ（Network  Address  Translation）機能を有する中継装置に接続された機器と、例えばネットワーク通信機能を有した携帯電話や小型携帯情報端末からなどの端末との通信を可能とする通信方法、通信システム、機器、並びに端末に関する。
【背景技術】
【０００２】
携帯電話やディジタル家電機器及び通信インフラの普及により、携帯電話やＰＣなどの端末装置を用いてインターネットによりハードディスクレコーダやいわゆるインターネット家電製品と呼ばれるネットワーク接続機能を有する家庭内の機器にリモートアクセスする要求が高まっている。例えば、外出先からハードディスクレコーダにリモート録画予約を行うといった使用法、携帯電話で撮影したデジタル写真を後に家庭内で閲覧して楽しむため、携帯電話から家庭内のハードディスクレコーダに転送しておく、などの使用方法が普及しているためである。
【０００３】
[従来技術と課題]
携帯電話などの小型携帯機器から家庭内のネットワーク接続の機器に対する遠隔操作の従来技術の例としては、中継サーバ方式により携帯電話などのインターネット端末と家庭内のビデオ録画機のような機器との接続をインターネットを介して実現する技術が提案されている（例えば、特許文献１）。この技術は、ＵＤＰポーリングを利用して、中継サーバとルータの接続を行うことによって、中継サーバとルータの常時接続を回避して、中継サーバの負担を軽減させる。しかしながら、実際の送受信データ時は中継サーバーを通過するために、通信時は中継サーバに負担がかかり中継サーバーのメンテナンスコストが大きくなってしまう。
【０００４】
中継サーバを介さずに携帯電話と家庭内機器との間でピアツーピア通信を行うことができれば、運用コストを抑えることができる。しかし、多くの家庭内機器は、一般的にはＮＡＴ機能を備えた中継機器（例えば、ルータ、Ｌ３スイッチなど、以下、ＮＡＴと呼ぶ）の内側に配置されているため、端末から家庭内機器にインターネットを介して通信を行うためには、いわゆるＮＡＴ越えの問題が生じる。
【０００５】
ここで、ＮＡＴの基本概念を説明する。IETF（Internet  Engineering  Task  Force）の資料「Internet  Draft  "ＮＡＴ  ＵＤＰ  Unicast  Requirement",  May  2006,  Expires:  December  2,  2006」がＮＡＴについて説明をしている。以下のＮＡＴの基本概念の説明は、上記の資料に基づいている。
【０００６】
図１４にＮＡＴの概念を示すブロック図を掲げる。機器１５０１は、Internal  Network（例えば、家庭内ＬＡＮ）により、ＮＡＴ１５０２に接続されている。ＮＡＴ１５０２は、External  Network（例えば、インターネット）により、端末１５０３と接続されている。
【０００７】
図１４に示す構成において、機器１５０１はＮＡＴ１５０２から見て内側の装置であり、端末１５０３は、ＮＡＴ１５０２からみて外側の装置である。機器１５０１はローカルアドレスＬａ及びローカルポートＬｐを使用し、ＮＡＴ１５０２はＷＡＮ側アドレス（グローバルアドレス）Ｇａ及びＷＡＮ側ポート（グローバルポート）Ｇｐを使用し、端末１５０３はグローバルアドレスＤａ及びグローバルポートＤｐを使用する。
【０００８】
ここで、機器１５０１が端末１５０３にアクセする場合を考察する。
（１）機器１５０１は、送信元アドレス(La:Lp)、送信先アドレス(Da:Dp)を指定してoutboundパケットを送信する。
（２）ＮＡＴ１５０２は、outboundパケットの送信元アドレス(La:Lp)を(Ga：Gp）に付け替えて、端末１５０３に対してoutboundパケットを送信する。
（３）outboundパケットを受信した端末１５０３は、送信元アドレス(Da:Dp)、送信先アドレス(Ga:Gp)を指定してinboundパケットを返信する。
（４）このinboundパケットを受信したＮＡＴ１５０２は、inboundパケットに記述された送信先アドレス(Ga:Gp)を(La：Lp)に付け替えて、機器１５０１にinboundパケットを転送する。
【０００９】
つまり、ＮＡＴ１５０２はinboundパケットを受け入れるために以下の用にパケットのアドレス変換fを行なう。
【００１０】
f(Ga:Gp),(Da:Dp)→(La:Lp)
したがって、ＮＡＴ１５０２のアドレス変換で求められる要件(変換fを可能とする条件)は、ＮＡＴ１５０２が扱うすべての接続について(Ga：Gp）,(Da：Dp)が一意に定まる状態でなければならないということである。ＮＡＴ１５０２は、最低限この要件を満たすように、各接続に対して(Ga:Gp)をアサインする。
【００１１】
ＮＡＴが各接続に対して(Ga:Gp)をアサインする方式として、以下のような方式がある。
（１）  Endpoint  Independent  Mapping
Endpoint  Independent  Mappingとは、(Da：Dp)には依存せずに、(La:Lp)に対して唯一の(Ga:Gp)をアサインする方式である。
（２）  Address  Dependent  Mapping
Address  Dependent  Mappingとは、(La:Lp）,Daに対して唯一の(Ga:Gp)をアサインする方式である。
（３）  Address  and  Port  Dependent  Mapping
Address  and  Port  Dependent  Mappingとは、(La:Lp),(Da,Dp)に対して唯一の(Ga:Gp)をアサインする方式である。
【００１２】
また、ＮＡＴがグローバルアドレスＧａを各接続にアサインする方式としては、以下のような方式がある。
【００１３】
（１）  Pool  of  lP  Address
Pool  of  lP  Address方式とは、複数のIPアドレスのプールからグローバルアドレスを割り当てる方式であり、大規模に多い。
【００１４】
（２）Single  IP  Address
Single  IP  Address方式とは、ＮＡＴが唯一のグローバルアドレスを持つものであり、各接続に対してこの唯一のグローバルアドレスをアサインする。日本国内においては個人向けのインターネット接続サービスに用いられている主要な方式である。
【００１５】
また、ポート番号を各接続に割り当てる方式として以下の方式がある。
【００１６】
（１）Port  Preservation
Port  Preservationとは、なるべく、Gp＝Lpとなるように各接続にGpを割り当てる方式である。
【００１７】
（２）NAPT(Network  Address  and  Port  Translator)
NAPT(Network  Address  and  Port  Translator)は、Gp≠Lpとなるように、Gpを割り当てる。
【００１８】
さて、Single  IP  Address方式でグローバルアドレスGaを割り当て、且つ、Port  Preservation方式でグローバルポートGpを割り当てようとするとEndpoint  Independent  Mappingとなるが、その場合そのＮＡＴが扱うすべての接続で(Ga:Gp),(Da:Dp)が一意にならなくなる場合がある。その場合には、Port  Preservationは断念することになる。
【００１９】
(Ga：Gp),(Da:Dp)が一意であれば、(Ga:Gp)は必ずしも一意である必要はないので、(Ga1:Gp1)=(Ga2:Gp2)ではあるが、(Ga1:Gp1),(Da1,Dp1)≠(Ga2:Gp2),(Da2,Dp2)というマッピングは許される。これをPort  overloadingという。
【００２０】
STUNの分類で対称型ＮＡＴとは、Endpoint  Independent  mappingでないことを指すが、これは、ある特定のＮＡＴの種類を示すのではなく、そのときどきのＮＡＴの状況により発生するものと考えるべきである。現在流通している家庭向けのインターネット接続用のブロードバンドルータでは、Single  IP  Address方式でかつPort  Preservationを採用しているものが多い。その場合には、基本的には、Endpoint  Independent  mappingとなっており、しばしば、Port  overloadingが使用されるが、接続状況によって、Port  Preservationを断念しNetwork  Address  and  Port  Translatorを採用しなければならない。つまり、Address  and  Port  Dependent  Mappingを行う必要が生じる。つまり、STUNの分類の対称型ＮＡＴにＵＤＰ  hole  punchingが適用できないという制限は、「ある特定のＮＡＴでＵＤＰ  hole  punchingが使できない」という意味ではなくて、「ある特定の接続状況になるとＵＤＰ  hole  punchingが使できない」と考えるべきである。
【００２１】
ところで、ＮＡＴを越えてピアツーピア通信を行なう技術として、「ＵＤＰ  Hole  Punching」という技術が考案されている。「ＵＤＰ  Hole  Punching」の原理は、「ＮＡＴの内部から外向きに用意した通路を使って、外部から内向きの通信を行う」というものである。「ＵＤＰ  Hole  Punching」技術に関する規定として、IETFがRFC3489として規定しているSTUN(Simple  Traversal  of  User  Datagram  Protocol)がある（例えば、非特許文献１）。このSTUNプロトコルを利用すると、ＮＡＴの外側のアドレス（WAN側アドレス)およびポートとのタイプを知ることができる。
【００２２】
STUNプロトコルでは、ＮＡＴを以下の４タイプに分類している。すなわち、（１）完全コーン型(Full  Cone)、（２）制限つきコーン型（Restricted  Cone)、（３）ポート制限つきコーン型(Port  Restricted  Cone)、（４）対称型(Symmetric)の４タイプである。
【００２３】
「ＵＤＰ  Hole  Punching」は、これら４つのタイプのＮＡＴ機器のうち、対称型ＮＡＴには適用できない。その理由を図１５を参照しながら説明する。図１５において、ＮＡＴの内側にある機器１５０１（Internal  Endpointとも言う；例えば、家庭内の操作されるビデオ録画機などの機器)からＳＴＵＮサーバ１５０４へＮＡＴ１５０２を経由してインターネット接続する。これをステップＳ１とする。ステップＳ１の接続でＳＴＵＮサーバ１５０４は、ＮＡＴ１５０２のＷＡＮ側アドレスＧａを知ることができる。ＳＴＵＮサーバ１５０４は、ＷＡＮ側アドレスＧａを端末１５０４（External  Endpointとも言う；例えば、モバイル機器、ＰＣなど)に送信する。これをステップＳ２とする。
【００２４】
ステップＳ２に続いて、機器１５０１は端末１５０３に対して、ダミーの接続要求をＮＡＴ１５０２を経由して送信する（ステップＳ３）。このＮＡＴ１５０２の内部から外向きのダミーの接続要求によって、ＮＡＴ１５０３は変換テーブル（ＮＡＴテーブルとも言う）を生成する。ＮＡＴ１５０３が生成する変換テーブルは、機器１５０１のアドレスと、ＮＡＴ１５０２がパケットの送出に使用するアドレスを対応づけて記憶するテーブルである。この変換テーブルによって、ＮＡＴ１５０２は同じアドレスの外部から内向きの通信を受け入れられるようになる。ここで、ステップＳ３のダミー接続時にＮＡＴ１５０２が使用したＷＡＮ側アドレスをＧａ２とする。なお、アドレスＧａとアドレスＧａ２は必ずしも異なるものでなく、等しい場合も含む。
【００２５】
次に、端末１５０３は、ステップＳ２において通知されたＮＡＴ１５０２のＷＡＮ側アドレスＧａに宛ててパケットを送出する（Ｓ４）。
【００２６】
ここで、ＮＡＴ１５０２のＷＡＮ側アドレスＧａとＧａ２とが等しい場合には、ＮＡＴ１５０２はこのパケットを機器１５０１に転送し、パケットは機器１５０１に到達する。一方、アドレスＧａとアドレスＧａ２が等しくない場合には、このパケットはＮＡＴ１５０２によって遮断され、機器１５０１に到達しない。すなわち、機器１５０１と端末１５０３との間でＵＤＰ  Hole  Punchingが成功しないこととなる。
【００２７】
さて、ＳＴＵＮプロトコルにおけるＮＡＴの分類による対称型ＮＡＴは、上記の場合、アドレスＧａとアドレスＧａ２は等しくならない。そのため、ＮＡＴ１５０２が対称型ＮＡＴである場合は、ステップＳ４において端末１５０３から送出されたパケットは、機器１５０１に到達しない。以上が、「ＵＤＰ  Hole  Punching」が対称型ＮＡＴに適用できない理由である。なお、前述したように対称型ＮＡＴ以外のＮＡＴであっても、アドレスＧａとアドレスＧａ２は等しくならない場合が発生しうるのであり、そのような場合にも「ＵＤＰ  Hole  Punching」が適用できない場合が生じうるのである。したがって、従来は、ＵＤＰ  Hole  Punchingを採用した通信システムでも、ＵＤＰ  Hole  Punchingが使用できない状況に備えて、中継サーバ方式と組み合わせて運用するなどの配慮が必要であった。
【特許文献１】特許第３４４５９８６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
本発明の目的は、対称型ＮＡＴなどのＮＡＴが介在する通信環境において、従来ではＵＤＰ  Hole  Punchingの適用が不可能であった場合でもＵＤＰ  Hole  Punchingの適用を可能にすることにある。
【課題を解決するための手段】
【００２９】
上記課題を解決するための手段として、本発明は以下の特徴を有している。  
【００３０】
本発明の第１の態様は、少なくとも一つのルータを含む通信網に接続可能な端末と、ＮＡＴ機能を有する中継装置を介して通信網に接続可能な機器との間で通信を行う通信方法として提案される。
【００３１】
この通信方法は、端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを機器に送信させ、パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を機器に取得させる第１のステップと、中継装置のグローバルアドレスを機器に取得させる第２のステップと、端末のグローバルアドレス及びグローバルポートを機器に取得させる第３のステップと、機器に端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つ第１のステップで取得させたホップ数をＴＴＬの設定値としたパケットであるダミーパケットを中継装置を介して送信させる第４のステップと、ダミーパケットに対して前段ルータから返信されるＩＣＭＰパケットを機器に受信させ、ＩＣＭＰパケットに含まれるチェックサムを用いて、中継装置が前段ルータから受け取ったＩＣＭＰパケットを元のパケットの送信元の端末に転送する第５のステップと、端末が第２のステップにおいて取得したグローバルアドレスとＩＣＭＰパケットの内容からグローバルポートを算出する第６のステップとを有することを特徴としている。
【００３２】
本発明の第２の態様は、少なくとも一つのルータを含む通信網に接続可能な端末と、ＮＡＴ機能を有する中継装置を介して通信網に接続可能な機器との間で通信を行う通信システムとして提案される。
【００３３】
この通信システムは、端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを送信し、パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を取得し、中継装置のグローバルアドレスを取得し、端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つホップ数をＴＴＬの設定値としたパケットであるダミーパケットを中継装置を介して送信し、ダミーパケットに対して前段ルータから返信されるＩＣＭＰパケットを受信し、ＩＣＭＰパケットに含まれるチェックサムを用いて、中継装置がダミーパケット送信に使用したグローバルポートを算出し、中継装置のグローバルアドレス及び中継装置がダミーパケット送信に使用したグローバルポートを端末に通知する機器と、機器から通知された中継装置のグローバルアドレス及び中継装置がダミーパケット送信に使用したグローバルポートを宛先アドレス及び宛先ポート番号としたパケットを送信する端末とを有することを特徴としている。
【００３４】
本発明の第３の態様は、少なくとも一つのルータを含む通信網に接続可能な端末と通信可能なであり、ＮＡＴ機能を有する中継装置を介して通信網に接続可能な機器として提案される。
【００３５】
この機器は、端末に宛てて、ＴＴＬの設定値を１から一つずつ増やしながらパケットを送信し、パケットに応答して返されるＩＣＭＰパケットに基づいて、前記中継装置から前記端末までの通信経路上にあり、前記端末宛のパケットを他のルータを経由させることなく前記端末に到達させることができるルータである前段ルータまでのホップ数を取得し、中継装置のグローバルアドレスを取得し、端末のグローバルアドレス及びグローバルポートを宛先アドレス及び宛先ポート番号とし、且つホップ数をＴＴＬの設定値としたパケットであるダミーパケットを中継装置を介して送信し、ダミーパケットに対して前段ルータから返信されるＩＣＭＰパケットを受信し、ＩＣＭＰパケットに含まれるチェックサムを用いて、中継装置がダミーパケット送信に使用したグローバルポートを算出し、中継装置のグローバルアドレス及び中継装置がダミーパケット送信に使用したグローバルポートを端末に通知することを特徴としている。
【００３６】
本発明の第４の態様は、少なくとも一つのルータを含む通信網に接続可能であり、ＮＡＴ機能を有する中継装置を介して通信網に接続可能な機器と通信を行う端末として提案される。
【００３７】
この端末は、機器に対する通信において使用するグローバルアドレス及びグローバルポートを機器に通知し、機器から通知された中継装置のグローバルアドレス及び中継装置がダミーパケット送信に使用したグローバルポートを宛先アドレス及び宛先ポート番号としたパケットを送信することを特徴としている。
【発明の効果】
【００３８】
本発明によれば、対称型ＮＡＴなどのＮＡＴが介在する通信環境において、従来ではＵＤＰ  Hole  Punchingの適用が不可能であった場合でもＵＤＰ  Hole  Punchingの適用が可能となる。
【発明を実施するための最良の形態】
【００３９】
以下、図面を参照しながら本発明の実施の形態を説明する。  
【００４０】
［１．通信システムの構成］
まず、本実施の形態にかかる通信システムについて説明する。本実施の形態にかかる通信システム１は、ネットワーク通信機能を有した携帯電話や小型携帯情報端末などの端末からＮＡＴなどの中継装置を介して家庭内のいわゆるネットワーク家電などの機器を遠隔操作する、或いはＮＡＴを介したパソコン対パソコンでの遠隔操作に適した通信システムである。
【００４１】
本実施の形態にかかる通信システム１は、インターネット接続機能を有する携帯電話機、ＰＣなどの端末１０と、通信網２０を介して端末１０と通信可能な中継装置３０と、中継装置３０に接続され、中継装置３０を介して通信網と接続可能な機器４０と、通信網２０を介して端末１０及び中継装置３０と通信可能な中継サーバ５０とを有している。
【００４２】
［１．１．端末］
端末１０は、通信網を介して中継サーバ５０，中継装置３０と、通信網２０及び中継装置３０を介して機器４０と通信可能な装置であって、例えば携帯電話機、ＰＤＡ（Personal  Data  Assistant）、携帯ゲーム機、ＰＣ（パーソナルコンピュータ）などの通信機能を備えた情報処理装置である。
【００４３】
［１．２．通信網］
通信網２０は、有線・無線、専用回線・交換回線を問わず、これに接続されている装置がそれぞれ目的とする装置に対しセッションを確立したときにその装置間での情報の送受を可能とするように作用する。通信網２０は、インターネットのように、ゲートウエイを介して複数のネットワークが組み合わされて実現しても構わない。また、その接続についてもいわゆるバックボーンといわれる基幹線に直接接続せずとも、ＰＰＰ接続などによって一時的に接続してあっても、セッションを確立したときにその間で情報の送受ができるようになっていれば構わない。
【００４４】
なお、通信網２０は、中継装置３０と端末１０との間に少なくとも一つのルータが介在するように構成された通信網であるものとする。
【００４５】
［１．３．中継装置］
中継装置３０は、家庭内ＬＡＮなどのローカルネットワーク内でのみ通用するＩＰアドレス(ローカルアドレス)と、インターネット上のアドレス(グローバルアドレス)を透過的に相互変換する機能であるＮＡＴ機能を備え、ネットワーク上を流れるデータを他のネットワークに中継する機器であって、例えば、ルータ、レイヤ３スイッチなどである。
【００４６】
中継装置３０は、Single  IP  Address方式により、自己のＷＡＮ側アドレスを使用するものであり、かつＴＴＬ（Time  to  Live）が尽きた（パケットが宛先ノードに着く前にＴＴＬが０になった）というエラーを通知するＩＣＭＰ（Internet  Control  Message  Protocol）パケットを受け取った場合にＮＡＴテーブルを破棄せず、また、ＩＣＭＰのＩＣＭＰデータに含まれるＵＤＰヘッダを解析して、元のＵＤＰパケットの送信元である端末にそのＩＣＭＰパケットを転送するように動作する。
【００４７】
［１．４．機器］
機器４０は、中継装置３０を介して端末１０、中継サーバ５０と通信可能な装置であって、例えばＰＣ（パーソナルコンピュータ）、家庭内サーバ、いわゆるインターネット家電、すなわちインターネットに接続する機能を持った家庭向け電化製品であって、例えば、外出先から端末１０から遠隔操作することで録画予約が行なえるビデオや、端末１０から遠隔操作することでスイッチのオン・オフができるエアコンなどである。
【００４８】
［１．５．中継サーバ］
中継サーバ５０は、端末１０及び中継装置３０のグローバルアドレスを登録しておき、端末１０及び中継装置３０の一方が他方に対する接続を要求した場合に、登録してあるグローバルアドレスを参照して、一方から他方へ宛てたメッセージ、コマンド、データなどを受け取り、これを指定された他方へ転送する機能を有する装置である。
【００４９】
［２．本通信システムの動作］
次に、本通信システム１の動作について説明する。  
【００５０】
本通信システム１は、端末１０と機器４０との間でＵＤＰパケットを用いた通信を成立させるように動作する。以下、図２，図３を参照しながら説明する。図２は、本通信システム１が実行する通信方法の一部である環境設定処理の例を示すフローチャートであり、図３は本通信システム１が実行する通信方法の一部である通信確立処理であって、端末１０と機器４０との間で通信を成立させるための通信確立処理の一例を示すフローチャートである。
【００５１】
［２．１．環境設定処理］
本通信システム１は、後述する通信確立処理に先立って、端末１０の前段（機器４０或いは中継装置３０と端末１０との間の通信経路上にあり、端末１０までのホップ数が１であることをいう）に設けられ、端末１０にパケットを転送するルータ（以下、前段ルータと呼ぶ）までのホップ数αと、中継装置３０のグローバルアドレスとを取得する処理である、環境設定処理を行う。
【００５２】
図４は、前段ルータとホップ数の求め方に関する図である。Internal  Endpointである機器４０とExternal  Endpointである端末１０の間には、前段ルータ４０１Ｆを含む複数のルータ４０１が存在しており、そのうちのいくつかはＮＡＴの機能を有していてもよい。ここで、機器４０から前段ルータ４０１Ｆまでパケットが到達するホップ数をαとする。また、機器４０から端末１０までパケットが到達するホップ数はホップ数αに１を加えた値（＝β）となる。
【００５３】
前段ルータ４０１Ｆと、機器４０から前段ルータ４０１Ｆまでのホップ数αの決定には、Linux（登録商標）のコマンドである「trace  route」の原理を用いる。すなわち、機器４０はTTLを1から順に1ずつ増やしたＵＤＰパケットを端末１０宛に送出し、ICMPパケットが返却されなくなるまで繰り返す。図５は、機器４０がTTLを１から順に一ずつ増やしたＵＤＰパケットを端末１０に送信する動作例を示すシーケンス図である。図５では、ＴＴＬを１からαー１までとするＵＤＰパケットの送信の図示は省略し、ＴＴＬをαとした時点からのＵＤＰパケットの送信を示している。また、図４に示したルータ４０１の図示は省略している。
【００５４】
ＴＴＬの値をαー１としたＵＤＰパケットに対するＩＣＭＰパケットを受信した機器４０は、ＴＴＬの値を１だけ増加させたＴＴＬ＝αとし、宛先を端末１０としたＵＤＰパケットを生成する（Ｓ２０１）。機器４０はこのＵＤＰパケットを中継装置３０に送出する（Ｓ２０２）。中継装置３０は、このＵＤＰパケットを通信網２０に送出すると、通信網２０内のルータ４０１（図略）によって転送されながら前段ルータ４０１Ｆに送信される（Ｓ２０３）。
【００５５】
前段ルータ４０１Ｆにおいて、到達したＵＤＰパケットのＴＴＬの値は０となるため、前段ルータ４０１Ｆはデータグラムの時間超過によるエラーを示すＩＣＭＰパケットを生成する（Ｓ２０４）。前段ルータ４０１ＦはこのＩＣＭＰパケットを通信網２０を経由して中継装置３０に宛てて返信する（Ｓ２０５）。
【００５６】
中継装置３０はこのＩＣＭＰパケットを受信すると、これを機器４０に転送する（Ｓ２０６）。機器４０は中継装置３０からＩＣＭＰパケットを受信する（Ｓ２０７）。ＩＣＭＰパケットを受信すると、機器４０はさらにＵＤＰパケットの送信が必要であると判断し、ＴＴＬの値を一つ増加させた値であるβ（＝α＋１）としたＵＤＰパケットを生成し（Ｓ２０８）、これを中継装置３０に渡す（Ｓ２０９）。中継装置３０はこのＵＤＰパケットを通信網３０に送出する。ＵＤＰパケットは通信網２０内のルータ４０１（図示省略）によって転送されながら前段ルータ４０１Ｆに到達する（Ｓ２１０）。前段ルータ４０１ＦはこのＵＤＰパケットを端末１０に送信する（Ｓ２１１）。こうしてステップＳ２０８で生成されたＵＤＰパケットは、端末１０に正常に到達する。
【００５７】
ステップＳ２１１によってＵＤＰパケットを受信した端末１０は、このＵＤＰパケットに応答するＵＤＰパケットを生成し（Ｓ２１２）、これを前段ルータ４０１Ｆを含む通信網２０（図示省略）を経由して中継装置３０に宛てて送信する（Ｓ２１３，Ｓ２１４）。中継装置３０はこのＵＤＰパケットを受信し、ＵＤＰパケットを機器４０に転送する（Ｓ２１５）。
【００５８】
このＵＤＰパケットを受信した機器４０は、このＵＰＤパケットに対応するＴＴＬ＝βとするＵＤＰパケットは宛先である機器４０に到達し、一方その前に送信したＴＴＬ＝αとしたＵＰＤパケットは前段ルータ４０１に到達していると判断する。機器４０は、ＴＴＬ＝αとしたＵＰＤパケットに対して返信されたＩＣＭＰパケット（Ｓ２０７参照）に基づいて、前段ルータ４０１Ｆおよび前段ルータ４０１までのホップ数αを取得する。
【００５９】
図２に戻り、環境設定処理の説明を続ける。  
【００６０】
前段ルータ４０１Ｆと、ホップ数αを求める処理（Ｓ１０１）の後、本通信システム１，より詳しくは端末１０は、中継装置３０のＷＡＮ側アドレス（グローバルアドレス）を取得する処理（Ｓ１０２）を行う。なお、中継装置３０はSingle  IP  Address方式による中継を行うため、ＷＡＮ側アドレス（グローバルアドレス）は一つである。
【００６１】
図５は、端末１０が中継装置３０のＷＡＮ側アドレス（グローバルアドレス）を取得する処理の具体例を示すシーケンス図である。図５に示す具体例において、端末１０は、中継サーバ５０に機器４０のネットワーク境界である中継装置３０のＷＡＮ側アドレスを通知するよう要求するメッセージを生成する（Ｓ３０１）。端末１０はこのメッセージを前段ルータ４０１Ｆを介して通信網２０経由で中継サーバ５０に送信する（Ｓ３０２，Ｓ３０３）。このメッセージを受信した中継サーバ５０は、登録してある中継装置３０のＷＡＮ側アドレスをデータベースから抽出する（Ｓ３０４）。中継サーバ５０は、抽出したＷＡＮ側アドレスを通信網２０、前段ルータ４０１Ｆを介して端末１０に送信する（Ｓ３０５、Ｓ３０６）。端末１０は送信されたＷＡＮ側アドレスを受信し記憶する（Ｓ３０７）。
【００６２】
以上で、環境設定処理は終了する。環境設定処理を行うことにより、本通信システム１、より詳しくは機器４０は、前段ルータ４０１Ｆ及びホップ数αを取得して後に利用可能に記憶すると共に、本通信システム１、より詳しくは端末１０は、中継装置３０のＷＡＮ側アドレスを取得して後に利用可能に記憶する。
【００６３】
なお、この環境設定処理は、後述する通信処理の実行要求がユーザからなされたときに行うようにしてもよいし、ユーザの要求に関わりなく定期的に行われるようにしてもよい。また、ステップＳ１０１、Ｓ１０２は必ずしもこの順番に実行され無くともよく、ステップＳ１０２を実行した後にステップＳ１０１を実行するようにしても構わない。
【００６４】
［２．２．通信確立処理］
次に、本通信システム１により実行される通信確立処理について、図６、図７、図８を参照しながら説明する。この通信確立処理は、前述の環境設定処理により取得したホップ数α、及び中継装置３０のＷＡＮ側アドレス、すなわちグローバルアドレスを用いて、端末１０と機器４０とが中継サーバ５０を介さずに、ピアツーピア通信を確立ことを可能とするための処理である。
【００６５】
図６は通信確立処理の一例を示すフローチャート、図７，図８は図６に示す通信確立処理に対応するシーケンス図である。以下これらの図を参照しながら通信確立処理の説明を行う。
【００６６】
通信確立処理の実行において、図６に示すように、まず本通信システム１は端末１０から機器４０へ中継サーバ５０を介してアドレス、ポート番号を通知する（Ｓ４０１）。
【００６７】
ステップＳ４０１における具体的動作例を図７を参照しながら説明する。本通信システム１、より詳しくは端末１０は中継サーバ５０に対して、機器４０へ自己のアドレス、及びポート番号を通知するためのＵＤＰパケットを送信する（Ｓ５０１）。送出されたＵＤＰパケットは前段ルータ４０１Ｆを含む通信網２０（図７において図示省略）を介して中継サーバ５０に送信される（Ｓ５０２）。ＵＤＰパケットを受信した中継サーバ５０はこれを機器１０のネットワーク境界である中継装置３０に送信する（Ｓ５０３）。中継装置３０は受信したＵＤＰの宛先アドレス、ポート番号からこのＵＤＰパケットが機器４０宛であると判断し、ＵＤＰを機器４０に転送する（Ｓ５０４）。このＵＤＰパケットを受信した機器４０は、ＵＤＰパケットから端末１０のアドレス、ポート番号を取得する。
【００６８】
図６に戻り、フローチャートの説明を続ける。
【００６９】
ステップＳ４０１の後、本通信システム１は、ダミーのＵＤＰパケットであるダミーパケットを機器４０から中継装置４０を経由して端末１に宛てて送信させる（Ｓ４０２）。このステップＳ４０２の具体的内容を図７を参照しながら説明する。
【００７０】
ステップＳ４０２において、機器４０はダミーのＵＤＰパケット（以下、ダミーパケットと呼ぶ）を生成する（Ｓ５０５）。ダミーパケットは、前段ルータ４０１ＦにＩＣＭＰパケットを機器４０に返信させるためのパケットである。図９にダミーパケットの構成例を示す。
【００７１】
ダミーパケット９００は、ＩＰヘッダ９０１と、ＵＤＰヘッダ９０２と、データ９０３により構成される。ＩＰヘッダ９０１は送信元ＩＰアドレス９１１と、宛先ＩＰアドレス９１２とを含んでいる。ダミーパケット９００では、送信元ＩＰアドレス９１１として機器４０のＩＰアドレス「Ｌａ」が格納され、宛先ＩＰアドレス９１２として端末１０のＩＰアドレス「Ｄａ」が格納されている。ＵＤＰヘッダ９０２は送信元ポート番号９２１と、宛先ポート番号９２２と、チェックサム９２３を含んでいる。送信元ポート番号９２１として機器４０のポート番号「Ｌｐ」が格納され、宛先ポート番号９２２として端末１０のポート番号「Ｄｐ」が格納されている。
【００７２】
ダミーパケット９００に格納される宛先ＩＰアドレス９１２、宛先ポート番号９２２はステップＳ５０１乃至５０５によって端末１０から機器４０に通知されたものが使用される。
【００７３】
チェックサム９２３は、送信元ＩＰアドレス９１１と、宛先ＩＰアドレス９１２、送信元ポート番号９２１と、宛先ポート番号９２２、及びデータ９０３に基づいて計算されたものである。なお、ダミーパケット９００はデータを搬送するためのものではないので、データ９０３の内容はどのようなものでも構わない。
【００７４】
次に、機器４０は、このダミーパケット９００のＴＴＬの値を環境設定処理（Ｓ１０１）で取得したホップ数αに設定して、ダミーパケット９００を中継装置３０に送信する。これにより、前段ルータ４０１Ｆまでの経路を構成するルータのいずれがＮＡＴ機能を有していたとしても、ＵＤＰ  hole  punchingを実現できることになる。このようにしておかないと、ＮＡＴ機器が入れ子になっているようなインターネット接続環境(集合住宅など)では、ＵＤＰ  hole  punchingが失敗する。
【００７５】
ダミーパケット９００を受け取った中継装置３０はＮＡＴ機能により、ダミーパケット９００の送信元ＩＰアドレス９１１、送信元ポート番号９２１を自己のグローバルアドレスＧａと、この通信に割り当てられる自己のポート番号Ｇｐに付け替えて、書き換えされたダミーパケットとする。図１０に、書き換えられたダミーパケットの内容の一例を示す。中継装置３０が書き換えたダミーパケット１０００は、書き換え前のダミーパケット９００と同様に、ＩＰヘッダ１００１と、ＵＤＰヘッダ１００２と、データ１００３により構成される。ＩＰヘッダ１００１は送信元ＩＰアドレス１０１１と、宛先ＩＰアドレス１０１２とを含んでいる。送信元ＩＰアドレス１０１１として機器４０のＩＰアドレス「Ｌａ」を中継装置３０のＩＰアドレス「Ｇａ」に変更されて格納され、宛先ＩＰアドレス１０１２として端末１０のＩＰアドレス「Ｄａ」がそのまま格納されている。ＵＤＰヘッダ１００２は送信元ポート番号１０２１と、宛先ポート番号１０２２と、チェックサム１０２３を含んでいる。送信元ポート番号１０２１については、機器４０のポート番号「Ｌｐ」を中継装置３０の割り当てられたポート番号「Ｇｐ」に置き換えて格納され、宛先ポート番号１０２２については、端末１０のポート番号「Ｄｐ」がそのまま格納されている。
【００７６】
データ１００３はデータ９０３と同様のものである。
【００７７】
チェックサム１０２３は、送信元ＩＰアドレス１０１１と、宛先ＩＰアドレス１０１２、送信元ポート番号１０２１と、宛先ポート番号１０２２、及びデータ１００３に基づいて計算されたものであり、図中その値をＣｘと表記する。
【００７８】
図７に戻り、シーケンス図の説明を続ける。ダミーパケット９００を書き換えた中継装置３０は、この書き換えられたダミーパケット１０００を通信網２０（図７においては図示省略）を介して端末１０に宛てて送信する（Ｓ５０７）。
【００７９】
また、中継装置３０は、ダミーパケット１０００に対する返信を受信した場合に、その返信されたパケットを機器４０に転送するようにＮＡＴテーブル（変換テーブルとも言う）を生成する（Ｓ５０８）。図１１は、ステップＳ５０８において生成されるＮＡＴテーブルの例を示す図である。ＮＡＴテーブル１１００は、各レコード１１０１ごとに、送信元である機器４０のアドレス、その使用ポート番号、中継装置３０のＷＡＮ側アドレス（グローバルアドレス）、中継装置３０の使用ポート番号、宛先である端末１０のアドレス、その使用ポート番号がそれぞれ格納される。中継装置３０は、ＮＡＴテーブル１１０１を参照して、通信網２０（ＷＡＮ側）から受信したパケットを機器４０に転送する。
【００８０】
図６に戻り、フローチャートの説明を続ける。ステップＳ４０２を終了すると、本通信システム１の機器４０は、前段ルータ４０１ＦからＩＣＭＰパケットを受信する（Ｓ４０３）。以下、図７を参照しながらステップＳ４０３を具体的に説明する。ステップＳ５０７において送信されたダミーパケット１０００は、前段ルータ４０１Ｆに到達する。前段ルータ４０１Ｆに到達した時点でＴＴＬの値は０となり、その結果前段ルータ４０１Ｆはデータグラムの時間超過を示すＩＣＭＰパケットを生成する（Ｓ５０９）。図１２にこのＩＣＭＰパケットの内容を示す。ステップＳ５０９において生成されるＩＣＭＰパケット１２００は、このＩＣＭＰパケットを中継装置３０に返送するためのＩＰヘッダ１２０１と、このパケットがＩＣＭＰパケットであることを示すＩＣＭＰヘッダ１２０２と、ＩＣＭＰデータ１２０３とを有している。
【００８１】
ＩＣＭＰのエラータイプがデータグラムの時間超過のエラーである時は、ＩＣＭＰデータ１２０３内に、送信されたパケット、すなわちこの場合はダミーパケット１０００の先頭(ＩＰヘッダとＩＰデータグラムの先頭６４ビット）がそのまま代入される規約になっている。前段ルータ４０１Ｆが受信したのは、ＵＤＰパケットであるダミーパケット１０００であるので、このダミーパケット１０００のＩＰデータグラムの先頭６４ビットは、ＵＤＰヘッダの送信元ポート番号(１６ビット)、送信先ポート番号(１６ビット)、データ長(１６ビット)、チェックサム(１６ビット)が格納される。したがって、このＩＣＭＰデータ内には、元のダミーパケット１０００の送信元ＩＰアドレス１０１１（＝Ｇａ），宛先ＩＰアドレス１０１２（＝Ｄａ）、送信元ポート番号１０２１（＝Ｇｐ）、宛先ポート番号１０２２（＝Ｄｐ）、ＵＤＰチェックサム１０２３（＝Ｃｘ）が格納される。
【００８２】
このＵＤＰチェックサム１０２３(UCS)は、ＵＤＰ擬似ヘッダとＵＤＰパケット全体を利用して計算されるものであり、送信元アドレス（SrcA）、送信元ポート番号（SrcP）、送信先アドレス（DstA）、送信先ポート番号（DstP）の関数ｇとして考えることができる。すなわち：
ＵＣＳ  ＝ｇ（SrcA、SrcP、DstA、DstP）
と表すことができる。
【００８３】
前述の前段ルータ４０１Ｆが受信したパケット内のＵＤＰヘッダ内のＵＤＰチェックサム１０２３をＣｘとすると、Ｃｘは以下のようにして定まる。
Ｃｘ＝ｇ（Ga、Gp、Da、Dp）
図７に戻り、シーケンス図の説明を続ける。前段ルータ４０１Ｆは、ステップＳ５０９にて生成したＩＣＭＰパケット１２００を中継装置３０に宛てて送信する（Ｓ５１０）。このＩＣＭＰパケット１２００を受信した中継装置３０は、ステップＳ５０８において生成したＮＡＴテーブル１１００を参照し、このＩＣＭＰパケット１２００の送信先ＩＰアドレス、送信先ポート番号を書き換えた上で、機器４０に送信する（Ｓ５１１）。図１３に、中継装置３０によって書き換えられたＩＣＭＰパケットを示す。書き換えれたＩＣＭＰパケット１３００は、ＩＣＭＰパケット１２００と同様の構成であるが、ＩＣＭＰデータ１２０３として格納されている送信元ＩＰアドレス１０１１は中継装置３０によりＮＡＴテーブル１１００に基づいてＧａからＬａに書き換えられる。さらに送信元ポート番号１０２１も中継装置３０によりＮＡＴテーブル１１００に基づいてＧｐからＬｐに書き換えられる。
【００８４】
図７に戻り、シーケンス図の説明を続ける。中継装置３０は、書き換えたＩＣＭＰパケットを機器４０に宛てて送信する（Ｓ５１１）。これにより、書き換えられたＩＣＭＰパケット１３００は機器４０に到達し、機器４０は前段ルータ４０１Ｆからダミーパケット９００の応答であるＩＣＭＰパケット１３００を受け取ることとなる（図６，Ｓ４０３）。
【００８５】
図６に戻り、通信確立処理の説明を続ける。ステップＳ４０３の後に、本通信システム１、より詳しくは機器４０は、受け取ったＩＣＭＰパケット１３００を用いて、中継装置３０がダミーパケット１０００の送信に用いているＷＡＮ側ポート番号、すなわち送信元ポート番号１０１１であるＧｐを算出する（Ｓ５１２）。
【００８６】
書き換えられたＩＣＭＰパケット１３００のＩＣＭＰデータ１０２３として格納されている送信元ＩＰアドレス１０１１（＝Ｌａ）、及び送信元ポート番号１０１２は、中継装置３０が変換したものである。しかし、ＵＤＰチェックサム１０２３は、前段ルータ４０１Ｆが設定した値Ｃｘそのままである。なぜなら、ＵＤＰチェックサム１０２３は、ＵＤＰ擬似ヘッダおよびＵＤＰパケット全体（ＵＤＰデータを含む）から算出するものであるが、中継装置３０は、すでにＵＤＰパケットを持っていないため、ＵＤＰチェックサム１０２３を再計算できない。そのため、中継装置３０はそのためＵＤＰチェックサム１０２３を受け取った値のままＩＣＭＰデータ１０２３に格納する。その結果、機器４０は、ＩＣＭＰパケット１３００から前段ルータ４０１Ｆが設定したＣｘを取得することができる。
このＣｘを用いると、端末はＧｐを算出することができる。
すなわち、Ｃｘは、以下の式で表される。
Ｃｘ＝ｇ（Ga、Gp、Da、Dp）
ここで、Ga、Da、Dpの値を端末はすでに知っているため、上式を満たすGpは
ただ1つに決定できるからである。
【００８７】
すなわち、機器４０は、機器４０が中継装置３０介して端末１０と通信を行う場合に使用しているＷＡＮ側アドレスＧａを環境設定処理のステップＳ１０２の実行によって取得し、且つＷＡＮ側ポート番号Ｇｐを通信確立処理のステップＳ４０４の実行により取得する。
【００８８】
図６に戻り、通信確立処理の説明を続ける。中継装置３０のＷＡＮ側ポート番号であるＧｐを算出した後（Ｓ４０４）、機器４０は、機器４０が中継装置３０介して端末１０と通信を行う場合に使用しているＷＡＮ側アドレスＧａ及びＷＡＮ側ポート番号Ｇｐを、中継サーバ５０を介して端末１０に送信する（Ｓ４０５）。図７を参照してこのステップＳ４０５の具体例を説明する。
【００８９】
機器４０は、中継装置３０を介して端末１０と通信を行う場合に使用しているＷＡＮ側アドレスＧａ及びＷＡＮ側ポート番号Ｇｐを端末１０に通知するメッセージ或いはパケットを生成し（Ｓ５１３）、これを中継サーバ５０に宛てて送信するよう中継装置３０に渡す（Ｓ５１４）。中継装置３０はこのメッセージ或いはパケットを通信網２０（図７において図示省略）を介して中継サーバ５０に宛てて送信する（Ｓ５１５）。中継サーバ５０は、端末１０に宛ててこのメッセージ又はパケットを通信網２０（図７において図示省略）に送出する（Ｓ５１６）。通信網２０に含まれる前段ルータ４０１Ｆは、中継サーバ５０から送出されたメッセージ又はパケットを受け取り、これを端末１０に転送する（Ｓ５１７）。端末１０は、このメッセージ又はパケットを受け取り、ＷＡＮ側アドレスＧａ及びＷＡＮ側ポート番号Ｇｐを取得する（Ｓ５１８）。
【００９０】
図６に戻り、通信確立処理の説明を続ける。ステップＳ４０５の後、本通信システム１、より詳しくは端末１０は、ステップＳ４０５によって受け取ったＷＡＮ側アドレスＧａ、ＷＡＮ側ポート番号Ｇｐを機器４０に宛てて送信する場合に使用するアドレス、及びポート番号として記憶する（Ｓ４０６）。
【００９１】
以上で、機器４０と端末１０との間で中継装置３０を介してピアツーピア通信を確立することができるようになる。すなわち、図８に示すように、端末１０がステップＳ５１８において記憶したＷＡＮ側アドレスＧａ及びＷＡＮ側ポート番号Ｇｐを宛先ＩＰアドレス及び宛先ポート番号として使用してＵＤＰパケットを生成する（Ｓ６０１）。端末１０は、このＵＤＰパケットを通信網２０を介して中継装置３０に宛てて送出すると、このＵＤＰパケットは前段ルータ４０１Ｆを経由して中継装置３０に到達する（Ｓ６０２，Ｓ６０３）。中継装置３０は、このＵＤＰパケットを処理するため、ステップＳ５０８において生成されたＮＡＴテーブル１１００を参照する（Ｓ６０４）。中継装置３０が受け取ったＵＤＰパケットにおいて宛先ＩＰアドレスはＧａであり、宛先ポート番号はＧｐであり、送信元ＩＰアドレスがＤａ、送信元ポート番号がＤｐであるので、中継装置３０はこのＵＤＰパケットはダミーパケット１０００に対する応答であって機器４０宛てであると判定し、そのようにアドレス変換を行ってＵＤＰパケットを機器４０に転送する（Ｓ６０５）。その結果、機器４０は中継サーバ５０による中継によることなく、中継装置３０を経由して端末１０からのパケットを受け取ることができる（Ｓ６０６）。
【００９２】
このように、本発明にかかる通信システム、並びに通信方法によれば、ＳＴＵＮプロトコルにより対称型ＮＡＴと判定された中継装置３０を経由する場合であっても、機器４０とピアツーピア通信を確立することができる。
【００９３】
［３．まとめ］
本発明によれば、特定の通信環境の条件を満たしていれば、Address  and  Port  Dependent  Mappingの状態にある通信でも必ずＵＤＰ  Hole  Punchingを利用可能とし、ピアツーピア接続を成功させることができる。
【００９４】
本発明により、携帯電話などのグローバルアドレスをもつ機器からＮＡＴ内に存在する家庭内のディジタル家電にピアツーピアで接続することができる。その際、中継サーバはハンドシェイク時のみ必要となるが、いったん接続が確立した後は、中継サーバは不要となるために運用コストは低く抑えられる。また、従来に比較して、多くの家庭のインターネット接続環境で利用可能である。
【図面の簡単な説明】
【００９５】
【図１】本発明にかかる通信システムの構成例を示すブロック図
【図２】本通信システムが実行する環境設定処理の一例を示すフローチャート
【図３】前段ルータ、端末までのホップ数を示す図
【図４】図２のフローチャートに対応するシーケンス図
【図５】図４に続くシーケンス図
【図６】本通信システムが実行する通信確立処理の一例を示すフローチャート
【図７】図６に対応するシーケンス図
【図８】図７に続くシーケンス図
【図９】ダミーパケットの構成例を示す図
【図１０】中継装置によって書き換えられたダミーパケットの構成例を示す図
【図１１】ダミーパケットを受け取った際に中継装置が生成するＮＡＴテーブルの例を示す図
【図１２】前段ルータが生成するＩＣＭＰパケットの例を示す図
【図１３】中継装置によって書き換えられたダミーパケットの構成例を示す図
【図１４】従来のＮＡＴの概念を説明する図
【図１５】従来のＵＤＰ  Hole  Punchingを説明する図
【符号の説明】
【００９６】
１０    …  機器
２０    …  通信網
３０    …  中継装置
４０    …  端末
５０    …  中継サーバ
【図１】
2008147738.tif 000003
【図２】
2008147738.tif 000004
【図３】
2008147738.tif 000005
【図４】
2008147738.tif 000006
【図５】
2008147738.tif 000007
【図６】
2008147738.tif 000008
【図７】
2008147738.tif 000009
【図８】
2008147738.tif 000010
【図９】
2008147738.tif 000011
【図１０】
2008147738.tif 000012
【図１１】
2008147738.tif 000013
【図１２】
2008147738.tif 000014
【図１３】
2008147738.tif 000015
【図１４】
2008147738.tif 000016
【図１５】
2008147738.tif 000017