Pripojenie socketu TCP v Asio k SOCKS5 naslúchajúcemu dokončí jeden krok: TCP spojenie s týmto naslúchajúcim. Nežiada, aby sa proxy pripojila ku konečnému serveru. Na povolený test verejného cieľa ponúka zoznam proxy SOCKS5 kandidátov pre tento prvý TCP koncový bod; konektor však stále musí vykonať výmenu nižšie.

Konektor SOCKS5 potom musí vykonať výmenu protokolu:

  1. Odoslať pozdrav verzie 5 so zoznamom metód overovania, ktoré klient podporuje.
  2. Prečítať zvolenú metódu a v prípade potreby vykonať jej overovaciu výmenu.
  3. Odoslať CONNECT s typom adresy cieľa, adresou a portom v sieťovom poradí bajtov.
  4. Prečítať odpoveď, skontrolovať jej verziu a kód výsledku, a spotrebovať celú pripojenú adresu a port premennej dĺžky.
  5. Odovzdať vytvorený tok protokolu aplikácie.

Pomocník s názvom socks5::async_proxy_connect patrí k implementácii SOCKS, ktorá tohto pomocníka poskytuje. Uvedenie vedľa boost::asio z neho nerobí súčasť rozhrania socketu TCP v Asio.

Čítania TCP môžu vrátiť len časť odpovede. Zostavte čítania pre požadované počty bajtov a zvyšnú dĺžku potom vyberte z poľa typu adresy. Nepredpokladajte, že každá odpoveď servera má pevné rozloženie IPv4.

Pre HTTPS vykonajte TLS podanie rúk s cieľom až po úspešnom SOCKS CONNECT, pričom zachovajte SNI a overenie názvu hostiteľa cieľa. Samotná úspešná odpoveď proxy web neoveruje.

Udržujte zrušenie a termíny po celú sekvenciu nastavenia. Ak vyprší čas nadviazania TCP spojenia, neskoršie výmeny pozdravu, overovania a CONNECT zostanú bez obmedzenia.

Súvisiace články