Povezava vtičnice TCP v Asio s poslušalcem SOCKS5 zaključi en korak: povezavo TCP s tem poslušalcem. Posredniku ne naroči, naj se poveže s končnim strežnikom. Za dovoljen preizkus javnega cilja seznam posrednikov SOCKS5 ponuja kandidate za to prvo končno točko TCP; konektor pa mora vseeno izvesti spodnjo izmenjavo.

Konektor SOCKS5 mora nato izvesti izmenjavo protokola:

  1. Pošljite pozdrav različice 5 s seznamom metod preverjanja pristnosti, ki jih podpira odjemalec.
  2. Preberite izbrano metodo in po potrebi izvedite njeno izmenjavo preverjanja pristnosti.
  3. Pošljite CONNECT s tipom naslova cilja, naslovom in vrati v omrežnem vrstnem redu bajtov.
  4. Preberite odgovor, preverite njegovo različico in kodo izida, nato porabite celoten vezani naslov in vrata spremenljive dolžine.
  5. Predajte vzpostavljeni tok protokolu aplikacije.

Pomočnik z imenom socks5::async_proxy_connect pripada izvedbi SOCKS, ki tega pomočnika ponuja. Če ga omenite ob boost::asio, še ne postane del vmesnika vtičnice TCP v Asio.

Branja TCP lahko vrnejo le del odgovora. Sestavite branja za zahtevana števila bajtov, nato preostalo dolžino izberite v polju tipa naslova. Ne predpostavljajte, da ima vsak odgovor strežnika fiksno postavitev IPv4.

Za HTTPS izvedite rokovanje TLS s ciljem po uspešnem SOCKS CONNECT, pri čemer ohranite SNI in preverjanje imena gostitelja cilja. Sam uspešen odgovor posrednika spletnega mesta ne overi.

Ohranite preklic in roke skozi celotno zaporedje nastavitve. Če čas vzpostavitve povezave TCP poteče, poznejše izmenjave pozdrava, preverjanja pristnosti in CONNECT ostanejo brez omejitve.

Sorodni članki