我正在开发一个应该能够联系DNS服务器的网络应用程序。
我想知道最好的方法是什么。我想到了浏览器。
例如,Firefox或Chrome如何解析我在网址栏中输入的域名?
我的意思是,我输入http://www.google.com,它如何知道必须向IP 209.85.195.104发出TCP请求?
谢谢!
答案 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秒,直到他使用列表中的另一个地址。