web-dev-qa-db-ja.com

UDPホールパンチングとUPnPの違いは何ですか?

そのため、Skypeやその他のp2pタイプのアプリケーションは、多くの場合、いわゆるホールパンチング(簡単なガイド ここ を参照)によって機能し、着信接続をブロックするファイアウォールの背後にある2つのクライアントを相互に接続します。

uPnPは、手動でポートを転送する必要があるユーザーを回避するためにも使用されます。上記の穴あけの種類とどの程度正確に異なりますか?ほとんどのルーターにはオン/オフを切り替える設定があるため、動作が異なる必要があると思いますが、上記のタイプのUDPホールパンチングを停止する方法はありません(発信接続のブロックと着信の確立/関連を除く)。

次に、Skype/bittorrentがA-B間の接続をセットアップして直接接続できるとしたら、それはルーターでupnpを有効にする必要がないことを意味しますか?

6
fpghost

UPnPが機能するには、問題のルーターがUPnPをサポートしている必要があります。 UPnPを備えたデバイスは、基本的にUPnP対応ルーターにポートを開いてトラフィックを転送するように要求します。 LANのルーターがひどく誤って構成されているか、世界全体に広く開かれていない限り、LANの外部の関係者はこれを行うことができないはずです。

穴あけは、UDPのコネクションレス型の性質を利用しています。

  • Aはポート+ IPでUDPパケットをBに送信します
  • AのNATはこれを記憶しており、Aがパケットを発信したため、Aが会話を開始したと見なし(技術的にはUDPではそれを確実に知る方法はありませんが)、着信トラフィックを許可します。そのポート+ IP
  • Bのファイアウォールが着信トラフィックをブロックするため、中間パーティ(提供した記事では、Skypeの「スイッチング」サーバー)が引き続き必要ですが、スイッチングサーバーはMITMを実行し、Aのポート+ IPを介して応答を送信できます。 NATは、発信元のトラフィックが原因で転送されているためです。

ホールパンチングは基本的に、LANの外部のパーティが、仲介者の助けを借りて、NATの背後でリッスンしている何かに到達できるようにします。

9
LawrenceC