仲介サーバーなしでTCPまたはUDP経由で真のP2P通信を確立する方法はありますか? 2台のコンピュータにパブリックIPアドレスしかないが、NATルーターやプライベートネットワークの背後にある場合、それは難しいものになることは理解しています。実際、もっと見るともっと見えますプレーン不可能。私はSTUN、TURN、ICEのプロトコルとホールパンチングを発見しましたが、少なくとも、接続を確立するには何らかの種類のサーバーが必要です。私は一見とても驚いているので、とてもシンプルなので、何かが欠けていますか? 理想的には私はGolangを使って解決策を探していますが、C++の助けや例も役に立ちます。ありがとうございます。P2P TCP/UDP接続の確立(NATトラバーサル)
0
A
答えて
1
これは厳密にはGo質問ではありません。一般的なネットワーキングに関する質問です。
これは難しい理由は、インターネットがNATをサポートするように設計されておらず、NATが起こったばかりであり、多くの機能が壊れたからです。問題のきれいな解決方法は、NATがないIPv6に切り替えることですが、可能ではない可能性があります。
NATボックスがNAT-PMPまたはuPNPをサポートしている場合は、それを使用できます。最も簡単な方法は、libminiupnpc
へのcgoバインディングを作成することです。または、あなたはネイティブGoライブラリのために釣りに行くことができます。
NATがこれらのプロトコルのいずれかをサポートしていない場合、穴あけは壊れやすい難しい手法なので、おそらく実行するのが難しいと思われるので、おそらく運が悪いはずです。
関連する問題
- 1. Android P2P(直接接続)インターネット経由(NATの後ろ)
- 2. 接続確立
- 3. NATトラバーサル実験?
- 4. NATトラバーサルとIPv6
- 5. 直接P2P接続
- 6. Android:インターネット接続を確立
- 7. WiFi P2P接続ユーザーインタラクションバイパス?
- 8. libutp(μTP)とNATトラバーサル(UDPホールパンチング)
- 9. 確立mysqlの/のJava/JDBC接続
- 10. クライアントとサーバー間の接続の確立
- 11. p2pモデルのモバイルネットワーク上のNATパンチスルー?
- 12. 親リポジトリとの接続を再確立
- 13. AVS V2 HTTP2接続の確立
- 14. WebSocketとの接続を確立する
- 15. PHP PDO DB接続の確立
- 16. SSH接続によるTelnetの確立
- 17. Neo4J OGM Java接続確立の問題
- 18. データベースへの接続を確立する
- 19. ソケットリスナーサーバー間の接続を確立する
- 20. 接続WiFi p2p android、WIFI_P2P_CONNECTION_CHANGED_ACTION
- 21. Android P2P接続(Wifi経由)
- 22. ポート転送(P2P接続)
- 23. AirConsole:接続確立エラー:net :: ERR_CONNECTION_REFUSED
- 24. socket.io-p2pで部屋内のピア接続を確立するにはどうすればよいですか?
- 25. 外部からキャリアベースのNAT(およびホームNAT)内のピアに接続しますか。
- 26. iOS WebRTC ICEサーバーとのP2P接続
- 27. 実行時にWCFを使用したNATトラバーサルによるピアツーピア
- 28. UDP、NATと「接続」を設定
- 29. P2P Cirrus接続FlashクライアントとHTMLクライアント
- 30. wifi P2Pをネットワークに接続せずに
'もし彼らがどんな種類のルータの背後にあるなら、主な問題はNATであり、これはまたIPv4のアドレスの不足のためです。 NATなしでは、それは簡単です、はい。そして、いいえ、3番目のホストなしでは、これは(IPv4で)実行できません。一方の端は接続を開始しなければならず、他方のルータはそれの背後にあるどのホストがターゲットであるかを知る方法がありません。 – deviantfan
あなたは[libp2p](https://github.com/libp2p/go-libp2p)を見ましたか? –
@ChristopherWaldon興味深いですが、まだWIPであり、ICEが提供していないものは提供していないようです。つまり、他の接続タイプが不可能な場合でもサーバーリレーに戻ってしまいます。しかし、ありがとう。 – ChrysmPsy