SOCKS5 İsteğini HTTP Tüneline Çevirmek
Üst öğeyle CONNECT alışverişini tamamlayın, istemciye SOCKS yanıtı döndürün ve ancak ondan sonra uygulama baytlarını iletin.
Bir SOCKS5 ön ucu, HTTP proxy'sini ileri taşıma olarak kullanabilir. İstemciye karşı SOCKS sunucusu, üst öğeye karşı ise HTTP CONNECT istemcisi olarak davranır. İki denetim alışverişi, uygulama akışı başlamadan önce biter.
SOCKS CONNECT isteği hedef ana bilgisayarı veya adresi ve bağlantı noktasını zaten sağlar. Üst öğeyle örnek bir HTTP/1.1 alışverişi için:
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
Sonucu sınırda çevirin
Bağdaştırıcı, üst öğenin gerektirdiği her kimlik doğrulamayı tamamlar ve CONNECT sonucunu bekler. Başarılı bir 2xx yanıtı üst öğe tünelini kurar. Ancak ondan sonra karşılık gelen SOCKS başarı yanıtını alt istemciye döndürmelidir.
Üst öğe işlemi reddederse tanımlı bir SOCKS hata yanıtı gönderin, ardından istemci bağlantısını hemen sonlandırın. SOCKS5, hatanın saptanmasından sonraki on saniye içinde bu kapanışı şart koşar. Üst öğenin HTTP durumunu bağdaştırıcı için tanılama bilgisi olarak saklayın. Bu durum satırını uygulama verisi olarak iletmek, istemcisi SOCKS çerçevelemesi bekleyen bir akışa HTTP denetim iletisi koyardı.
Başarılı bir CONNECT sonucundan önce üst öğe hâlâ HTTP konuşur; herhangi bir meydan okuma veya hata yanıtının çerçevelemesi de buna dahildir. Başarılı bir sonucun başlık ayırıcısından sonra bağlantı tünel olur; önce tüketilecek bir HTTP yanıt gövdesi yoktur.
Başlıklardan sonraki baytları koruyun
Tek bir okuma, üst öğe başlıklarının sonunu ve hedeften gelen baytları birlikte içerebilir. Bu fazladan baytları alt uygulama için saklayın. Sunucunun önce konuştuğu protokoller, bağlantıları açılır açılmaz selam verebilir.
SOCKS başarı yanıtı gönderildikten sonra uygulama akışını iki yönde iletin. Bağdaştırıcının bir istemci iletisini bir sunucu iletisiyle dönüşümlü yürütmesi gerekmez ve bunları iletmek için TLS kayıtlarını anlaması da gerekmez. Protokol işi, iki tünel görüşmesini kurmak ve çevirmekti.