Overview#Socket Secure (SOCKS) is an Internet Protocol that exchanges network packets between a client and server through a proxy server.
Usage#SOCKS is a de facto standard for circuit-level gateways.
Some SSH suites, such as OpenSSH, support dynamic port forwarding that allows the user to create a local SOCKS Proxy Server. This can free the user from the limitations of connecting only to a predefined remote port and server.
SOCKS uses a handshake protocol to inform the proxy software about the connection that the client is trying to make, and then acts as transparently as possible, whereas a regular HTTP proxy may interpret and rewrite headers (say, to employ another underlying protocol, such as FTP; however, an HTTP proxy simply forwards an HTTP request to the desired HTTP server). Though HTTP proxying has a different usage model in mind, the CONNECT method allows for forwarding TCP connections; however, SOCKS proxies can also forward UDP traffic and work in reverse, while HTTP proxies cannot. HTTP proxies are traditionally more aware of the HTTP protocol, performing higher-level filtering (though that usually only applies to HTTP GET and HTTP POST methods, not the HTTP CONNECT method).