SOCKS5 kérés fordítása HTTP alagúttá
Fejezze be a CONNECT-cserét a szülővel, küldje vissza a SOCKS választ az ügyfélnek, és csak ezután továbbítsa az alkalmazás bájtjait.
Egy SOCKS5 előtér HTTP proxyot használhat továbbító szállításaként. SOCKS-kiszolgálóként viselkedik az ügyfél felé, és HTTP CONNECT-ügyfélként a szülő felé. A két vezérlőcsere még az alkalmazásfolyam megindulása előtt befejeződik.
A SOCKS CONNECT kérés már megadja a célgazdát vagy -címet és a portot. Egy szemléltető HTTP/1.1-cseréhez a szülővel:
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
Fordítsa le az eredményt a határon
Az adapter elvégzi a szülőnél szükséges hitelesítést, és megvárja a CONNECT eredményét. A sikeres 2xx válasz felállítja a szülőalagutat. Csak ezután szabad visszaküldenie a megfelelő SOCKS siker-választ az alsóbb ügyfélnek.
Ha a szülő elutasítja a műveletet, küldjön egy meghatározott SOCKS hiba-választ, majd azonnal szakítsa meg az ügyfél kapcsolatát. A SOCKS5 ezt a lezárást a hiba észlelésétől számított tíz másodpercen belül megköveteli. Tartsa meg a szülő HTTP-állapotát diagnosztikai információként az adapter számára. Ha ezt az állapotsort alkalmazásadatként továbbítaná, HTTP vezérlőüzenetet juttatna olyan folyamba, amelynek ügyfele SOCKS-keretezést vár.
Sikeres CONNECT-eredmény előtt a szülő még HTTP-t beszél, beleértve bármely kihívás- vagy hiba-válasz keretezését. Egy sikeres eredmény fejléc-elválasztója után a kapcsolat lesz az alagút; előbb nincs fogyasztandó HTTP-választest.
Őrizze meg a fejlécek utáni bájtokat
Egy olvasás egyszerre tartalmazhatja a szülő fejléceinek végét és a céltól érkező bájtokat. Őrizze meg ezeket a többletbájtokat az alsóbb alkalmazás számára. A kiszolgáló-először protokollok azonnal üdvözölhetnek, amint kapcsolatuk megnyílik.
Miután a SOCKS siker-válasz elküldésre került, továbbítsa az alkalmazásfolyamot mindkét irányban. Az adapternek nem kell egy ügyfélüzenetet egy kiszolgálóüzenettel váltogatnia, és nem kell értenie a TLS-rekordokhoz ahhoz, hogy továbbítsa őket. Protokollmunkája a két alagút-tárgyalás létrehozása és fordítása volt.