代理如何知道将请求转发到哪里?

Jim*_*Jim 3 networking tcp proxy udp network-protocols

当代理收到连接时,代理如何知道将请求转发到哪里?
例如,Java我们可以为代理设置系统属性。
所以我们设置了IP代理的 并且请求被发送到代理,但是代理如何知道将实际请求转发到哪里呢?

Fra*_*mas 6

有多种类型的代理,每一种都使用不同的方法与代理服务器通信它想要做什么。

HTTP 代理仅理解 HTTP,并不会尝试代理数据包,而是尝试代理连接、获取、发布等 HTTP 命令。它们在较低层创建一个全新的数据包,从自身到目标服务器。当客户端发起连接时,http 流的第一个数据包包含 CONNECT 动词。代理收到它,如果需要,对其进行 dns 查找,并使用 http 命令和它从客户端收到的数据包中的数据流构建一个数据包发送到远程服务器。

SOCKS 代理在会话层之上执行隧道传输,因此客户端配置第 5 层标头,它告诉代理您要连接的位置、传输协议信息,并通过代理所需的任何身份验证。客户端将第 6/7 层数据报放入第 5 层段的数据区域,并将其发送到代理。代理接收它,创建一个指向远程服务器的新数据包(没有 SOCKS 标头),将来自客户端数据包的 layer6/7 数据单元放入新数据包中,并将其发送到目标服务器。SOCKS 代理不适用于所有上层协议,但它们会代理大多数下层协议,包括 tcp 和 udp。