Asio treng SOCKS5-utveksling etter at sambandet med proxyen er oppretta
Behandle SOCKS5 som ein protokolltilstandsmaskin over Asio-socketen, med fullstendige lesingar, validerte svar og TLS til destinasjonen først etter at CONNECT lukkast.
Å kople ein Asio TCP-socket til ein SOCKS5-lyttar fullfører eitt trinn: TCP-sambandet til den lyttaren. Det ber ikkje proxyen om å kople til den endelege serveren. For ein tillaten test mot eit offentleg mål tilbyr SOCKS5-proxylista kandidatar for den første TCP-endepunktet; connectoren må likevel gjennomføre utvekslinga nedanfor.
Ein SOCKS5-connector må deretter køyre protokollutvekslinga:
- Send ei helsing med versjon 5 som listar opp godkjenningsmetodane klienten støttar.
- Les den valde metoden og utfør godkjenningsutvekslinga når det krevst.
- Send CONNECT med adressetypen, adressa og porten til destinasjonen i nettverksbyte-rekkefølgje.
- Les svaret, kontroller versjonen og resultatkoden, og bruk opp den fullstendige bundne adressa og porten med variabel lengd.
- Overlever den etablerte straumen til protokollen til applikasjonen.
Ein hjelpar som heiter socks5::async_proxy_connect høyrer til SOCKS-implementasjonen som leverer den hjelparen. Å nemne han ved sida av boost::asio gjer han ikkje til ein del av TCP-socketgrensesnittet til Asio.
TCP-lesingar kan berre returnere ein del av eit svar. Set saman lesingar for dei nødvendige bytetalet, og vel deretter den gjenverande lengda frå adressetypefeltet. Ikkje rekn med at kvart serversvar har det faste IPv4-oppsettet.
For HTTPS, utfør TLS-handtrykket til destinasjonen etter at SOCKS CONNECT lukkast, og ta vare på SNI og vertsnamnverifiseringa til destinasjonen. Eit vellykka proxy-svar åleine godkjenner ikkje nettstaden.
Hald på avbrot og fristar gjennom heile oppsettsekvensen. Viss tidsgrensa for TCP-sambandet går ut, blir dei seinare helsing-, godkjennings- og CONNECT-utvekslingane elles ubegrensa.