問題タブ [nat-traversal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
p2p - peer2peer はルーターを介してどのように動作しますか?
ある PC から別の PC へのインターネットを介して、どのように接続しますか?
例として、PC 1 で接続をリッスンするプログラムがあります。PC 1 はルーター 1 の背後にあります。PC 2 には、PC 1 に接続しようとするクライアント プログラムがあります。
この状況でリスニングプログラムとして使用する正しいテクノロジー/テクニックは何ですか?
.net - UDP、NAT、および「接続」の設定
UDP について話すとき、「接続」という言葉はあまり適切ではないことはわかっていますが...
サーバー (既知の IP を持つサーバー) は、UDP パケットをインターネット経由で NAT の背後にあるクライアントにどのように取得しますか?
例: クライアントが TCP 経由のメッセージングを使用してサーバーに接続し、認証するとします。この時点で、サーバーは UDP を介してクライアントにデータのストリーミングを開始する準備ができていますが、サーバーはどのようにして UDP パケットの宛先を認識し、NAT ルーターを経由してクライアントに到達できるようにするのでしょうか?
クライアントが UDP 経由で「ストリーミングの準備ができました」というメッセージを送信した場合、サーバーが UDP データのストリームで応答できるように、NAT ルーターはポートを開いたままにしますか?
それとも、私はここで軌道から外れていますか?
java - C++ ピア ツー ピア アプリケーションで NAT トラバーサルを処理する方法 (理論ではなくコード例を示してください)
集中インデックス マネージャー サーバーを使用して、ピア ツー ピア接続を使用する単純なゲームを開発する必要があります。
クライアントがルーターの背後にある別のクライアントに接続しようとすると、問題が発生することはわかっています。主に理論を使用して説明する NAT トラバーサルについて読んでいましたが、本当に見たいのは C++ または Java のコード例です。
コードを介して NAT トラバーサルの意味を理解するのを手伝ってくれませんか? たぶん、ある種のオープンソースのシンプルなクライアントゲームですか?
instant-messaging - メッセンジャー (IM) はどのように機能しますか (リスニング)?
私の仕事は、社内外のスタッフ向けの Messenger プログラムを作成することで、実際に作成しました。ただし、クライアント ソフトウェアを使用して "check-mesg" をサーバーから保持することは、実際には良い方法ではないと思います。つまり、IM プログラムをシミュレートしているだけだと思います。
クライアントアプリをリッスンサーバーにし、メインサーバーで「メッセージセンター」なしでユーザーがp2p通信できるようにしたい(オフラインメッセージが発生しない限り)。問題は、ルーターの背後にいるときに、外部ユーザー (他のクライアント アプリ) に自分の場所をどのように伝えるかということです。
それらの他の IM プログラムもクライアント マシン上でサーバーとして実行されていますか? そして、彼らはどのように乗り越えますか?
前もって感謝します!
pipe - 開発者がNATを介してパイプをプッシュし、バックエンドでパイプとして受信できるようにするフレームワークまたはライブラリはありますか?
だから私はパイプ、ローカルパイプを作成する1台のPC上にアプリを持っています。私はそれをストリームとして(その中の最後のデータまたはそこからの受信データのみのように)取り、NATを介して(natトラバーサルを使用して)そのデータをNATを備えた他のPCにストリーミングしたい(私または彼が一意のIPアドレスを持っていない)しかし、私たちは nat traversal server\programm を使用して通信します)、そこでそのデータを受信し、そのコンピューター上に他のプログラムへの新しいローカル パイプを作成して使用します。
だから私は C\C++\Java\C# が大好きですが、もし他の言語のライブラリがあれば、そのライブラリのためだけにその言語を学びたいです!)
開発者がNATを介してパイプをプッシュし、バックエンドでパイプとして受信できるようにするフレームワークまたはライブラリはありますか?
protocols - ルーター ループバック用の UPnP のようなプロトコルはありますか? (ループバック NAT)
UPnP プロトコルを使用して、ユーザー ポートを転送できます。SO TO DO シンプルな NAT トラバーサル。しかし、そのような操作の後に問題が発生します。
私の主なポイントは、ユーザーのポートを転送できます-それをグローバルアドレスにバインドし、グローバルインターネットからアクセスできますが、ローカルネットワークからはアクセスできません(NATを使用). だから、SOAPリクエストを送信できるプロトコルセットがあるのだろうか(UPnPに従ってnatトラバーサルライブラリを作成するようなプロトコルに従って)、プログラムでNATを構成して、ローカルネットユーザーに適切なループバックができるようにします。
私はこれを説明しました-何人かの人がスタックでその質問を閉じたので、サーバーフォールトに関する私の詳細な話。当時はそれほど詳細ではなかったので、私は非難しません(かなり警戒しています)...
networking - 信頼性の高いネットワーク接続のための実用的なNATトラバーサル
私は多くの同様の質問とそれに対応するウィキペディアの記事(NATトラバーサル、STUN、TURN、TCPホールパンチング)を見て読んだことがありますが、圧倒的な量の情報は私の非常に単純な問題を本当に助けてくれません:
P2Pアプリケーションを作成していますが、NATの背後にあるアプリケーションの2人のユーザーが相互に接続できるようにしたいと考えています。接続は信頼できる(TCPの信頼性に匹敵する)必要があるため、UDPに切り替えることはできません。このソリューションは、再構成せずに今日の一般的なシステムで機能するはずです。それが役立つ場合、データ全体をプロキシする必要がない限り(たとえば、ピアの外部(WAN)IPアドレスを取得するため)、ソリューションには接続可能なサードパーティが関与する可能性があります。
私の知る限り、私の唯一の選択肢は、「信頼できるUDP」ライブラリとUDPホールパンチングを使用することです。このための(C / C ++)ライブラリはありますか?関連する質問でenetを見つけましたが、それはソリューションの前半のみを処理します。
他に何か?私が見たもの:
- Teredoトンネリング-オペレーティングシステムやユーザー構成からのサポートが必要です
- UPnPポートフォワーディング-UPnPはどこにも存在/有効ではありません
- TCPホールパンチングは実験的なもののようで、特定の状況でのみ機能します
- SCTPはIPv6よりもさらにサポートされていません。SCTP over UDPは、非常に信頼性の高いUDPです(上記を参照)
- RUDP-主流のサポートはほとんどありません
- STUN、STUNT、TURN、ICEについて私が理解できたことから、これらのどれも私をここで助けてくれませんでした。
java - NatトラバーサルにGAEを使用している人はいますか? (マッピングを保持するためのサーバーとして)
そのため、アプリを UPNP NAT 対応のクライアントに制限できます。(ClientID, IP:PORT) のようなマップを保持するためのサーバーとして GAE を使用するオープンソースの Java プロジェクトをぜひ見てみたいです (クライアントの単純な穴パンチャーの例を参照) そのようなプロジェクトはありますか?
java - Java で UPnP ライブラリを使用した単純なポート転送の例は?
UPnP を使用して自分のマシンでポート 5555 を全世界に開放したいと考えています。適切なオープンソース ライブラリの Java サンプルを教えてください。このライブラリを使用して C# 用に提供できるようなコード サンプルが必要です
mobile - 背後 NAT から背後 NAT への接続
興味深い問題に遭遇しました。基本的に、NAT の背後にある 2 つの携帯電話を持っています。UDP を使用して 2 つのデバイス間で直接通信したいと考えています。
電話からサーバーへの接続を開始した場合、その接続を電話に戻すことができます (つまり、メッセージを受信したのと同じポートから受信したのと同じ IP とポートにデータを送り返します)。 . したがって、両方の電話をサーバーに接続することで、2 つのデバイス間で簡単に通信できます。次に、データをサーバーに送信し、電話に再ルーティングします。これにより、遭遇する可能性のある NAT トラバーサルの問題が回避されます。
ただし、サーバーを使用して2つのデバイスを互いに向け、直接通信させたいと思います。どうすればこれを行うことができますか?uPnPのようなものを使わなくても可能ですか?
どんな助けでも大歓迎です!
編集:私はこのドキュメントを見つけましたhttp://www.brynosaurus.com/pub/net/p2pnat/ヘアピン翻訳が私が求めているものであるように見えますが、広くサポートされているようには見えません. UPnP に対するモバイル ISP のサポートはどれくらい優れているのだろうか?