Asio TCP ligzdas savienošana ar SOCKS5 klausītāju pabeidz tikai vienu soli: TCP savienojumu ar šo klausītāju. Tas nelūdz starpniekserverim savienoties ar galīgo serveri. Atļautam publiska mērķa testam SOCKS5 starpniekserveru saraksts piedāvā kandidātus šim pirmajam TCP galapunktam; savienotājam tomēr jāpabeidz tālāk aprakstītā apmaiņa.

Pēc tam SOCKS5 savienotājam jāveic protokola apmaiņa:

  1. Nosūtīt 5. versijas sveicienu, kurā uzskaitītas klienta atbalstītās autentifikācijas metodes.
  2. Nolasīt izvēlēto metodi un, ja nepieciešams, veikt tās autentifikācijas apmaiņu.
  3. Nosūtīt CONNECT ar galamērķa adreses tipu, adresi un portu tīkla baitu secībā.
  4. Nolasīt atbildi, pārbaudīt tās versiju un rezultāta kodu, un patērēt visu mainīga garuma piesaistīto adresi un portu.
  5. Nododiet izveidoto straumi lietojumprogrammas protokolam.

Palīgfunkcija ar nosaukumu socks5::async_proxy_connect pieder SOCKS implementācijai, kas nodrošina šo palīgfunkciju. Tās nosaukšana blakus boost::asio nepadara to par Asio TCP ligzdas saskarnes daļu.

TCP lasīšanas var atgriezt tikai daļu atbildes. Sastādiet lasīšanas vajadzīgajiem baitu skaitļiem, pēc tam izvēlieties atlikušo garumu no adreses tipa lauka. Nepieņemiet, ka katrai servera atbildei ir fiksēts IPv4 izkārtojums.

HTTPS gadījumā veiciet galamērķa TLS rokasspiedienu pēc veiksmīga SOCKS CONNECT, saglabājot galamērķa SNI un resursdatora nosaukuma pārbaudi. Veiksmīga starpniekservera atbilde vien pati vietni neautentificē.

Saglabājiet atcelšanu un termiņus visā iestatīšanas secībā. Ja TCP savienojuma izveides laiks beidzas, vēlākās sveiciena, autentifikācijas un CONNECT apmaiņas paliek neierobežotas.

Saistītie raksti