1

私はC++を学んでいます(現在、Visual Studioをインストールしていて、Hortonの本を手にしています)。そうする理由は、ユーザーが使用できるp2pタイプのクライアント/サーバープログラムを作成したいからです。ポートフォワーディングを必要とせずにデバイスからビデオをストリーミングする(そしてテクニカルサポートコールの時間を節約する)。

ユーザーがデバイスメニューからホームサーバーにデバイスを登録し(エンジニアがそれを処理します)、PCでクライアントにログインし、パスワードを使用してデバイスをデバイスの有名な「友達リスト」に追加します。彼らはマシンで使用しました。その後、いつでも、ポートフォワーディングを必要とせずに、デバイスを開いてWeb上で制御できます。

Skypeの仕組みのようなものだと思います。ユーザーは、お互いのIPアドレスを知らなくても、またはポートを転送しなくても、オーディオ/ビデオをお互いにストリーミングできます。

誰かがそれがどのように機能するかについての概要と、メインサーバーとクライアントをプログラミングするときに考慮する必要があるネットワークの考慮事項を教えてもらえますか?どこから始めればいいのかさえわかりません...プログラミングの助けは必要ありません。通信インフラストラクチャがどのように見えるかだけです。クライアントは、事前にIPアドレスを知らなくても、またはデバイスにルーティングするためにリモートネットワークに入る情報やコマンド用のポートを持たずに、p2pネットワーク上のデバイスを検出して通信するにはどうすればよいですか?

私はp2pネットワーキングについて読んでいて、p2pアーキテクチャの基本的な考え方は理解していますが、p2pを介した通信の実際の理論と方法は理解していません。

4

2 に答える 2

0

クライアントは、事前にIPアドレスを知らなくても、またはデバイスにルーティングするためにリモートネットワークに入る情報やコマンド用のポートを持たずに、p2pネットワーク上のデバイスを検出して通信するにはどうすればよいですか?

事前にIPアドレスを知っているか、接続する既知のサーバーを持っていない限り、インターネットを介してp2pIP接続を作成することはできません。つまり、一方の側は、もう一方の側が照会する何らかのサーバーに、自身のサーバーアドレスとポート番号を事前に登録する必要があります。

于 2012-09-12T06:04:38.750 に答える
0

デバイスが単一のネットワーク内で動作するように制限されている場合は、ゼロ構成ネットワークを使用して、サーバーを介した通信を回避できます。ネットワーク内のすべてのデバイスまたはサービスを検出するには、マルチキャスト DNSが適している場合があります。

デバイスをインターネット経由で動作させたい場合は、生活が困難になります。ネットワークが小規模になり、すべてのデバイスがお互いを認識できるようにして、それぞれからそれぞれにビデオをストリーミングできるようにしたいとします。すべてのデバイスを追跡し、この情報を他のユーザーと共有することをいとわない集中型コンポーネントについて考えることができます。これは、他のすべてのデバイスのアドレスを照会できる単純な http サーバーである可能性があります。すべてのクエリは自動的にクエリを実行しているデバイスを登録し、他のすべてのデバイスは、サーバーに再度クエリを実行すると、そのデバイスを検出できます。

これが基本的に BitTorrent トラッカーの仕組みです。ただし、制限があります。着信接続を許可するピアのみがリストに保持されます。とにかく到達できないため、NATの背後にあるピアに関する知識はほとんど役に立たないため、それは理にかなっています。トラッカーにクエリを実行してあなたを発見することを願うだけです.

現在、2 つのピアが NAT の背後にある場合、それらは互いに到達できません。少なくとも、P2P プロトコルがあまり洗練されていない場合には。BitTorrent はこれを許可しませんが、Skype は許可します。これは、パブリック IP を持つデバイスの 1 つまたは専用サーバーを介してデータをストリーミングすることで解決できます (後者は、スケーラビリティが低いため、おそらく問題があります)。

もうやめます... インターネット上でそのようなプロトコルを設計することには多くの問題があり、それは正確に何が必要かによって異なります。それで、それはインターネット上で動作する必要がありますか、それともローカルネットワーク内だけで動作する必要がありますか? 詳細を教えていただければ、より深く議論できることを嬉しく思います。

于 2012-09-12T21:28:48.317 に答える