Lidhja e një socket TCP të Asio me një dëgjues SOCKS5 plotëson vetëm një hap: lidhjen TCP me atë dëgjues. Nuk i kërkon proxy-t të lidhet me serverin përfundimtar. Për një provë të lejuar mbi një objektiv publik, lista e proxy-ve SOCKS5 ofron kandidatë për atë pikë të parë fundore TCP; lidhësi duhet gjithsesi të kryejë shkëmbimin më poshtë.

Më pas lidhësi SOCKS5 duhet të ekzekutojë shkëmbimin e protokollit:

  1. Dërgoni një përshëndetje të versionit 5 që liston metodat e vërtetimit që mbështet klienti.
  2. Lexoni metodën e zgjedhur dhe kryeni shkëmbimin e saj të vërtetimit kur kërkohet.
  3. Dërgoni CONNECT me llojin e adresës së destinacionit, adresën dhe portin në rendin e bajtëve të rrjetit.
  4. Lexoni përgjigjen, kontrolloni versionin dhe kodin e rezultatit, dhe konsumoni adresën e lidhur dhe portin e plotë me gjatësi të ndryshueshme.
  5. Dorëzoni rrjedhën e vendosur protokollit të aplikacionit.

Një ndihmës i quajtur socks5::async_proxy_connect i përket implementimit SOCKS që ofron atë ndihmës. Përmendja pranë boost::asio nuk e bën atë pjesë të ndërfaqes së socket-it TCP të Asio.

Leximet TCP mund të kthejnë vetëm një pjesë të përgjigjes. Kompozoni lexime për numrat e kërkuar të bajtëve, pastaj zgjidhni gjatësinë e mbetur nga fusha e llojit të adresës. Mos supozoni se çdo përgjigje serveri ka strukturën fikse IPv4.

Për HTTPS, kryeni shtrëngimin e duarve TLS të destinacionit pasi SOCKS CONNECT të ketë sukses, duke ruajtur SNI-në dhe verifikimin e emrit të hostit të destinacionit. Një përgjigje e suksesshme proxy vetëm nuk e vërteton faqen e internetit.

Mbani anulimin dhe afatet përgjatë gjithë sekuencës së konfigurimit. Nëse koha e vendosjes së lidhjes TCP skadon, shkëmbimet e mëvonshme të përshëndetjes, vërtetimit dhe CONNECT mbeten pa kufi.

Artikuj të ngjashëm