SOCKS5 päringu tõlkimine HTTP tunneliks
Lõpetage CONNECT-vahetus vanemaga, tagastage kliendile SOCKS-vastus ja alles seejärel edastage rakenduse baidid.
SOCKS5-kliendiliides võib kasutada HTTP-proksit oma edasise transpordina. See toimib kliendi suunas SOCKS-serverina ja vanema suunas HTTP CONNECT-kliendina. Mõlemad juhtimisvahetused lõpevad enne, kui rakenduse voog algab.
SOCKS CONNECT-päring annab juba sihtkoha hosti või aadressi ja pordi. Illustratiivse HTTP/1.1-vahetuse jaoks vanemaga:
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
Tõlkige tulemus piiril
Adapter teeb vanema juures vajaliku autentimise ja ootab CONNECT-tulemust. Edukas 2xx-vastus püstitab vanema tunneli. Alles seejärel peaks see tagastama vastava SOCKS-eduteate allavoolu kliendile.
Kui vanem keeldub toimingust, saatke määratletud SOCKS-tõrkevastus ja seejärel lõpetage kliendi ühendus viivitamata. SOCKS5 nõuab seda sulgemist kümne sekundi jooksul tõrke tuvastamisest. Hoidke vanema HTTP-olekut adapteri jaoks diagnostilise teabena. Selle olekurea edastamine rakenduse andmetena paneks HTTP juhtimisteate voogu, mille klient ootab SOCKS-raamistust.
Enne edukat CONNECT-tulemust räägib vanem veel HTTP-d, sealhulgas mis tahes väljakutse- või veavastuse raamistus. Eduka tulemuse päiseeraldaja järel muutub ühendus tunneliks; esmalt pole mingit HTTP-vastuse keha tarbida.
Hoidke baidid pärast päiseid
Üks lugemine võib sisaldada korraga nii vanema päiste lõppu kui ka sihtkohast tulevaid baite. Hoidke need lisabaidid allavoolu rakenduse jaoks. Server-kõigepealt protokollid võivad teretada kohe pärast ühenduse avamist.
Pärast SOCKS-eduteate saatmist edastage rakenduse voogu mõlemas suunas. Adapter ei pea vaheldama ühte kliendisõnumit ühe serverisõnumiga ega mõistma TLS-kirjeid, et neid edasi saata. Tema protokollitöö oli kahe tunneli läbirääkimise loomine ja tõlkimine.