Један SOCKS5 фронтенд може користити HTTP прокси као свој даљи транспорт. Делује као SOCKS сервер према клијенту и као HTTP CONNECT клијент према родитељу. Две контролне размене завршавају пре него што почне ток апликације.

SOCKS CONNECT захтев већ даје одредишни хост или адресу и порт. За илустративну HTTP/1.1 размену са родитељем:

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

Преведите резултат на граници

Адаптер обавља сваку потребну аутентификацију код родитеља и чека резултат CONNECT-а. Успешан 2xx одговор успоставља родитељски тунел. Тек тада треба да врати одговарајући SOCKS одговор о успеху клијенту низводно.

Ако родитељ одбије операцију, пошаљите дефинисани SOCKS одговор о неуспеху, а затим одмах прекините везу са клијентом. SOCKS5 захтева то затварање у року од десет секунди од откривања неуспеха. Сачувајте HTTP статус родитеља као дијагностичку информацију за адаптер. Прослеђивање тог статусног реда као података апликације ставило би HTTP контролну поруку у ток чији клијент очекује SOCKS уоквирење.

Пре успешног резултата CONNECT-а родитељ још говори HTTP, укључујући уоквирење било ког одговора са изазовом или грешком. После раздвајача заглавља успешног резултата веза постаје тунел; нема HTTP тела одговора које би се прво трошило.

Сачувајте бајтове након заглавља

Једно читање може садржати крај родитељских заглавља и бајтове са одредишта заједно. Сачувајте те додатне бајтове за низводну апликацију. Протоколи у којима сервер говори први могу се јавити одмах након отварања везе.

Након што је SOCKS одговор о успеху послат, прослеђујте ток апликације у оба смера. Адаптер не мора да измењује једну клијентску поруку са једном серверском поруком и не мора да разуме TLS записе да би их проследио. Његов протоколарни посао био је успостављање и превођење две тунелске преговоре.

Повезани чланци