向代理服务器发送请求时如何获取目的端口和IP?

How to get the destination port and IP while send request to a proxy server?

在向代理服务器发送数据包(tcp 或 udp)时,我们希望该服务器将数据包发送到我们想要的目的地,然后接收响应并将其提供给我们。在这种情况下,我们有 2 个目的地和一个用于放置数据的地方。我想请求 IP 地址 X 和端口 p 的代理服务器从 IP 地址 Y 和端口 ‍‍q 获取网页,我该如何发送这个数据包?如果我把 Xp 放在我的数据包中,代理服务器在收到数据包后无法理解将数据包发送到哪里。另一方面,如果我在数据包中放入 Yq,数据包如何到达代理服务器?

我认为这里的一个解决方案是我们在另一个数据包中发送一个数据包。外层数据包将内层数据包带到代理服务器,然后代理服务器提取内层数据包并将其发送到目的地。这个解决方案实际上是正确的吗?有解决这个问题的标准协议吗?

您的想法是对的,代理协议通常会将原始 TCP/UDP 包包装在另一个包中,然后发送到代理服务器。 VPN 也可以这样工作。

SOCKS5 is a heavily used proxy protocol. Most browsers and operating systems support it. Tor relies on it and if you have an SSH connection it can also be used as a SOCKS proxy.

当客户端需要不知道代理而不是像 VPN 这样的网络级别的隧道时,可能是一个不错的选择。

请注意,大多数加密发生在应用程序级别(如浏览器中的 SSL)。代理始终能够识别目标 IP 和端口,但它发送的数据已经加密,因此无法读取。