Je comprends qu'un proxy SOCKS établit uniquement une connexion au niveau TCP tandis qu'un proxy HTTP interprète le trafic au niveau HTTP. Ainsi, un proxy SOCKS peut fonctionner pour tout type de protocole tandis qu'un proxy HTTP ne peut gérer le trafic HTTP. Mais pourquoi un proxy HTTP comme Squid peut-il prendre en charge un protocole comme IRC, FTP? Lorsque nous utilisons un proxy HTTP pour une connexion IRC ou FTP, que se passe-t-il spécifiquement? Y a-t-il des métadonnées ajoutées au package lorsqu'il est envoyé au proxy via le protocole HTTP?
Le proxy HTTP est capable de prendre en charge des protocoles de haut niveau autres que HTTP s'il prend en charge la méthode CONNECT, qui est principalement utilisée pour les connexions HTTPS, voici la description du Squid wiki:
La méthode CONNECT est un moyen de tunneler tout type de connexion via un proxy HTTP. Par défaut, le proxy établit une connexion TCP au serveur spécifié, répond par une réponse HTTP 200 (Connexion établie), puis pellette des paquets entre le client et le serveur, sans comprendre ou interpréter le trafic tunnelisé
Si le logiciel client prend en charge la connexion via un proxy activé par 'HTTP CONNECT' (HTTPS), il peut s'agir de tout protocole de haut niveau pouvant fonctionner avec un tel proxy (VPN, SSH, SQL, contrôle de version, etc.)
Comme d'autres l'ont mentionné, la méthode "HTTP CONNECT" vous permet d'établir une connexion basée sur TCP via un proxy. Cette fonctionnalité est nécessaire principalement pour les connexions HTTPS, car pour les connexions HTTPS, l'intégralité de la requête HTTP est chiffrée (elle apparaît donc au proxy comme étant "vide de sens" TCP). En d'autres termes, une Une session HTTPS sur un proxy, ou une session SSH/FTPS sur un proxy, apparaîtra toutes les deux comme "sessions cryptées" pour le proxy, et il ne pourra pas les distinguer, il doit donc les autoriser toutes ou aucune d'eux.
Pendant le fonctionnement normal, le proxy HTTP reçoit la demande HTTP et est "assez intelligent" pour comprendre la demande afin de pouvoir faire des choses de haut niveau avec elle (par exemple, rechercher dans son cache pour voir s'il peut servir la réponse sans se rendre à la destination serveur, ou consulte une liste blanche/liste noire pour voir si cette URL est autorisée, etc.). En mode "CONNECT", rien de tout cela ne se produit. Le proxy établit une connexion TCP au serveur de destination, et transmet simplement tout le trafic du client au serveur de destination et tout le trafic du serveur de destination au client. Cela signifie que tout TCP peut fonctionner (HTTPS, SSH, FTP - même HTTP simple)