JP2007208999A - 通信方法 - Google Patents

通信方法 Download PDF

Info

Publication number
JP2007208999A
JP2007208999A JP2007038605A JP2007038605A JP2007208999A JP 2007208999 A JP2007208999 A JP 2007208999A JP 2007038605 A JP2007038605 A JP 2007038605A JP 2007038605 A JP2007038605 A JP 2007038605A JP 2007208999 A JP2007208999 A JP 2007208999A
Authority
JP
Japan
Prior art keywords
packet
network device
ttl
router
communication
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.)
Pending
Application number
JP2007038605A
Other languages
English (en)
Inventor
Ikuya Yamada
育矢 山田
Daisuke Sato
大介 佐藤
Yuji Sunochi
雄司 須之内
Eiji Araki
英士 荒木
Tomoyuki Konose
友之 木野瀬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fractalist Inc
Original Assignee
Fractalist Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fractalist Inc filed Critical Fractalist Inc
Priority to JP2007038605A priority Critical patent/JP2007208999A/ja
Publication of JP2007208999A publication Critical patent/JP2007208999A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

【課題】NAT機能を利用した接続環境においても、確実にP2Pアプリケーションを実現する。
【解決手段】ホストコンピュータ11からルータ13へ、TTLの設定値を1から1ずつ増やした複数のエコーパケット51を順次送信する第1ステップと、複数のエコーパケットのうちの1つに応答して、ルータ13から返送されたエコーパケット52を受信すると、ホスト11が返送されたエコーパケット51のTTLの設定値を、ルータ13までのホップ数として認識する第2ステップと、ホスト11からルータ13へ、ホップ数として認識されたTTLの設定値に1を加えた値αをTTLに設定したポート設定パケット53を送信する第3ステップとを備えた。
【選択図】図3

Description

本発明は、通信方法に関し、より詳細には、NAT機能を有するネットワーク機器に接続されたコンピュータからP2P型通信を行うための通信方法に関する。
近年、インターネットに接続するホストコンピュータの増大により、IPアドレスの不足という問題が顕著化している。そこで、IPアドレスの不足を解消するための一つの方法として、NAT(Network Address Translator)機能が利用されている。NAT機能は、閉域網であるLAN内のプライベートアドレスを有するホストコンピュータと、インターネット内のグローバルアドレスを有するホストコンピュータとの間で通信を行うために、アドレス変換を行う。
図1に、NAT機能を説明するためのネットワーク接続図を示す。ホスト11には、プライベートアドレスAとグローバルアドレスMとが割り当てられている。ルータ13には、NAT機能が実装されており、プライベートアドレスをグローバルアドレスに変換するための変換テーブルが格納されている。ここでホスト11からインターネット内のホスト12(グローバルアドレスN)へ、ルータ13,14を介してIPパケットを送信する。ホスト11から送信されるIPパケットのヘッダには、宛先アドレス21として「N」、送信元アドレス22として「A」が書き込まれ、TCPヘッダまたはUDPヘッダには、宛先ポート番号23として「200」、送信元ポート番号24として「100」が書き込まれている。ルータ13は、変換テーブルを参照して、送信元アドレス22のプライベートアドレスAをグローバルアドレスMに変換し、ルータ14に向けてパケットを送信する。
次に、ホスト12からホスト11へ、ルータ14,13を介してIPパケットを送信する。ホスト12から送信されるIPパケットのヘッダには、宛先アドレス31として「M」、送信元アドレス32として「N」が書き込まれ、TCPヘッダまたはUDPヘッダには、宛先ポート番号33として「100」、送信元ポート番号34として「200」が書き込まれている。ルータ13は、変換テーブルを参照して、宛先アドレス31のグローバルアドレスMをプライベートアドレスAに変換し、LAN内のホスト11に向けてパケットを送信する。
一方、オンラインゲームやビデオチャットなどのP2P(peer to peer)型通信を利用したアプリケーション(以下、P2Pアプリケーションという)の利用が増えている。P2P型通信は、サーバを介さずに、端末間で直接通信をおこなう。NAT機能を利用した接続環境において、P2Pアプリケーションを利用するために、IETF(Internet Engineering Task Force)の規格であるSTUN(例えば、非特許文献1参照)技術が知られている。
しかしながら、STUN技術によっても端末間で通信ができない場合があるという問題があった。規格が詳細な部分まで規定されていなかったり、ルータによって実装する部分が異なるためである。具体的な例を以下に説明する。
図2に、ICMPパケットによりブロックを行う場合を示す。ホスト11が、ホスト12に向け、ルータ14のポート番号「200」を宛先ポート番号としてパケット41を送信する。このとき、ルータ14が、ポート番号「200」を使用していない場合には、ICMPパケット(宛先到達不能メッセージ)42をルータ13に返送する。ルータ13は、ICMPパケット42を受信すると、送信元ポート番号「100」のポートを閉じるようになっている。従って、以後ホスト11が、ホスト12に向けてパケット43を送信しても、ルータ13はパケット43を受け付けない。
また、ルータ内に格納されている変換テーブルの内容は、通信が中断してから一定時間が経過すると、削除されてしまう。すなわち、宛先アドレス、送信元アドレス、宛先ポート番号、および送信元ポート番号の関係がクリアされてしまい、ルータ13は、同一のアドレス、同一のポート番号を設定したパケットを受け付けない。
さらに、シンメトリックルータと呼ばれるルータは、宛先ポート番号、宛先アドレスが変わるごとに、自身のポート番号、すなわち送信元ポート番号を変えてしまう。従って、同一のセッションで異なる宛先ポート番号にパケットを送信すると、以後同一の送信元ポート番号を使用してパケットを送信することができない。
本発明は、このような問題に鑑みてなされたもので、その目的とするところは、NAT機能を利用した接続環境においても、確実にP2Pアプリケーションを実現するための通信方法を提供することにある。
本発明は、このような目的を達成するために、請求項1に記載の発明は、NAT機能を有するネットワーク機器に接続されたコンピュータからP2P型通信を行うための通信方法において、送信元コンピュータから前記ネットワーク機器を介して宛先コンピュータに向けて、TTLの設定値を1から1ずつ増やした複数のエコーパケットを、順次送信する第1ステップと、前記複数のエコーパケットのうちの1つに応答して、前記ネットワーク機器から返送されたエコーパケットを受信すると、前記送信元コンピュータが前記返送されたエコーパケットに先立って送信したエコーパケットに設定したTTLの設定値を、前記ネットワーク機器までのホップ数として認識する第2ステップと、前記送信元コンピュータから前記ネットワーク機器へ、前記ネットワーク機器までのホップ数として認識されたTTLの設定値に1を加えた値を、TTLに設定したポート設定パケットを送信する第3ステップとを備えたことを特徴とする。
請求項2に記載の発明は、請求項1に記載の通信方法において、前記送信元コンピュータから前記ネットワーク機器を介して前記宛先コンピュータに向けて、前記ネットワーク機器までのホップ数として認識されたTTLの設定値に1を加えた値を、TTLに設定したキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第4ステップをさらに備えたことを特徴とする。
請求項3に記載の発明は、P2P型通信を行うために、NAT機能を有するネットワーク機器に接続されたコンピュータに、請求項1または2に記載の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体であることを特徴とする。
請求項4に記載の発明は、P2P型通信を行うために、NAT機能を有するネットワーク機器に接続されたコンピュータに、請求項1または2に記載の各ステップを実行させるためのプログラムであることを特徴とする。
以上説明したように、本発明によれば、通信の開始から終了まで、ネットワーク機器における所定のポートを常に開いておくことができるので、NAT機能を利用した接続環境においても、確実にP2Pアプリケーションを実現することが可能となる。
以下、図面を参照しながら本発明の実施形態について詳細に説明する。上述したように、NAT機能を利用した接続環境において、P2Pアプリケーションを実現するためには、通信の開始から終了まで、ルータにおける所定のポートを常に開いておく必要がある。そこで、通信の最初にボートを開いておく方法、いったん開いたポートを維持する方法、通信中のポート番号の変更に対応する方法を順次説明する。
図3に、本発明の第1の実施形態にかかるP2P通信方法を示す。端末間でP2P通信を行う場合には、ICMPパケットによるブロックを避けて、最初に、セッションで使用するルータのポートを開いておく必要がある。そこで、ルータ13までのホップ数を調べ、ポートを開けるためのUDPパケットを送信する。
具体的には、ホスト11でICMPのエコーパケットを生成し、TTL(Time To Live)=1で送信する。順次、TTL=2.3…と増やして、複数のエコーパケットを送信する。TTLの数値がルータ13のホップ数と等しいエコーパケット51を送信すると、ルータ13よりエコーパケット52がホスト11に返送される。ホスト11は、返送されたエコーパケット52により、ルータ13までのホップ数を知ることができる。
次に、ホスト11は、ルータ13のホップ数に1を加えた値αをTTLに設定し、送信元ポート番号「100」のポート設定パケット53を送信する。これによって、ルータ13の送信元ポート番号「100」のポートが開かれる。ポート設定パケット53は、ルータ13の次のホップで削除されるので、他の通信に影響を与えることはない。
このような構成により、ルータ13の送信元ポート番号「100」のポートを開けておくことにより、パケット54,55による端末間の通信を行うことができる。このとき、ルータ14もICMPパケットによりブロックを行う機能を有している場合には、ホスト12においても、同様の処理を行う。
図4に、本発明の第2の実施形態にかかるP2P通信方法を示す。同一のセッションにおいて、パケットの送受信が途絶えている間は、ルータが変換テーブルをクリアしないように、いったん開いたポートを維持しておく必要がある。そこで、パケットの送受信が途絶えている間は、キープアライブパケットを一定時間間隔で送信する。例えば、上述したICMPエコーパケットを利用して、ルータ13までのホップ数を予め調べておく。ホスト11は、ルータ13のホップ数に1を加えた値αをTTLに設定し、送信元ポート番号「100」のUDPパケット61を送信する。これによって、ルータ13に格納されている変換テーブルの内容は削除されず、以後、同一のポート番号を設定したパケットを送信することができる。
なお、第1および第2の実施形態においては、ICMPパケットによりブロックを行う機能を有しているルータにのみ送信するようにしてもよい。ルータによっては、TTLの設定値がαの場合に、パケットを破棄してポートを閉じてしまう機能を有する場合があるからである。
ポート設定パケットおよびキープアライブパケットが他のホストに到達した場合に、通信の混乱が起こらないようにする。例えば、図4に示したように、全てのパケットの先頭に、フラグ63,64を付加し、キープアライブパケットの場合は「1」を、通常のパケットの場合は「0」を設定する。このようにして、ホストがキープアライブパケットを受信した場合でも、これを識別して破棄することができる。
図5に、本発明の第3の実施形態にかかるP2P通信方法を示す。シンメトリックルータなど通信中のポート番号の変更に対応する方法を説明する。ルータ13は、シンメトリックルータであり、宛先ポート番号、宛先アドレスが変わるごとに、自身のポート番号を2ずつインクリメントする。ルータ14も、シンメトリックルータであり、自身のポート番号を5ずつインクリメントする。このような場合に、ホスト11,12は、セッション管理サーバ15を介して、ポート番号を予測しながら通信を行う。
図6に、本発明の一実施形態にかかるポート番号の予測方法を示す。ホスト11,12における予測方法の処理の流れを示している。最初に、ホスト11,12は、セッション管理サーバ15からポートチェック1パケットを受信する(S102)。ポートチェック1パケットは、ホスト11,12において、ルータ13,14のポート番号のインクリメント数を調べさせるための指示パケットである。ポートチェック1パケットを受信したホスト11,12は、新しいソケットペア、すなわち宛先ポート番号、宛先アドレスの少なくともいずれかを変えたUDPパケットを、セッション管理サーバ15に送信する(S104)。
セッション管理サーバ15は、受信したUDPパケットから送信元ポート番号、すなわち変更されたルータ13,14のポート番号を抽出して、ホスト11,12に応答パケットを送信する(S106)。ホスト11,12は、さらに、新しいソケットペアでn回繰り返してUDPパケットを、セッション管理サーバ15に送信する(S108)。
ホスト11,12は、UDPパケットをn回送信した後、受信した応答パケットから、ルータ13,14のn個のポート番号を取得する。ホスト11,12は、得られたポート番号からインクリメント数を算出する(S110)。算出の方法は、例えば、取得したポート番号の差分の平均値とする。差分の最大値と最小値を除いて、平均を算出するなどの計算方法を用いることもできる。
図7に、予測されたポート番号に基づいたP2P通信方法を示す。最初に、ホスト11,12は、セッション管理サーバ15にポートチェック2パケットを送信する(S202)。ポートチェック2パケットは、ルータ13,14のポート番号を調べるための指示パケットである。ポートチェック2パケットを受信したセッション管理サーバ15は、受信したUDPパケットから送信元ポート番号を抽出して、ホスト11,12に送信する(S204)。
ホスト11,12は、受信した送信元ポート番号に、図6に示した予測方法により取得したインクリメント数を加算して、セッション管理サーバ15にポートチェック3パケットを送信する(S206)。ポートチェック3パケットを受信したセッション管理サーバ15は、通信の相手先として各々対応するルータのポート番号を抽出して、ホスト11,12に送信する(S208)。ホスト11,12は、ステップS206で使用した送信元ポート番号と、ステップS208で受信したポート番号を宛先ポート番号として設定して、通常のパケットの送受信を行う。
この構成によれば、通信を行うホスト11,12は、セッション管理サーバ15を介して、常に正確なポート番号を予測することができるので、シンメトリックルータを介したP2Pアプリケーションを実現することができる。
本実施形態によれば、通信の開始から終了まで、ルータにおける所定のポートを常に開いておくために、ICMPパケットによるブロックを避けて、通信の最初にボートを開いておくことができ、いったん開いたポートを維持して、通信中のポート番号の変更にも対応することができる。
本発明は、NAT機能を利用した接続環境においても、確実にP2Pアプリケーションを実現することができるルータ、ゲートウェイなどのネットワーク機器に適用することができる。
NAT機能を説明するためのネットワーク接続図である。 ICMPパケットによりブロックを行う機能を説明するためのネットワーク接続図である。 本発明の第1の実施形態にかかるP2P通信方法を示すネットワーク接続図である。 本発明の第2の実施形態にかかるP2P通信方法を示すネットワーク接続図である。 本発明の第3の実施形態にかかるP2P通信方法を示すネットワーク接続図である。 本発明の一実施形態にかかるポート番号の予測方法を示すフローチャートである。 予測されたポート番号に基づいたP2P通信方法を示すフローチャートである。
符号の説明
11,12 ホスト
13,14 ルータ
15 セッション管理サーバ

Claims (4)

  1. NAT機能を有するネットワーク機器に接続されたコンピュータからP2P型通信を行うための通信方法において、
    送信元コンピュータから前記ネットワーク機器を介して宛先コンピュータに向けて、TTLの設定値を1から1ずつ増やした複数のエコーパケットを、順次送信する第1ステップと、
    前記複数のエコーパケットのうちの1つに応答して、前記ネットワーク機器から返送されたエコーパケットを受信すると、前記送信元コンピュータが前記返送されたエコーパケットに先立って送信したエコーパケットに設定したTTLの設定値を、前記ネットワーク機器までのホップ数として認識する第2ステップと、
    前記送信元コンピュータから前記ネットワーク機器へ、前記ネットワーク機器までのホップ数として認識されたTTLの設定値に1を加えた値を、TTLに設定したポート設定パケットを送信する第3ステップと
    を備えたことを特徴とする通信方法。
  2. 前記送信元コンピュータから前記ネットワーク機器を介して前記宛先コンピュータに向けて、前記ネットワーク機器までのホップ数として認識されたTTLの設定値に1を加えた値を、TTLに設定したキープアライブパケットを、通信が中断している間、一定時間間隔で送信する第4ステップをさらに備えたことを特徴とする請求項1に記載の通信方法。
  3. P2P型通信を行うために、NAT機能を有するネットワーク機器に接続されたコンピュータに、請求項1または2に記載の各ステップを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
  4. P2P型通信を行うために、NAT機能を有するネットワーク機器に接続されたコンピュータに、請求項1または2に記載の各ステップを実行させるためのプログラム。
JP2007038605A 2007-02-19 2007-02-19 通信方法 Pending JP2007208999A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007038605A JP2007208999A (ja) 2007-02-19 2007-02-19 通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007038605A JP2007208999A (ja) 2007-02-19 2007-02-19 通信方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003352950A Division JP2005117587A (ja) 2003-10-10 2003-10-10 通信方法

Publications (1)

Publication Number Publication Date
JP2007208999A true JP2007208999A (ja) 2007-08-16

Family

ID=38487970

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007038605A Pending JP2007208999A (ja) 2007-02-19 2007-02-19 通信方法

Country Status (1)

Country Link
JP (1) JP2007208999A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011155513A (ja) * 2010-01-27 2011-08-11 Brother Industries Ltd 情報通信システム、中継ノード装置、情報通信方法及び情報通信プログラム
JP2016164801A (ja) * 2010-11-19 2016-09-08 グーグル インコーポレイテッド ネットワーク接続されたサーモスタットとクラウドベースの管理サーバとの間でデータを交換するための方法およびシステム
JPWO2015177924A1 (ja) * 2014-05-23 2017-04-20 三菱電機株式会社 通信装置及び通信方法及びプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011155513A (ja) * 2010-01-27 2011-08-11 Brother Industries Ltd 情報通信システム、中継ノード装置、情報通信方法及び情報通信プログラム
JP2016164801A (ja) * 2010-11-19 2016-09-08 グーグル インコーポレイテッド ネットワーク接続されたサーモスタットとクラウドベースの管理サーバとの間でデータを交換するための方法およびシステム
JP2018067329A (ja) * 2010-11-19 2018-04-26 グーグル エルエルシー ネットワーク接続されたサーモスタットとクラウドベースの管理サーバとの間でデータを交換するための方法およびシステム
JPWO2015177924A1 (ja) * 2014-05-23 2017-04-20 三菱電機株式会社 通信装置及び通信方法及びプログラム

Similar Documents

Publication Publication Date Title
Rosenberg Interactive connectivity establishment (ICE): A protocol for network address translator (NAT) traversal for offer/answer protocols
US8224985B2 (en) Peer-to-peer communication traversing symmetric network address translators
EP2230822B1 (en) Establishing a connection traversing a network address translation gateway
US8185660B2 (en) Inter-working between network address type (ANAT) endpoints and interactive connectivity establishment (ICE) endpoints
KR101139675B1 (ko) 동시 다중 연결을 위한 대칭형 네트워크 주소 변환기 통과 방법
US20040153858A1 (en) Direct peer-to-peer transmission protocol between two virtual networks
US20130308628A1 (en) Nat traversal for voip
US9049122B2 (en) Bandwidth probing messages
WO2008079686A3 (en) Improved traceroute using address request messages
JP3999785B2 (ja) 通信方法
JP2005117587A (ja) 通信方法
JP4712481B2 (ja) 通信方法および装置
JP2007208999A (ja) 通信方法
JP2008147738A (ja) 通信方法、通信システム、機器、並びに端末
Phuoc et al. NAT traversal techniques in peer-to-peer networks
JP4602247B2 (ja) 通信方法
JP4722615B2 (ja) 通信方法及び通信装置
Seemann et al. Decentralized hole punching
CN108337331B (zh) 网络穿透方法、装置、系统及网络连通性检查方法
KR100899440B1 (ko) 사설 주소를 사용하는 망에서 VoIP 서비스를 제공하는방법 및 이를 구현하는 단말장치
KR100932570B1 (ko) 서버 및 서버 측 네트워크의 부담없이 nat장비에서응용서버와 클라이언트 사이의 대규모 세션정보를 유지하기위한 방법
Duarte Jr et al. Transparent communications for applications behind NAT/firewall over any transport protocol
Seah et al. Peer NAT proxies for peer-to-peer games
Daigle et al. NAT traversal in peer-to-peer architecture
Arslan et al. A New State-Based Connectivity Model for Peer-to-Peer Networks

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20081008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090908

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100112