web-dev-qa-db-ja.com

なぜp2p接続は開いたポートを必要としないのですか?

つまり、誰かが私からファイルをダウンロードしている場合、それは私がホストであり、彼が私に接続していることを意味しませんか?

それとも私は彼に接続していますか?

いずれにせよ、私たちの1人は開いたポートが必要ですよね?

ルーターにコンピューターへのオープンポートルーティングがないのですが、接続をどのように受け入れていますか?

7
Zequez

ルーターがUPnPをサポートしている場合、使用しているp2pアプリケーションが、開いているポートを手動で構成しなくても、ルーターのポートを開いている可能性があります。

ウィキペディアUPnP

それ以外の場合、アプリケーションがNAT traversalと呼ばれるプロセスを使用している可能性があります。これは、p2pアプリケーションやGoToMyPCやHamachiなどのリモートデスクトップアプリケーションで一般的です。このテクノロジーは、ネットワークアドレスを介して機能するように設計されています。変換。これはファイアウォールと見なされますが、プライベートネットワークがインターネット上で単一のIPアドレス(ルーターが使用するもの)を共有するための手段でもあります。

Wikipedia NAT Traversal

10
Dustin G.

BitTorrentのようなプロトコルでは、接続の両側の一方がポート転送をオンにしている限り、オープン側が常にホストとして機能します。両側が開いている場合は、どちらかの端が「ホスト」である可能性があります。両側が閉じている場合は、接続をネゴシエートするために接続が開いているサードパーティが必要です。これはskypeのような方法です(サードパーティはスーパーノードと呼ばれます)

ここに良いブログ投稿があります skypeがスーパーノードをどのように使用し、ファイアウォールを回避するためにどのように使用するかを説明しています。

7

開いているポートと電話番号を比較します。

ダイヤルする電話はあるが、電話を受けるための電話番号はないことを想像してみてください。

2つのパーティが互いに話す(または1つが常に話している)場合、実際に誰がダイヤルするかは関係ありません。重要なのは、少なくとも1人が電話番号を持っていて、もう1人のパートナーが彼に電話をかけることです。

それらのいずれにも電話番号がない場合、一部のシステムではスーパーノードが使用されます。これは、それぞれから1つずつ、2つの呼び出しを受信し、それらを結合する友人である可能性があります。両者のどちらにも電話番号がない場合、これが唯一の話し方です。問題は、会話がこのスーパーノードの友人の電話回線の品質に制限されることです。

このアナロジーによって、考えられる3つのシナリオを理解しやすくなることを願っています。

4
Sitoplex