(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-25
(45)【発行日】2024-05-08
(54)【発明の名称】NATトラバーサル方法、装置及びシステム
(51)【国際特許分類】
H04L 61/2567 20220101AFI20240426BHJP
H04L 61/2575 20220101ALI20240426BHJP
【FI】
H04L61/2567
H04L61/2575
(21)【出願番号】P 2022509174
(86)(22)【出願日】2020-07-20
(86)【国際出願番号】 CN2020102988
(87)【国際公開番号】W WO2021051992
(87)【国際公開日】2021-03-25
【審査請求日】2022-02-14
(31)【優先権主張番号】201910887618.7
(32)【優先日】2019-09-19
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,ツァイローン
【審査官】鈴木 香苗
(56)【参考文献】
【文献】特開2007-049499(JP,A)
【文献】特開2011-071745(JP,A)
【文献】中国特許出願公開第110166574(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 61/2567
H04L 61/2575
(57)【特許請求の範囲】
【請求項1】
ネットワークアドレス変換(NAT)トラバーサル方法であって、当該方法は、第1の端末が第2の端末と通信するシステムに適用され、該第1の端末は、第1のNAT装置によって構築されたネットワーク内の端末であり、該第2の端末は、第2のNAT装置によって構築されたネットワーク内の端末であり、該第1のNAT装置は該第2のNAT装置とは異なり、当該方法は、
前記第1の端末により、第1の有効期間(TTL)を設定するステップ1であって、該第1のTTLは前記第1の端末から前記第1のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第1のTTLは第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも小さく、該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である、ステップ1と、
前記第1の端末により、
前記第1のNAT装置にホールパンチングメッセージを送信するステップ2であって、
前記第1のNAT装置が前記第1のTTL内で該ホールパンチングメッセージを受信できた場合、前記第1のNAT装置により前記第2の端末に対応する外部ネットワークアドレスのマッピングテーブルが確立されて、前記第1の端末は前記第2の端末によって送信される第1のパススルーメッセージを受信でき、前記第1のNAT装置が前記第1のTTL内で前記ホールパンチングメッセージを受信できない場合、前記第1のNAT装置によって前記第1の端末に対応する外部ネットワークアドレスのマッピングテーブルが生成されないため、前記第1の端末は前記第2の端末によって送信される第1のパススルーメッセージを受信できず、前記第1のパススルーメッセージを受信できない場合、前記第1の端末は第2のパススルーメッセージを前記第2の端末に送信する、ステップ2と、
前記第1のパススルーメッセージを前記第1の端末が受信した場合又は前記第2のパススルーメッセージに応答して前記第2の端末によって送信される第1の応答メッセージを前記第1の端末が受信した場合に、前記第1の端末により、NATトラバーサルが成功したと判断するか、又は
前記第2の端末によって送信される第1の応答メッセージを前記第1の端末が受信しない場合に、前記第1の端末により、前記第1の端末に対応する外部ネットワークアドレスを変更し、
現在の値よりも大きい値に前記TTLの値
を再設定し、前記第1の端末が前記第1のパススルーメッセージ又は前記第1の応答メッセージを受信するまで
、値が再設定された前記TTLを用いてステップ2を行い、NATトラバーサルが成功したと判断するステップ3と、
を含む、方法。
【請求項2】
前記第1の端末により
、値が再設定された前記TTLを用いてステップ2を行うことは、
前記第1の端末により、第2のTTLを設定することであって、該第2のTTLは前記第1の端末から前記第1のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第2のTTLは前記第1のTTLよりも大きい、ことと、
前記第1の端末により、前記第1のNAT装置にホールパンチングメッセージを送信することであって、前記第1のNAT装置が前記第2のTTL内で該ホールパンチングメッセージを受信した場合、前記第1のNAT装置により前記第2の端末に対応する外部ネットワークアドレスのマッピングテーブルが確立されて、前記第1の端末は前記第2の端末によって送信される第1のパススルーメッセージを受信でき、前記第1のNAT装置が前記第2のTTL内で前記ホールパンチングメッセージを受信しない場合、前記第1のNAT装置によって前記第1の端末に対応する外部ネットワークアドレスのマッピングテーブルが生成されないため、前記第1の端末は前記第2の端末によって送信される第1のパススルーメッセージを受信できない、ことと、
前記第1の端末が前記第1のパススルーメッセー
ジを受信した場合に、前記第1の端末により、NATトラバーサルが成功したと判断すること、又は
前記第1の端末が前記第1のパススルーメッセージを受信できない場合に、前記第1の端末により、前記第2のパススルーメッセージを前記第2の端末に送信し、
前記第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信しない場合に、前記第1の端末は前記第1の端末に対応する前記外部ネットワークアドレスを再度変更し、前記TTLを
再設定するか、又は
前記第2のパススルーメッセージに応答して前記第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信した場合に、前記第1の端末はNATトラバーサルが成功したと判断することと、
を含む、請求項1に記載の方法。
【請求項3】
前記方法は、
前記第
2の端末によって送信される前記第
1のパススルーメッセージを前記第
1の端末が受信した場合に、前記第1の端末により、第2の応答メッセージを前記第2の端末に送信すること、
をさらに含む、請求項1又は2に記載の方法。
【請求項4】
前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記方法は、
前記第1の端末により、前記第1のNAT装置を介して第1のクエリ情報をネットワーク装置に送信することであって、該第1のクエリ情報は、前記第1の端末に対応する前記外部ネットワークアドレスを問い合わせるために用いられる、ことと、
前記第1の端末により、前記ネットワーク装置によって送信される第1の応答情報を受信することであって、該第1の応答情報は、前記第1の端末に対応する前記外部ネットワークアドレスを含む、ことと、
をさらに含む、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
第1の端末が第2の端末と通信するシステムに適用されるNATトラバーサル方法であって、該第1の端末は、第1のNAT装置によって構築されたネットワーク内の端末であり、該第2の端末は、第2のNAT装置によって構築されたネットワーク内の端末であり、該第1のNAT装置は該第2のNAT装置とは異なり、当該方法は、
前記第2の端末により、第1のパススルーメッセージを前記第1の端末に送信するステップ1と、
前記第1のパススルーメッセージが所定のTTL内で前記第1の端末により受信されない場合、前記第2の端末により、前記第1の端末によって送信される第2の応答メッセージを前記第2の端末が受信しないと判断し、前記第2の端末に対応する外部ネットワークアドレスを変更し、第1のTTLを設定するステップ2であって、該第1のTTLは前記第2の端末から前記第2のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第1のTTLは第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも小さく、該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である、ステップ2と、
ステップ3であって、前記第2の端末により
、前記第2のNAT装置
にホールパンチングメッセージ
を送信し、前記第2のNAT装置が前記第1のTTL内で該ホールパンチングメッセージを受信できた場合、前記第2のNAT装置により前記第1の端末に対応する外部ネットワークアドレスのマッピングテーブルが確立されて、前記第2の端末は前記第1の端末によって送信される第2のパススルーメッセージを受信でき、前記第2のNAT装置が前記第1のTTL内で前記ホールパンチングメッセージを受信できない場合、前記第2のNAT装置によって前記第2の端末に対応する外部ネットワークアドレスのマッピングテーブルが生成されないため、前記第2の端末は前記第1の端末によって送信される第2のパススルーメッセージを受信できず、前記第2の端末が前記第2のパススルーメッセージを受信した場合に、前記第2の端末により、NATトラバーサルが成功したと判断し、第1の応答メッセージを前記第1の端末に送信するか、又は
前記第2の端末
が前記第2のパススルーメッセージを受信しない場合に、
現在の値よりも大きい値に前記TTLの値を再設定し、前記第2の端末が前記第2のパススルーメッセージ又は前記第2の応答メッセージを受信するまで、前記第2の端末により、
値が再設定された前記TTLを用いてステップ1及びステップ2を行い、NATトラバーサルが成功したと判断する
、ステップ3と、
を含む、方法。
【請求項7】
前記第2の端末が前記第2のパススルーメッセージを受信しない場合に、前記第2の端末によりステップ1及びステップ2を行うことは、
前記第2の端末が前記第2のパススルーメッセージを受信しない場合に、前記第2の端末により、前記第1のパススルーメッセージを前記第1の端末に送信し、前記第1の端末によって送信される前記第
2の応答メッセージを前記第2の端末が受信したかどうかを判断することと、
前記第
2の端末が前記第
2の応答メッセージを受信した場合に、前記第2の端末により、前記NATトラバーサルが成功したと判断するか、又は
前記第1の端末が前記第1の応答メッセージを受信しない場合に、前記第2の端末により、前記第2の端末に対応する前記外部ネットワークアドレスを再度変更し、前記第1のTTLに代えて第2のTTLを設定することであって、該第2のTTLは前記第2の端末から前記第2のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第2のTTLは前記第1のTTLよりも大きい、ことと、
を含む、請求項
6に記載の方法。
【請求項8】
前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である、請求項6又は7に記載の方法。
【請求項9】
前記第2の端末により、前記第2の端末に対応する外部ネットワークアドレスを変更することは、
前記第2の端末により、前記第2のNAT装置を介して第2のクエリ情報をネットワーク装置に送信することであって、該第2のクエリ情報は、前記第2の端末に対応する外部ネットワークアドレスを問い合わせるために用いられる、ことと、
前記第2の端末により、前記ネットワーク装置によって送信される第2の応答情報を受信することであって、該第2の応答情報は、前記第2の端末に対応する前記外部ネットワークアドレスを含む、ことと、
を含む、請求項6乃至8のいずれか一項に記載の方法。
【請求項10】
端末装置であって、
当該端末装置は、第1の端末が第2の端末と通信するシステムにおける第1の端末として用いられ、該第1の端末は、第1のNAT装置によって構築されたネットワーク内の端末であり、該第2の端末は、第2のNAT装置によって構築されたネットワーク内の端末であり、該第1のNAT装置は該第2のNAT装置とは異なり、当該端末装置は、処理モジュールと送信モジュールとを含み、
前記処理モジュールは、第1のTTLを設定する第1のプロセスであって、該第1のTTLは
当該端末装置から
前記第1のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第1のTTLは第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも小さく、該第1のホップカウントは、
当該端末装置と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、
前記第2の端末と
前記第2のNAT装置との間のネットワークセグメントの数である、第1のプロセスと、
前記送信モジュールに前記第1のNAT装置に対してホールパンチングメッセージを送信させる第2のプロセスであって
、前記第1のNAT装置が前記第1のTTL内で該ホールパンチングメッセージを受信できた場合、前記第1のNAT装置により前記第2の端末に対応する外部ネットワークアドレスのマッピングテーブルが確立され、当該端末装置は前記第2の端末によって送信される第1のパススルーメッセージを受信でき、前記第1のNAT装置が前記第1のTTL内で前記ホールパンチングメッセージを受信できない場合、前記第1のNAT装置によって当該端末装置に対応する外部ネットワークアドレスのマッピングテーブルが生成されないため、当該端末装置は前記第2の端末によって送信される第1のパススルーメッセージを受信できない、第2のプロセスとを行うように構成さ
れ、
当該端末装置が前記第1のパススルーメッセージを受信
できない場合に
、前記送信モジュールは第2のパススルーメッセージを前記第2の端末に送信するように構成さ
れ、
前記処理モジュールは、前記第2の端末によって送信される第1の応答メッセージが受信されるかどうか判定する第3のプロセスを行うようにさらに構成され、
前記処理モジュールは、
当該端末
装置に対応する外部ネットワークアドレスを変更し、前記TTLの値を現在の値よりも大きい値に再設定した後に、
当該端末
装置が前記第1のパススルーメッセージ又は前記第1の応答メッセージを受信するまで
、値が再設定された前記TTLを用いて前記第1のプロセス~前記第3のプロセスを繰り返し、NATトラバーサルが成功したと判断するようにさらに構成されている、
端末装置。
【請求項11】
前記処理モジュールが、
値が再設定された前記TTLを用いて前記第1のプロセス~前記第3のプロセスを繰り返すことは、
前記処理モジュールにより、第2のTTLを設定することであって、該第2のTTLは前
記端末
装置から前記第1のNAT装置にホールパンチングメッセージを送信する際に用いられ、該第2のTTLは前記第1のTTLよりも大きい、ことと、
前記処理モジュールにより
、前記送信モジュールに前記第1のNAT装置に対してホールパンチングメッセージを送信させることであって、前記第1のNAT装置が前記第2のTTL内で該ホールパンチングメッセージを受信した場合、前記第1のNAT装置により前記第2の端末に対応する外部ネットワークアドレスのマッピングテーブルが確立され、前記端末装置は前記第2の端末によって送信される前記第1のパススルーメッセージを受信でき、前記第1のNAT装置が前記第1のTTL内で前記ホールパンチングメッセージを受信しない場合、前記第1のNAT装置によって前記端末装置に対応する外部ネットワークアドレスのマッピングテーブルが生成されないため、前記端末装置は前記第2の端末によって送信される第1のパススルーメッセージを受信できない、ことと、
前記
端末装置が前記第1のパススルーメッセージを受信
できない場合に、前記送信モジュールにより、前記第2のパススルーメッセージを前記第2の端末に送信することと、
前記処理モジュールにより、前記第2の端末によって送信される前記第1の応答メッセージが受信されたかどうか判断することと、
を含み、
前記第2の端末によって送信される前記第1の応答メッセージを前記
端末装置が受信する場合、前記処理モジュールは、NATトラバーサルが成功したと判断するようにさらに構成されているか又は
前記第2の端末によって送信される前記第1の応答メッセージを前記
端末装置が受信しない場合に、前記処理モジュールは、前記
端末装置に対応する前記外部ネットワークアドレスを変更し、前記TTLの値を現在の値よりも大きい値に再設定するようにさらに構成されている、請求項10に記載の端末装置。
【請求項12】
前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である、請求項10又は11に記載の端末装置。
【請求項13】
前記送信モジュールは、前記第1のNAT装置を介して第1のクエリ情報をネットワーク装置に送信するようにさらに構成され、該第1のクエリ情報は、前
記端末
装置に対応する前記外部ネットワークアドレスを問い合わせるために用いられ、
前記端末装置は受信モジュールをさらに含み、該受信モジュールは、前記ネットワーク装置によって送信される第1の応答情報を受信するように構成され、該第1の応答情報は、前
記端末
装置に対応する前記外部ネットワークアドレスを含む、請求項10乃至12のいずれか一項に記載の端末装置。
【請求項14】
通信装置であって、当該通信装置は少なくとも1つのプロセッサと、通信インターフェイスとを含み、該通信インターフェイスは、別の通信装置と情報を交換するために当該通信装置によって用いられ、前記少なくとも1つのプロセッサにおいてプログラム命令が実行された場合、当該通信装置は、請求項1乃至9のいずれか一項に記載の方法における前記第1の端末及び前記第2の端末のうちのいずれかの機能を実施することができる、通信装置。
【請求項15】
少なくとも2つの端末と、少なくとも2つのNAT装置と、サーバとを含み、前記少なくとも2つの端末のうちの一方は、請求項1乃至5のいずれか一項に記載の方法を行うように構成され、前記少なくとも2つの端末のうちの他方は、請求項6乃至9のいずれか一項に記載の方法を行うように構成されている、通信システム。
【請求項16】
命令を含むコンピュータ読み取り可能記憶媒体であって、該命令が1つ以上のプロセッサによって行われた場合、該1つ以上のプロセッサに請求項1乃至9のいずれか一項に記載の方法を実施させる、コンピュータ読み取り可能記憶媒体。
【請求項17】
命令を含むプログラムであって、該命令が1つ以上のプロセッサによって行われた場合、該1つ以上のプロセッサに請求項1乃至9のいずれか一項に記載の方法を実施させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、通信分野におけるネットワークアドレス変換技術に関し、特に、NATトラバーサル方法、装置及びシステムに関する。
【背景技術】
【0002】
ネットワークアドレス変換(network address translation、NAT)トラバーサルは、ピアツーピア(peer-to-peer、P2P)リアルタイムオーディオ及びビデオの分野で非常に重要な技術である。NATトラバーサル技術は、クライアントが互いに直接通信することを可能にすることにより、ピアツーピア遅延を低減し、サーバの圧力及びコストを低減し得る。
【0003】
NAT技術は、内部ネットワークアドレスを外部ネットワークアドレスに変換する技術である。この技術は、不十分なインターネットプロトコル(Internet protocol、IP)アドレスの問題を解決するだけでなく、ネットワーク外からの攻撃を効果的に回避し、ネットワーク内の端末を隠し保護することができる。
【0004】
NATの主な作業プロセスは、アドレスマッピングを実施するために、データパケットの送信元アドレス及び宛先アドレスを変更することである。加えて、外部ネットワークは、内部ネットワーク端末が外部ネットワークにデータを能動的に送信した後でのみ、内部ネットワーク端末にデータを送信することができる。内部ネットワークから外部ネットワークに送信されるデータパケットの送信元アドレスが変更され、外部ネットワークから内部ネットワークに送信されるデータパケットの宛先アドレスが変更される。具体的には、外部データはNAT装置を介して内部ネットワーク端末に到達できるのは、データが先ずNAT装置内部から送信された場合のみである。内部パケットが最初に送信されない場合、NAT装置は受信した外部データ(このデータは「未承諾」データと呼ばれる)を破棄する。加えて、現在、多くのNAT装置は時間シーケンス必要を有する。具体的には、「未承諾」データを受信した場合、データを破棄することに加えて、NAT装置は、「未承諾」データが送られる送信元IPアドレス及びポート(port)をブラックリストに載せ得る。アドレス又はポートから送信されたデータは、送信元IPアドレス及びポートがブラックリストに載せられるとNAT装置に入ることができない。したがって、NAT装置が時間シーケンス要件を有する場合、NATトラバーサルを行うことができず、ピアツーピア通信を実施することができない。
【発明の概要】
【課題を解決するための手段】
【0005】
本願の実施形態は、時間シーケンス要件を有するNAT装置の低いトラバーサル成功率の問題を解決するために、NATトラバーサル方法、装置及びシステムを提供する。
【0006】
第1の態様によれば、NATトラバーサル方法が提供され、当該方法は、第1の端末が第2の端末と通信するシステムに適用される。該第1の端末は、第1のNAT装置によって構築されたネットワーク内の端末であり、該第2の端末は、第2のNAT装置によって構築されたネットワーク内の端末であり、該第1のNAT装置は該第2のNAT装置とは異なる。当該方法は、前記第1の端末が第1の有効期間(TTL)を設定するステップ1を含む。ステップ2:前記第2の端末によって送信される第1のパススルーメッセージを前記第1の端末が設定された前記TTL内に受信したかどうか前記第1の端末が判断する。第1の端末が設定されたTTL内で第1のパススルーメッセージを受信しない場合、第1の端末は第2のパススルーメッセージを第2の端末に送信し、第2の端末によって送信される第1の応答メッセージを第1の端末装置が受信したかどうか判断する。ステップ3:前記第2の端末によって送信される第1の応答メッセージを前記第1の端末が受信した場合に、前記第1の端末はNATトラバーサルが成功したと判断するか、又は前記第2の端末によって送信される第1の応答メッセージを前記第1の端末が受信しない場合に、前記第1の端末に対応する外部ネットワークアドレスを変更し、前記TTLをリセットした後で、前記第1の端末は、前記第1の端末が前記第1のパススルーメッセージ又は前記第1の応答メッセージを受信するまでステップ2を繰り返し、NATトラバーサルが成功したと判断する。
【0007】
第1の態様を参照して、第1の態様の一部の実施では、前記TTLの値をリセットした後に、前記第1の端末がステップ2を繰り返すことは、前記第1の端末が、第2のTTLを設定し、前記第2の端末によって再送される前記第1のパススルーメッセージを前記第1の端末が前記第2のTTL内で受信したかどうかを判断することであって、前記第2のTTLは前記第1のTTLとは異なる、ことを含む。前記第1のパススルーメッセージを前記第2のTTL内に受信した場合に、前記第1の端末はNATトラバーサルが成功したと判断する。前記第1の端末が前記第1のパススルーメッセージを前記第2のTTL内に受信しない場合に、前記第1の端末は、前記第2のパススルーメッセージを前記第2の端末に送信する。前記第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信しない場合に、前記第1の端末は前記第1の端末に対応する前記外部ネットワークアドレスを再度変更し、前記TTLをリセットする。第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信した場合に、前記第1の端末はNATトラバーサルが成功したと判断する。
【0008】
第1の態様を参照して、第1の態様の一部の実施では、前記方法は、前記第2の端末によって送信される前記第2のパススルーメッセージを前記第1の端末が受信した場合に、前記第1の端末は、第2の応答メッセージを前記第2の端末に送信すること、をさらに含む。
【0009】
第1の態様を参照して、第1の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である。
【0010】
第1の態様を参照して、第1の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0011】
第1の態様を参照して、第1の態様の一部の実施では、前記第1の端末は、前記第1のNAT装置を介して第1のクエリ情報をネットワーク装置に送信し、該第1のクエリ情報は、前記第1の端末に対応する前記外部ネットワークアドレスを問い合わせるために用いられる。前記第1の端末は、前記ネットワーク装置によって送信される第1の応答情報を受信し、該第1の応答情報は、前記第1の端末に対応する前記外部ネットワークアドレスを含む。
【0012】
第2の態様によれば、NATトラバーサル方法が提供され、NATトラバーサル方法が提供され、当該方法は、第1の端末が第2の端末と通信するシステムに適用される。該第1の端末は、第1のNAT装置によって構築されたネットワーク内の端末であり、該第2の端末は、第2のNAT装置によって構築されたネットワーク内の端末であり、該第1のNAT装置は該第2のNAT装置とは異なる。当該方法は、前記第2の端末が第1のパススルーメッセージを前記第1の端末に送信するステップ1を含む。ステップ2:前記第2の端末は、前記第1の端末によって送信される第2の応答メッセージを前記第2の端末が受信したかどうかを判断する。第2の端末が第2の応答メッセージを受信していない場合、第2の端末は前記第2の端末に対応する外部ネットワークアドレスを変更し、第1のTTLを設定する。ステップ3:前記第2の端末は、前記第1の端末によって送信される第2のパススルーメッセージを前記第2の端末が設定された前記TTL内で受信したかどうかを判断する。前記第2の端末が前記第2のパススルーメッセージを受信した場合に、前記第2の端末は、NATトラバーサルが成功したと判断し、第1の応答メッセージを前記第1の端末に送信する。代替的に、前記第2の端末が前記第2のパススルーメッセージを受信しない場合に、前記第2の端末が前記第2のパススルーメッセージ又は前記第2の応答メッセージを受信するまで、前記第2の端末がステップ1及びステップ2を繰り返し、NATトラバーサルが成功したと判断する。
【0013】
第2の態様を参照して、第2の態様の一部の実施では、前記第2の端末が前記第2のパススルーメッセージを受信しない場合に、前記第2の端末がステップ1及びステップ2を繰り返すことは、前記第2の端末が前記第2のパススルーメッセージを受信しない場合に、前記第2の端末は、前記第1のパススルーメッセージを前記第1の端末に送信し、前記第1の端末によって送信される前記第1の応答メッセージを前記第2の端末が受信したかどうかを判断する。前記第1の端末が前記第1の応答メッセージを受信した場合に、前記第2の端末は前記NATトラバーサルが成功したと判断する。前記第1の端末が前記第1の応答メッセージを受信しない場合に、前記第2の端末は、前記第2の端末に対応する前記外部ネットワークアドレスを再度変更し、第2のTTLを設定する。該第2のTTLは前記第1のTTLと異なる。
【0014】
第2の態様を参照して、第2の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である。
【0015】
第2の態様を参照して、第2の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0016】
第2の態様を参照して、第2の態様の一部の実施では、前記第2の端末が前記第2の端末に対応する外部ネットワークアドレスを変更することは、前記第2の端末が、前記第2のNAT装置を介して第2のクエリ情報をネットワーク装置に送信することを含む。該第2のクエリ情報は、前記第1の端末に対応する外部ネットワークアドレスを問い合わせるために用いられる。前記第2の端末は、前記ネットワーク装置によって送信される第2の応答情報を受信する。該第2の応答情報は、前記第2の端末に対応する前記外部ネットワークアドレスを含む。
【0017】
第3の態様によれば、NATトラバーサル方法が提供され、当該方法は、第1の端末が第2の端末と通信するシステムに適用される。第1の端末は、第1のNAT装置によって構築されるネットワーク内の端末であり、第2の端末は、第2のNAT装置によって構築されるネットワーク内の端末であり、第1のNAT装置は、第2のNAT装置とは異なる。当該方法は、第1の端末によって送信される第1のホールパンチングメッセージを第1のTTL内に第1のNAT装置が受信したかどうかを第1のNAT装置が判断する。第1のNAT装置が第1のホールパンチングメッセージを受信しておらず、第2の端末から送信される第1のパススルーメッセージを受信した場合、第1のNAT装置は、第2の端末に対応する外部ネットワークアドレスをブラックリストに載せる。第1のNAT装置は、第2のパススルーメッセージを第2の端末の変更された外部ネットワークアドレスに送信する。第2のパススルーメッセージが第2の端末によって受信されていない場合、第1のNAT装置は、第1の端末に対応する外部ネットワークアドレスをリセットし、TTLがリセットされた後に、第1のNAT装置が第1のホールパンチメッセージを受信するか又は第1の端末が第1のパススルーメッセージを受信するまでプロセスを繰り返し、NATトラバーサルが成功する。
【0018】
第3の態様を参照して、第3の態様の一部の実施では、TTLがリセットされた後にプロセスを繰り返すことは、第1の端末によって送信される第1のホールパンチングメッセージを第1のNAT装置が第2のTTL内に受信するかどうかを第1のNAT装置が判断し、第2のTTLは第1のTTLよりも大きい、ことを含む。第1のNAT装置が第1のホールパンチングメッセージを受信せず、第2の端末から送信される第1のパススルーメッセージを受信する場合、第1のNAT装置は、第2の端末に対応する変更された外部ネットワークアドレスをブラックリストに載せ、TTLの値が再度リセットした後、前記プロセスを繰り返す。
【0019】
第3の態様を参照して、第3の態様の一部の実施において、本方法は、第2のパススルーメッセージが第2の端末によって受信されない場合、第1のNAT装置は、外部ネットワークアドレス又はポートを第1の端末に再度割り当てることを含む。
【0020】
第3の態様を参照して、第3の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である。
【0021】
第3の態様を参照して、第3の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0022】
第3の態様を参照して、第3の態様の一部の実施では、本方法は、第1のNAT装置は、前記第1の端末によって送信される第1のクエリ情報を受信し、該第1のクエリ情報は、前記第1の端末に対応する外部ネットワークアドレスを問い合わせるために用いられる。前記第1のNAT装置は、第1のクエリ情報をネットワーク装置に送信する。第1のNAT装置は第1の端末に対応する外部ネットワークアドレスを構成し、外部ネットワークアドレスをネットワーク装置に送信する。第1のNAT装置は、ネットワーク装置によって送信される第1の応答情報を受信し、第1の応答情報は第1の端末に対応する外部ネットワークアドレスを含む。第1のNAT装置は第1の応答情報を第1の端末に送信する。
【0023】
第4の態様によれば、NATトラバーサル方法が提供され、当該方法は、第1の端末が第2の端末と通信するシステムに適用される。第1の端末は、第1のNAT装置によって構築されるネットワーク内の端末であり、第2の端末は、第2のNAT装置によって構築されるネットワーク内の端末であり、第1のNAT装置は、第2のNAT装置とは異なる。当該方法は、第2のNAT装置が第1のパススルーメッセージを第1の端末に送信することを含む。第1のパススルーメッセージが第1の端末によって受信されない場合、第2のNAT装置は、第2の端末に対応する外部ネットワークアドレスをリセットし、第2の端末によって送信される第2のホールパンチングメッセージを第2のNAT装置が第1のTTL内に受信するかどうかを判断する。第2のNAT装置が第2のホールパンチングメッセージを受信しておらず、第2のNAT装置が第1の端末によって送信される第2のパススルーメッセージを受信する場合、第2のNAT装置は、第1の端末に対応する外部ネットワークアドレスをブラックリストに載せ、TTLの値がリセットされた後に、第1のパススルーメッセージが第1の端末によって受信されるまで又は第2のNAT装置が第2のホールパンチングメッセージを受信するまで、プロセスを繰り返し、NATトラバーサルが成功すると判断する。
【0024】
第4の態様を参照して、第4の態様の一部の実施では、TTLの値がリセットされた後にプロセスを繰り返すことは、第2のNAT装置が、第1のパススルーメッセージを第2のTTL内に第1の端末に送信し、第2のTTLは第1のTTLよりも大きいことを含む。第1端末によって第1のパススルーメッセージを受信できない場合、第2のNAT装置は、第2端末によって送信されるホールパンチングメッセージが受信されたかどうかを判断する。第2のNAT装置がホールパンチングメッセージを受信せず、第1の端末によって送信される第2のパススルーメッセージを第2のNAT装置を受信した場合、第2のNAT装置は、第1の端末に対応する変更された外部ネットワークアドレスをブラックリストに載せ、TTLの値が再度リセットされた後にプロセスを繰り返す。
【0025】
第4の態様を参照して、第4の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。該第1のホップカウントは、前記第1の端末と前記第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と前記第2のNAT装置との間のネットワークセグメントの数である。
【0026】
第4の態様を参照して、第4の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0027】
第4の態様を参照して、第4の態様の一部の実施では、本方法は、第2のNAT装置は、前記第2の端末によって送信される第2のクエリ情報を受信し、該第2のクエリ情報は、前記第2の端末に対応する外部ネットワークアドレスを問い合わせるために用いられる。前記第2のNAT装置は、第2のクエリ情報をネットワーク装置に送信する。第2のNAT装置は第2の端末に対応する外部ネットワークアドレスを構成し、外部ネットワークアドレスをネットワーク装置に送信する。第2のNAT装置は、ネットワーク装置によって送信される第2の応答情報を受信し、第2の応答情報は第2の端末に対応する外部ネットワークアドレスを含む。第2のNAT装置は第2の応答情報を第2の端末に送信する。
【0028】
第5の態様によれば、端末装置が提供され、第1のTTLを設定し、第2の端末によって送信される第1のパススルーメッセージを第1の端末が該第1のTTL内で受信できるかどうか判断するように構成された処理モジュールと、前記第1の端末が設定された前記TTL内で前記第1のパススルーメッセージを受信しない場合に、第2のパススルーメッセージを前記第2の端末に送信するように構成された送信モジュールと、を含む。前記処理モジュールは、前記第2の端末によって送信される第1の応答メッセージが受信されていないと判断するようにさらに構成される。第2の端末によって送信される第1の応答メッセージを第1の端末が受信した場合、前記処理モジュールは、NATトラバーサルが成功したと判断するようにさらに構成されている。第2の端末によって送信される第1の応答メッセージを第1の端末が受信しない場合、処理モジュールは、前記第1の端末に対応する外部ネットワークアドレスを変更し、前記TTLをリセットした後に、前記第1の端末が前記第1のパススルーメッセージ又は前記第1の応答メッセージを受信するまで前記プロセスを繰り返し、NATトラバーサルが成功したと判断するようにさらに構成されている。
【0029】
第5の態様を参照して、第5の態様の一部の実施では、前記TTLをリセットした後に、前記処理モジュールが前記プロセスを繰り返すことは、前記処理モジュールが第2のTTLを設定し、該第2のTTLは前記第1のTTLとは異なる、ことを含む。前記処理モジュールは、前記第1のパススルーメッセージが前記第2のTTL内で受信できるかどうか判断する。前記第1の端末が前記第1のパススルーメッセージを受信しない場合に、前記送信モジュールは、前記第2のパススルーメッセージを前記第2の端末に送信する。前記処理モジュールは、前記第2の端末によって送信される前記第1の応答メッセージが受信されたかどうか判断する。前記第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信する場合、前記処理モジュールは、NATトラバーサルが成功したと判断するようにさらに構成されている。前記第2の端末によって送信される前記第1の応答メッセージを前記第1の端末が受信しない場合に、前記処理モジュールは、前記第1の端末に対応する前記外部ネットワークアドレスを変更し、前記TTLをリセットするようにさらに構成されている。
【0030】
第5の態様を参照して、第5の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。該第1のホップカウントは、前記第1の端末と第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と第2のNAT装置との間のネットワークセグメントの数である。
【0031】
第5の態様を参照して、第5の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0032】
第5の態様を参照して、第5の態様の一部の実施では、前記送信モジュールは、前記第1のNAT装置を介して第1のクエリ情報をネットワーク装置に送信するようにさらに構成され、該第1のクエリ情報は、前記第1の端末に対応する前記外部ネットワークアドレスを問い合わせるために用いられる。前記端末は受信モジュールをさらに含み、該受信モジュールは、前記ネットワーク装置によって送信される第1の応答情報を受信するように構成され、該第1の応答情報は、前記第1の端末に対応する前記外部ネットワークアドレスを含む。
【0033】
第6の態様によれば、NAT装置が提供され、NAT装置は、第1の端末が第2の端末と通信するシステムで用いられる。第1の端末は、第1のNAT装置によって構築されるネットワーク内の端末であり、第2の端末は、第2のNAT装置によって構成されるネットワーク内の端末であり、第1のNAT装置は、第2のNAT装置とは異なる。NAT装置は、第1のTTL内に第1の端末に第1のパススルーメッセージを送信するように構成された送信モジュールと、第1の端末によって第1のパススルーメッセージを受信できない場合に、第2の端末によって送信されるホールパンチングメッセージが受信されたかどうかを判断するように構成された処理モジュールとを含む。処理モジュールは、第2のNAT装置がホールパンチングメッセージを受信せず、第1の端末によって送信される第2のパススルーメッセージを第2のNAT装置が受信した場合に、第1の端末に対応する外部ネットワークアドレスをブラックリストに載せ、TTLの値がリセットされた後に、第1の端末が第1のパススルーメッセージを受信するか又は第1のNAT装置がホールパンチングメッセージを受信するまで、プロセスを繰り返すようにさらに構成されている。
【0034】
第6の態様を参照して、第6の態様の一部の実施では、TTLの値がリセットされた後にプロセスを繰り返すことは、送信モジュールが第2のTTL内に第1のパススルーメッセージを第1の端末に送信することであって、第2のTTLは第1のTTLより大きい、ことを含む。第1のパススルーメッセージが第1の端末によって受信できない場合、処理モジュールは、第2の端末によって送信されるホールパンチングメッセージが受信されたかどうかを判定するようにさらに構成されている。第2のNAT装置がホールパンチングメッセージを受信せず、第2のNAT装置が第1の端末によって送信される第2のパススルーメッセージを受信した場合、処理モジュールは、第1の端末に対応する変更された外部ネットワークアドレスをブラックリストに載せ、TTLの値が再度リセットされた後にプロセスを繰り返すようにさらに構成されている。
【0035】
第6の態様を参照して、第6の態様の一部の実施では、前記第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値より大きくなく、該第1のホップカウントは、前記第1の端末と第1のNAT装置との間のネットワークセグメントの数であり、該第2のホップカウントは、前記第2の端末と第2のNAT装置との間のネットワークセグメントの数である。
【0036】
第6の態様を参照して、第6の態様の一部の実施では、前記第1のNAT装置及び前記第2のNAT装置はコーンNAT装置である。
【0037】
第7の態様によれば、通信装置が提供される。当該通信装置は少なくとも1つのプロセッサと、通信インターフェイスとを含む。該通信インターフェイスは、別の通信装置と情報を交換するために当該通信装置によって用いられる。前記少なくとも1つのプロセッサにおいてプログラム命令が実行された場合、当該通信装置は、第1の態様又は第2の態様の実施の任意の1つに係る方法における前記第1の端末及び前記第2の端末のうちのいずれかの機能を実施することができる。
【0038】
第8の態様によれば、少なくとも1つの端末と、少なくとも1つのNAT装置と、サーバとを含む通信システムが提供される。前記端末は、第1の態様又は第2の態様の実施の任意の1つに係る方法を行うように構成されている。NAT装置は第3の態様又は第4の態様の実施の任意の1つに係る方法を行うように構成されている。
【0039】
本願の実施形態で提供されるNATトラバーサル方法によれば、ピアツーピア通信の一端により送信されたメッセージが、その端では正確にNAT装置に到達できるが、ピア端ではNAT装置に到達しないように決定するために、ローカル端及びピア端によるメッセージを送信するTTLが検出され、TTL値が動的に調整される。このように、一端がマッピングテーブルを生成し、該端部の外部ネットワークアドレスがブラックリストに載せられないため、NATトラバーサルが最終的に実施され、NATトラバーサルの効率が改善される。
【図面の簡単な説明】
【0040】
【
図1】
図1はNAT装置の動作プロセスの概略図である。
【
図2(a)】
図2(a)はコーンNAT装置の動作原理の概略図である。
【
図2(b)】
図2(b)は、対称NAT装置の動作原理の概略図である。
【
図3】
図3は、コーン-コーンの組み合わせに基づくNATトラバーサルプロセスの概略図である。
【
図4】
図4は、NATトラバーサルプロセスの概略図である。
【
図5】
図5は、本願の実施形態に係るNATトラバーサルプロセスの概略図である。
【
図6】
図6は、本願の実施形態に係る、NATトラバーサル方法をピアツーピア通信シナリオに適用する概略図である。
【
図7】
図7は、本願の一実施形態に係る端末装置の構造の概略図である。
【
図8】
図8は、本願の一実施形態に係るNAT装置の構造の概略図である。
【発明を実施するための形態】
【0041】
以下では、本願の実施形態における技術的解決策を、本願の実施形態における添付の図面を参照しながら明確且つ完全に説明する。説明する実施形態は、本願の実施形態の一部であるが、全てではないことは明らかである。創造的な取り組みなしに、本願の実施形態に基づいて当業者によって得られる他の実施形態の全ては、本願の保護範囲に含まれるものとする。
【0042】
本願の実施形態における技術的解決策は、様々な通信システム、例えば、グローバルシステムフォーモバイルコミュニケーション(global system for mobile communication、GSM)、符号分割多元接続(code division multiple access、CDMA)システム、広帯域符号分割多元接続(wideband code division multiple access、WCDMA)システム、一般パケット無線サービス(general packet radio service、GPRS)システム、ロングタームエボリューション(long term evolution、LTE)システム、LTE周波数分割二重方式(frequency division duplex、FDD)システム、LTE時分割二重方式(time division duplex、TDD)システム、ユニバーサルモバイルテレコミュニケーションシステム(universal mobile telecommunication system、UMTS)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(worldwide interoperability for microwave access、WiMAX)システム、将来の第5世代(5th generation、5G)システム又は新無線(new radio、NR)システムに適用され得る。
【0043】
本願の実施形態における端末は、ユーザ装置、アクセス端末、加入者ユニット、遠隔端末、モバイル装置、ユーザ端末、端末、無線通信装置、ユーザエージェント又はユーザ機器であり得る。あるいは、端末装置は、携帯電話、コードレス電話、セッション開始プロトコル(session initiation protocol、SIP)電話、無線ローカルループ(wireless local loop、WLL)ステーション、パーソナルデジタルアシスタント(personal digital assistant、PDA)、無線通信機能を有するハンドヘルド装置、コンピュータ装置、無線モデムに接続された別の処理装置、車載型装置、ウェアラブル装置、将来の5Gネットワークにおける端末装置、将来発展する公衆陸上移動通信ネットワーク(public land mobile network、PLMN)における端末装置等であり得る。これは、本願の実施形態で限定されない。
【0044】
理解を容易にするために、添付の図面を参照しながらNAT技術を先ず説明する。
【0045】
【0046】
図1に示すように、NAT装置はアドレスマッピングテーブルを維持する。内部ネットワークアドレス、マップされた外部ネットワークアドレス及び端末の宛先アドレスはアドレスマッピングテーブルに記録され、マッピングテーブルは最初は空である。例えば、端末1及び端末2の発信元アドレス及びマップドアドレスは、
図1に示すアドレスマッピングテーブルに記録されている。端末1のアドレスを一例として用いる。端末1の内部ネットワークアドレスは192.168.0.100:10000であり、ピアツーピア通信の宛先アドレスは210.15.27.166:8000であり、NAT装置が端末1の内部ネットワークアドレスをマップした後に得られる外部ネットワークアドレスは210.21.12.140:2000である。端末1が宛先アドレスのピアエンドと通信する場合、マップされた外部ネットワークアドレスを通信にために用いる必要がある。具体的な通信プロセスを以下で説明する。
【0047】
NATの種類は、(
図2aに示す)コーンNAT(cone NAT)及び(
図2bに示す)対称NAT(対称NAT)に具体的に分類され得る。したがって、内部ネットワークアドレスと外部ネットワークアドレスとの間のマッピングは1対1のマッピングであり得るか又は1対多のマッピングであり得る。例えば、NATの種類がコーンNATである場合、コーンNAT装置は1つの内部ネットワークアドレスを1つの外部ネットワークアドレスに固定的に変換する。この場合、1対1のマッピングが行われる。NATの種類が対称NATの場合、対称NAT装置は1つの内部ネットワークアドレスを複数の外部ネットワークアドレスに変換し得る。この場合、1対多のマッピングが行われる。
【0048】
NAT装置の動作プロセスを説明するために、端末1(内部ネットワークアドレスが192.168.0.100:10000)がサーバ1(宛先アドレスが210.15.27.166:8000)にデータパケットを送信する例を用いる。NAT装置のプロセスは以下の通りである。端末の内部ネットワークアドレスは、端末の送信元アドレスとも呼ばれる。
【0049】
(1)端末1がNAT装置を介してサーバ1にデータパケットを送信する必要がある場合、NAT装置はマッピングテーブルから送信元アドレス192.168.0.100:10000に関するレコードを取得する必要がある。端末1が最初にサーバ1にデータパケットを送信する場合、送信元アドレス192.168.0.100:10000に関するレコードはNAT装置のマッピングテーブルでまだ作成されていないことを理解すべきである。この場合、送信元アドレス192.168.0.100:10000に関するレコードをマッピングテーブル内に作成する必要がり、外部ネットワークポート又は外部ネットワークアドレスを割り当てる必要がある。例えば、NAT装置は、端末1に外部ネットワークアドレス又は外部ネットワークポート210.21.12.140:2000を割り当てる。
【0050】
NAT装置は、端末に外部ネットワークアドレス及び/又は外部ネットワークポートを割り当て得ることを理解すべきである。説明を容易にするために、本願のこの実施形態では、NAT装置によって端末に割り当てられる外部ネットワークアドレス及び外部ネットワークポートをまとめて、NAT装置によって端末に割り当てられる外部ネットワークアドレスと呼ばれる。
【0051】
(2)NAT装置はデータパケットの送信元アドレスを変更し、データパケットを外部ネットワークに送信する。NAT装置によりデータパケットの送信元アドレスを変更することは、データパケットに対応する送信元アドレスを外部ネットワークアドレスに変更すること、すなわち、192.168.0.100:10000を210.21.12.140:2000に変更することである。次に、送信元アドレスが192.168.0.100:10000であり、宛先アドレスが210.15.27.166:8000である全てのデータパケットが上記のように変更される。
【0052】
端末は外部ネットワークにデータパケットを送信するため、外部ネットワークはNAT装置を介して内部ネットワーク端末にデータパケットを送信し得る。プロセスは以下の通りである。
【0053】
(3)NAT装置は、サーバ1によって宛先アドレス(210.15.27.166:8000)を介して外部ネットワークアドレス(210.21.12.140:2000)に送信されたデータパケットを受信し、NAT装置は、マッピングテーブルに照会することにより、外部ネットワークアドレス210.21.12.140:2000とマッピング関係を有する内部ネットワークアドレス192.168.0.100:10000を取得し得る。
【0054】
(4)NAT装置はデータパケットの宛先アドレスを変更し、次にデータパケットを内部ネットワーク内の端末1に送信する。NAT装置によりデータパケットの宛先アドレスを変更することは、外部ネットワークアドレス(210.21.12.140:2000)を外部ネットワークアドレスにマッピングされた内部ネットワークアドレス(210.15.27.166:8000)に変更することである。
【0055】
NAT装置の動作プロセスから、NAT装置は、データパケットの送信元アドレス及び宛先アドレスを変更することによりアドレスマッピングを実施することが分かる。NAT装置の動作原理は次のように要約され得る。外部ネットワークは、内部ネットワーク端末が外部ネットワークにデータを能動的に送信する場合にのみ内部ネットワーク端末にデータを送信し得る。内部ネットワークから外部ネットワークに送信されるデータの送信元アドレスが変更され、外部ネットワークから内部ネットワークに送信されるデータパケットの宛先アドレスが変更される。
【0056】
異なるNAT装置の背後にある2つの端末、例えば第1の端末及び第2の端末のいずれかは、端末が他方の端末のNAT装置によってマップされた外部ネットワークアドレスを知っていれば、通信のために他方の端末の外部ネットワークアドレスにユーザデータグラムプロトコル(user datagram protocol、UDP)パケットを直接送信し得ることを理解すべきである。すなわち、NATトラバーサルが実施される。しかしながら、端末は端末のNAT外部ネットワークアドレスを直接取得することができない。一般に、端末が端末の外部ネットワークアドレスを取得するのを助けるために、ネットワーク装置(例えば、サーバ)を導入する必要がある。以下では、NATトラバーサルプロセスを説明するために、コーンNAT-コーンNATの組み合わせを一例として用いる。
【0057】
図3は、コーンNAT-コーンNATの組み合わせに基づくNATトラバーサルプロセスの概略図である。以下のステップが含まれる。
【0058】
S101:第1の端末は、第1の端末の外部ネットワークアドレスを問い合わせるために、第1のNAT装置を介してネットワーク装置にクエリメッセージを送信し、ネットワーク装置は、第1の端末の外部ネットワークアドレスを第1の端末に返す。
【0059】
第1の端末の外部ネットワークアドレスは、第1のNAT装置によって設定され得る。具体的なプロセスは以下の通りである。第1の端末が第1のNAT装置を介してネットワーク装置に問い合わせメッセージを送信した後に、第1のNAT装置は、第1の端末のためにクエリメッセージに基づき、第1の端末に対応する外部ネットワークアドレスを設定し、次に、ネットワーク装置は外部ネットワークアドレス情報を第1の端末に送信する。
【0060】
S102:第2の端末は、第2のNAT装置を介してネットワーク装置にデータパケットを送信して第2の端末の外部ネットワークアドレスを問い合わせ、ネットワーク装置は第2の端末の外部ネットワークアドレスを第2の端末に返す。
【0061】
S103:ネットワーク装置は、第1の端末の外部ネットワークアドレスを第2の端末に送信する。
【0062】
ネットワーク装置は、第1のNAT装置を介して第2の端末の外部ネットワークアドレスを第2の端末に送信することを理解すべきである。
【0063】
S104:ネットワーク装置は、第2の端末の外部ネットワークアドレスを第1の端末に送信する。
【0064】
ネットワーク装置は、第2のNAT装置を介して第2の端末の外部ネットワークアドレスを第1の端末に送信することを理解すべきである。
【0065】
S105:第1の端末は、ホールパンチングメッセージを第2の端末の外部ネットワークアドレスに送信する。ホールパンチングメッセージは、第1のNAT装置によって第2の外部ネットワークアドレスのマッピングテーブルを生成するために用いられる。
【0066】
S106:第2のNAT装置は、P2Pチャネルの確立を試みるために、パススルー要求メッセージを第1の端末に送信する。
【0067】
第2のNAT装置が第1の端末のためにパススルー要求メッセージを送信する場合、第2のNAT装置は第1の外部ネットワークアドレスのマッピングテーブルを生成することを理解すべきである。第1のNAT装置は、予めステップS105で、第2の外部ネットワークアドレスのマッピングテーブルを既に生成している。したがって、このステップでは、第2の外部ネットワークアドレスを介して送信されるパススルー要求メッセージは第1の端末に到達し得る。
【0068】
S107:第2の外部ネットワークアドレスを介して送信されたパススルー要求メッセージを受信した後に、第1の端末はパススルー応答メッセージを第2の外部ネットワークアドレスに送信する。ステップS106で、第1の外部ネットワークアドレスのマッピングテーブルは、第2の端末が第2の外部ネットワークアドレスを介してパススルー要求メッセージを第1の外部ネットワークアドレスに送信する際に生成される。したがって、第1の外部ネットワークアドレスのマッピングテーブルが第2のNAT装置で見つかり得る。パススルー応答メッセージは第2の端末に到達できるため、NATトラバーサルが実施され、P2Pチャネルが正常に確立される。
【0069】
NAT装置の動作原理は以下の通りであることを理解すべきである。外部パケットは、パケットが先ずNAT装置内部からが送信された場合にのみ、NAT装置を介して内部ネットワーク端末に到達し得る。したがって、もし内部パケットが最初に送信されていなければ、外部パケットを受信した場合に、NAT装置は外部パケットを破棄する。何故なら、NAT装置はマッピングテーブルを見つけることができないからである。理解を容易にするために、この場合の外部パケットは「未承認」パケットという。技術が発展するにつれ、現在、多くのNAT装置は時間シーケンス要件を有する。具体的には、「未承認」パケットを破棄した後で、NAT装置は「未承認」パケットを送信するために用いられた送信元IPアドレス及びポートをブラックリストに載せる(ある期間の後で、送信元IPアドレス及びポートは自動的に削除され得る)。送信元IPアドレスがブラックリストに載ると、その送信元IPアドレスから送信されるパケットはNAT装置に入ることができない。したがって、NAT装置が時間シーケンス要件を有する場合、NATトラバーサルを実施することができない。
【0070】
NAT装置の時間シーケンス要件のためにNATトラバーサルが失敗するプロセスを、添付の図面を参照しながら以下で説明する。
【0071】
図4はNATトラバーサルプロセスの概略図である。以下のステップが含まれる。
【0072】
S201:第1の端末はネットワーク装置にクエリメッセージを送信して第1の端末の外部ネットワークアドレスを問い合わせ、ネットワーク装置は第1の端末の第1の外部ネットワークアドレスを第1端末に返す。
【0073】
S202:第2の端末はネットワーク装置にクエリメッセージを送信して第2の端末の外部ネットワークアドレスを問い合わせ、ネットワーク装置は第2の端末の第2の外部ネットワークアドレスを第2の端末に返す。
【0074】
S203:ネットワーク装置は、第1の端末の第1の外部ネットワークアドレスを第2の端末に送信する。
【0075】
S204:ネットワーク装置は、第2の端末の第2の外部ネットワークアドレスを第1の端末に送信する。
【0076】
S205:第1の端末はホールパンチングメッセージを第2の外部ネットワークアドレスに送信する。第1のNAT装置からホールパンチングメッセージが送信される場合、第1のNAT装置は第2の外部ネットワークアドレスのマッピングテーブルを生成する。何故なら、第1の外部ネットワークアドレスのマッピングテーブルを第2のNAT装置で見つけることができないため、ホールパンチングメッセージは「未承認」パケットであり、第1の外部ネットワークアドレスがブラックリストに載せられるからである。
【0077】
S206:第2の端末はパススルー要求メッセージを第1の端末に送信する。第2のNAT装置からパススルー要求メッセージが送信される場合、第2のNAT装置は第1の外部ネットワークアドレスのマッピングテーブルを生成する。何故なら、ステップS205で、第1のNAT装置は、予め第2外部ネットワークアドレスのマッピングテーブルを既に生成しているため、パススルー要求メッセージが第1の端末に到達し得るからである。
【0078】
S207:パススルー要求メッセージを受信した後に、第1の端末はパススルー応答メッセージを第2の外部ネットワークアドレスに送信する。この場合、第1の外部ネットワークアドレスのマッピングテーブルを第2のNAT装置で見つけることができるが、第1の外部ネットワークアドレスは既にブラックリストに載せられているため、パススルー応答メッセージは第2の端末に到達できず、P2Pチャネルが確立できない。
【0079】
NAT装置の時間シーケンスによって引き起こされるNATトラバーサル障害の前述の問題に対して、ホールパンチングメッセージをローカルNAT装置から送信できるが、ピアNAT装置に到達できず、ローカルNAT装置がマッピングテーブルを生成できるように有効期間(time to live、TTL)が設定され得る。このように、ホールパンチングメッセージが「未承認」にされることなく外部パケットを送信して、ローカル外部ネットワークアドレスがブラックリストに載せられるのを防止する。
【0080】
しかしながら、現在用いられている方法では、TTLは固定の経験値に設定され、既存のネットワーク装置は大きく異なる。例えば、端末とNAT装置の間のホップの数は異なる。
図4に示すように、第1の端末は3ホップを介してローカルNAT装置に到達する必要があるが、第2の端末は2ホップを介してローカルNAT装置に到達できる。したがって、TTLを固定値に設定することには大きな限界がある。トラバーサルパーティのTTLが設定された経験値を満たさない限り、トラバーサルは失敗する。
【0081】
前述の問題に対処するために、本願の実施形態はNATトラバーサル方法を提供する。既存のネットワークにおける異なるTTLを有するNAT装置に適応するためにTTLはローカルエンド及びピアエンドによって双方向に動的に検出され、時間シーケンス要件を有するNAT装置の低いトラバーサル効率の問題を解決する。
【0082】
図5は、本願の一実施形態に係るNATトラバーサルプロセスの概略図である。
【0083】
本願のこの実施形態で提供されるNATトラバーサル方法は、少なくとも1つの端末を含み、異なる端末が異なるNAT装置によって構築されたネットワーク内に位置するシステムに適用され得ることを理解すべきである。例えば、第1の端末が第2の端末と通信するシステムに適用され得る。第1の端末は、第1のNAT装置によって構築されるネットワーク内の端末であり、第2の端末は、第2のNAT装置によって構築されるネットワーク内の端末であり、第1のNAT装置は第2のNAT装置とは異なる。第1のNAT装置及び第2のNAT装置の両方はコーンNAT装置であり得る。NATトラバーサルプロセスは以下のステップを含む。
【0084】
S301:第1の端末は第1のクエリメッセージをネットワーク装置に送信して、第1の端末に対応する外部ネットワークアドレスを問い合わせ、ネットワーク装置は、第1のクエリメッセージに基づいて、第1の端末の外部ネットワークアドレスを第1の端末に送信する。
【0085】
第1の端末は、第1のNAT装置によって構築されたネットワーク内の少なくとも1つの端末のうちの1つであり、第1のNAT装置はコーンNAT装置であり得ることを理解すべきである。
【0086】
一実施では、第1の端末は、第1のNAT装置を介して第1のクエリメッセージをネットワーク装置に送信し得る。第1のNAT装置は、第1のクエリメッセージに基づいて、第1の端末ための対応する外部ネットワークアドレスを独立的に設定し、次にサーバSは、第1のNAT装置を介して外部ネットワークアドレスを第1の端末に送信する。
【0087】
S302:第2の端末は第2のクエリメッセージをネットワーク装置に送信して、第2の端末に対応する外部ネットワークアドレスを問い合わせ、ネットワーク装置は、第2のクエリメッセージに基づいて、第2の端末の外部ネットワークアドレスを第2の端末に送信する。
【0088】
第2の端末は、第2のNAT装置によって構築されたネットワーク内の少なくとも1つの端末のうちの1つであることを理解すべきである。第2のNAT装置はコーンNAT装置であってもよく、第2のNAT装置は第1のNAT装置と異なる。
【0089】
一実施では、第2の端末は、第2のNAT装置を介して第2のクエリメッセージをネットワーク装置に送信し得る。第2のNAT装置は、第2のクエリメッセージに基づいて、第2の端末ための対応する外部ネットワークアドレスを独立的に設定し、次にサーバSは、第2のNAT装置を介して外部ネットワークアドレスを第2の端末に送信する。
【0090】
S303:ネットワーク装置は、第2の端末に対応する外部ネットワークアドレスを第1の端末に送信する。
【0091】
ネットワーク装置は、第1のNAT装置を介して第2の端末に対応する外部ネットワークアドレスを第1の端末に送信することを理解すべきである。
【0092】
S304:ネットワーク装置は、第1の端末に対応する外部ネットワークアドレスを第2の端末に送信する。
【0093】
ネットワーク装置は、第2のNAT装置を介して第1の端末に対応する外部ネットワークアドレスを第2の端末に送信することを理解すべきである。
【0094】
S305:第1の端末は第1のTTLをセットする。
【0095】
一実施では、第1のTTLの値は、第1のホップカウント及び第2のホップカウントのうちの小さい方の値より大きくなくてもよい。第1のホップカウントは、第1の端末と第1のNAT装置との間のネットワークセグメントの数又は第1の端末によって送信されるメッセージが第1のNAT装置に到達するために通過する必要があるネットワークセグメントの数である。第2のホップカウントは、第2の端末と第2のNAT装置との間のネットワークセグメントの数又は第2の端末によって送信されるメッセージが第2のNAT装置に到達するために通過する必要があるネットワークセグメントの数である。第1のTTLは、例えば1であり得る。
【0096】
S306:第1の端末は、第2の端末によって送信された第1のパススルーメッセージを第1の端末が設定されたTTL内で受信するかどうかを判断し、第1の端末が設定されたTTL内で第1のパススルーメッセージを受信しない場合、第1の端末は第2のパススルーメッセージを第2の端末に送信し、第2の端末によって送信される第1の応答メッセージを第1の端末が受信するかどうか判断する。
【0097】
ステップS305での第1のTTLは、第1の端末によって暫定的に設定された値であるため、第1の端末は、ピアエンドによって送信されるパススルーメッセージが第1のTTL内で受信できるかどうかに基づいて、NATトラバーサルが成功するかどうか判断する必要がある。第1の端末が第2の端末によって送信される第1のパススルーメッセージを受信できるかどうかは、第1のNAT装置が予めアドレスマッピングテーブルを既に生成しているかどうか、すなわち、第1のNAT装置が第1の端末によって送信されるホールパンチングメッセージを受信するかどうかに依存する。
【0098】
一実施では、第1のTTLを設定した後に、第1の端末は第1のホールパンチングメッセージを第1のNAT装置に送信する。第1のホールパンチングメッセージが第1のTTL内で第1のNAT装置に到達できる場合、第1のNAT装置は、第1のホールパンチングメッセージに対応する宛先アドレスのマッピングテーブル、すなわち、第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを確立してもよく、第2の端末によって第1の端末に続けて送信される第1のパススルーメッセージは第1の端末に正常に送信され得る。この場合、第1の端末装置は、第2の応答メッセージを第2の端末装置に送信し得る。第1のホールパンチングメッセージが第1のTTL内で第1のNAT装置に到達しない場合、第1のNAT装置は、第1の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成しない。第1のNAT装置は、その後、第2の端末によって第1の端末に送信される第1のパススルーメッセージを受信した場合、メッセージは内部ネットワーク内の第1の端末に送信されない。すなわち、第1の端末は第1のパススルーメッセージを受信することができない。加えて、NAT装置の時間シーケンス要件により、第2端末に対応する外部ネットワークアドレスがブラックリストに載せられる。この場合、NATトラバーサルは失敗する。すなわち、第1の端末が有効期間を第1のTTLに設定したときに、第1のNAT装置が宛先アドレスのマッピングテーブルを生成しない場合、第2の端末によって送信される第1のパススルー要求メッセージを受信したとき、第1のNAT装置は、第2の端末に対応する外部ネットワークアドレスに関する情報をマッピングテーブル内で見つけることができない。パススルー要求メッセージは「未承認」メッセージと見なされ、第1のNAT装置は、第2の端末に対応する外部ネットワークアドレスをブラックリストに載せる。
【0099】
TTLは、データパケットがルータによって破棄される前に通過が許されるネットワークセグメントの最大数(すなわち、ホップ)であることを理解すべきである。TTLの値が端末とNAT装置との間のホップカウントより小さい場合、ホールパンチメッセージはNAT装置に到達することができない。NAT装置は宛先アドレスのマッピングテーブルを生成できないため、NATトラバーサルが失敗する。この場合、TTLの値が第1のホップカウント及び第2のホップカウントのうちの小さい方の値と等しくなるまで、TTLの値を再設定して、NATトラバーサルが成功できるようにする必要がある。例えば、
図5に示すネットワークシナリオでは、ホールパンチングメッセージが第1の端末から第1のNAT装置に通過するのに必要なホップの数は4であり、ホールパンチングメッセージのTTLは1である。したがって、ホールパンチングメッセージは第1のTTL内で第1のNAT装置に到達することができず、第1のNAT装置は第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成できない。その結果、ホールパンチングが失敗する。
【0100】
一実施では、第1のNAT装置が第2の端末に対応する外部ネットワークアドレスをブラックリストに載せた後、第2の端末はもはや第1の端末によって送信されるメッセージを受信することができない。第2の端末は、第1の端末によって送信される第2の応答メッセージが特定の期間内に受信されないと判断した場合、第2の端末は、第2の端末の外部ネットワークアドレスがブラックリストに載せられていると判断し得る。この場合、第2の端末は、ネットワーク装置から、第2の端末に対応する外部ネットワークアドレスの変更を再度要求し得る。ネットワーク装置は、第2のNAT装置を介して第2の端末のために外部ネットワークアドレスを再設定し得る。
【0101】
一実施では、第1の端末が第1のTTL内に第1のパススルーメッセージを受信しない場合、NATトラバーサルが失敗する。この場合、第2の端末は、NATトラバーサルが第1のTTL内で実施できるかどうか検出し得る。具体的には、第2の端末に対応する外部ネットワークアドレスを変更した後に、第2の端末は第1のTTLを設定し、第1のTTL内で第2のホールパンチメッセージを第2のNAT装置に送信する。第1のTTL内で、第2のホールパンチングメッセージが第2のNAT装置に到達できる場合、NAT装置は宛先アドレスのマッピングテーブルを生成し得る。この場合、第2の端末は、第1の端末によって送信される第2のパススルーメッセージを受信し得る。第2のホールパンチングメッセージが第2のNAT装置に到達できない場合、NAT装置は宛先アドレスのマッピングテーブルを生成できない。この場合、第2の端末は、第1の端末によって送信される第2のパススルーメッセージを受信できない。
【0102】
第1の端末は、第1のパススルーメッセージを第2の端末に周期的に送信し、第2の端末も第2のパススルーメッセージを第1の端末に周期的に送信し得ることを理解すべきである。
【0103】
例えば、
図5に示すネットワークシナリオでは、第2のホールパンチングメッセージが第2の端末から第2のNAT装置に通過するのに必要なホップの数は5であり、ホールパンチングメッセージのTTLは1である。したがって、TTLが第1のTTLの場合、ホールパンチングメッセージは第2のNAT装置に到達できず、第2のNAT装置は第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成できない。その結果、ホールパンチングが失敗する。
【0104】
一実施では、第2の端末が第1の端末によって送られる第2のパススルーメッセージを受信した場合、第2の端末はNATトラバーサルが成功したと判断し、第2の端末は第1の応答メッセージを第1の端末に送信し得る。この場合、第1の端末は、第1の応答メッセージが受信されたかどうかに基づいて、第2のパススルーメッセージが第2の端末によって受信されるかどうか、すなわち、NATトラバーサルが成功したかどうか判断し得る。
【0105】
S307:第1の端末が第2の端末によって送信される第1の応答メッセージを受信した場合、第1の端末はNATトラバーサルが成功したと判断するか又は第1の端末が第2の端末によって送信される第1の応答メッセージを受信しない場合、第1の端末に対応する外部ネットワークアドレスを変更し、TTLをリセットした後に、第1の端末は、第1の端末が第1のパススルーメッセージ又は第1の応答メッセージを受信するまで上記のプロセスを繰り返し、NATトラバーサルが成功したと判断する。
【0106】
一実施では、第2のホールパンチングメッセージが第1のTTL内で第2のNAT装置に到達した場合、第2のNAT装置は、第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成する。その後、第1の端末によって第2の端末に送信される第2のパススルーメッセージを第2のNAT装置が受信した場合、メッセージが第2の端末に送信され、第2の端末は第1の応答メッセージを第1の端末に送信する。この場合、NATトラバーサルは成功する。
【0107】
一実施では、第2のホールパンチングメッセージが第1のTTL内で第2のNAT装置に到達しない場合、第2のNAT装置は、第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成しない。その後、第1の端末によって第2の端末に送信される第2のパススルーメッセージを第2のNAT装置が受信した場合、メッセージは第2の端末に送信されず、第2の端末は第1の応答メッセージを第1の端末に送信しない。第1の端末が特定の期間内に第1の応答メッセージを受信しない場合、第1端末に対応する外部ネットワークアドレスがブラックリストに載せられていると判断される。
【0108】
一実施では、第1の端末に対応する外部ネットワークアドレスがブラックリストに載せられた後に、第1の端末は、ネットワーク装置から、外部ネットワークアドレスの変更を再度要求し得る。ネットワーク装置は、第1の端末に、第1の端末に対応する外部ネットワークアドレスを再度割り当てし得る。すなわち、第1の端末に対応する外部ネットワークアドレスを変更し得る。
【0109】
一実施では、第2のパススルーメッセージが第2の端末によって受信されなかった場合、第1の端末はTTLの値をリセットし、例えば、値を第2のTTLに設定する。第2のTTLは第1のTTLとは異なる。例えば、第2のTTLは第1のTTLよりも大きくてもよい。
【0110】
一実施では、TTLの値をリセットした後に、第1の端末は、第1のパススルーメッセージを受信されたかどうかを繰り返し判定する。第1のパススルーメッセージが受信された場合、NATトラバーサルは成功している。第1のパススルーメッセージが受信されていない場合、第1の端末は第2のパススルーメッセージを第2の端末に再度送信する。第2のパススルーメッセージが第2の端末によって受信されると、第1の端末は第2の端末によって送信される第1の応答メッセージを受信する。この場合、NATトラバーサルは成功する。第2のパススルーメッセージが第2の端末によって受信されず、第1の端末に対応する外部ネットワークアドレスが第2のNAT装置によってブラックリストに載せられている場合、第1の端末は第1の端末に対応する外部ネットワークアドレスを変更し、TTLをリセットし、TTLが値に設定されている場合に第1の端末が第1のパススルーメッセージ又は第1の応答メッセージを受信できるまで、すなわちNATトラバーサルが成功するまで、上記のプロセスを繰り返す。
【0111】
第2の端末の動作ステップは、第1の端末の動作ステップに対応することを理解すべきであり、詳細については再度説明しない。
【0112】
上記のステップを用いることにより、第1の端末又は第2の端末が、第1のTTL内でピアエンドによって送信されるパススルーメッセージを受信しないと判断された場合、TTLの値をリセットする必要があることを理解すべきである。例えば、TTLの値が増やされてもよく、TTLの値がNATトラバーサルを成功させることができるまで、2つの端末の上記のプロセスが繰り返される。
【0113】
一例では、第2のTTLがリセットされ、第2のTTLは第1のTTLよりも大きい。例えば、第2のTTLは4である。第1の端末によって送信されるホールパンチメッセージが、第2TTL内で第1の端末に対応する外部ネットワークアドレス(外部ネットワークアドレスは変更された外部ネットワークアドレスである)に到達できるかどうか判断される。
図5に示すシナリオでは、第1の端末によって送信されるホールパンチングメッセージは、第1のNAT装置に到達するために4ホップを通過する必要がある。第2のTTLが4の場合、ホールパンチングメッセージは第1のNAT装置にちょうど到達することができるが、第2のNAT装置に到達することはできない。したがって、ホールパンチングメッセージは、ローカルNAT装置から正常に送信され、第1のNAT装置は、第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成し、ホールパンチングが成功する。
【0114】
一実施では、ホールパンチングに成功した後に、第2の端末が外部ネットワークアドレスを介して第1のパススルー要求メッセージを第1の端末に送信する場合、第1のNAT装置は予め第2の端末に対応する外部ネットワークアドレスのマッピングテーブルを既に生成しているため、第1のNAT装置は、マッピングテーブル内に第2の端末に対応する外部ネットワークアドレスのマッピング情報を見つけることができ、パススルー要求メッセージが第1の端末に到達し得る。このプロセスでは、第2のNAT装置は第1の端末のためにパススルー要求メッセージを送信する。したがって、第2のNAT装置は、第1の端末に対応する外部ネットワークアドレスのマッピングテーブルを生成し得る。
【0115】
本願のこの実施形態で提供されるNATトラバーサル方法によれば、ピアツーピア通信の一端によって送信されるメッセージが、その端でのNAT装置にちょうど到達できるが、ピアエンドではNAT装置に到達しないことを決定するために、ローカルエンド及びピアエンドによるメッセージを送信するTTLが検出され、TTL値が動的に調整される。このように、一端はマッピングテーブルを生成し、その端の外部ネットワークアドレスはブラックリストに載せられないため、NATトラバーサルが最終的に実施される。
【0116】
TTLの値は、TTLについて得ることができる比較的小さな値から試験され得ることを理解すべきである。例えば、端末と端部の対応するNAT装置との間のホップの数がおおまかに決定され、TTLの値は端部のホップ数のうちの最小のホップ数を超えてはならない場合。TTLの値が比較的小さく、端部の端末によって送信されるホールパンチングメッセージが対応するNAT装置に到達しない場合、TTLの値が適切に増やされ、一端の端末によって送信されるホールパンチングメッセージが対応するNAT装置に到達し、ピアエンドのNAT装置に到達しないまで、上記の決定プロセスが繰り返される。この場合、ホールパンチングは成功する。ホールパンチングメッセージが対応するNAT装置に最初に到達するが、ピアエンドのNAT装置に到達しない端部は、端末と対応するNAT装置の間のホップ数が最小の端部であり得る。
【0117】
添付の図面を参照しながら、本願の実施形態で提供されるNATトラバーサル方法が適用され得るシナリオを以下で説明する。
【0118】
図6は、本願の一実施形態に係る、ピアツーピア通信シナリオに対するNATトラバーサル方法への適用の概略図である。
【0119】
本願の実施形態で提供されるNATトラバーサル方法は、P2P通信シナリオ、例えば、ユーザがインターネット通話(例えば、音声通話又はビデオ通話)を行うシナリオに適用され得ることを理解すべきである。
図6に示すように、第1のユーザが位置するネットワーク内のNAT装置は、時間シーケンス要件を有するコーンNAT装置であり、第2のユーザが位置するネットワーク内のNAT装置も時間シーケンス要件を有するコーンNAT装置であり得る場合、NATトラバーサルは、本願のこの実施形態で提供される双方向TTL検出方法を用いることにより実施され得る。このシナリオにおける本願の実施形態で提供されるNATトラバーサル方法を以下で簡単に説明する。
【0120】
S401:第1のユーザは、サーバを介して第2のユーザへの通話を開始する。
【0121】
第1のユーザによって開始される通話は、例えば音声通話又はビデオ通話であり得ることを理解すべきである。
【0122】
S402:通話要求が第2のユーザに到達した後、第1のユーザ及び第2のユーザは、本願の実施形態で提供されるNATトラバーサル方法を用いることにより、NATトラバーサルを実施し得る。NATトラバーサル方法の特定のプロセスについては、
図5の関連説明を参照されたい。繰り返しを避けるために、ここでは詳細について再度説明しない。
【0123】
S403:第1のユーザ及び第2のユーザがP2Pネットワーク通話を行い、P2Pネットワーク通話はサーバを用いることなく行われる。
【0124】
本願の実施形態で提供されるNATトラバーサル方法によれば、NATトラバーサルは双方向TTL検出ソリューションを用いることにより行われるため、NAT装置がピアツーピア通信を実装するために、NAT装置が時間シーケンス要件を有する場合にNATトラバーサルを成功裏に完了させることができる。加えて、本願の実施形態で提供されるNATトラバーサル方法では、NATトラバーサルは、NATトラバーサルが行われる2つ以上の端部のうちの1つにおけるTTLが、端部におけるNAT装置からホールパンチングメッセージが送信され、他端におけるNAT装置に到達しないことを保証する限り、成功裏に実施され得る。
【0125】
図7は、本願の一実施形態に係る端末装置の構造の概略図である。端末装置700は、処理モジュール710及び送信モジュール720を含む。
【0126】
一実施では、処理モジュール710は、第1の有効期間(TTL)を設定し、第2の端末によって送信される第1のパススルーメッセージを第1の端末が第1のTTL内で受信できるかどうか判断するように構成されている。
【0127】
一実施では、送信モジュール720は、第1の端末が第1のパススルーメッセージを受信しない場合に、第2のパススルーメッセージを第2の端末に送信するように構成されている。
【0128】
一実施では、処理モジュール710は、第2のパススルーメッセージが第2の端末によって受信されていない場合に、第1の端末が第1のパススルーメッセージを受信するか又は第2の端末が第2のパススルーメッセージを受信するまでTTLの値をリセットし、NATトラバーサルが成功したと判断するように構成されている。
【0129】
一実施では、処理モジュール710がTTLの値をリセットし、上記のプロセスを繰り返すことは、処理モジュール710がTTLの値を第2のTTLをリセットし、第2のTTLは第1のTTLよりも大きい、ことを含む。処理モジュール710は、第1のパススルーメッセージが第2のTTL内で受信できるかどうか判断する。第1の端末が第1のパススルーメッセージを受信しない場合に、送信モジュール720は、変更された外部ネットワークアドレスを介して第2のパススルーメッセージを第2の端末に送信する。第2のパススルーメッセージが第2の端末によって受信されない場合、処理モジュール710はTTLの値を再度リセットする。
【0130】
一実施では、第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。第1のホップカウントは、第1の端末と第1のNAT装置との間のネットワークセグメントの数であり、第2のホップカウントは、第2の端末と第2のNAT装置との間のネットワークセグメントの数である。
【0131】
本出願のこの実施形態における第1のNAT装置及び第2のNAT装置は、コーンNAT装置であり得ることを理解すべきである。
【0132】
一実施では、送信モジュール720は、第1のNAT装置を介して第1のクエリ情報をネットワーク装置に送信するようにさらに構成されている。第1のクエリ情報は、第1の端末に対応する外部ネットワークアドレスを問い合わせるために用いられる。端末は受信モジュールをさらに含み、該受信モジュールは、ネットワーク装置によって送信される第1の応答情報を受信するように構成されている。第1の応答情報は、第1の端末に対応する外部ネットワークアドレスを含む。
【0133】
図8は、本願の一実施形態に係るNAT装置の構造の概略図である。NAT装置は、第1の端末が第2の端末と通信するシステムで用いられる。第1の端末は、第1のNAT装置によって構築されるネットワーク内の端末であり、第2の端末は、第2のNAT装置によって構築されるネットワーク内の端末であり、第1のNAT装置は、第2のNAT装置とは異なる。
図8に示すNAT装置の構造は、本願のこの実施形態における第1のNAT装置の構造図又は第2のNAT装置の構造図であり得る。NAT装置800は送信モジュール810及び処理モジュール820を含む。
【0134】
一実施では、送信モジュール810は、TTLが第1のTTLの場合に、第1のパススルーメッセージを第1の端末に送信するように構成されている。
【0135】
一実施では、処理モジュール820は、第1のパススルーメッセージが第1の端末によって受信できない場合に、第2の端末によって送信されるホールパンチングメッセージが受信されるかどうか判断するように構成されている。
【0136】
一実施では、処理モジュール820は、第2のNAT装置がホールパンチングメッセージを受信しない場合に、第2のNAT装置が第1の端末によって送信される第2のパススルーメッセージを受信すると、第1の端末に対応する外部ネットワークアドレスをブラックリストに載せ、TTLの値をリセットした後に、第1のパススルーメッセージが第1の端末によって受信されるか又は第1のNAT装置がホールパンチングメッセージを受信するまで、上記のプロセスを繰り返すようにさらに構成されている。
【0137】
一実施では、送信モジュール810は、第2のTTL内で第1のパススルーメッセージを第1の端末に送信するようにさらに構成され、第2のTTLは第1のTTLよりも大きい。第1のパススルーメッセージが第1の端末によって受信できない場合、処理モジュール820は、第2の端末によって送信されたホールパンチングメッセージが受信されたかどうか判断するようにさらに構成されている。第2のNAT装置がホールパンチングメッセージを受信しない場合に、第2のNAT装置が第1の端末によって送信される第2のパススルーメッセージを受信すると、処理モジュール820は、第1の端末に対応する変更された外部ネットワークアドレスをブラックリストに載せ、TTLの値を再度リセットした後に、上記のプロセスを繰り返すように構成されている。
【0138】
一実施では、第1のTTLは、第1のホップカウント及び第2のホップカウントのうちの小さい方の値よりも大きくない。第1のホップカウントは、第1の端末と第1のNAT装置との間のネットワークセグメントの数であり、第2のホップカウントは、第2の端末と第2のNAT装置との間のネットワークセグメントの数である。
【0139】
本願のこの実施形態における第1のNAT装置及び第2のNAT装置はコーンNAT装置であり得ることを理解すべきである。
【0140】
加えて、本願の一実施形態は通信システムをさらに提供する。通信システムは、少なくとも1つの端末装置、少なくとも1つのNAT装置及びサーバを含む。端末装置お及びNAT装置は、本願の実施形態で提供される方法を行うように構成されている。
【0141】
当業者であれば、本明細書で開示した実施形態を参照して説明した例におけるユニット及びアルゴリズムのステップは、電子ハードウェア又はコンピュータソフトウェアと電子ハードウェアとの組み合わせによって実施できることを認識するであろう。機能がハードウェア又はソフトウェアによって実行されるかどうかは、技術的解決策の特定の用途及び設計上の制約条件に依存する。当業者であれば、特定の用途ごとに、説明した機能を実施するために異なる方法を用いり得るが、係る実施は本願の範囲を超えるものと考えるべきではない。
【0142】
当業者であれば、便利で簡単な説明のために、前述のシステム、装置及びユニットの詳細な動作プロセスについては、前述の方法の実施形態における対応するプロセスを参照すべきことを明確に理解し、ここでは詳細については再度説明しない。
【0143】
本願で提供されるいくつかの実施形態では、開示したシステム、装置及び方法は、他の方法で実施され得ることを理解すべきである。例えば、説明した装置の実施形態は一例にすぎない。例えば、ユニットへの分割は論理機能分割であり、実際の実施では他の分割であってもよい。例えば、複数のユニット又はコンポーネントは、別のシステムに組み合わされるか又は統合され得るか又は一部の特徴は無視され得るか又は行われないことがある。加えて、表示又は説明した相互連結、直接連結又は通信接続は、いくつかのインターフェイスを介して実施され得る。装置又はユニット間の間接的な連結又は通信接続は、電子的、機械的又は他の形態で実施され得る。
【0144】
別個の部品として説明したユニットは物理的に分離されていても、されていなくてもよく、ユニットとして表示される部品は物理的ユニットであってもなくてもよく、1つの場所に位置していても、複数のネットワークユニット上に分散していてもよい。ユニットの一部又は全ては、実施形態の解決策の目的を実現するために、実際の要件に基づいて選択され得る。
【0145】
加えて、本願の実施形態における機能ユニットは、1つの処理ユニットに統合されてもよく、各ユニットは、物理的に単独で存在してもよく又は2つ以上のユニットが1つのユニットに統合されてもよい。
【0146】
機能がソフトウェア機能単位の形態で実施され、独立した製品として販売又は用いられる場合、これらの機能はコンピュータ読み取り可能記憶媒体に記憶され得る。このような理解に基づいて、本願の技術的解決策は本質的に又は従来の技術に寄与する部分又は技術的解決策の一部はソフトウェア製品の形態で実施され得る。コンピュータソフトウェア製品は記憶媒体に記憶され、(パーソナルコンピュータ、サーバ又はネットワーク装置であり得る)コンピュータ装置に、本願の実施形態で説明した方法のステップの全て又は一部を行うよう命令するためのいくつかの命令を含む。前述の記憶媒体は、USBフラッシュドライブ、リムーバブルハードディスク、読み出し専用メモリ(read-only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、磁気ディスク又は光ディスク等のプログラムコードを記憶可能な任意の媒体を含む。
【0147】
前述の説明は本願の具体的な実施にすぎず、本願の保護範囲を限定することを意図していない。本願に開示の技術的範囲内で、当業者が容易に理解できる変更又は置換は本願の保護範囲に含まれるものとする。したがって、本願の保護範囲は特許請求の範囲の保護範囲に従うものとする。