Ein SOCKS5-frontend kan bruke ein HTTP-proxy som sin vidare transport. Han opptrer som SOCKS-tenar overfor klienten og som HTTP CONNECT-klient overfor forelderen. Dei to kontrollutvekslingane blir avslutta før applikasjonsstraumen byrjar.

SOCKS CONNECT-førespurnaden leverer alt målverten eller -adressa og porten. For ei illustrerande HTTP/1.1-utveksling med forelderen:

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

Omset resultatet ved grensa

Adapteren fullfører all påkravd autentisering hos forelderen og ventar på CONNECT-resultatet. Eit vellukka 2xx-svar etablerer tunnelen til forelderen. Først deretter bør han returnere det tilsvarande SOCKS-suksesssvaret til klienten nedstraums.

Viss forelderen avviser operasjonen, send eit definert SOCKS-feilsvar, og avslutt deretter klienttilkoplinga med det same. SOCKS5 krev den lukkinga innan ti sekund etter at feilen er oppdaga. Hald på HTTP-statusen til forelderen som diagnostisk informasjon for adapteren. Å sende den statuslinja vidare som applikasjonsdata ville plassere ei HTTP-kontrollmelding i ein straum der klienten ventar SOCKS-innramming.

Før eit vellukka CONNECT-resultat snakkar forelderen framleis HTTP, inkludert innramminga av eitkvart utfordrings- eller feilsvar. Etter hovudskiljeteiknet i eit vellukka resultat blir tilkoplinga tunnelen; det er ingen HTTP-svarstekst å bruke først.

Ta vare på byta etter hovuda

Éi lesing kan innehalde slutten av hovuda til forelderen og byta frå målet samstundes. Ta vare på desse ekstra byta for applikasjonen nedstraums. Protokollar der tenaren snakkar først, kan helse med det same etter at tilkoplinga deira er opna.

Etter at SOCKS-suksesssvaret er sendt, send applikasjonsstraumen vidare i båe retningar. Adapteren treng ikkje veksle mellom éi klientmelding og éi tenarmelding, og han treng ikkje å forstå TLS-poster for å sende dei vidare. Protokollarbeidet hans var å etablere og omsetje dei to tunnel-forhandlingane.

Relaterte artiklar