የ SOCKS5 ጥያቄን ወደ HTTP ዋሻ መተርጎም
የወላጅ CONNECT ልውውጥን ያጠናቅቁ፣ ለደንበኛው የ SOCKS መልስ ይመልሱ እና ከዚያ በኋላ ብቻ የመተግበሪያ ባይቶችን ያስተላልፉ።
የ SOCKS5 የፊት ጫፍ የ HTTP ፕሮክሲን እንደ ቀጣይ ማጓጓዣው ሊጠቀም ይችላል። ለደንበኛው የ SOCKS አገልጋይ ሆኖ ያገለግላል፣ ለወላጅ ደግሞ የ HTTP CONNECT ደንበኛ ነው። ሁለቱም የቁጥጥር ልውውጦች የመተግበሪያው ፍሰት ከመጀመሩ በፊት ያበቃሉ።
የ SOCKS CONNECT ጥያቄ የመዳረሻውን አስተናጋጅ ወይም አድራሻ እና ወደብ አስቀድሞ ያቀርባል። ለምሳሌ የሚያገለግል የ HTTP/1.1 የወላጅ ልውውጥ፦
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
ውጤቱን በድንበሩ ላይ ይተርጉሙ
አስማሚው ወላጁ የሚፈልገውን ማንኛውንም ማረጋገጫ ያጠናቅቃል እና የ CONNECT ውጤቱን ይጠብቃል። ስኬታማ የ 2xx መልስ የወላጅ ዋሻውን ያቋቁማል። ከዚያ በኋላ ብቻ ተጓዳኙን የ SOCKS ስኬት መልስ ወደ ታችኛው ደንበኛ መመለስ አለበት።
ወላጁ ሥራውን ውድቅ ካደረገ፣ የተወሰነ የ SOCKS ውድቀት መልስ ይላኩ፣ ከዚያ የደንበኛውን ግንኙነት ወዲያውኑ ያቁሙ። SOCKS5 ውድቀቱ ከተገኘበት ጊዜ ጀምሮ በአስር ሰከንድ ውስጥ ይህ መዘጋት እንዲሆን ይጠይቃል። የወላጁን የ HTTP ሁኔታ ለአስማሚው የምርመራ መረጃ አድርገው ያስቀምጡ። ያንን የሁኔታ መስመር እንደ መተግበሪያ ውሂብ ማስተላለፍ የ HTTP ቁጥጥር መልእክትን ደንበኛው የ SOCKS ማዕቀፍ ወደሚጠብቅበት ፍሰት ውስጥ ያስገባል።
ስኬታማ የ CONNECT ውጤት ከመምጣቱ በፊት ወላጁ አሁንም HTTP ይናገራል፣ የማንኛውም ተግዳሮት ወይም የስህተት መልስ ማዕቀፍን ጨምሮ። ከስኬታማ ውጤት ራስጌ መለያ በኋላ ግንኙነቱ ዋሻው ይሆናል፤ በመጀመሪያ የሚበላ የ HTTP ምላሽ አካል የለም።
ከራስጌዎቹ በኋላ ያሉትን ባይቶች ይጠብቁ
አንድ ንባብ የወላጁ ራስጌዎች መጨረሻ እና ከመዳረሻው የመጡ ባይቶችን አንድ ላይ ሊይዝ ይችላል። እነዚያን ተጨማሪ ባይቶች ለታችኛው መተግበሪያ ያቆዩ። አገልጋይ-ቀዳሚ ፕሮቶኮሎች ግንኙነታቸው ከተከፈተ በኋላ ወዲያውኑ ሊሰላለሙ ይችላሉ።
የ SOCKS ስኬት መልስ ከተላከ በኋላ፣ የመተግበሪያውን ፍሰት በሁለቱም አቅጣጫዎች ያስተላልፉ። አስማሚው አንድ የደንበኛ መልእክት ከአንድ የአገልጋይ መልእክት ጋር መቀያየር አያስፈልገውም፣ እንዲሁም የ TLS መዝገቦችን ለማስተላለፍ እነሱን መረዳት አያስፈልገውም። የፕሮቶኮል ሥራው ሁለቱን የዋሻ ድርድሮች መመስረትና መተርጎም ነበር።