Преведување на барање SOCKS5 во HTTP тунел
Завршете ја CONNECT размената со родителот, вратете SOCKS одговор на клиентот и дури потоа предавајте ги бајтите на апликацијата.
Еден 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 записите за да ги препрати. Неговата протоколарна работа беше воспоставување и преведување на двете тунелски преговори.