0


0

たとえば、ファイアウォール、ルータなどの背後に2台のコンピュータがあります(つまり、 着信接続なし) どこかに特別なサーバーを経由することなく、TCP / UDPプロトコルを使って2つを接続する方法はありますか? 私はSkypeがそのようなことをしているのを知っている。

ありがとう。

4 Answer


3


http://www.heise-security.co.uk/articles/82481/0[この記事]は、SkypeがどのようにUDPホールパンチを使用して、相互に接続された2つのNATファイアウォールインスタンスを取得するかについて説明しています。

それにもかかわらず、あなたは最初のconnection-info-exchangeのために外部サーバを必要とします、しかしあなたはその特別なサーバを通してそれ以上に多くをルーティングする必要はありません。


1


私は自分で使ったことは一度もありませんが、これがUPnPが提供するものであると考えています。

http://en.wikipedia.org/wiki/Universal_Plug_and_Play

NATトラバーサルに関するセクションを見てください。

編集する

ウィキペディアにNAT Traversalに関する全ページがあります。

http://en.wikipedia.org/wiki/NAT_traversal


1


あなたは P2Pを使わなければならないでしょう


1


はい、これは「ヘアピンネットワークアドレス変換」と呼ばれることが多く、通常はアドレス変換を行うデバイスに実装されています。 他のコメントが暗示しているように、これはNATトラバーサルやホールパンチングとまったく同じではありません。 あなたは互いに通信するために同じNATの背後にある2つのホストを取得しようとしています。

以下のリンクを見て、さまざまなNATの実装を確認し、どのオプションを使用するかを決めます。 これがダイアグラムとリンクです。

画像:https://i.stack.imgur.com/dWooA.gif [ここに画像の説明を入力してください]

これをクライアントソフトウェアに実装する必要がある場合は、avahiなどのローカルインストールを見つけるための 'zeroconf’オプションを検討することをお勧めします。

+ http://en.wikipedia.org/wiki/Avahi_(software)+