为什么每个可执行文件在删除 DNScache 服务后都会发送 DNS 请求?

Bis*_*iyo 0 networking windows dns windows-registry services

在 Windows 中,有一个名为 DNS 客户端服务 (dnscache) 的服务缓存 DNS 名称并注册完整的计算机名称。当它运行时,只有 svchost.exe连接到 DNS 服务器。然后我通过以下过程停止并删除该服务:

  1. 将网络存储接口服务 (NSI) 的依赖设置为仅远程过程调用 (RPCSS):: reg add "HKLM\SYSTEM\CurrentControlSet\Services\nsi" /V "DependOnService" /T REG_MULTI_SZ /D "RPCSS" /F

  2. 将网络连接助手服务 (NcaSvc) 的依赖设置为仅基本过滤引擎 (BFE):: reg add "HKLM\SYSTEM\CurrentControlSet\Services\NcaSvc" /V "DependOnService" /T REG_MULTI_SZ /D "BFE" /F

设置服务依赖

  1. 停止和删除 DNS 缓存服务:: sc stop "Dnscache" & sc delete "Dnscache"

删除 DNS 缓存服务

删除 DNScache 服务后,连接到 Internet 的每个可执行文件(包括每个浏览器)都会发送和接收 DNS 数据包(使用 netstat)。有了这个过程,很明显Windows并没有保存dnscache。你可以看到ipconfig /displaydns

问题:为什么每个可执行文件在删除 DNScache 服务后都会发送 DNS 请求?

sim*_*lev 7

您描述的行为正是您所期望的。所有 DNS 请求通常由 DNScache 服务处理,该服务将为运行在同一台机器上的任何应用程序提供服务。删除它后,所有程序都必须发出 DNS 查询,因为它们不能再利用 DNS 缓存服务。

网上找到的信息证实,DNScache 服务确实做了它恰当命名的事情:缓存 DNS 查询。

DNS 客户端 (DNScache) 服务有什么作用?解析和缓存域名:它会找到域名的 IP 地址并在短时间内保存此关联。
如果它被禁用会发生什么?如果服务停止,DNS 名称将继续解析。但是,不会缓存 DNS 名称查询的结果。


另一方面,您试图通过删除 DNScache 服务来完成什么?除了对系统进行试验以深入了解其工作原理之外,我看不到任何优势或目标。

我会不理会 Dnscache 服务。