Socket .NET memerlukan jabat tangan SOCKS
Jelaskan apa yang harus dilakukan socket TCP .NET mentah sebelum byte aplikasi dapat melintas melalui proksi SOCKS.
Mengarahkan Socket.Connect() ke server SOCKS membuka koneksi TCP ke server itu. Byte berikutnya tetap harus berbicara SOCKS. Mengirim protokol aplikasi segera membuat server menunggu percakapan lain.
Dengan SOCKS5, pembentukan koneksi mencakup negosiasi metode, pertukaran autentikasi yang dipilih jika ada, dan permintaan yang menyebutkan tujuan. Hanya balasan yang berhasil membuka jalur bagi byte aplikasi. Tahapan ini didefinisikan dalam RFC 1928.
Pertahankan negosiasi di lapisan koneksi
Aplikasi dengan protokol TCP sendiri dapat memakai konektor yang sadar proksi dan mengembalikan stream yang sudah terbentuk. Sisa aplikasi lalu membaca dan menulis melalui stream itu. Konektor harus memperhitungkan pembacaan sebagian, alamat dengan panjang bervariasi, kegagalan autentikasi, dan tenggat waktu untuk negosiasi.
Implementasi tulisan tangan yang membaca satu buffer berukuran tetap dan menganggapnya berhasil itu rapuh. TCP tidak mempertahankan batas pesan SOCKS. Baca balasan lengkap yang dijelaskan oleh tipe alamatnya sebelum memulai protokol aplikasi. Pembaca balasan CONNECT untuk .NET 7+ menggambarkan langkah itu.
Jika pustaka yang dipelihara sudah menyediakan lapisan koneksi ini, periksa versi SOCKS yang didukung, metode autentikasi, dan target framework-nya. Tautan forum berumur satu dekade adalah titik awal penyelidikan, bukan bukti kompatibilitas saat ini.
Konfigurasi klien HTTP memiliki cakupan terpisah
Setelan proksi klien HTTP mengonfigurasi klien HTTP itu. Itu tidak mengubah setiap socket mentah di dalam proses. API Socket menerima endpoint jaringan dan menyerahkan negosiasi tingkat lebih tinggi kepada pemanggil.
Untuk protokol aplikasi yang terenkripsi, lakukan jabat tangan TLS-nya setelah terowongan proksi terbentuk. Validasi identitas tujuan yang dimaksud pada tahap itu. Autentikasi proksi dan autentikasi tujuan tetap terpisah meskipun keduanya memakai stream dasar yang sama.