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 ਰਿਕਾਰਡ ਸਮਝਣ ਦੀ ਵੀ ਲੋੜ ਨਹੀਂ। ਇਸਦਾ ਪ੍ਰੋਟੋਕੋਲ ਕੰਮ ਦੋਵੇਂ ਟਨਲ ਗੱਲਬਾਤਾਂ ਸਥਾਪਿਤ ਕਰਨਾ ਅਤੇ ਅਨੁਵਾਦ ਕਰਨਾ ਸੀ।

ਸੰਬੰਧਿਤ ਲੇਖ