Proxy TCP come proxy inverso e bilanciatore di carico

Guide, 06 maggio - 20225 minuti di lettura

Un proxy TCP (Transport Control Protocol) opera al livello TCP del modello OSI (Open System Interconnection). Il server proxy TCP è un proxy intermedio tra il client e il server di destinazione. Il client stabilisce una connessione con il server proxy TCP, che a sua volta stabilisce una connessione con il server di destinazione. Il server TCP

Un proxy TCP (Transport Control Protocol) opera al livello TCP del modello OSI ( Open System Interconnection ). Il server proxy TCP è un proxy intermedio tra il client e il server di destinazione. 

Il client stabilisce una connessione con il server proxy TCP, che a sua volta stabilisce una connessione con il server di destinazione. Il server proxy TCP agisce sia come server che come client per accedere a servizi che limitano le connessioni in base all'indirizzo di rete.

Alcune pagine web sono accessibili solo dai computer interni e si riceve un messaggio di errore di accesso negato quando si accede da altri computer. Tuttavia, è possibile visualizzare questa pagina da un browser web in qualsiasi punto di Internet utilizzando un proxy su uno dei computer interni.

Il server Web pensa di servire i dati a un client sul computer che esegue il proxy. Tuttavia, il proxy inoltra i dati fuori dalla rete al client effettivo. 

Il server proxy accetta connessioni da più client e le inoltra al server utilizzando connessioni multiple. Il client o il server devono leggere o scrivere dati sulle proprie connessioni e non devono bloccare il server proxy rifiutando qualsiasi operazione.

Modello OSI - Un'anteprima

I modelli OSI concettualizzano il processo di collegamento in rete dei computer. Il modello è composto da sette livelli:

  • Livello fisico
  • Livello di collegamento dati
  • Livello di rete
  • Livello di trasporto
  • Livello di sessione
  • Livello di presentazione
  • Livello applicazione

Il livello di trasporto è responsabile del trasferimento dei dati attraverso la rete. Utilizza due protocolli diversi, il TCP e lo User Datagram Protocol (UDP). Il TCP è comunemente usato per il trasferimento dei dati e questo protocollo dirige l'invio dei dati. Taglia il messaggio in segmenti e li invia dalla sorgente alla destinazione.

Connessione alla presa

In circostanze normali, ci sono un mittente e un destinatario che trasmettono pezzi di dati. Il mittente e il destinatario sono in comunicazione con macchine diverse nello stesso momento, quindi il proxy stabilisce una connessione socket tra il mittente e il destinatario impegnati in una comunicazione.

Il socket è una connessione logica tra i due utilizzando l'IP e il numero di porta. Il proxy stabilisce una connessione socket sul lato del mittente e del destinatario. L'indirizzo del socket, composto da un indirizzo IP e da un numero di porta, è unico per la comunicazione tra il mittente e il destinatario.

L'indirizzo univoco del socket assicura che la trasmissione dei dati avvenga in parallelo e che i pacchetti non si scontrino l'uno con l'altro.

Implementazione di un proxy a livello TCP

Un proxy TCP riceve il traffico in entrata e apre un socket in uscita attraverso il quale porta il traffico in entrata al server di destinazione. Muove i dati tra il client e il server, ma non può modificare alcun dato perché non lo comprende.

Un proxy a questo livello ha accesso all'indirizzo IP e al numero di porta a cui il ricevitore cerca di connettersi sul server backend. Se il server usa la porta 3306 per ascoltare le richieste, il proxy la implementa a questo livello e ascolta anche questa porta. 

Il proxy si mette in ascolto su quella porta e inoltra i messaggi al server. Il proxy TCP crea una connessione tramite un socket attraverso una singola combinazione host: porta.

L'implementazione di un proxy al livello di trasporto è leggera e veloce, poiché il livello è responsabile solo del trasferimento dei dati.

I proxy fungono da mezzo per il passaggio di messaggi avanti e indietro e non possono leggere i messaggi. Questi proxy aiutano a monitorare la rete, a nascondere la rete interna dalla rete pubblica, a mettere in coda le connessioni per evitare il sovraccarico del server e a limitare le connessioni. È la soluzione migliore per il bilanciamento del carico dei servizi che comunicano su TCP, come il traffico dei database MYSQL e Postgres.

Proxy TCP come proxy inverso

Un reverse proxy accetta una richiesta da un client, la inoltra a un server in grado di soddisfarla e restituisce la risposta del server al client. È possibile distribuire un reverse proxy anche se esiste un solo server o applicazione.

Il reverse proxy viene visto pubblicamente dagli altri utenti della rete. È implementato ai margini della rete del sito per accettare le richieste dei browser web e delle applicazioni mobili. 

L'implementazione di un proxy TCP come reverse proxy presenta i seguenti vantaggi:

Sicurezza - Aumenta la sicurezza della rete. I client malintenzionati non possono accedere ai server di backend perché non sono visibili alla rete esterna. Non possono accedervi direttamente per sfruttare eventuali vulnerabilità.

Prevenzione degli attacchi DDOS - I server di backend sono protetti dal reverse proxy per proteggerli dai DDOS (Distributed Denial of Service ).

Regolazione del traffico - Può rifiutare il traffico proveniente da un particolare indirizzo IP del client (blacklist) o limitare il numero di connessioni dal client.

Scalabilità e flessibilità: è flessibile modificare la configurazione del backend perché il client può vedere solo l'indirizzo del reverse proxy. Per bilanciare il carico sul server, è possibile aumentare o diminuire il numero di server in base al volume di traffico che cambia.

Accelerazione Web - Riduce il tempo necessario per generare una risposta per il client richiedente. 

Compressione - il proxy TCP risponde prima di tornare al client, riducendo la quantità di larghezza di banda necessaria per trasmettere i dati sulla rete.

Crittografia - Il traffico tra il client e il server nella rete richiede la crittografia. Il processo di crittografia comporta un overhead per il client e il server, in quanto è computazionalmente esaustivo. Il reverse proxy esegue la crittografia e la decrittografia, liberando così i server di backend per dedicarsi esclusivamente al servizio dei clienti.

Caching - Il reverse proxy memorizza una copia della richiesta nel suo sistema locale prima di servirla al client. Il reverse proxy serve la richiesta dalla cache invece di inoltrarla al server e recuperarla quando il client la richiede nuovamente. 

Proxy TCP come bilanciatore di carico

Un bilanciatore di carico è un proxy che gestisce il traffico quando ci sono più server. Consente al server di funzionare in modo efficiente e di scalare il server quando il traffico è elevato. Il bilanciatore di carico distribuisce il traffico tra i server e instrada le connessioni originali direttamente dai client a un server backend sano senza interruzioni.

Il proxy TCP utilizza il ritorno diretto del server per portare le risposte dai server backend sani direttamente ai client e non ai bilanciatori di carico. Il server di backend termina il traffico SSL (secure socket layer) e non il bilanciatore di carico. 

Affinità di sessione

Il traffico TCP tra il client e il server supporta l'affinità di sessione. L'affinità di sessione è quando il client può inviare richieste allo stesso server di backend, purché sia sano e capace. 

Monitoraggio dei server

Il proxy TCP esegue controlli sullo stato di salute del server backend monitorando periodicamente la sua disponibilità. Quando il server backend non è in grado di gestire il traffico, è un nodo non sano e il server reindirizza il traffico verso altri server backend sani.

Il proxy TCP presenta le seguenti caratteristiche quando agisce come bilanciatore di carico:

Comportamento asincrono - Il proxy TCP ha un comportamento asincrono, il che significa che se un client interrompe improvvisamente la lettura dal socket al proxy, gli altri client non devono notare alcuna interruzione del servizio attraverso il proxy.

Supporto di altri protocolli - Il proxy TCP supporta HTTP e anche altri protocolli di livello applicativo come FTP.

Agisce come proxy inverso - Un utente può utilizzare un proxy TCP come proxy inverso in base alla posizione di implementazione. Sul lato server, regola il traffico dal client all'utente. 

Opzione Scala finestra

La finestra di ricezione TCP è la quantità di dati in byte che un ricevitore può gestire durante una connessione. Il ricevitore deve aggiornare la dimensione della finestra prima di iniziare la comunicazione e attendere la conferma di ricezione. 

Il mittente invia i dati in base alla dimensione della finestra. Lo stack TCP/IP di Windows si adatta alla variazione delle dimensioni dei dati e utilizza una finestra di dimensioni maggiori. Ogni volta che il mittente trasmette, utilizza una dimensione di finestra più grande di quella utilizzata nella trasmissione precedente.

La dimensione della finestra non è fissa, perché è possibile ridimensionarla regolando la dimensione massima del segmento (MSS). Il client e il server negoziano la MSS durante la configurazione della connessione. Regolando la finestra di ricezione a incrementi della MSS, si aumenta la percentuale di segmenti TCP di dimensioni complete utilizzati durante le trasmissioni di dati in blocco.

La dimensione della finestra di ricezione viene determinata nel modo seguente:

Il client invia la prima richiesta di connessione al server pubblicizzando una dimensione della finestra di ricezione di 16K (16.384 byte).Quando la connessione viene stabilita, il client regola la dimensione della finestra di ricezione in base all'MSS.La dimensione della finestra viene regolata a quattro volte l'MSS, fino a una dimensione massima di 64 K, a meno che non si utilizzi l'opzione window scaling.

Domande frequenti

1. In che modo un reverse proxy è diverso da un proxy di bilanciamento del carico?

Proxy inversoProxy di bilanciamento del carico
Un reverse proxy è un'applicazione intermedia che viene implementata tra il client e il server.Un proxy di bilanciamento del carico distribuisce il traffico in modo uniforme ed efficiente su più server di backend.
I reverse proxy migliorano la sicurezza dei server Web garantendo che i client non comunichino direttamente con il server originale.Ci sono diversi server di backend e, in caso di interruzione della rete o di un attacco DDoS, un proxy di bilanciamento del carico aiuta a prevenire l'interruzione del sito, in quanto il traffico può essere reindirizzato verso un server alternativo.
Il processo: - L'utente effettua una richiesta HTTP. - Il reverse proxy la riceve. - Il reverse proxy consente o nega la richiesta dell'utente. - Se è consentita, il reverse proxy inoltra la richiesta al server. - Se è negata, il reverse proxy invia un messaggio di errore al client. - Il server invia la risposta corrispondente al reverse proxy, che inoltra la risposta del server al client.Il processo:- Il bilanciatore di carico riceve la richiesta del cliente.- Il bilanciatore di carico invia la richiesta a un singolo server del gruppo di server backend.- Il server selezionato invia la risposta al bilanciatore di carico.- Il bilanciatore di carico inoltra la risposta del server all'utente.
Alcuni esempi di reverse proxy open-source sonoNGINXApache HTTP ServerApache Traffic ServerEsempi di alcuni algoritmi di bilanciamento del carico sonoHashRound RobinPotenza di due scelte

2. Differenza tra un proxy HTTP e un proxy TCP.

Proxy HTTPProxy TCP
In una zona demilitarizzata (DMZ), viene utilizzato come bilanciatore di carico o come provider di IP pubblici per proteggere i server backend.Viene utilizzato come proxy inverso per una connessione TCP tra il client e il server.
Crea una richiesta/risposta HTTP.Apre una connessione socket TCP e sposta i dati attraverso di essa.
Il proxy HTTP legge l'indirizzo dell'host e si connette all'host appropriato.Il proxy TCP non modifica i dati perché non è in grado di comprenderli.
Oltre all'HTTP, può servire richieste HTTPS e FTP.Oltre a TCP, può servire richieste HTTP e FTP.

Pensieri finali

Un proxy TCP funge da reverse proxy e da load balancer. Entrambi i tipi di applicazioni si collocano tra i client e i server, accettando le richieste dei primi e fornendo le risposte dei secondi.

A volte il reverse proxy e il bilanciatore di carico possono sembrare la stessa cosa e generare confusione. Per capire quando e perché è possibile utilizzarli in un sito web.

La raccolta di dati è un compito immenso ed è importante per un'azienda consolidata o una startup. È un processo che richiede tendenze di mercato, analisi dei concorrenti e preferenze dei clienti per prendere decisioni. 

ProxyScrape offre proxy premium, proxy residenziali e proxy dedicati per la raccolta di enormi quantità di dati dai siti web. È possibile scegliere tra una combinazione flessibile di proxy e il prezzo è accessibile. Continuate a controllare il nostro blog per ulteriori informazioni sui nuovi proxy introdotti, sui loro usi e sui vantaggi offerti da ProxyScrape .