Pagsasalin ng Isang Kahilingang SOCKS5 Tungo sa Isang HTTP Tunnel
Kumpletuhin ang palitan ng CONNECT sa magulang, ibalik ang tugon ng SOCKS sa kliyente at pagkatapos lamang ay ihatid ang mga byte ng aplikasyon.
Ang harapang bahagi ng SOCKS5 ay maaaring gumamit ng HTTP proxy bilang pasulong na transportasyon nito. Gumagana ito bilang SOCKS server sa kliyente at bilang HTTP CONNECT client sa magulang. Nagtatapos ang dalawang palitan ng kontrol bago magsimula ang daloy ng aplikasyon.
Ang kahilingang SOCKS CONNECT ay nagbibigay na ng host o address ng destinasyon at ng port. Para sa isang halimbawang palitan ng HTTP/1.1 sa magulang:
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
Isalin ang resulta sa hangganan
Kinukumpleto ng adapter ang anumang kinakailangang pagpapatunay sa magulang at hinihintay ang resulta ng CONNECT. Ang matagumpay na 2xx na tugon ay nagtatatag ng tunnel ng magulang. Pagkatapos lamang nito dapat ibalik ang katumbas na tugon ng tagumpay ng SOCKS sa kliyenteng nasa ibaba.
Kung tinatanggihan ng magulang ang operasyon, magpadala ng tinukoy na tugon ng pagkabigo ng SOCKS, pagkatapos ay agad na wakasan ang koneksyon ng kliyente. Hinihiling ng SOCKS5 ang pagsasara na iyon sa loob ng sampung segundo mula nang matukoy ang pagkabigo. Itago ang katayuang HTTP ng magulang bilang diagnostic na impormasyon para sa adapter. Ang pagpapadala ng linyang iyon ng katayuan bilang datos ng aplikasyon ay maglalagay ng kontrol na mensahe ng HTTP sa isang daloy na inaasahan ng kliyente ang balangkas ng SOCKS.
Bago ang matagumpay na resulta ng CONNECT, nagsasalita pa rin ng HTTP ang magulang, kabilang ang balangkas ng anumang tugon ng hamon o error. Pagkatapos ng pantig ng mga header ng matagumpay na resulta, ang koneksyon ay nagiging tunnel; walang katawan ng tugon ng HTTP na dapat unang gamitin.
Panatilihin ang mga byte pagkatapos ng mga header
Ang isang pagbasa ay maaaring maglaman ng dulo ng mga header ng magulang at mga byte mula sa destinasyon nang magkasama. Itago ang mga karagdagang byte na iyon para sa kliyenteng nasa ibaba. Ang mga protocol na nauuna ang server sa pagsasalita ay maaaring bumati kaagad pagkatapos ng kanilang koneksyon.
Pagkatapos maipadala ang tugon ng tagumpay ng SOCKS, ihatid ang daloy ng aplikasyon sa dalawang direksyon. Hindi kailangang halinhinan ng adapter ang isang mensahe ng kliyente ng isang mensahe ng server, at hindi nito kailangang maunawaan ang mga talaan ng TLS upang maihatid ang mga ito. Ang gawaing protocol nito ay ang itatag at isalin ang dalawang negosasyon ng tunnel.