1

インターネットを介してコンピューター間で情報を送信する必要があるプロジェクトに取り組んでいます。通常、途中であまりファズがないことを保証する明白な解決策は、ポート転送です。ただし、Skype などのアプリケーションは、(ほとんどの場合) ユーザー ポートを転送せずに、このような接続を開くことができることに気付きました。netstat などのツールを使用して通話相手の IP を取得できるときに、これに気付きました。

私の質問は次のとおりです。Skype と「その他の」アプリケーションはどのようにしてこれを行うのでしょうか? 「一般的な」ルーターはどの程度オープンですか?

注: 私はネットワーキングについてあまり読んだことがなく、これは些細なことかもしれませんが、このテーマまたはネットワーキングに関連する何かについて何か良い読み物があれば、私は感謝します.

4

2 に答える 2

1

Skype は、「ホール パンチング」と呼ばれる手法を使用して、ファイアウォールを通過します。

ここに長い説明を書きました。それから:

一般に、穴あけには次のものが必要です。

  • 初期接続のターゲットであり、接続プロセスの調整に役立つ外部の公開サーバー。
  • 最終的に直接接続される NAT の背後にある 2 つのピア。
  • 受け入れるトラフィックに寛容で、動作方法が予測可能な NAT 実装。
  • 受け入れるトラフィックに寛容で、特に、上位レベルで想定されるサーバー/クライアントの役割よりも対称的なステート マシンとメッセージを使用するプロトコル (TCP など)。

穴あけの一般的なプロセス (これは大まかなスケッチにすぎないことを念頭に置いてください) は次のとおりです。

  • ピアは中央の公開サーバーに接続し、どのペアを接続するかについて合意します。
  • 中央サーバーは、NAT ごとに、将来の発信接続がどのように作成されるかを識別します (ピアが NAT を通過する接続を作成する場合
    、NAT でポートを開いて応答を受信する必要があります。通常、使用されるポート番号は連続しています)。 .

(実際には、上記の詳細は TCP ホール パンチングに関するものです。Skype が UDP を使用している可能性もありますが、一般的な考え方は似ています)。

于 2012-07-08T02:30:08.207 に答える
0

どうやらこれは、接続を仲介する中間サーバーを使用して行われているようです。

于 2012-07-07T15:18:32.590 に答える