我想知道Windows主机名解析系统是如何工作的。
更准确地说,我想了解在该过程中本地缓存的使用情况(或缺乏使用)。
根据Microsoft TCP/IP Host Name Resolution Order,该过程如下:
最近几天,我的兴趣突然增加,因为我安装了一个利用
该文件当前按主机名排序,但这当然不一定是这样的。
lg(14K)表示每个分辨率请求需要浏览文件14步。这些请求可能每秒钟到达几个,通常是同几百个主机(排名前几位)。
更准确地说,我想了解在该过程中本地缓存的使用情况(或缺乏使用)。
根据Microsoft TCP/IP Host Name Resolution Order,该过程如下:
- 客户端检查查询的名称是否为其自身。
- 然后客户端搜索本地Hosts文件,这是存储在本地计算机上的IP地址和名称列表。
- 查询域名系统(DNS)服务器。
- 如果名称仍未解析,则使用NetBIOS名称解析序列作为备份。可以通过配置客户端的NetBIOS节点类型来更改此顺序。
最近几天,我的兴趣突然增加,因为我安装了一个利用
HOSTS
文件的恶意软件防护程序(SpyBot)。实际上,它现在有14K个条目,并且还在增加...该文件当前按主机名排序,但这当然不一定是这样的。
lg(14K)表示每个分辨率请求需要浏览文件14步。这些请求可能每秒钟到达几个,通常是同几百个主机(排名前几位)。
我认为它应该是这样工作的:
- 系统启动时,Windows DNS解析机制加载HOSTS文件一次。
- 它对文件进行了单次迭代排序,将工作副本加载到内存中。
原始的HOSTS文件在整个解析过程的生命周期中都不会再被读取。 - 所有网络进程(如IE、Firefox、MSN等)都通过这个过程/机制工作。
没有其他进程直接接口/读取HOSTS文件。 - 当收到名称解析请求时,该进程检查其内存驻留的缓存。
如果找到了正确的IP,则适当地回答。 - 否则(未被缓存),解析过程继续到内存中驻留的(已排序的)HOSTS文件,并在其中进行快速二进制搜索。从此处开始,进程将按照最初描述的方式继续。
解析的结果被缓存以供进一步使用。
虽然我不确定这些的重要性,但我真的很希望得到一个答案。
我只想看看我的推理是否正确,如果不是,为什么?
我知道在这个始终开着的PC时代,缓存必须定期(或增量)清除。暂且不管。