如何通过URL形成DNS查询?

时间:2011-11-23 21:36:34

标签: url dns

简单地说,我想要一个关于Web浏览器之类的应用程序如何解析URL,查询DNS服务器,然后实际建立TCP连接的低级解释。

我的例子就是这样:

http://site.example.com:7902/svn

现在在这种情况下,使用正常的主机记录,DNS查询是否只是尝试将site.example.com部分解析为IP地址?

备用端口号如何影响这种情况?我认为端口号与基本的DNS解析无关。正如我希望DNS解析site.example.com然后在形成TCP数据包时使用端口号。然后,我希望在建立TCP连接后简单地传递目录/svn


现在我的动机:

最近我问了一个问题,为什么我可以使用它的外部IP地址和备用端口号访问Apache服务器,但在使用域名时遇到问题。

所以,我的问题是这很好用:

http://xx.xx.xxx.xxx:7902/svn   // this works fine with my external IP

...但在使用DNS时失败了:

http://site.example.com:7902/svn  // this didn't resolve

有了这个问题,我使用了不同的DNS提供程序(而不是dyndns),一切正常。所以我问了这个问题,因为我很好奇为什么我不能将备用端口号用在我的dyndns主机名上。

感谢您尝试理解这一点......

2 个答案:

答案 0 :(得分:0)

DNS解析IP地址,句点(嗯......有不同类型的DNS条目,如A记录,CNAME记录,MX记录,但它们似乎与您的问题无关)。

端口不是DNS解析的一部分,而是IP地址后面服务器的一个方面。

尝试从命令行解析site.example.com,看看您是否获得了预期的IP地址。对于Windows和Unix,您可以使用

  

nslookup site.example.com

在Windows下,如果您运行nslookup而没有任何参数,则输入nslookup的命令模式,然后您可以在其中键入

  

服务器8.8.8.8

其中“8.8.8.8”是您要用于解析的DNS服务器(8.8.8.8是由Google运行的有效DNS服务器,但您可以将所需的任何DNS服务器包括在内)。

然后您只需输入

即可
  

site.example.com

并了解IP如何解决。尝试不同的DNS服务器,看看你是否得到相同的IP。

请注意,DNS更改可能需要一段时间才能传播。如果IP地址发生变化,世界上每个DNS服务器都可能需要几天的时间才能注意到这一变化(尽管实际上这些天,几个小时足以让全世界大多数人获得更新)。也许最近IP地址发生了变化,dyndns还没有得到更新?

答案 1 :(得分:0)

你的基本理解大多是正确的。在此过程中您遗漏的一个(通常是关键的)步骤是主机头的存在。基本上,浏览器将包含一个如下所示的请求标头:

Host: site.example.com

...作为请求的一部分。 Web服务器将使用它来确定如何将请求映射回给定站点。仅当有多个站点绑定到给定IP地址时才需要这样做,但通常情况就是如此。当您使用IP与名称请求时,可能会有不同结果的原因可能与此主机标头的存在以及Web服务器如何配置以响应它有关。

要记住的另一件事是路由的差异 - 如果您的名称解析为您手动输入的IP以外的IP,那么(当然)可能会导致不同的结果。我只提到这一点,因为有时DNS服务器会根据各种标准分发不同的IP,例如您在网络上的位置。

最后,代理也可能引入复杂性。当涉及代理时,所有投注都会关闭,因为这可能会完全改变请求的处理方式。