Menyambung soket TCP Asio ke pendengar SOCKS5 melengkapkan satu langkah: sambungan TCP ke pendengar itu. Ia tidak meminta proksi menyambung ke pelayan akhir. Untuk ujian sasaran awam yang dibenarkan, senarai proksi SOCKS5 menawarkan calon untuk titik akhir TCP pertama itu; penyambung masih perlu melengkapkan pertukaran di bawah.

Penyambung SOCKS5 kemudian mesti menjalankan pertukaran protokol:

  1. Hantar salam versi 5 yang menyenaraikan kaedah pengesahan yang disokong klien.
  2. Baca kaedah yang dipilih dan lakukan pertukaran pengesahannya apabila diperlukan.
  3. Hantar CONNECT dengan jenis alamat destinasi, alamat dan port dalam susunan bait rangkaian.
  4. Baca balasan, semak versinya dan kod hasil, dan habiskan alamat terikat serta port lengkap yang panjangnya berubah-ubah.
  5. Serahkan strim yang terbentuk kepada protokol aplikasi.

Pembantu bernama socks5::async_proxy_connect tergolong dalam pelaksanaan SOCKS yang menyediakan pembantu itu. Menamakannya di sebelah boost::asio tidak menjadikannya bahagian antara muka soket TCP Asio.

Bacaan TCP mungkin memulangkan hanya sebahagian balasan. Susun bacaan untuk bilangan bait yang diperlukan, kemudian pilih panjang selebihnya daripada medan jenis alamat. Jangan andaikan setiap balasan pelayan mempunyai susun atur IPv4 tetap.

Untuk HTTPS, lakukan jabat tangan TLS destinasi selepas SOCKS CONNECT berjaya, sambil mengekalkan SNI dan pengesahan nama hos destinasi. Balasan proksi yang berjaya sahaja tidak mengesahkan laman web.

Kekalkan pembatalan dan tarikh akhir sepanjang keseluruhan urutan persediaan. Jika masa pembentukan sambungan TCP tamat, pertukaran salam, pengesahan dan CONNECT yang kemudian kekal tanpa had.

Artikel berkaitan