Asio þarf SOCKS5-skipti eftir að hafa tengst proxy-inu
Líta á SOCKS5 sem stöðuvél samskiptareglunnar ofan á Asio-sokkinu, með heilum lestri, staðfestum svörum og TLS til áfangastaðar eingöngu eftir að CONNECT heppnast.
Að tengja Asio TCP-sokki við SOCKS5-hlustara klárar eitt skref: TCP-tenginguna við þann hlustara. Það biður proxy-ið ekki um að tengjast lokaþjóninum. Fyrir leyfða prófun á opinberum áfangastað býður SOCKS5-proxylistinn fram kandídata fyrir þann fyrsta TCP-endapunkt; tengillinn verður samt að ljúka skiptunum hér að neðan.
SOCKS5-tengill verður þá að keyra skipti samskiptareglunnar:
- Senda kveðju af útgáfu 5 sem listar auðkenningaraðferðirnar sem biðlarinn styður.
- Lesa valda aðferð og framkvæma auðkenningarskipti hennar þegar þess er krafist.
- Senda CONNECT með gerð áfangastaðar, vistfangi og porti í netbætaröð.
- Lesa svarið, athuga útgáfu þess og niðurstöðukóðann, og eyða öllu bundnu vistfanginu og portinu af breytilegri lengd.
- Afhenda stofna strauminn samskiptareglum forritsins.
Hjálpari sem heitir socks5::async_proxy_connect tilheyrir SOCKS-útfærslunni sem býður þann hjálpara. Að nefna hann við hlið boost::asio gerir hann ekki að hluta af TCP-sokkviðmóti Asio.
TCP-lestur getur aðeins skilað hluta svars. Setjið lestur saman fyrir nauðsynlegu bætafjöldana og veljið síðan afgangslengdina úr reitnum fyrir vistfangstegund. Gerið ekki ráð fyrir að hvert svar þjónsins hafi fast IPv4-skipulag.
Fyrir HTTPS skal framkvæma TLS-handaband áfangastaðarins eftir að SOCKS CONNECT heppnast, með því að varðveita SNI og hýsilnafna staðfestingu áfangastaðarins. Eitt heppnað proxysvar staðfestir ekki vefsvæðið.
Haldið upphættingu og frestum í gegnum alla uppsetningaröðina. Ef tíminn til að koma á TCP-tengingunni rennur út verða síðari kveðju-, auðkenningar- og CONNECT-skiptin annars ótakmörkuð.