Asio hat in SOCKS5-útwikseling nedich nei it ferbinen mei de proxy
Behannelje SOCKS5 as in protokol-tastânmasine oer de Asio-socket, mei folsleine lêzingen, falidearre antwurden en TLS nei de bestimming pas nei in slagge CONNECT.
In Asio TCP-socket ferbine mei in SOCKS5-ôfharker foltôget ien stap: de TCP-ferbining nei dy ôfharker. It freget de proxy net om him mei de definitive tsjinner te ferbinen. Foar in tastiene test tsjin in iepenbier doel biedt de SOCKS5-proxylist kandidaten foar dat earste TCP-einpunt; de ferbiner moat dochs de útwikseling hjirûnder foltôgje.
In SOCKS5-ferbiner moat dêrnei de protokol-útwikseling útfiere:
- Stjoer in groetnis fan ferzje 5 dy't de autentikaasjemetoaden listet dy't de klant stipet.
- Lês de keazen metoade en fiert har autentikaasje-útwikseling út wannear't dat nedich is.
- Stjoer CONNECT mei it adrestype, it adres en de poarte fan de bestimming yn netwurkbyte-oarder.
- Lês it antwurd, kontrolearje de ferzje en de resultaatkoade, en ferbrûk it folsleine bûne adres en de poarte fan fariabele lingte.
- Jou de oprjochte stream oan it protokol fan de applikaasje.
In helper mei de namme socks5::async_proxy_connect heart by de SOCKS-ymplemintaasje dy't dy helper leveret. It neamen njonken boost::asio makket it gjin part fan 'e TCP-socketynterface fan Asio.
TCP-lêzingen kinne mar in part fan in antwurd weromjaan. Stel lêzingen gear foar de fereaske bytetallen, kies dêrnei de oerbliuwende lingte út it adrestype-fjild. Nim net oan dat elk tsjinnerantwurd de fêste IPv4-yndieling hat.
Foar HTTPS fiert de TLS-hânskodding nei de bestimming út nei in slagge SOCKS CONNECT, en behâld de SNI en de hostnamfekontrôle fan de bestimming. In slagge proxy-antwurd allinnich autentisearret de webside net.
Hâld annulearring en deadlines oer de hiele ynstelsekwinsje. As de tiid foar it oanmeitsjen fan de TCP-ferbining ferrint, bliuwe de lettere groetnis-, autentikaasje- en CONNECT-útwikselingen oars ûnbeheind.