2

ポート5888(ダミーポート)でリッスンするカスタムtcpサーバーがあります。プロキシ サーバーは着信接続をリッスンします。プロキシが HTTP リクエストを受信すると、同じリクエストを別のサーバーに中継する必要があります。

例えば:

プロキシが受け取る: http://proxyserver.com/mypage.html プロキシがリレーする必要がある: http://MainServer.com/mypage.html

メイン サーバーからの応答は、要求元のクライアントに直接送信する必要があります。

新しいHTTPリクエストをメインサーバーに中継する前に、接続を受け入れて生のHTTPリクエストを解析するためにソケットを使用しました。生のHTTPリクエストをメインサーバーに送信し、レスポンスを取得してクライアントマシンに送信する必要があるため、これは複雑になりすぎています.プロキシは基本的に仲介者になりつつあります. 通信の一方の側にのみプロキシが必要です。つまり、ホストアドレスを MainServer に変更し、メインサーバーが要求側クライアントへの応答の送信を処理する必要があります。

これを達成する方法は?

4

1 に答える 1

1

HTTPは、クライアントからサーバーへのTCP接続を介して機能します。プロキシが存在する場合は、少なくとも2つの接続が必要です。1つはクライアントからプロキシへ、もう1つはプロキシからサーバーへの接続です。これらの2つの接続は、標準のHTTP要求と応答の両方を送信するという意味で「独立」しています。ここでのプロキシは、エンドサーバーへのクライアントとして機能します。

必要なのは、少なくとも3つのTCP接続を含み、HTTP要求の開始が行われた接続とは異なる接続でHTTP応答を送信する必要があります。これはHTTP本体の範囲外です。クライアントは、別の場所に2番目の接続が必要であること、および一方の接続の要求をもう一方の接続の応答に一致させる方法を知りません。HTTP内でできる最善のことは、たとえば、特別に生成されたURLなどを使用して別のサーバーにリダイレクトすることです。

HTTP応答は、元の要求と同じTCP接続で行われる必要があることに注意してください。

于 2012-10-01T12:26:57.573 に答える