![将所有流量转发到代理服务器](https://linux22.com/image/717506/%E5%B0%86%E6%89%80%E6%9C%89%E6%B5%81%E9%87%8F%E8%BD%AC%E5%8F%91%E5%88%B0%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我正在尝试构建一个代理服务器,它将接收所有客户端数据包并转发到内容服务器。据我所知,代理类型是“正向代理”。在进行系统架构时,我无法回答这个问题。
代理服务器如何知道目标ip?
假设我们有一个客户端,其 IP 为 11.1.1.1,代理服务器为 12.2.2.2,而 Google 的 IP 为 13.3.3.3。
当客户端将数据包发送到代理时。数据包的源 ip 和端口为 11.1.1.1:xxxx,目标 ip 和端口为 12.2.2.2:xxxx。代理服务器如何将数据包转发到 13.3.3.3 ?
答案1
当客户端使用代理时,它会使用一种特殊的协议。如果使用 HTTP 代理,客户端会连接到代理,然后告诉代理要获取哪个 URL。然后,代理会进行名称解析并代表客户端获取内容。
在其他情况下(非 HTTP),客户端通常使用一种称为“socks”的协议,它告诉代理应连接到哪个 IP 地址和端口。然后,代理代表客户端建立连接,并将数据包从客户端传递到目标主机,反之亦然