【问题标题】:How to do the DNS-Request in a local Proxy Server?如何在本地代理服务器中进行 DNS 请求?
【发布时间】:2012-11-11 00:06:32
【问题描述】:

我正在编写一个本地代理服务器。它已经适用于大多数请求。但有时当我想解析主机名时会遇到问题。这是我的工作:

当收到请求的标头时,我将第一行过滤掉。然后我从该行中取出 Request-URL(位于两个空格之间)并将其存储到 Uri 对象中。之后我提取主机名:string host= uri.host; 至少我做了 DNS 调用:IPAddress[] ips = Dns.GetHostAddresses(host)[0]; (这里我怎么知道,我应该拿阵列的哪个IP。这些IP有什么区别)

就像我说的,对于大多数运行良好的请求。但是有一些地址,无法解决。这里有一个例子:当我想打开 www.gmx.net 时,我首先得到 HTML 文件(这很好用)。之后,浏览器会重新加载一些 Web 对象,如图片、javascript 等。那些对象当然有一些 URL。其中一个无法解析的 URL 是: ipv4-cout.gmx.net 。 尝试解析此 URL 会导致警告:所述主机未知

我需要知道的另一件事是:如何处理别名主机名?例如:当我在浏览器中输入主机名 gmx.de 时,它​​会自动将其解析为 www.gmx.net。我知道,DNS 服务器上有 CNAME 类型的 Recource Reccords,但我不知道如何实现。

【问题讨论】:

    标签: c# http dns proxy


    【解决方案1】:

    我会说它们是按照 DNS 服务器发送它们的顺序返回的,我找不到任何特定顺序的参考。

    Dns.GetHostAddresses Method

    在大多数情况下,只有一个 IP 地址。在 www.gmx.net 的情况下,他们确实有 2 个,理论上,这意味着您将循环请求。

    www.gmx.net has address 212.227.223.5
    www.gmx.net has address 212.227.223.4
    

    供您参考。 pv4-cout.gmx.net 在我的机器上无法解析,并且在以任何其他方式访问时会导致 404。

    gmx.de 无法解析为 www.gmx.net,网络服务器上有一个 URL 重定向。

    Connecting to www.gmx.de|212.227.223.10|:80... connected.
    HTTP request sent, awaiting response... 301 Moved Permanently
    Location: http://www.gmx.net/ [following]
    

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 2021-06-23
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多