SOCKS5-edusta voi käyttää HTTP-välityspalvelinta eteenpäin kulkevana siirtotienään. Se toimii SOCKS-palvelimena asiakasta kohti ja HTTP CONNECT -asiakkaana ylätasoa kohti. Molemmat ohjausvaihdot päättyvät ennen kuin sovellusvirta alkaa.

SOCKS CONNECT -pyyntö antaa jo kohdeisännän tai -osoitteen ja portin. Havainnollistava HTTP/1.1-vaihto ylätason kanssa:

client → adapter: SOCKS5 CONNECT service.example.net:443
adapter → parent:
    CONNECT service.example.net:443 HTTP/1.1
    Host: service.example.net:443

parent → adapter: HTTP/1.1 200 Connection Established
                 [end of headers]
adapter → client: SOCKS5 success reply

client ↔ adapter ↔ parent ↔ service: application bytes

Käännä tulos rajalla

Sovitin suorittaa ylätason vaatiman todennuksen ja odottaa CONNECT-tulosta. Onnistunut 2xx-vastaus muodostaa ylätason tunnelin. Vasta sen jälkeen sen tulee palauttaa vastaava SOCKS-onnistumisvastaus alavirran asiakkaalle.

Jos ylätaso hylkää toiminnon, lähetä määritelty SOCKS-virhevaste ja katkaise sitten asiakkaan yhteys viipymättä. SOCKS5 edellyttää tätä sulkemista kymmenen sekunnin kuluessa virheen havaitsemisesta. Säilytä ylätason HTTP-tila sovittimen diagnostiikkatietona. Tuon tilan rivin välittäminen sovellustietona veisi HTTP-ohjausviestin virtaan, jonka asiakas odottaa SOCKS-kehystystä.

Ennen onnistunutta CONNECT-tulosta ylätaso puhuu yhä HTTP:tä, mukaan lukien mahdollisen haaste- tai virhevasteen kehystys. Onnistuneen tuloksen otsikkorajoittimen jälkeen yhteydestä tulee tunneli; ensin ei ole kulutettavaa HTTP-vastauksen runkoa.

Säilytä tavut otsikoiden jälkeen

Yksi luku voi sisältää ylätason otsikoiden lopun ja kohteesta tulevat tavut yhdessä. Säilytä nuo ylimääräiset tavut alavirran sovellukselle. Palvelin ensin -protokollat voivat tervehtiä heti yhteytensä avauduttua.

Kun SOCKS-onnistumisvastaus on lähetetty, välitä sovellusvirtaa molempiin suuntiin. Sovittimen ei tarvitse vuorotella yhtä asiakasviestiä yhden palvelinviestin kanssa, eikä sen tarvitse ymmärtää TLS-tietueita välittääkseen niitä. Sen protokollatyö oli kahden tunnelinneuvottelun pystyttäminen ja kääntäminen.

Aiheeseen liittyvät artikkelit