我正在编写本地代理服务器。它已经适用于大多数请求。但有时我想解决主机名时遇到问题。这是我的工作:
当收到请求的标题时,我会过滤掉第一行。然后我从该行中取出Request-URL(位于两个空格之间)并将其存储到Uri对象中。之后,我用string host= uri.host;
提取主机名
至少我进行了DNS呼叫:IPAddress[] ips = Dns.GetHostAddresses(host)[0];
(我怎么知道,我应该采用哪个阵列的IP。这些IP的区别是什么)
就像我说的那样,对于大多数工作正常的请求。但有一些地址无法解决。这里有一个例子:当我想打开 www.gmx.net 时,我首先得到HTML-File(这很好)。之后,浏览器重新加载了几个Web对象,如pics,javascript等。那些对象当然有一些URL。其中一个无法解决的网址是: ipv4-cout.gmx.net 。 尝试解决此URL会产生警告:声明的主机未知。
我需要知道的另一件事是:如何处理Alias-Host-names?例如:当我在浏览器中输入主机名gmx.de时,它会自动将其解析为www.gmx.net。我知道,在具有CNAME类型的DNS服务器上有Recource Reccords,但我不知道如何实现它。
答案 0 :(得分:0)
我会说他们按照DNS服务器发送的顺序返回,我找不到任何特定排序的引用。
在大多数情况下,只有一个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,网络服务器上有网址重定向。
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]