0

Java で p2p ネットワークを作成するプロジェクトに取り組んでいます。ローカル LAN に UDP を使用して n/w を構築し、インターネット経由で UDP データグラムを送信する作業を行っています。UDPホールパンチングと呼ばれるこの概念に出くわしましたが、関連するトピックやライブラリが見つからないようです. 誰でも助けてもらえますか?

4

5 に答える 5

1

UDP(またはTCP)ホールパンチングに強く推奨される技術資料は次のとおりです。

http://www.usenix.org/events/usenix05/tech/general/full_papers/ford/ford_html/

または、もちろん、ウィキペディア:

http://en.wikipedia.org/wiki/UDP_hole_punching

基本的に、ほとんどのコンピューターはネットワークアドレス変換器(NAT)と呼ばれるものの背後にあるため、インターネット上の誰かが見ているように、コンピューターのパブリックIPとパブリックポートを使用する必要があります。また、プライベートIPとプライベートポートが必要になります(または、アプリケーション自体がそのソケットを認識するため、これは、接続しようとしている他のアプリケーション/コンピューター/ノードと同じNATの背後にいる場合に備えて)。次に、2つのノードの両方が、パブリックアドレスとプライベートアドレスを試行して接続を確立しようとします。これらの2つのアプリケーションが接続を確立すると、NATを正常に通過し、穴あけに成功します。

これを行う一般的な方法は、両方のクライアントをサーバーに接続して、2つのクライアントの調整に役立てることです。パブリックIPとプライベートIPおよびポートを他のクライアントに送信することを調整し、それらを使用して「ホールパンチ」を実行します。

また、TCPよりも(経験的に)成功しているため、UDPプロトコルが使用されているようです。注:その統計を見つけようとしましたが、失敗しました。

于 2011-08-01T15:10:27.800 に答える
1

これはよくNAT パンチスルーと呼ばれるものだと思います。たぶん、そのタイトルでもっと幸運に検索できるでしょう。

于 2011-02-23T09:07:13.160 に答える
0

NAT-to-NAT traversalに関するこの他の質問を確認してください。Erik は、UDP ホール パンチングについて優れた説明をしています。

于 2011-02-23T22:18:00.760 に答える
0

あなたはおそらくuPnPの NAT トラバーサル機能を探しているでしょう。多くの消費者向けルーターは、ファイアウォール全体をプログラムで開き、要求するあらゆる種類のアプリケーションのポートを転送することをサポートしています。またはワーム。どちらにしても。:)

于 2011-02-23T09:08:34.973 に答える
0

inetrnet 経由で UDP ブロードキャスト/マルチキャストを行うことはできません。ただし、インターネット経由で TCP を渡すことはできます。

私がお勧めするのは、ネットワーク上のゲートウェイで選択した UDP パケットをリッスンし、データを TCP 経由で別のネットワーク上の別のゲートウェイに渡し、この情報を UDP に戻すことです。

于 2011-02-23T09:07:32.543 に答える