Socket Secure (SOCKS) is an internet protocol that a proxy server uses to route network packets between the server and a client. SOCKS5 also provides authentication, allowing only authorized users to access the server. A SOCKS server connects through TCP to a willful IP address and provides values to forward UDP packets.
SOCKS operates at Layer 5 of the Open System Interconnection reference model, which is the intermediate session layer between the transport layer and the presentation layer
Comparison to HTTP proxies
SOCKS performs at a lower level than HTTP proxies: SOCKS takes advantage of the handshake protocol to inform the proxy software about the connection the client is attempting to establish and operates as transparently as possible. On the other hand, an HTTP proxy could interpret and copy headers (for instance, to invoke another underlying protocol, such as File Transfer Protocol (FTP); nevertheless, an HTTP proxy normally forwards an HTTP request to the eligible HTTP server). Although an HTTP proxy has a variant model in mind, the CONNECT method permits forwarding TCP connections. Nevertheless, SOCKS proxies may work in reverse and forward UDP traffic while HTTP proxies can’t. HTTP proxies usually are more aware of the HTTP protocol and they perform higher-level filtering. However that normally only applies to POST and GET methods but not the CONNECT method.
Let's take an example: Rob wishes to communicate with Jack over the internet, but a firewall between them operates on his network. Therefore Rob is not authorized to associate with Jack directly. Hence Rob connects to the SOCKS proxy on his network and informing SOCKS proxy about the connection he wills to make to Jack. SOCKS proxy starts a connection through the firewall and eases the communication between Rob and Jack.
Update: as has been announced a month prior, NordVPN will no longer be offering support for HTTP proxies. Click here to read more about it.
Rob wishes to download a web page from Jack who runs a web server. Rob can’t directly join Jack’s server as a firewall has been put on his network. To get in touch with the server Rob connects to his network HTTP proxy. His web browser communicates straight to the proxy in the same way it would communicate directly with Jack’s server if it could. It transmits a standard HTTP request header. The HTTP proxy connects to Jack’s server and then sends back to Rob any data Jack’s server returns.