なぜ P2P 接続ではポートを開く必要がないのですか?

なぜ P2P 接続ではポートを開く必要がないのですか?

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

それとも私は彼とつながっているのでしょうか?

どちらにしても、私たちのどちらかが開いているポートが必要ですよね?

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

答え1

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

ウィキペディア UPnP

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

Wikipedia NAT トラバーサル

答え2

BitTorrent のようなプロトコルでは、接続の 2 つの側のうちの 1 つでポート フォワーディングがオンになっている限り、開いている側が常にホストとして機能します。両側が開いている場合は、どちらかの側が「ホスト」になることができます。両側が閉じている場合は、接続をネゴシエートするために開いている接続を持つサード パーティが必要です。これは、Skype などが行う方法です (サード パーティはスーパーノードと呼ばれます)。

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

答え3

開いているポートを電話番号に例えてみましょう。

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

2 人が互いに話す場合 (または一方が常に話す場合)、実際に誰がダイヤルするかは重要ではありません。重要なのは、少なくとも 1 人が電話番号を持っていることであり、もう 1 人はその人に電話をかけるだけです。

どちらの相手にも電話番号がない場合は、一部のシステムではスーパーノードが使用されます。スーパーノードは、2 つの通話 (それぞれから 1 つずつ) を受信し、それらを結合する友人です。これは、どちらの相手にも電話番号がない場合は、唯一の通話方法です。問題は、会話がこのスーパーノードの友人の電話回線の品質に制限されることです。

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

関連情報