ਇੱਕ .NET ਸਾਕਟ ਨੂੰ SOCKS ਹੈਂਡਸ਼ੇਕ ਦੀ ਲੋੜ ਹੈ
ਦੱਸਦਾ ਹੈ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਬਾਈਟਾਂ SOCKS ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਯਾਤਰਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੱਚੀ .NET TCP ਸਾਕਟ ਨੂੰ ਕੀ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।
Socket.Connect() ਨੂੰ SOCKS ਸਰਵਰ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨਾ ਉਸ ਸਰਵਰ ਨਾਲ TCP ਕਨੈਕਸ਼ਨ ਖੋਲ੍ਹਦਾ ਹੈ। ਅਗਲੀਆਂ ਬਾਈਟਾਂ ਨੂੰ ਅਜੇ ਵੀ SOCKS ਬੋਲਣਾ ਪਵੇਗਾ। ਤੁਹਾਡੀ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਪ੍ਰੋਟੋਕੋਲ ਤੁਰੰਤ ਭੇਜਣਾ ਸਰਵਰ ਨੂੰ ਕਿਸੇ ਹੋਰ ਗੱਲਬਾਤ ਦੀ ਉਡੀਕ ਵਿੱਚ ਛੱਡ ਦਿੰਦਾ ਹੈ।
SOCKS5 ਨਾਲ, ਕਨੈਕਸ਼ਨ ਸਥਾਪਤ ਕਰਨ ਵਿੱਚ ਵਿਧੀ ਦੀ ਗੱਲਬਾਤ, ਚੁਣਿਆ ਗਿਆ ਪ੍ਰਮਾਣਿਕਤਾ ਵਟਾਂਦਰਾ ਅਤੇ ਮੰਜ਼ਿਲ ਦਾ ਨਾਮ ਦੇਣ ਵਾਲੀ ਬੇਨਤੀ ਸ਼ਾਮਲ ਹੈ। ਸਿਰਫ਼ ਇੱਕ ਸਫਲ ਜਵਾਬ ਐਪਲੀਕੇਸ਼ਨ ਦੀਆਂ ਬਾਈਟਾਂ ਲਈ ਰਾਹ ਖੋਲ੍ਹਦਾ ਹੈ। ਇਹ ਪੜਾਅ RFC 1928 ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਹਨ।
ਗੱਲਬਾਤ ਨੂੰ ਕਨੈਕਸ਼ਨ ਪਰਤ ਵਿੱਚ ਰੱਖੋ
ਆਪਣੇ TCP ਪ੍ਰੋਟੋਕੋਲ ਵਾਲੀ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰੋਕਸੀ-ਜਾਣੂ ਕਨੈਕਟਰ ਵਰਤ ਸਕਦੀ ਹੈ ਜੋ ਸਥਾਪਤ ਸਟ੍ਰੀਮ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਬਾਕੀ ਹਿੱਸਾ ਫਿਰ ਉਸ ਸਟ੍ਰੀਮ ਰਾਹੀਂ ਪੜ੍ਹਦਾ ਅਤੇ ਲਿਖਦਾ ਹੈ। ਕਨੈਕਟਰ ਨੂੰ ਅੰਸ਼ਕ ਪੜ੍ਹਤ, ਬਦਲਦੀ ਲੰਬਾਈ ਦੇ ਪਤੇ, ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲਤਾਵਾਂ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਸਮਾਂ ਸੀਮਾ ਦਾ ਧਿਆਨ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ।
ਇੱਕ ਨਿਸ਼ਚਿਤ ਆਕਾਰ ਦਾ ਬਫਰ ਪੜ੍ਹ ਕੇ ਸਫਲਤਾ ਮੰਨਣ ਵਾਲਾ ਹੱਥ-ਲਿਖਿਆ ਲਾਗੂਕਰਨ ਕਮਜ਼ੋਰ ਹੁੰਦਾ ਹੈ। TCP SOCKS ਸੁਨੇਹਿਆਂ ਦੀਆਂ ਸੀਮਾਵਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਰੱਖਦਾ। ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰੋਟੋਕੋਲ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੇ ਪਤਾ ਕਿਸਮ ਦੁਆਰਾ ਦੱਸਿਆ ਪੂਰਾ ਜਵਾਬ ਪੜ੍ਹੋ। .NET 7+ CONNECT ਜਵਾਬ ਪਾਠਕ ਉਹ ਪੜਾਅ ਦਰਸਾਉਂਦਾ ਹੈ।
ਜੇ ਕੋਈ ਸੰਭਾਲਿਆ ਹੋਇਆ ਲਾਇਬ੍ਰੇਰੀ ਪਹਿਲਾਂ ਹੀ ਇਹ ਕਨੈਕਸ਼ਨ ਪਰਤ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਤਾਂ ਇਸਦੇ ਸਮਰਥਿਤ SOCKS ਸੰਸਕਰਣ, ਪ੍ਰਮਾਣਿਕਤਾ ਵਿਧੀਆਂ ਅਤੇ ਟਾਰਗੇਟ ਫਰੇਮਵਰਕ ਦੀ ਜਾਂਚ ਕਰੋ। ਦਹਾਕੇ ਪੁਰਾਣਾ ਫੋਰਮ ਲਿੰਕ ਜਾਂਚ ਲਈ ਸ਼ੁਰੂਆਤੀ ਬਿੰਦੂ ਹੈ, ਮੌਜੂਦਾ ਅਨੁਕੂਲਤਾ ਦਾ ਸਬੂਤ ਨਹੀਂ।
HTTP ਕਲਾਇੰਟ ਕਨਫਿਗਰੇਸ਼ਨ ਦਾ ਵੱਖਰਾ ਦਾਇਰਾ ਹੈ
HTTP ਕਲਾਇੰਟ ਦੀ ਪ੍ਰੌਕਸੀ ਸੈਟਿੰਗ ਉਸ HTTP ਕਲਾਇੰਟ ਨੂੰ ਕਨਫਿਗਰ ਕਰਦੀ ਹੈ। ਇਹ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਹਰ ਕੱਚੀ ਸਾਕਟ ਨੂੰ ਨਹੀਂ ਬਦਲਦੀ। Socket API ਨੈੱਟਵਰਕ ਐਂਡਪੌਇੰਟ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਉੱਚ-ਪੱਧਰੀ ਗੱਲਬਾਤ ਕਾਲ ਕਰਨ ਵਾਲੇ ਉੱਤੇ ਛੱਡ ਦਿੰਦਾ ਹੈ।
ਇੱਕ ਐਨਕ੍ਰਿਪਟਿਡ ਐਪਲੀਕੇਸ਼ਨ ਪ੍ਰੋਟੋਕੋਲ ਲਈ, ਪ੍ਰੌਕਸੀ ਟਨਲ ਸਥਾਪਤ ਹੋਣ ਤੋਂ ਬਾਅਦ ਇਸਦਾ TLS ਹੈਂਡਸ਼ੇਕ ਕਰੋ। ਉਸ ਪੜਾਅ ਵਿੱਚ ਇਰਾਦਤ ਮੰਜ਼ਿਲ ਦੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ। ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਮੰਜ਼ਿਲ ਪ੍ਰਮਾਣਿਕਤਾ ਇੱਕੋ ਅੰਤਰਨਿਹਿਤ ਸਟ੍ਰੀਮ ਵਰਤਣ ਦੇ ਬਾਵਜੂਦ ਵੱਖਰੀਆਂ ਰਹਿੰਦੀਆਂ ਹਨ।