6

ネットワーク プログラミングに関する私の知識は限られているため、すべてのコメントを歓迎します。基本的に、私の質問は次の質問に要約されます。

Q1. 分散型非同期クロスプラットフォーム ピア ツー ピア通信のようなものは本当にあるのでしょうか?

説明させてください。

  • 実際の IP アドレスを持つコンピューターで実行されている 2 つの http サーバーがある場合、相互作用のためのプロトコルを作成すると仮定すると、明らかに答えはイエスです。

  • さらに一歩進んで、そのうちの 1 つ (または両方) がルーターの背後にある場合でも、ポート転送を使用して通信を確立できます。ただし、ここで問題が発生します。誰かがそのようなサーバーをバックグラウンドで、たとえば携帯電話で実行したい場合、このサーバーに依存しているアプリは、自宅にいるときに実際に機能するためです (ポート転送を要求することは実際には期待できません)。どこに行っても)。

  • しかし、それを超えても、

  • Q2. Wi-Fi を使用していないとき、携帯電話は通信会社から実際の IP アドレスを取得しますか?

  • これが本当なら、スマートフォンで http サーバーを実行することにより、wi-fi を使用しないことを犠牲にして、明らかにクロスプラットフォームの非同期ピアツーピア通信を行うことができます。(これが便利でないことは理解していますが、確かに実行可能です。)

結論として、私が考えることができる2つの(おそらくもっとある)関連する質問は次のとおりです。

Skype の回答に基づいて、呼び出し先の 1 つまたは両方がパブリック IP を持っていない場合、UDP または TCP を介して音声トラフィックを別のオンライン Skype ノードに送信します。 そのため、Skype には直接的なコミュニケーションがないように見えます。そのようなシナリオでは中間者を使用する必要があるからです。

Viber に関しては、この特定の質問に対する十分な回答が見つかりませんでした。人々は Viber の中央サーバーを介して互いに会話しますか、それとも直接接続を確立しますか? もちろん、彼らが直接接続を確立する場合、携帯電話には物理アドレスがある場合とない場合があるため、そのようなことをどのように管理しているかを知りたいと思います. Viber が実行されておらず、ルーターの背後にいる場合でも、友人からの Viber メッセージはどのように私の携帯電話にルーティングされますか?

Viber への答えは本当にプッシュ通知だと思いますが、私が理解できる限り、プッシュ通知のすべてのバリエーションはオープン接続に依存しており、アプリケーションのサーバーはそのような接続を介してクライアントに通知を送信します。したがって、このアプローチは非同期であると感じさせますが、本質的にはそうではありません。サーバーへの接続が常に開かれているという意味で、私たちはごまかしています。さらに、私が理解できる限り、アプリケーションサーバーはそのサーバーを介して通知をプッシュする必要があります。概略的に:

A > Central App Server > Central Server w/ open connection to my cellphone > me

したがって、これは再び集中型のアプローチのようです。

正直なところ、私が考えることができる分散化と非同期の両方のアプローチ (携帯電話でも) は、すべてのプラットフォーム/デバイスで http サーバーを実行することですが、これには Wi-Fi を使用しないという犠牲が伴います。電気通信会社は実際にすべての携帯電話に物理 IP アドレスを割り当てます (これが本当かどうかはわかりませんね)。

WASTE、ダークネット、F2F などはどうですか? それらは、利害関係者間のより直接的な非同期通信という意味で利点を提供しますか? このような通信方法を使用する現実世界のアプリケーション (携帯電話も含む) はありますか。

実際、これは私が取り組みたい実際の問題ではありませんが、そこからどのように進めることができるかを理解できるように、最新技術が何であるかを知りたいです. したがって、すべてのコメントは大歓迎です。最先端のリファレンスがある場合は、それらについても知りたいのですが、簡単な説明もいいでしょう.

皆様のお時間とご尽力に感謝いたします。

4

1 に答える 1