(57)【要約】【課題】  ＮＡＴ装置の配下にある端末同士がＴＣＰによる通信を行うことを可能にする技術を提供する。【解決手段】  第１のＮＡＴ装置の内側から、第２のＮＡＴ装置の内側にある他の端末装置と通信を行う機能を有する端末装置において、前記他の端末装置に、第１のＮＡＴ装置により付与される第１の外部ポート番号を送信する手段と、前記他の端末装置から、第２のＮＡＴ装置により付与される第２の外部ポート番号を受信する手段と、第１の外部ポート番号を送信先ポート番号として含み、前記他の端末装置のアプリケーションにより使用される内部ポート番号を送信元ポート番号として含むパケットを、前記他の端末装置から受信する手段と、前記送信元ポート番号を、第２の外部ポート番号に変換し、前記送信先ポート番号を、前記端末装置のアプリケーションにより使用される内部ポート番号に変換する手段とを備える。【選択図】  図２
2005260715.tif 000002
【特許請求の範囲】
【請求項１】
第１のＮＡＴ装置の内側から、第２のＮＡＴ装置の内側にある他の端末装置と通信を行う機能を有する端末装置であって、
前記他の端末装置に、第１のＮＡＴ装置により付与される第１の外部ポート番号を送信する手段と、
前記他の端末装置から、第２のＮＡＴ装置により付与される第２の外部ポート番号を受信する手段と、
第１の外部ポート番号を送信先ポート番号として含み、前記他の端末装置のアプリケーションにより使用される内部ポート番号を送信元ポート番号として含むパケットを、前記他の端末装置から受信する手段と、
前記送信元ポート番号を、第２の外部ポート番号に変換し、前記送信先ポート番号を、前記端末装置のアプリケーションにより使用される内部ポート番号に変換する手段と
を備えたことを特徴とする端末装置。
【請求項２】
第１の外部ポート番号を、第１のＮＡＴ装置の外側に備えられた外部サーバから取得する手段を備えた請求項１に記載の端末装置。
【請求項３】
前記端末装置から送信されたパケットが、第２のＮＡＴ装置を通過して前記他の端末装置に届くようにするためのＮＡＴ通過手段を備えた請求項１に記載の端末装置。
【請求項４】
前記ＮＡＴ通過手段は、パケットをカプセリングする手段と、カプセリングされたパケットを第２のＮＡＴ装置に向けて送信する手段とを有する請求項３に記載の端末装置。
【請求項５】
前記各ポート番号は、ＴＣＰ通信用のポート番号である請求項１ないし４のうちいずれか１項に記載の端末装置。
【請求項６】
前記各ポート番号はＴＣＰ通信用のポート番号であり、前記カプセリングは、ＴＣＰヘッダを含むパケットに、ＵＤＰ通信用の外部ポート番号を含むＵＤＰヘッダを付加することにより行う請求項４に記載の端末装置。
【請求項７】
前記カプセリングされたパケットの送信先アドレス及び前記ＵＤＰヘッダに含まれる送信先外部ポート番号を中継サーバを介して前記他の端末装置から受信する手段と、
前記ＵＤＰヘッダに含まれる送信元の外部ポート番号をＳＴＵＮ装置から受信する手段と
を備えた請求項６に記載の端末装置。
【請求項８】
第１のＮＡＴ装置の内側から、第２のＮＡＴ装置の内側にある他の端末装置と通信を行ために使用されるコンピュータを、
前記他の端末装置に、第１のＮＡＴ装置により付与される第１の外部ポート番号を送信する手段、
前記他の端末装置から、第２のＮＡＴ装置により付与される第２の外部ポート番号を受信する手段、
第１の外部ポート番号を送信先ポート番号として含み、前記他の端末装置のアプリケーションにより使用される内部ポート番号を送信元ポート番号として含むパケットを、前記他の端末装置から受信する手段、
前記送信元ポート番号を、第２の外部ポート番号に変換し、前記送信先ポート番号を、前記コンピュータのアプリケーションにより使用される内部ポート番号に変換する手段
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＴ（Network Address Translation）装置の配下にある端末同士がＮＡＴ装置を通過して通信を行うためのＮＡＴ透過技術に関するものである。
【背景技術】
【０００２】
プライベートＩＰアドレスとグローバルＩＰアドレスとを相互に変換することにより、プライベートＩＰアドレスのみが割り当てられた端末からインターネットへのアクセスを可能とするＮＡＴ装置が普及している。
【０００３】
ＮＡＴ装置にはその配下にある端末に対するＮＡＴ装置の外側からの不正なアクセスを防止できるという利点がある反面、ＮＡＴ装置の外側からＮＡＴ装置配下の端末へのアクセスが制限されることから、一般的にＮＡＴ装置を介した端末同士のピアツーピア通信ができないという問題がある。
【０００４】
この問題を解決するために、ＵＰｎＰ（Universal Plug and Play）やＳＴＵＮ（Simple Traversal of UDP through NATs,RFC3489）等のＮＡＴ透過技術が提案されている。
【０００５】
ここで、ＳＴＵＮを用いた場合におけるＮＡＴ装置配下の端末間でのＵＤＰデータチャネルの構築方法について図１を用いて説明する。
【０００６】
図１に示す例では、ＮＡＴ装置１、２の配下にある端末３、４間でＵＤＰデータチャネルを構築する。また、端末３側には、ＮＡＴ装置１により変換されたグローバルなＩＰアドレスとポート番号を端末３に返すＳＴＵＮサーバ５が備えられ、同様に端末４側にはＳＴＵＮサーバ６が備えられている。また、端末３、４間での情報交換は、ＳＩＰプロキシサーバ７を介して行う。
【０００７】
なお、本明細書では、ＮＡＴ装置配下の端末のプライベートＩＰアドレスを内部ＩＰアドレスもしくは内部アドレス、当該端末で使用されるアプリケーションが識別するポート番号を内部ポート番号と呼び、ＮＡＴ装置により変換された後のグローバルＩＰアドレスを外部ＩＰアドレスもしくは外部アドレス、ポート番号を外部ポート番号と呼ぶことにする。また、図面中、ＴＣＰ用のポート番号をＴＣＰポート、ＵＤＰ用のポート番号をＵＤＰポート、送信元を“ＳＲＣ”、送信先を“ＤＳＴ”と記す場合がある。
【０００８】
まず、端末３は、ＮＡＴ装置１により変換された後の外部ＩＰアドレスｙと外部ポート番号ｙとをＳＴＵＮサーバ５を利用して取得する（ステップＳ１）。端末４の側も同様である。
【０００９】
そして、端末３、４間で、ＳＩＰのＩＮＶＩＴＥセッションにより、外部ＩＰアドレスと外部ポート番号とを互いに通知する（ステップＳ２）。その後、端末３は、ＵＤＰパケットを、送信先ＩＰアドレスを端末４側の外部アドレスｂとし、送信先ポート番号を端末４側の外部ポート番号ｂとして送信する（ステップＳ３）。ＮＡＴ装置２には、送信元ＩＰアドレスｙ、送信元ポート番号ｙとして当該ＵＤＰパケットが到達するが、ＮＡＴ装置２では、送信元ＩＰアドレスｙ、送信元ポート番号ｙのパケットを通過させることがテーブルに登録されていないため、当該ＵＤＰパケットは廃棄される。
【００１０】
一方、端末４側からは、ＵＤＰパケットを、送信先ＩＰアドレスをｙ、送信先ポート番号をｙとして送信する。ＮＡＴ装置１には、送信元ＩＰアドレスｂ、送信元ポート番号ｂとして当該ＵＤＰパケットが到達するが、このときには、ステップＳ３において通過したＵＤＰパケットにより、送信先ＩＰアドレスｂ、送信先ポート番号ｂがＮＡＴ装置１のテーブルに登録されているため、端末４側から送信された当該ＵＤＰパケットはＮＡＴ装置１を通過して、端末３に到達する。同様にして、以降の端末３から端末４へのＵＤＰパケットは、ＮＡＴ装置２を通過して、端末４に到達する。以降のＵＤＰ通信は双方向ともＮＡＴ装置を超えることができる。このように、ＵＤＰであればＮＡＴ装置を介しての端末同士の通信ができる。
【００１１】
ＮＡＴ透過に関する他の従来技術として、IPsec NAT-Traversalと呼ばれるＵＤＰカプセル化を用いた技術がある（特許文献１参照）。この技術は、送信元でＵＤＰパケットをＩＰｓｅｃ化した後に、ダミーのＵＤＰヘッダ(送信元の内部ポート番号、送信先のポート番号)を挿入し、受信側において、そのダミーのＵＤＰヘッダがＮＡＴ装置により変換された変換後のＵＤＰヘッダを参照することにより、送信元の外部ポート番号を取得し、ＩＰｓｅｃ化されていたＵＤＰパケットのＵＤＰヘッダの送信元内部ポート番号を当該外部ポート番号に変換するというものである。これによりアプリケーションはＩＰｓｅｃによる暗号化とＮＡＴを意識することなくＵＤＰ通信を行うことができる。
【特許文献１】特許第３４５７６４５号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上記の従来技術によるとＵＤＰのＮＡＴ透過は実現できるが、ＴＣＰのＮＡＴ透過を行うことができないという問題がある。
【００１３】
ＴＣＰでは、ＳＹＮパケット、ＳＹＮ／ＡＣＫパケット等を用い、互いにシーケンス番号を交換することにより接続の確立を行う。従って、図１に示したＳＴＵＮを用いる方法のように互いが独立にパケットを相手に送信する方法では、ＮＡＴ装置等が正常なＴＣＰ通信が行われていないと判断する場合があるので、ＴＣＰのＮＡＴ透過を実現することができない場合がある。  
また、IPsec NAT-Traversalの技術においてＴＣＰパケットをＵＤＰカプセル化することによりＴＣＰのＮＡＴ透過を行うことも考えられるが、IPsec NAT-Traversal技術では、ＮＡＴ装置が変換するのは、ＵＤＰカプセル化で付けられたＵＤＰヘッダにおけるポート番号であることから、受信側では、ＵＤＰカプセル内部のＴＣＰヘッダ内の送信元の内部ポート番号をどの外部ポート番号に変換すればよいか判断できない。従って、IPsec NAT-Traversalの従来のＵＤＰカプセル化技術では、ＴＣＰのＮＡＴ透過は実現できない。
【００１４】
更に、ＵＰｎＰを用いて端末がＮＡＴ装置に直接働きかけることによりＴＣＰのＮＡＴ透過を実現することも考えられるが、両端の端末双方の側のＮＡＴ装置がＵＰｎＰに対応する必要があるという問題がある。また、端末とＮＡＴ装置が同一サブネット内に存在しない場合や、多重にＮＡＴ装置を介する場合には、ＵＰｎＰによるＴＣＰのＮＡＴ透過を実現することはできない。  
本発明は上記の点に鑑みてなされたものであり、ＮＡＴ装置の配下にある端末同士がＴＣＰによる通信を行うことを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記の課題は、第１のＮＡＴ装置の内側から、第２のＮＡＴ装置の内側にある他の端末装置と通信を行う機能を有する端末装置であって、前記他の端末装置に、第１のＮＡＴ装置により付与される第１の外部ポート番号を送信する手段と、前記他の端末装置から、第２のＮＡＴ装置により付与される第２の外部ポート番号を受信する手段と、第１の外部ポート番号を送信先ポート番号として含み、前記他の端末装置のアプリケーションにより使用される内部ポート番号を送信元ポート番号として含むパケットを、前記他の端末装置から受信する手段と、前記送信元ポート番号を、第２の外部ポート番号に変換し、前記送信先ポート番号を、前記端末装置のアプリケーションにより使用される内部ポート番号に変換する手段とを備えた端末装置により解決される。
【００１６】
本発明によれば、端末装置が通信相手装置のＴＣＰ用外部ポート番号を知ることができるので、それを用いて受信パケット内のＴＣＰヘッダの内部ポート番号を変換できる。また、通信相手装置は、当該端末装置が通知するＴＣＰ用の外部ポート番号を取得するので、同様の変換を行うことができる。従って、端末装置は、ＮＡＴ装置の存在を意識することなく通信相手装置とＴＣＰ通信を行うことができる。
【００１７】
前記端末装置は、第１の外部ポート番号を、第１のＮＡＴ装置の外側に備えられた外部サーバから取得することができる。例えば、端末装置は当該外部サーバに対してダミーのＴＣＰ接続をし、外部サーバから、第１のＮＡＴ装置により付与されたＴＣＰ用の外部ポート番号を取得することができる。
【００１８】
また、前記端末装置は、前記端末装置から送信されたパケットが、第２のＮＡＴ装置を通過して前記他の端末装置に届くようにするためのＮＡＴ通過手段を備える。
【００１９】
そして、前記ＮＡＴ通過手段は、パケットをカプセリングする手段と、カプセリングされたパケットを第２のＮＡＴ装置に向けて送信する手段とを有する。
【００２０】
ＮＡＴ透過手段は通信相手の装置も備えており、前記端末装置は、例えばＴＣＰヘッダを有するパケットをＵＤＰヘッダでカプセリングしたパケットを受信する。
【００２１】
前記端末装置は、前記カプセリングされたパケットの送信先アドレス及び前記ＵＤＰヘッダに含まれる送信先外部ポート番号を中継サーバを介して前記他の端末装置から受信し、前記ＵＤＰヘッダに含まれる送信元の外部ポート番号をＳＴＵＮ装置から受信することができる。中継サーバとして例えばＳＩＰプロキシサーバを使用できる。
【発明の効果】
【００２２】
本発明によれば、ＮＡＴ装置の配下にある端末同士で一般的なアプリケーションによるＴＣＰ通信が可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照して本発明の実施の形態について説明する。まず、図２を用いて、本発明に係るＮＡＴ透過技術の原理について説明する。
【００２４】
図２に示すように、端末とＴＣＰ接続し、ＴＣＰの外部ポート番号を端末に通知する機能を有する外部サーバ１０を備える。
【００２５】
そして、まず、端末１１が外部サーバ１０に対して（ダミーの）ＴＣＰ接続を行う。このとき、端末１１から送信されるＴＣＰパケットのＴＣＰヘッダ内の送信元の内部ポート番号は、ＮＡＴ装置１２により外部ポート番号ｙｙに変換されるが、外部サーバ１０は、その外部ポート番号ｙｙを端末１１に返答する。これにより、端末１１はＴＣＰヘッダの送信元外部ポート番号ｙｙを取得する。端末１３も同様にして外部ポート番号ｂｂを取得する。
【００２６】
そして、端末１１と端末１３との間でＳＩＰ等を用いることにより、取得したＴＣＰ通信用の送信元外部ポート番号を交換する。これにより、端末１１は、端末１３側の送信元外部ポート番号ｂｂを取得し、端末１３は、端末１１側の送信元外部ポート番号ｙｙを取得する。
【００２７】
その後、ＴＣＰパケットをＵＤＰカプセル化することにより、ＮＡＴ装置１２、１４を透過してパケットを互いの端末が送受信する。この場合のＮＡＴ透過は図１に示した方法を用いて行うことができる。なお、図２には、ＵＤＰパケットのＮＡＴ透過のための構成（ＳＴＵＮサーバ等）及びシーケンスは示していない。
【００２８】
図２に示すように、端末１１から、端末１３に、ＵＤＰカプセル化したＴＣＰパケットを送信する場合を例にとると、端末１１は、ＴＣＰ用の送信元内部ポート番号ｘ、ＴＣＰ用の送信先外部ポート番号ｂｂを含む情報をＴＣＰヘッダとして有するＴＣＰパケットをＵＤＰカプセル化したＵＤＰパケットを端末１３に対して送信する。
【００２９】
そして、端末１３では、受信したＵＤＰカプセル化パケットの中身を取り出し、そのＴＣＰヘッダ内の内部ポート番号ｘを、ＴＣＰ用の外部ポート番号ｙｙに書き換える。なお、内部ＩＰアドレスｘはＮＡＴ装置１２により外部ＩＰアドレスｙに変換され、外部ＩＰアドレスｂはＮＡＴ装置１４により、内部ＩＰアドレスａに変換されている。
【００３０】
このような変換を行うことにより、端末１１、１３側のアプリケーションは、グローバルなアドレス／ポートを持った通信相手とＴＣＰ通信を行う場合と同様にして、ＮＡＴ装置配下にある端末とＴＣＰ通信を行うことができる。なお、ＵＤＰカプセル内部のＴＣＰパケットは、必要に応じてＩＰｓｅｃによる暗号化をすることができる。
【００３１】
次に、図３を参照して本実施の形態をより詳細に説明する。
【００３２】
本実施の形態では、外部サーバとしてＳＴＵＮサーバと図２に示した外部サーバの両方の機能を持つ外部サーバ２０、２１を備えている。また、端末２２、端末２３間でＳＩＰ通信を行うためのＳＩＰプロキシサーバ２４を備えている。ＮＡＴ装置２５配下に端末２２があり、ＮＡＴ装置２６配下に端末２３がある。
【００３３】
まず、端末２２と端末２３の各々において、ＵＤＰカプセル化で用いるための外部ＩＰアドレスとＵＤＰ用の外部ポート番号を外部サーバから取得する（ステップＳ１１）。例えば、端末２２は外部ＩＰアドレスｙとＵＤＰ用の外部ポート番号ｙを外部サーバ２０から取得する。端末２３側も同様である。
【００３４】
そして、図２で説明したように、端末２２は外部サーバ２０にダミーのＴＣＰ接続を行い、ＴＣＰ用の外部ポート番号ｙｙを外部サーバ２０から取得する。端末２３も同様にしてＴＣＰ用の外部ポート番号ｂｂを取得する（ステップＳ１２）。
【００３５】
その後、各端末は、ＵＤＰトンネル用の（内部ポート番号、外部ＩＰアドレス、外部ポート番号）と、端末間でのＴＣＰ接続用の外部ポート番号をＳＩＰにより互いに相手の端末に通知する（ステップＳ１３）。
【００３６】
その後、図１に示した原理と同様にして、各端末から、送信元内部ポート番号、送信先外部ポート番号をＵＤＰヘッダとして持つＵＤＰパケットを相手端末に送信しあうことにより、ＵＤＰパケットのＮＡＴ透過を行う（ステップＳ１４）。すなわち、ＵＤＰトンネルを構築する。これにより、以降のシーケンスにおいて、端末から送信されたＵＤＰカプセル化されたパケットは、ＮＡＴ透過して相手の端末に到達することができる。
【００３７】
各端末は、ＴＣＰ用の送信先外部ポート番号を取得しているので、外部ポート番号をＴＣＰヘッダ内に含むＴＣＰパケットを生成することが可能となる。端末内で生成されたＴＣＰパケットはＩＰｓｅｃにより暗号化される。なお、ＩＰｓｅｃによる暗号化を行わなくてもよい。  
図３の例では、端末２３は、自身のアプリケーションが使用するＴＣＰ用の送信元内部ポート番号ｋと、送信先外部ポート番号ｙｙとを含むＴＣＰヘッダを付したＴＣＰパケットを生成し、それをＩＰｓｅｃ暗号化したものを、ＵＤＰカプセル化して端末２２側に送信する（ステップＳ１５）。
【００３８】
その後、端末２２側では、ＴＣＰパケットが取り出され、復号化され、送信元の内部ポート番号ｋが、それに対応する外部ポート番号であるｂｂに変換され、送信先の外部ポート番号ｙｙが、端末２２の内部ポート番号ｊに変換される（ステップＳ１６）。
【００３９】
なお、端末２３は、外部ポート番号ｂｂに対応する内部ポート番号としてｋを使用することを、ステップＳ１５の前に端末２２に通知しておいてもよい。また、端末２２は、外部ポート番号ｙｙに対応する内部ポート番号としてｊを使用することを、端末２３に通知しておいてもよい。
【００４０】
ステップＳ１６において変換されたＴＣＰパケットのヘッダに基づき、データが端末２２内のアプリケーションに渡される。アプリケーションが端末２３に向けてＴＣＰによりデータを送信する際には、ソケットに書き込まれた情報に基づき、送信元内部ポート番号をｊ、送信先外部ポート番号をｂｂとするＴＣＰパケットが生成され、暗号化、及びＵＤＰカプセル化されてＵＤＰパケットが端末２３側に送信される（ステップＳ１７）。
【００４１】
端末２３側では、端末２２の場合と同様にして、送信元内部ポート番号ｊが送信元外部ポート番号ｙｙに変換され、送信先外部ポート番号ｂｂが送信先内部ポート番号ｋに変換され（ステップＳ１８）、そのヘッダ情報に基づき、データがアプリケーションに渡される。
【００４２】
従って、端末２２、２３アプリケーションはＮＡＴ装置を意識することなくＴＣＰ通信を行うことができる。
【００４３】
図３に示した構成において、ダミーのＴＣＰ接続の相手先はＳＴＵＮサーバ機能を含む外部サーバでなくともよい。例えば、ＳＩＰプロキシサーバ２４と認証連携したダミー接続専用のサーバを用いてもよい。また、外部サーバは、物理的に１つでもよく、また、複数のサーバでロードバランスしてもよい。また、端末間でのアドレス／ポート番号情報の交換は、ＳＩＰ以外の方法を用いて行うこともできる。
【００４４】
端末同士がＴＣＰ接続している間、ＴＣＰ通信用の外部ポート番号を確保するために、各端末はダミーのＴＣＰ接続を保持しておく。また、ＮＡＴ装置のコネクション保持のタイムアウトを回避するために、端末は数分間隔でＴＣＰキープアライブパケットを外部サーバに送信してもよい。
【００４５】
さて、端末間で複数のＴＣＰコネクションを張る場合、そのコネクションの数だけダミーのＴＣＰ接続を行う。なお、トンネルに使用するＵＤＰセッションは１つだけでよい。しかし、ＷｅｂブラウザのようなＴＣＰクライアントは、自動的に複数のＴＣＰコネクションを張る場合が多く、このような場合は、ＴＣＰコネクションの数を予め知ることはできない。従って、このような場合は、ＳＩＰのＩＮＶＩＴＥセッションではＵＤＰトンネルの確立だけをネゴシエーションしておき、実際にアプリケーションがＴＣＰソケットを開いたタイミングで通信スタックが自発的にダミーＴＣＰ接続を行い、ＵＤＰトンネルを通して、予約されたＴＣＰのポート番号を相手に通知するようにすればよい。
【００４６】
次に、ＴＣＰのＮＡＴ透過の別の例を図４〜図８を用いてステップ毎に説明する。
【００４７】
図４〜図８の例では、ＳＩＰサーバ３１、３２がＳＴＵＮサーバ機能を有している。また、端末３３（例えばビデオ装置）と端末３４（例えば携帯端末）が通信を行う場合を示しており、端末３３が端末３４に対してアクティブにＴＣＰ接続を行う例である。また、端末３３はＮＡＴ装置３５の配下にあり、端末３４はＮＡＴ装置３６の配下にある。
【００４８】
図４に示すように、ステップＳ２１において、各端末は端末同士の通信に先立ち、ＳＩＰサーバ間でシグナリングチャネルを確立しておく。このとき、各端末は、ＮＡＴ装置が付与するＵＤＰ用の外部ＩＰアドレスと外部ポート番号をＳＩＰサーバから取得する。
【００４９】
続いて、図５のステップＳ２２において、端末３３がＩＮＶＩＴＥセッションを開始する。ＩＮＶＩＴＥメッセージには、ＵＤＰトンネル構築及びＵＤＰカプセル化で使用する外部ＩＰアドレスＢと外部ポート番号ｂ、及びメディアの情報（図５の例では、ＴＣＰアクティブ接続）を含める。ＴＣＰ接続を受け入れる側である端末３４は、外部サーバ３７にダミーＴＣＰ接続し、外部サーバ３７からＴＣＰ接続用の外部ポート番号ｙを取得する。そして、ＩＮＶＩＴＥの応答メッセージに、ＵＤＰトンネル用の外部ＩＰアドレスＤと外部ポート番号ｄ及びＴＣＰ接続用の外部ポート番号ｙを含めて端末３３に通知する。
【００５０】
図６のステップＳ２３において、端末３３、３４は、取得したＵＤＰ用の送信先の外部ＩＰアドレスと外部ポート番号を含むＵＤＰパケットを互いに送信しあうことで、ＮＡＴ装置３５、３６を超えてＵＤＰトンネルを確立する。なお、ＴＣＰ用の外部ポート番号を予約しておくため、端末３４の外部サーバ３７に対するダミーのＴＣＰ接続は維持しておく。
【００５１】
図７のステップＳ２４において、端末３３においてクライアントアプリケーションがＴＣＰ通信のためのソケットを開くタイミングで、端末３３は外部サーバ３８へダミーのＴＣＰ接続を行い、外部サーバ３８から返答されたＴＣＰ通信用の外部ポート番号ｘをＵＤＰトンネルを通して接続先の端末３４に通知する。更に、各端末のアプリケーションがＴＣＰ通信のために使用する内部ポート番号を互いに交換する。すなわち、端末３３は端末３４に対して内部ポート番号ｚを通知し、端末３４は端末３３に対して内部ポート番号８０を通知する。これにより端末３３は、端末３４から送信されたＴＣＰパケットの内部ポート番号８０を外部ポート番号ｙに変換すればよいことを認識し、端末３４は、端末３３から送信されたＴＣＰパケットの内部ポート番号ｚを外部ポート番号ｘに変換すればよいことを認識する。
【００５２】
そして、図８のステップＳ２５以降、アプリケーションから上記ソケットを用いて転送されるデータはＵＤＰカプセル化され、送信先の端末における通信スタックでＴＣＰヘッダ内のポート番号の変換が行われる。例えば、図８に示すように、送信元内部ポート番号ｚ、送信先外部ポート番号ｙを含む情報をＴＣＰヘッダとして持つＴＣＰパケットが、ＵＤＰトンネルを通して端末３３から端末３４に送信されると、端末３４は、送信元内部ポート番号ｚを外部ポート番号ｘに変換し、送信先外部ポート番号ｙを内部ポート番号８０に変換し、その変換後の情報に基づきデータをアプリケーションに渡す。
【００５３】
図９に、各装置の機能ブロックを含む構成図を示す。
【００５４】
図９に示すように、端末４１は、ＴＣＰ通信を行う各種アプリケーション５０、ＳＩＰ通信のためのＳＩＰ機能部５１（ＳＩＰ通信のためのプログラム群という意味でＳＩＰスタックともいう）、ＮＡＴ透過に関係する状態テーブル５２、及び通信機能部５３（通信スタックともいう）を有している。
【００５５】
ＳＩＰ機能部５１は、ＳＩＰセッション管理のためのセッション管理部５４を有している。通信機能部５３は、ＴＣＰ／ＩＰ通信等のデータ通信を行うための一般的な機能の他、ＴＣＰ−ＮＡＴ補償機能５５、ＩＰｓｅｃ機能５６、ＵＤＰカプセル処理機能５７、ＵＤＰトンネル構築機能５８を有している。
【００５６】
ＴＣＰ−ＮＡＴ補償機能５５は、ＴＣＰ通信用のポート番号の変換を行う機能である。ＩＰｓｅｃ機能５６は、通信機能部内で生成されたＴＣＰパケットを暗号化する機能である。また、ＵＤＰカプセル処理機能５７は、ＵＤＰカプセル化のためにパケットにＵＤＰヘッダを挿入する処理を行う機能である。ＵＤＰトンネル構築機能５８は、ＵＤＰパケットを送信することによりＮＡＴ透過を行い、ＵＤＰトンネルを構築する機能である。ＮＡＴ透過に関係する状態テーブルは、外部ポート番号、内部ポート番号の対応情報を有している。アプリケーション５０は、ソケットＡＰＩを利用することにより、通信機能部５３にデータ通信を実行させる。
【００５７】
また、図９の例では、外部サーバ４３はＳＴＵＮサーバの機能部５９とダミーＴＣＰ接続用の機能部６０の両方を含む。ＳＴＵＮサーバの機能部５９から端末４１がＵＤＰ用の外部ポート番号を取得する。また、ダミーＴＣＰ接続用の機能部６０により端末４１と外部サーバとの間でダミーＴＣＰ接続を行い、ＴＣＰ用の外部ポート番号の予約を行う。
【００５８】
ＳＩＰサーバ等のセッション管理サーバ４４は、セッション管理を行うセッション管理部６１を有している。セッション管理サーバ４４を介して端末４１、端末４２間でＩＰアドレス情報、ポート番号情報の交換を行う。端末４２の構成は、端末４１の構成と同様である。
【００５９】
以上の構成により、図４〜８等を参照して説明した処理を行う。すなわち、端末４１、４２が各々のＴＣＰヘッダの送信元外部ポート番号を取得し、その送信元外部ポート番号を互いに通知する。また、端末４１、４２はアプリケーションが使用するＴＣＰ用の内部ポート番号を互いに通知する。これにより、端末４１、４２の各々は、前記ＮＡＴ透過に関係する状態テーブルに、通信相手端末の外部ポート番号と内部ポート番号とを対応付けて記録することができ、ＴＣＰ用の送信元内部ポート番号を含むＴＣＰヘッダを有するＴＣＰパケットをＵＤＰカプセル化したＵＤＰパケットを受信した場合には、そのＴＣＰヘッダ内の内部ポート番号を、前記状態テーブルを参照することにより、外部ポート番号に書き換えることができる。
【００６０】
端末、外部サーバの各々は、ＣＰＵ、メモリ、記憶装置等を持つコンピュータであり、本発明に係る機能手段は、コンピュータで実行されるプログラムにより実現される。当該プログラムは、ＣＤ−ＲＯＭ、ＳＤカード等の記録媒体に記録しておき、任意のコンピュータにインストールして使用することが可能である。
【００６１】
上記の実施の形態に示した構成によれば、双方ＮＡＴ装置配下にある端末同士が一般的なクライアントアプリケーションで直接ＴＣＰ通信を行うことが可能となる。また、ＵＰｎＰのようにＮＡＴ装置に直接働きかけることなくＴＣＰ通信が可能となる。更に、ＴＣＰシーケンスがＵＤＰカプセル化により隠蔽されるため、ＦＷ機能を備えたＮＡＴ装置に対しても上記の実施の形態に示したＴＣＰ通信ＮＡＴ透過の方法は有効である。
【００６２】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【図面の簡単な説明】
【００６３】
【図１】ＮＡＴ装置配下の端末間でのＵＤＰデータチャネルの構築方法を説明するための図である。
【図２】本発明に係るＴＣＰ接続のＮＡＴ透過技術の原理について説明するための図である。
【図３】本発明の実施の形態を説明するための図である。
【図４】ＴＣＰ接続のＮＡＴ透過に関する他の実施の形態を説明するための図（１）である。
【図５】ＴＣＰ接続のＮＡＴ透過に関する他の実施の形態を説明するための図（２）である。
【図６】ＴＣＰ接続のＮＡＴ透過に関する他の実施の形態を説明するための図（３）である。
【図７】ＴＣＰ接続のＮＡＴ透過に関する他の実施の形態を説明するための図（４）である。
【図８】ＴＣＰ接続のＮＡＴ透過に関する他の実施の形態を説明するための図（５）である。
【図９】各装置の機能ブロックを含む構成図である。
【符号の説明】
【００６４】
１、２、１２、１４、２５、２６、３５、３６  ＮＡＴ装置
３、４、１１、１３、２２、２３、３３、３４、４１、４２  端末
５、６  ＳＴＵＮサーバ
７、３１、３２  ＳＩＰプロキシサーバ
４４  セッション管理サーバ
１０、２０、２１、３７、３８  外部サーバ
５０  各種アプリケーション
５１  ＳＩＰ機能部
５２  ＮＡＴ透過に関する状態テーブル
５３  通信機能部
５９  ＳＴＵＮ機能部
６０  ダミーＴＣＰ接続サーバ機能部
【図１】
2005260715.tif 000003
【図２】
2005260715.tif 000004
【図３】
2005260715.tif 000005
【図４】
2005260715.tif 000006
【図５】
2005260715.tif 000007
【図６】
2005260715.tif 000008
【図７】
2005260715.tif 000009
【図８】
2005260715.tif 000010
【図９】
2005260715.tif 000011