正向代理

HTTP 代理协议和 SOCKS5 协议都位于传输层上方

Tunneling proxy

客户端使用 HTTP ‘CONNECT’ 方法访问代理服务器,请求行 path 部分为目标主机,当连接成功后并收到代理服务器发送的成功响应后,向该连接发送真实 HTTP 请求。代理服务器收到客户端请求并成功连接时,对目标主机建立 Socket 连接,连接成功后,向客户端发送 200 响应,接着将客户端流和目标主机流连接。

客户端连接代理服务器,先进行版本协商,再进行认证(需要认证的话),然后发送 SOCKS5 的请求信息,代理服务器根据客户端请求转发目标服务器响应。代理服务器在收到 SOCKS5 请求后也要先以 SOCK5 格式响应客户端,然后进行后续的响应。