代理如何工作?


12

如果我想连接说IP 100.100.100.100,端口80,则我的计算机会将带有此地址的tcp数据包发送到网络中。

现在,如果我使用代理服务器,例如200.200.200.200端口8080(可以在Internet Explorer中设置的代理),该过程将如何更改?

当我仍然想连接到相同的IP时,IP标头会包含目标IP还是代理IP或两者?

我已经在Google上搜索过,有数百页的内容告诉您如何设置代理,但没有一本可以解释其工作原理。

Answers:


13

HTTP请求从客户端发送到代理服务器的端口8080。然后,代理服务器向目标站点发起一个新的HTTP请求。代理视配置而定,通常会向HTTP请求添加“ X-Forwarded-For”标头。目标网站上的日志文件将显示代理的IP地址,但是可能会或可能不会配置为记录“ X-Forwarded-For”地址。

这是典型的配置,但是代理软件将允许您进行各种自定义。

编辑:我应该注意,当我最初阅读您的问题时,我想到您正在询问有关HTTP代理的问题,例如squid或nginx。有许多不同类型的代理。在Internet Explorer中,您很可能会使用HTTP代理,但是还有许多其他类型。


是的,这很大程度上取决于您用作代理服务器的软件及其配置方式。参见例如Nginx的HttpProxyModule:wiki.nginx.org/HttpProxyModule
entropo 2011年

3
如果请求仅发送到代理服务器,代理如何知道我要连接到哪个目标地址?代理是在HTTP级别还是在TCP级别工作?
cody

向代理请求的浏览器将请求完整的URI。然后,代理服务器执行DNS查找,并将其自身的HTTP请求发起到目标站点。
emgee 2011年

1
一个HTTP代理,例如Squid(我一直以我的回答为基础)在应用程序层工作。
emgee 2011年

1
@emgee:HTTP协议也具有CONNECT方法,因此可以通过HTTP代理连接到TCP服务器(如果代理允许),并且TCP服务器不必是使用HTTP的服务器。
vtest 2011年

2

HTTP是第7层协议,因此请不要混淆。当您使用HTTP代理服务器并键入“ google.com”时,HTTP标头仍与google.com相同,但目标IP地址将是代理服务器的IP地址,源将是到自定义端口号8080的主机IP。


1

要使用HTTP代理,请求将从客户端发送到代理服务器的IP地址,而不是目标服务器。 然后,代理必须读取HTTP标头以提取request-URI。request-URI包括目标服务器的名称或IP,并且代理服务器使用该信息转发请求。

当不使用代理时,HTTP规范允许请求行排除服务器名称和端口(因为如果将请求直接发送到该服务器,则不需要这些名称和端口)。但是,按照规范...

向代理发出请求时,需要absoluteURI形式。

因此,当不使用代理时,请求行可能如下所示:

GET /robots.txt HTTP/1.1

但要使用代理,该行必须包含服务器名称(如果不是80,则包含端口):

GET http://httpbin.org:80/robots.txt HTTP/1.1

如果操作可以更简单,则响应方,因为代理服务器可以简单地通过预先建立的请求套接字中继逐字响应。


摘自“ HTTP The Definitive Guide”,第8页。145:“ HTTP / 1.1现在要求服务器同时处理代理和服务器请求的完整URI,但实际上,许多已部署的服务器仍仅接受部分URI。”
nobar

这不是标准方法,但是Host如果请求行中未提供绝对URI,则代理也可以使用标头来完成部分URI。
nobar

如果连接是端到端加密(HTTPS),则此方法无效。 security.stackexchange.com/questions/101721/…–
nobar

-7

没有“ tcp数据包”之类的东西。TCP与数据流一起运行。有IP数据包。

您似乎缺少一些有关网络的基本知识,我建议您阅读一本有关TCP / IP的好书。每个人的最爱似乎是W. Richard Stevens的“ TCP / IP插图”。

回到您的问题。

代理是中间人:

[您]-[代理]-[您要连接的服务器]

现在有两个不同的连接:

[您]-(您与代理的连接)-[代理]-(与服务器的代理连接)-[您要连接的服务器]

当您认为要通过代理连接到服务器时,实际上是在连接到代理并告诉它您想连接到特定服务器。然后,代理打开从其自身到该服务器的第二个连接,并充当中间人双向传递数据。


13
TCP数据包是其中包含TCP头信息的IP数据包。这是常见的说法。请不要如此居高临下。这只会严重影响您,因为您同时也错了。
Phil P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.