Asio TCP сокетыг SOCKS5 сонсогчтой холбох нь зөвхөн нэг алхмыг гүйцэтгэдэг: тухайн сонсогч руу хийх TCP холболт. Энэ нь проксиг эцсийн сервертэй холбогдохыг шаарддаггүй. Зөвшөөрөгдсөн нийтийн зорилтын туршилтад SOCKS5 прокси жагсаалт тэр эхний TCP төгсгөлийн цэгт нэр дэвшигчдийг санал болгодог; холбогч доорх солилцоог заавал гүйцэтгэх ёстой.

Дараа нь SOCKS5 холбогч протоколын солилцоог гүйцэтгэх ёстой:

  1. Клиентийн дэмждэг баталгаажуулалтын аргуудыг жагсаасан 5-р хувилбарын мэндчилгээ илгээнэ.
  2. Сонгосон аргыг уншиж, шаардлагатай үед түүний баталгаажуулалтын солилцоог гүйцэтгэнэ.
  3. CONNECT-ийг зорьсон газрын хаягийн төрөл, хаяг, сүлжээний байт дараалал дахь порттой илгээнэ.
  4. Хариуг уншиж, хувилбар болон үр дүнгийн кодыг шалгаж, хувьсах урттай холбогдсон хаяг, портыг бүрэн хэрэглэнэ.
  5. Бүрдсэн урсгалыг програмын протоколд шилжүүлнэ.

socks5::async_proxy_connect нэртэй туслах нь тухайн туслахыг өгдөг SOCKS хэрэгжүүлэлтэд хамаарна. Үүнийг boost::asio-ийн хажууд нэрлэх нь Asio-гийн TCP сокетын интерфейсийн хэсэг болгохгүй.

TCP уншилт нь хариуны зөвхөн нэг хэсгийг буцааж болно. Шаардлагатай байтын тоонд уншилтуудыг нэгтгэж, дараа нь үлдсэн уртыг хаягийн төрлийн талбараас сонгоно. Серверийн хариу бүр тогтмол IPv4 зохион байгуулалттай гэж бүү бодоорой.

HTTPS-ийн хувьд SOCKS CONNECT амжилттай болсны дараа зорьсон газрын TLS гар барилтыг гүйцэтгэж, зорьсон газрын SNI болон хост нэрийн шалгалтыг хадгална. Зөвхөн амжилттай прокси хариу вэб сайтыг баталгаажуулахгүй.

Бүх тохиргооны дарааллын туршид цуцлалт болон хугацааг хадгална. Хэрэв TCP холболт тогтоох хугацаа дуусвал дараагийн мэндчилгээ, баталгаажуулалт, CONNECT солилцоо хязгааргүй үлдэнэ.

Холбоотой нийтлэлүүд