Tunel HTTP - HTTP tunnel

Tunelarea HTTP este utilizată pentru a crea o legătură de rețea între două computere în condiții de conectivitate de rețea restricționată, inclusiv firewall-uri , NAT- uri și ACL-uri , printre alte restricții. Tunelul este creat de un intermediar numit server proxy, care este de obicei situat într-un DMZ .

Tunelarea poate permite, de asemenea, comunicarea utilizând un protocol care în mod normal nu ar fi acceptat în rețeaua restricționată.

Metoda HTTP CONNECT

Cea mai comună formă de tunelare HTTP este metoda standard CONNECT HTTP . În acest mecanism, clientul solicită unui server proxy HTTP să redirecționeze conexiunea TCP către destinația dorită. Serverul continuă apoi să facă conexiunea în numele clientului. Odată ce conexiunea a fost stabilită de server, serverul proxy continuă să proxyze fluxul TCP către și de la client. Numai cererea inițială de conexiune este HTTP - după aceea, serverul pur și simplu proxy conexiunea TCP stabilită.

Acest mecanism este modul în care un client din spatele unui proxy HTTP poate accesa site-uri web folosind SSL sau TLS (adică HTTPS). Serverele proxy pot, de asemenea, să limiteze conexiunile, permițând doar conexiunile la portul implicit HTTPS 443, listarea albă a gazdelor sau blocarea traficului care nu pare a fi SSL.

Exemplu de negociere

Clientul se conectează la serverul proxy și solicită tunelarea specificând portul și computerul gazdă la care ar dori să se conecteze. Portul este utilizat pentru a indica protocolul solicitat.

CONNECT streamline.t-mobile.com:22 HTTP/1.1
Proxy-Authorization: Basic encoded-credentials

Dacă conexiunea a fost permisă și proxy-ul s-a conectat la gazda specificată, atunci proxy-ul va returna un răspuns de succes 2XX.

HTTP/1.1 200 OK

Clientul este acum înlocuit cu gazda la distanță. Orice date trimise către serverul proxy sunt redirecționate, nemodificate, către gazda la distanță, iar clientul poate comunica folosind orice protocol acceptat de gazda la distanță. În exemplul de mai jos, clientul pornește comunicații SSH, așa cum este sugerat de numărul portului în cererea inițială CONNECT.

SSH-2.0-OpenSSH_4.3\r\n
...

Tunelare HTTP fără utilizarea CONNECT

Un tunel HTTP poate fi de asemenea implementat folosind doar metodele HTTP obișnuite ca POST, GET, PUT și DELETE. Acest lucru este similar cu abordarea utilizată în fluxurile bidirecționale peste HTTP sincron ( BOSH ).

În acest program de dovadă a conceptului , un server HTTP special rulează în afara rețelei protejate și un program client este rulat pe un computer din interiorul rețelei protejate. Ori de câte ori traficul de rețea este transmis de la client, acesta reambalează datele de trafic ca o cerere HTTP și transmite datele către serverul extern, care extrage și execută cererea de rețea originală pentru client. Răspunsul la cerere, trimis la server, este apoi reambalat ca răspuns HTTP și retransmis către client. Deoarece tot traficul este încapsulat în cereri și răspunsuri GET și POST normale, această abordare funcționează prin majoritatea proxy-urilor și firewall-urilor.

Vezi si

Referințe