【问题标题】:How packets reaches Destination through proxy servers?数据包如何通过代理服务器到达目的地?
【发布时间】:2012-08-09 00:20:01
【问题描述】:

我对来自我的机器的数据包如何通过代理服务器到达目的地感到困惑。我的机器有一个用于 Intranet 的私有 ip,我们有一个带有公共 ip 的代理服务器来与世界通信。

所以我们这里有三个地址。

1) my private ip address
2) proxy server address
3) destination address (google.com)

现在在我发送的 tcp 数据包中,我有源和目标端口来区分我的机器和目标上的各种程序(如 mozilla 、 chrome 、 ie )。

在 ip 网络层我有源地址和目标地址。

不知道http是否也有地址。

所以当我的数据包离开我的机器时,它会包含什么地址。以便它通过中间的网关到达我的代理服务器。 ?

一旦到达代理服务器,就可以使用 NAT 将其发送到目的地。 但我对它如何到达代理服务器感到困惑。

编辑: 我的数据包是否应该包含我的代理服务器(本地私有)的地址才能到达它? 我可以通过配置浏览器来更改代理服务器。我的数据包离开我的机器后如何知道它会去哪个代理服务器?

【问题讨论】:

  • 自己查看这个问题的最佳方法是安装 Wireshark 并检查 http 数据包流。然后,您可以看到标题和目标。这将使您清楚地了解最终的情况,作为了解整个系统的起点:

标签: http networking tcp proxy ip


【解决方案1】:

数据包根本没有到达目标。 其中的数据作为代理和服务器之间新连接的一部分以全新数据包的形式到达目标,其大小和数量可能与下游连接中的不同。从服务器 TCP 的角度来看,它连接到代理,而不是下游客户端。

【讨论】:

  • 所以这项工作将在应用层完成,代理将在 http 数据包中找到目标并对其进行调用??如果我错了,请告诉我。
  • @ASHISHNEGI HTTP 代理了解一件事:CONNECT 命令。它读取它,形成与请求目标的连接,然后开始双向复制字节。它不关心数据包:发送者或接收者也不应该。这是一个字节流协议。
【解决方案2】:

HTTP 位于 TCP/IP 之上(以及 FTP、SMTP 等)

您在 PC 上配置代理服务器,因此所有请求都通过代理发送(除非它们被识别为本地地址)。

当您从“www.google.com:80”请求页面时

  • 您的计算机在 DNS 服务器中查找主机名的 IP 地址
  • 您的计算机发现它不是本地 IP(它与默认网关位于不同的子网上)
  • 然后它说“嘿,网关/代理,从 google 获取页面”(传递 google 的 IP 地址和端口。HTTP 层将包含诸如“method=GET”之类的标头、带有路径和参数的完整 URL 等)

【讨论】:

  • 谢谢,但这是我所知道的。但是我的数据包离开我的机器后如何知道它需要去哪个代理服务器。我可能通过配置我的 mozilla 设置将其设置为不同。所以我的数据包应该包含我的代理服务器地址。 ?这是真的吗?
  • 代理在 HTTP 层,因此 TCP 数据包以代理为目标,但包含发给 google 的 HTTP 请求。代理将 HTTP 请求(带有新的 TCP 数据包)转发给带有“X-Forwarded-For”标头的 google。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多