我想知道Windows主机名称解析系统是如何工作的。
更确切地说,我想知道在这个过程中使用或缺少本地缓存。
据Microsoft TCP/IP Host Name Resolution Order,过程如下:Windows主机名称解析
- 客户端检查是否查询名称是其自身。
- 客户端然后搜索本地主机文件,本地计算机上存储的IP地址和名称列表。
- 查询域名系统(DNS)服务器。
- 如果名称仍未解析,则使用NetBIOS名称解析顺序作为备份。通过配置客户端的NetBIOS节点类型可以更改此顺序。
我想知道的是,stage(2)是否以某种方式被缓存。
最近几天突然兴起,因为我安装了利用HOSTS
文件的恶意软件防护(SpyBot)。事实上,它现在是14K条目大,并计数...
该文件目前按主机名排序,但这当然不一定是。对于每个解析请求,表示通过文件的14个步骤(步骤14K)。这些请求可能每秒钟以几秒的速度到达,并且通常到达几百个主机(顶端)。
我的这个应该工作是怎么样的这个观点:
- 在系统启动窗口DNS解决机制加载hosts文件一次。
- 它提交了一个对文件进行排序的迭代。工作副本被加载到内存中。
最初的HOSTS文件在整个决议过程中不会被进一步阅读。 - 所有网络进程(IE,Firefox,MSN ...)都通过此进程/机制工作。
没有其他进程直接接口/读取HOSTS文件。 - 收到名称解析请求后,该进程将检查其驻留内存的缓存。
如果它找到正确的IP,那么就是适当的答案。 - 否则(它没有被缓存),解析过程继续到内存驻留(排序)HOSTS文件,并对其执行快速二分搜索。从这里开始,该过程如最初描述的那样继续。
该决议的结果被缓存供进一步使用。
虽然我不确定这些的重要性,但我真的很感谢答案。
我只想看看我的推理是否正确,如果没有,为什么这样呢?
我知道,在永远在线PC的这个时代,缓存必须定期(或增量)清除。我现在忽略这一点。
那么让我们来看看Windows源代码和..哦,等待,废话:-( – halfdan 2010-09-18 21:42:28
@halfdan :-) ::: – Trevor 2010-09-18 21:51:06