ഒരു 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 നില അഡാപ്റ്ററിനുള്ള ഡയഗ്നോസ്റ്റിക് വിവരമായി സൂക്ഷിക്കുക. ആ നില വരി ആപ്ലിക്കേഷൻ ഡാറ്റയായി കൈമാറുന്നത്, ക്ലയന്റ് SOCKS ഫ്രെയിമിംഗ് പ്രതീക്ഷിക്കുന്ന ഒരു സ്ട്രീമിലേക്ക് HTTP നിയന്ത്രണ സന്ദേശം കൊണ്ടുവരും.
വിജയകരമായ CONNECT ഫലത്തിന് മുമ്പ് മാതൃ ഹോസ്റ്റ് ഇപ്പോഴും HTTP സംസാരിക്കുന്നു, ഏതെങ്കിലും വെല്ലുവിളി അല്ലെങ്കിൽ പിശക് മറുപടിയുടെ ഫ്രെയിമിംഗ് ഉൾപ്പെടെ. വിജയകരമായ ഫലത്തിന്റെ ഹെഡർ വേർതിരിച്ചറിന് ശേഷം കണക്ഷൻ ടണലായി മാറുന്നു; ആദ്യം ഉപഭോഗിക്കാൻ ഒരു HTTP മറുപടി ബോഡിയും ഇല്ല.
ഹെഡറുകൾക്ക് ശേഷമുള്ള ബൈറ്റുകൾ സംരക്ഷിക്കുക
ഒരു വായനയിൽ മാതൃ ഹെഡറുകളുടെ അവസാനവും ലക്ഷ്യത്തിൽ നിന്നുള്ള ബൈറ്റുകളും ഒരുമിച്ച് ഉണ്ടായിരിക്കാം. ആ അധിക ബൈറ്റുകൾ താഴെയുള്ള ആപ്ലിക്കേഷനായി സൂക്ഷിക്കുക. സെർവർ ആദ്യം സംസാരിക്കുന്ന പ്രോട്ടോക്കോളുകൾക്ക് അവയുടെ കണക്ഷൻ തുറന്നയുടൻ അഭിവാദ്യം ചെയ്യാം.
SOCKS വിജയ മറുപടി അയച്ചതിന് ശേഷം, ആപ്ലിക്കേഷൻ സ്ട്രീം രണ്ട് ദിശകളിലും കൈമാറുക. അഡാപ്റ്റർ ഒരു ക്ലയന്റ് സന്ദേശത്തിന് പകരം ഒരു സെർവർ സന്ദേശം മാറിമാറി കൈകാര്യം ചെയ്യേണ്ടതില്ല, കൂടാതെ അവ കൈമാറാൻ TLS റെക്കോർഡുകൾ മനസ്സിലാക്കേണ്ടതുമില്ല. അതിന്റെ പ്രോട്ടോക്കോൾ ജോലി രണ്ട് ടണൽ ചർച്ചകൾ സ്ഥാപിക്കുകയും വിവർത്തനം ചെയ്യുകയും ചെയ്യുകയായിരുന്നു.