Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proxy #2

Open
aibangjuxin opened this issue Sep 22, 2023 · 3 comments
Open

Proxy #2

aibangjuxin opened this issue Sep 22, 2023 · 3 comments

Comments

@aibangjuxin
Copy link
Owner

当你使用代理服务器(如 abc.com:3128)进行请求时,域名解析通常是在代理服务器上完成的,而不是在你的本地计算机上。这是因为你的请求通过代理服务器转发到目标网站。

具体来说,以下是发生的步骤:

  1. 你的本地计算机发送一个请求给代理服务器 abc.com:3128,请求访问 https://www.baidu.com

  2. 代理服务器收到你的请求后,会解析 www.baidu.com 的域名,找到对应的 IP 地址。这个域名解析过程发生在代理服务器上,代理服务器使用自己的 DNS 设置来完成这一任务。

  3. 一旦代理服务器确定了 www.baidu.com 的 IP 地址,它会建立一个新的连接到目标网站 www.baidu.com,并将你的请求转发给该网站。这时,代理服务器充当了中间人,将你和目标网站连接起来。

所以,域名解析发生在代理服务器上,而不是在你的本地计算机上。你的本地计算机只是将请求发送给代理服务器,然后代理服务器处理后续步骤。

@aibangjuxin
Copy link
Owner Author

在这种情况下,DNS解析是在代理服务器上完成的。

当本地计算机发送请求给代理服务器时,请求中包含了要访问的域名。代理服务器收到请求后,会将域名作为DNS查询发送给自己的DNS服务器。DNS服务器会返回域名的IP地址,代理服务器会将IP地址保存在缓存中,然后将IP地址返回给本地计算机。

因此,在这种情况下,DNS解析的流程如下:

  1. 本地计算机发送请求给代理服务器。
  2. 代理服务器将请求中的域名作为DNS查询发送给自己的DNS服务器。
  3. DNS服务器返回域名的IP地址。
  4. 代理服务器将IP地址返回给本地计算机。
  5. 本地计算机使用IP地址连接到目标服务器。

需要注意的是,这种情况只适用于使用SOCKS5代理协议的情况。如果使用HTTP代理协议,则DNS解析可以由本地计算机完成,也可以由代理服务器完成。如果由本地计算机完成,则本地计算机会先将域名解析为IP地址,然后将IP地址作为请求的一部分发送给代理服务器。

在这种情况下,DNS解析的流程如下:

  1. 本地计算机将域名解析为IP地址。
  2. 本地计算机将IP地址作为请求的一部分发送给代理服务器。
  3. 代理服务器将请求转发给目标服务器。

具体情况取决于代理服务器的配置。

@aibangjuxin
Copy link
Owner Author

在这种情况下,DNS解析是在代理服务器上完成的。

当本地计算机发送请求给代理服务器时,请求中包含了要访问的域名。代理服务器收到请求后,会将域名作为DNS查询发送给自己的DNS服务器。DNS服务器会返回域名的IP地址,代理服务器会将IP地址保存在缓存中,然后将IP地址返回给本地计算机。

因此,在这种情况下,DNS解析的流程如下:

  1. 本地计算机发送请求给代理服务器。
  2. 代理服务器将请求中的域名作为DNS查询发送给自己的DNS服务器。
  3. DNS服务器返回域名的IP地址。
  4. 代理服务器将IP地址返回给本地计算机。
  5. 本地计算机使用IP地址连接到目标服务器。

具体来说,在使用curl -v https://www.baidu.com -x abc.com:3128命令时,DNS解析的流程如下:

  1. 本地计算机发送一个HTTP请求给代理服务器,请求的Host头部字段设置为“www.baidu.com”。
  2. 代理服务器收到请求后,会将请求中的Host头部字段作为DNS查询发送给自己的DNS服务器。
  3. DNS服务器返回域名的IP地址,代理服务器会将IP地址保存在缓存中,然后将IP地址返回给本地计算机。
  4. 本地计算机收到代理服务器的响应后,会将IP地址作为请求的Host头部字段发送给目标服务器。
  5. 目标服务器收到请求后,会将请求转发给Web服务器。
  6. Web服务器会返回响应给目标服务器。
  7. 目标服务器将响应返回给本地计算机。

需要注意的是,这种情况只适用于使用SOCKS5代理协议的情况。如果使用HTTP代理协议,则DNS解析可以由本地计算机完成,也可以由代理服务器完成。如果由本地计算机完成,则本地计算机会先将域名解析为IP地址,然后将IP地址作为请求的一部分发送给代理服务器。

在这种情况下,DNS解析的流程如下:

  1. 本地计算机将域名解析为IP地址。
  2. 本地计算机将IP地址作为请求的一部分发送给代理服务器。
  3. 代理服务器将请求转发给目标服务器。

具体情况取决于代理服务器的配置。

@aibangjuxin
Copy link
Owner Author

The flow eg

sequenceDiagram
  participant 用户
  participant 代理服务器
  participant 目标服务器

  用户 --> 代理服务器: 发送请求
  代理服务器 --> 目标服务器: 转发请求
  目标服务器 --> 代理服务器: 返回响应
  代理服务器 --> 用户: 返回响应

Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant