SOCKS5 sorğusunu HTTP tunelinə çevirmək
Üst CONNECT mübadiləsini tamamlayın, müştəriyə SOCKS cavabı qaytarın və yalnız bundan sonra tətbiq baytlarını ötürün.
SOCKS5 ön hissəsi HTTP proksisini öz növbəti nəqli kimi istifadə edə bilər. O, müştəriyə qarşı SOCKS serveri, üst qovşağa qarşı isə HTTP CONNECT müştərisi kimi çıxış edir. İki nəzarət mübadiləsi tətbiq axını başlamazdan əvvəl bitir.
SOCKS CONNECT sorğusu artıq təyinat hostunu və ya ünvanını və portu verir. İllüstrativ HTTP/1.1 üst mübadiləsi üçün:
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
Nəticəni sərhəddə çevirin
Adapter üst qovşaqda tələb olunan istənilən autentifikasiyanı tamamlayır və CONNECT nəticəsini gözləyir. Uğurlu 2xx cavabı üst tuneli qurur. Yalnız bundan sonra o, uyğun SOCKS uğur cavabını aşağı axın müştərisinə qaytarmalıdır.
Əgər üst qovşaq əməliyyatı rədd edirsə, müəyyən edilmiş SOCKS uğursuzluq cavabı göndərin, sonra müştəri bağlantısını dərhal sonlandırın. SOCKS5 nasazlıq aşkar edildikdən sonra on saniyə ərzində bu bağlanmanı tələb edir. Üst qovşağın HTTP statusunu adapter üçün diaqnostik məlumat kimi saxlayın. Həmin status sətrini tətbiq məlumatı kimi ötürmək, müştərisi SOCKS çərçivəsi gözləyən axına HTTP nəzarət mesajı yeridərdi.
Uğurlu CONNECT nəticəsindən əvvəl üst qovşaq hələ də HTTP danışır, o cümlədən hər hansı çağırış və ya xəta cavabının çərçivələnməsi. Uğurlu nəticənin başlıq ayırıcısından sonra bağlantı tunelə çevrilir; əvvəlcə istehlak edilməli HTTP cavab gövdəsi yoxdur.
Başlıqlardan sonrakı baytları qoruyun
Bir oxuma üst başlıqların sonunu və təyinatdan gələn baytları birlikdə ehtiva edə bilər. Bu əlavə baytları aşağı axın tətbiqi üçün saxlayın. Server-ilk protokollar bağlantıları açılan kimi salam verə bilər.
SOCKS uğur cavabı göndərildikdən sonra, tətbiq axınını hər iki istiqamətdə ötürün. Adapterin bir müştəri mesajını bir server mesajı ilə növbələməsinə ehtiyac yoxdur və TLS qeydlərini ötürmək üçün onları anlaması da lazım deyil. Onun protokol işi iki tunel danışığını qurmaq və çevirmək idi.