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 ದಾಖಲೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕಿಲ್ಲ. ಅದರ ಪ್ರೋಟೋಕಾಲ್ ಕೆಲಸವು ಎರಡು ಸುರಂಗ ಮಾತುಕತೆಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು ಮತ್ತು ಭಾಷಾಂತರಿಸುವುದು ಆಗಿತ್ತು.