2012-08-19 13 views
32

Capisco che un proxy SOCKS stabilisce solo una connessione a livello TCP mentre un proxy HTTP interpreta il traffico a livello HTTP. Quindi un proxy SOCKS può funzionare per qualsiasi tipo di protocollo mentre un Proxy HTTP può gestire solo il traffico HTTP. Ma perché un proxy HTTP come Squid può supportare protocolli come IRC, FTP? Quando utilizziamo un proxy HTTP per una connessione IRC o FTP, cosa accade in modo specifico? C'è qualche metadata aggiunto al pacchetto quando viene inviato al proxy tramite il protocollo HTTP?Perché i proxy HTTP sono in grado di supportare protocolli come IRC e FTP?

+4

Ho letto le risposte ma non è ancora chiaro .. Può qualcuno spiegare questo un po 'più semplicemente .. grazie! – eRaisedToX

+0

Sostanzialmente il proxy http attende che il client invii una richiesta http con un metodo di connessione, per consentire al proxy http di accettare la password di accesso, il proxy http può solo rispondere a 200 o rispondere ad altre cose. Quindi il proxy http può rispondere correttamente per informare il client che può diventare un altro tipo di proxy. – for1096

risposta

15

proxy HTTP è in grado di supportare i protocolli di alto livello diverso da HTTP se supporta il metodo CONNECT, che viene utilizzato principalmente per le connessioni HTTPS, ecco la descrizione da wiki Squid:

Il metodo CONNECT è un modo per tunnel qualsiasi tipo di connessione attraverso un proxy HTTP. Per impostazione predefinita, il proxy stabilisce una connessione TCP al server specificato, risponde con una risposta HTTP 200 (Connessione stabilita) e poi spala i pacchetti avanti e indietro tra il client e il server, senza comprendere o interpretare il traffico di tunnel

Se il software client supporta la connessione mediante delega 'HTTP CONNECT'-enabled (HTTPS) può essere qualsiasi protocollo di alto livello in grado di lavorare con una tale proxy (VPN, SSH, SQL, il controllo di versione, ecc)

5

come altri hanno menzionato, il metodo "HTTP CONNECT" consente di stabilire qualsiasi connessione basata su TCP tramite un proxy. Questa funzionalità è necessaria principalmente per le connessioni HTTPS, poiché per le connessioni HTTPS, l'intera richiesta HTTP è crittografata (quindi appare al proxy come una connessione TCP "senza senso"). In altre parole, una sessione HTTPS su un proxy o una sessione SSH/FTPS su un proxy appariranno entrambi come "sessioni crittografate" al proxy e non sarà in grado di distinguerli, quindi deve consenti a tutti o nessuno di loro.

Durante il normale funzionamento, il proxy HTTP riceve la richiesta HTTP ed è "abbastanza intelligente" per comprendere la richiesta di poter fare cose di alto livello con esso (ad esempio cerca nella cache per vedere se può servire la risposta senza andare al server di destinazione o consultare una whitelist/lista nera per vedere se questo URL è consentito, ecc.). Nella modalità "CONNECT", nulla di tutto ciò accade. Il proxy stabilisce una connessione TCP al server di destinazione e inoltra semplicemente tutto il traffico dal client al server di destinazione e tutto il traffico dal server di destinazione al client. Ciò significa che qualsiasi protocollo TCP può funzionare (HTTPS, SSH, FTP - anche semplice HTTP)