Answers:
HTTP请求从客户端发送到代理服务器的端口8080。然后,代理服务器向目标站点发起一个新的HTTP请求。代理视配置而定,通常会向HTTP请求添加“ X-Forwarded-For”标头。目标网站上的日志文件将显示代理的IP地址,但是可能会或可能不会配置为记录“ X-Forwarded-For”地址。
这是典型的配置,但是代理软件将允许您进行各种自定义。
编辑:我应该注意,当我最初阅读您的问题时,我想到您正在询问有关HTTP代理的问题,例如squid或nginx。有许多不同类型的代理。在Internet Explorer中,您很可能会使用HTTP代理,但是还有许多其他类型。
要使用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
如果操作可以更简单,则响应方,因为代理服务器可以简单地通过预先建立的请求套接字中继逐字响应。
Host
如果请求行中未提供绝对URI,则代理也可以使用标头来完成部分URI。
没有“ tcp数据包”之类的东西。TCP与数据流一起运行。有IP数据包。
您似乎缺少一些有关网络的基本知识,我建议您阅读一本有关TCP / IP的好书。每个人的最爱似乎是W. Richard Stevens的“ TCP / IP插图”。
回到您的问题。
代理是中间人:
[您]-[代理]-[您要连接的服务器]
现在有两个不同的连接:
[您]-(您与代理的连接)-[代理]-(与服务器的代理连接)-[您要连接的服务器]
当您认为要通过代理连接到服务器时,实际上是在连接到代理并告诉它您想连接到特定服务器。然后,代理打开从其自身到该服务器的第二个连接,并充当中间人双向传递数据。