SOCKS5
A protocol that proxies any TCP or UDP traffic without inspecting it, defined in RFC 1928.
SOCKS5 is a general-purpose proxy protocol that forwards traffic at the connection level. Unlike an HTTP proxy it does not parse or understand what it carries, which makes it usable for any TCP-based protocol and, optionally, UDP.
#What distinguishes it
| Property | SOCKS5 | HTTP proxy |
|---|---|---|
| Traffic it can carry | Any TCP, plus UDP | HTTP and HTTPS tunnels |
| Reads your request | No | Yes, for plain HTTP |
| Can cache | No | Yes |
| Authentication | Username and password, or none | Via Proxy-Authorization |
#socks5 versus socks5h
This distinction causes real bugs. With socks5, your client resolves the hostname locally and sends an address to the proxy — which leaks your DNS queries and can resolve to the wrong regional endpoint. With socks5h, the hostname is sent to the proxy and resolved at the far end. For proxy work you almost always want socks5h.
#Reference
The protocol is specified in RFC 1928, published March 1996.