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