web-dev-qa-db-ja.com

プロキシサーバーはクライアントのIPアドレスをどのように記憶して、応答パケットを送り返すのですか?

NATは、IPヘッダーを外部IPに変更してインターネットに送信する前に、パケットのソースIPとポート番号を追跡します。応答パケットを受信すると、NAT以前に追跡した値を使用して、パケットのヘッダーを外部IPからプライベートIPに変更します。

プロキシサーバーの場合、プロキシサーバーは1秒以内にクライアントから大量のパケットを取得し、パケットのIPヘッダーをクライアントのIPからプロキシサーバーのIPに変更してインターネットに送信します。応答パケットを受信すると、プロキシサーバーはIPヘッダーをプロキシサーバーのIPからクライアントのIPに変更し、クライアントに送り返します。

だから、私の質問は、プロキシサーバーがどのように機能するかのプロセスの詳細ですか?また、ポート数(65535)の制限により、プロキシサーバーとプロキシクライアント間で同時にいくつの接続を確立できますか?

どうもありがとうございます。

1
Trai Nguyen

HTTPプロキシまたはSOCKSプロキシは、クライアントからのTCP接続を受け入れるだけであり、クライアントとの最初のハンドシェイクによってサーバーへのTCP接続が作成された可能性があります。それ以降は、1つのTCP接続で受信したデータ(パケットではなく、これはアプリケーションレベルです!)を、両方のTCP接続を介して、もう一方のTCP接続を介して転送します開いています。特別なことは何もありません。1つのTCP接続を、単純なプログラミングタスクである他の接続に関連付けるだけです。

プロキシサーバーとプロキシクライアント間で同時にいくつの接続を確立できますか?

これはセキュリティの問題ではありませんが、プロキシとクライアントのIPアドレスが一定で、プロキシが単一のポートでのみリッスンしている場合、接続タプルの4つの部分のうち、クライアントのソースポートのみが異なる可能性があります。したがって、クライアントとプロキシの間の接続は理論的には最大で65535であり、クライアントはプロキシへの接続にすべてのポートを使用するわけではないため、実際にはさらに少なくなります。

1
Steffen Ullrich