我的网络浏览器如何解析域名?

时间:2010-12-08 20:54:49

标签: networking tcp network-programming dns

我正在开发一个应该能够联系DNS服务器的网络应用程序。

我想知道最好的方法是什么。我想到了浏览器。

例如,Firefox或Chrome如何解析我在网址栏中输入的域名?

我的意思是,我输入http://www.google.com,它如何知道必须向IP 209.85.195.104发出TCP请求?

谢谢!

4 个答案:

答案 0 :(得分:7)

这是一个很好的漫画,描述了您的浏览器如何解析主机名:

http://www.labnol.org/internet/comic-how-browser-works/18086/

您的环境应该能够为您处理主机名称解析。您是否有理由需要自己实施?

答案 1 :(得分:4)

在最简单的情况下,浏览器会使用gethostbyname()等函数将名称解析为地址。但是,这个函数并不总是以一种方便浏览器的方式实现(它通常会阻塞直到得到答案)。

今天的浏览器开始使用"DNS prefetch",浏览器会在页面加载时直接向DNS服务器发送DNS请求,以便在用户点击下一个链接之前解析地址。这样,用户点击时就不必等待名称解析,并且浏览体验显得更快。

答案 2 :(得分:1)

试试这个:

http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=7992

相关RFC是rfc1035.txt

或谷歌搜索DNS解析器来源。

答案 3 :(得分:0)

Web浏览器将请求发送到DNS服务器。服务器发送关联地址列表(如果域名记录中确实包含多个IP地址,例如cnn.com带有多个IPv4和IPv6地址)。我不确定该地址是否存储浏览器或操作系统,但不确定浏览器是否使用第一个地址,没有得到答案,他将使用列表中的另一个地址。我在某处读取到最多等待30秒,直到他使用列表中的另一个地址。