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.

Əlaqəli məqalələr