Asio TCP-socketi ühendamine SOCKS5-kuulajaga lõpetab ühe sammu: TCP-ühenduse selle kuulajaga. See ei palu puhverserveril ühenduda lõppserveriga. Lubatud avaliku sihtmärgi testi jaoks pakub SOCKS5 puhverserverite loend kandidaate selle esimese TCP-lõpp-punkti jaoks; ühendaja peab siiski allpool kirjeldatud vahetuse läbi tegema.

Seejärel peab SOCKS5 ühendaja täitma protokolli vahetuse:

  1. Saatke versiooni 5 tervitus, mis loetleb kliendi toetatavad autentimismeetodid.
  2. Lugege valitud meetod ja sooritage selle autentimisvahetus, kui seda nõutakse.
  3. Saatke CONNECT koos sihtkoha aadressitüübi, aadressi ja pordiga võrgu baitide järjekorras.
  4. Lugege vastus, kontrollige selle versiooni ja tulemuskoodi ning tarbige kogu muutuva pikkusega seotud aadress ja port.
  5. Andke loodud voog rakenduse protokollile.

socks5::async_proxy_connect nimega abifunktsioon kuulub SOCKS-i teostuse juurde, mis selle abifunktsiooni pakub. Selle nimetamine boost::asio kõrval ei tee sellest Asio TCP-socketi liidese osa.

TCP-lugemised võivad tagastada ainult osa vastusest. Koostage lugemised vajalike baitide arvude jaoks, seejärel valige ülejäänud pikkus aadressitüübi väljalt. Ärge eeldage, et igal serveri vastusel on fikseeritud IPv4-paigutus.

HTTPS-i puhul tehke sihtkoha TLS-kätlus pärast SOCKS CONNECTi õnnestumist, säilitades sihtkoha SNI ja hostinime kontrolli. Üksnes edukas puhverserveri vastus ei autendi veebisaiti.

Hoidke tühistamine ja tähtajad kogu seadistusjärjestuse vältel. Kui TCP-ühenduse loomise aeg lõpeb, jäävad hilisemad tervitus-, autentimis- ja CONNECT-vahetused piiramata.

Seotud artiklid