5

C#でサーバー/クライアントアプリケーションを作成しました。

私の質問は次のとおりです。クライアントがNATの背後にあり(ルーターのように)、サーバーに接続しようとしているとしましょう。サーバーの観点からは、サーバーはクライアントの外部IPアドレスのみを認識します。NATの背後にあるパケットを送信するコンピューターを正確にどのように判断しますか?クライアント側のルーターからのポート転送がこの種の問題を解決する一般的な方法であることは理解していますが、Skypeなどのアプリケーションを見ると、サーバーとNATの背後にある多くのクライアントとの間の接続を適切に確立するためにポート転送は必要ありません。 。この質問はその逆も可能です(つまり、NATの背後にあるクライアントからサーバーへ)。

私はソケットプログラミングにかなり慣れていないので、このことを完全に理解するために読むことができるガイドラインや資料を聞きたいです。

4

1 に答える 1

3

アプリケーション層のNATについて心配する必要はありません。200.51.255.79というIPのメッセージを受信した場合は、同じIPに回答を送信できます。ルーターはNATとそれ以降のルーティングを自動的に処理します。もちろん、ポートフォワーディングではこのようにはなりませんが、NATではそうです。

Skypeは非常に興味深い方法で機能し、各ユーザーが応答を待っている現在のIPとポートのサーバー側データベースを使用してポート転送とファイアウォールを回避します。あなたは完全な説明のためにインターネットでそれを調べるべきです。本当に良い読み物です=)。

于 2012-10-24T03:17:59.287 に答える