Asio vajab pärast puhverserveriga ühendamist SOCKS5-vahetust
Käsitlege SOCKS5-t Asio socketi kohal oleva protokolli olekumasinana, täielike lugemiste, valideeritud vastuste ja sihtkoha TLS-iga alles pärast CONNECTi õnnestumist.
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:
- Saatke versiooni 5 tervitus, mis loetleb kliendi toetatavad autentimismeetodid.
- Lugege valitud meetod ja sooritage selle autentimisvahetus, kui seda nõutakse.
- Saatke CONNECT koos sihtkoha aadressitüübi, aadressi ja pordiga võrgu baitide järjekorras.
- Lugege vastus, kontrollige selle versiooni ja tulemuskoodi ning tarbige kogu muutuva pikkusega seotud aadress ja port.
- 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.