SOCKSプロキシはTCPレベルでのみ接続を確立し、HTTPプロキシはHTTPレベルでトラフィックを解釈します。したがって、SOCKSプロキシはあらゆる種類のプロトコルで動作し、HTTPプロキシはしかし、SquidのようなHTTPプロキシがIRC、FTPのようなプロトコルをサポートできるのはなぜですか?IRCまたはFTP接続にHTTPプロキシを使用する場合、具体的にはどうなりますか? HTTPプロトコルを介してプロキシに送信されるときにパッケージに追加されるメタデータ
HTTPプロキシは、主にHTTPS接続に使用されるCONNECTメソッドをサポートしている場合、HTTP以外の高レベルプロトコルをサポートできます。Squidwikiの説明は次のとおりです。
CONNECTメソッドは、HTTPプロキシを介してあらゆる種類の接続をトンネルする方法です。デフォルトでは、プロキシは指定されたサーバーへのTCP接続を確立し、HTTP 200(接続が確立されました)応答で応答します。またはトンネル化されたトラフィックの解釈
クライアントソフトウェアが「HTTP CONNECT」対応(HTTPS)プロキシを介した接続をサポートしている場合、そのようなプロキシ(VPN、SSH、SQL、バージョン管理など)で動作できる任意の高レベルプロトコルを使用できます。
他の人が述べたように、「HTTP CONNECT」メソッドを使用すると、プロキシ経由でTCPベースの接続を確立できます。 HTTPS接続の場合、HTTP要求全体が暗号化されるため、この機能は主にHTTPS接続に必要です(したがって、プロキシからは「意味のない」TCP接続)として認識されます)。プロキシ経由のHTTPSセッション、またはプロキシ経由のSSH/FTPSセッションは両方とも、プロキシに対して「暗号化されたセッション」として表示され、それらを区別することができないため、それらをすべて許可するか、許可しないかそのうちの。
通常の動作中、HTTPプロキシはHTTPリクエストを受信し、リクエストを理解するのに「十分にスマート」です(たとえば、キャッシュを検索して、宛先に行かずに応答を処理できるかどうかを確認します)サーバー、またはホワイトリスト/ブラックリストを参照して、このURLが許可されているかどうかを確認します。 「CONNECT」モードでは、これは発生しません。プロキシは、宛先サーバーへのTCP接続を確立し、クライアントから宛先サーバーへのすべてのトラフィックと宛先サーバーからクライアントへのすべてのトラフィックを単に転送します。つまり、任意のTCPプロトコルは機能します(HTTPS、SSH、FTP-プレーンHTTPでも)