SOCKS5 old qismi HTTP proksi-serverdan o'zining keyingi transporti sifatida foydalanishi mumkin. U mijozga nisbatan SOCKS serveri, ota ulanishga nisbatan esa HTTP CONNECT mijozi sifatida ishlaydi. Ikki boshqaruv almashinuvi ilova oqimi boshlanishidan oldin tugaydi.

SOCKS CONNECT so'rovi allaqachon manzil hosti yoki manzili va portni beradi. Ota bilan misol HTTP/1.1 almashinuvi uchun:

client → adapter: SOCKS5 CONNECT service.example.net:443
adapter → parent:
    CONNECT service.example.net:443 HTTP/1.1
    Host: service.example.net:443

parent → adapter: HTTP/1.1 200 Connection Established
                 [end of headers]
adapter → client: SOCKS5 success reply

client ↔ adapter ↔ parent ↔ service: application bytes

Natijani chegarada tarjima qiling

Adapter ota talab qiladigan har qanday autentifikatsiyani bajaradi va CONNECT natijasini kutadi. Muvaffaqiyatli 2xx javobi ota tunnelini o'rnatadi. Shundan keyingina u tegishli SOCKS muvaffaqiyat javobini pastki mijozga qaytarishi kerak.

Agar ota amalni rad etsa, belgilangan SOCKS muvaffaqiyatsizlik javobini yuboring, so'ngra mijoz ulanishini darhol to'xtating. SOCKS5 xatolik aniqlangandan keyin o'n soniya ichida shu yopilishni talab qiladi. Ota HTTP holatini adapter uchun diagnostik ma'lumot sifatida saqlang. O'sha holat satrini ilova ma'lumoti sifatida uzatish mijozi SOCKS ramkalashini kutayotgan oqimga HTTP boshqaruv xabarini kiritgan bo'lardi.

Muvaffaqiyatli CONNECT natijasidan oldin ota hali ham HTTP gapiradi, jumladan har qanday chaqiriq yoki xato javobining ramkalashi. Muvaffaqiyatli natijaning sarlavha ajratgichidan keyin ulanish tunnelga aylanadi; avval iste'mol qilinadigan HTTP javob tanasi yo'q.

Sarlavhalardan keyingi baytlarni saqlang

Bitta o'qish ota sarlavhalarining oxirini va manzildan kelgan baytlarni birga o'z ichiga olishi mumkin. O'sha qo'shimcha baytlarni pastki ilova uchun saqlang. Server birinchi gapiradigan protokollar ulanishi ochilishi bilan salomlashishi mumkin.

SOCKS muvaffaqiyat javobi yuborilgandan so'ng ilova oqimini ikkala yo'nalishda uzating. Adapter bitta mijoz xabarini bitta server xabari bilan almashtirishi shart emas va ularni uzatish uchun TLS yozuvlarini tushunishi ham shart emas. Uning protokol ishi ikki tunnel kelishuvini o'rnatish va tarjima qilish edi.

O'xshash maqolalar