HTTP(s) 反向代理、TCP 代理、Socks5 代理三者之间有何区别?

似乎很多人都会对HTTP(s)反向代理、TCP代理和Socks5代理这三个专有名词有所疑问,它们分别指的是什么?三者之间有什么区别?在具体的使用方面有什么不同呢?本文就来对这些问题进行一个详细的解答。

HTTP(S) 反向代理

HTTP(S) 代理的用途范围很广,简单而言主要有:

  • 终结HTTPS请求
  • 更改 HTTP 标头
  • 负载均衡器或 DMZ 前的公共 IP 提供程序,以屏蔽后端服务器

TCP代理

  • 其用途之一是TCP连接的反向代理,一方面可以容纳HTTP,另一方面还可以支持其他应用层协议,比如FTP
  • TCP 客户端可以连接到 TCP 代理上的单个套接字,而 TCP 代理可以打开到后端服务器的多个连接,类似于负载平衡器

SOCKS5代理

  • SOCKS 服务器可以将 TCP 连接代理到任意 IP 地址并且提供一种转发 UDP 数据包的方法。
  • 该代理的特点之一是可进行身份验证,所以仅仅有授权用户才能使用
  • SOCKS5 是一个应用层协议,它的主要用途便是连接仲裁传输协议
  • 适用于私人对公共 Internet 访问

由此我们可以看到三者的不同用途范围及其三者间的不同,接下来有一些常见的问题及其解答。

  • 如果用户只接受 HTTP 网络流量,为什么应该使用TCP 代理而非 HTTP 代理?
    • TCP 代理终止传入的 TCP 套接字,打开出站套接字并在其间移动数据,它不会也不能更改其间的数据。
    • HTTP 代理理解 HTTP。它查看传入的 HTTP 请求并使用出站的、可能更改的 HTTP 请求来完成请求。代理可以读取 HTTP 的请求主机地址并以这种方式连接到多个主机,它可以处理TCP 代理不会处理的 HTTP 应用程序级别。
  • TCP和SOCKS5代理之间有什么区别呢?
    • SOCKS5 是一种通用代理协议,它可以做的不仅仅是 TCP 代理,包括一对多连接、监听端口和 UDP。