c - 为什么查询根服务器时 ns_t_ns 比 ns_t_a 快?
问题描述
我想知道客户端和本地 dns 服务器之间的延迟。所以我向根 dns server(.) 发送查询,如下所示:
res_nquery(&res, ".", ns_c_in, ns_t_a, answer, sizeof(answer));
但是如果我更改ns_t_a
为ns_t_ns
,查询会变得更快。为什么会这样?
解决方案
递归解析器需要缓存./IN/NS
记录集,并且通常在解析器启动时这样做。这称为启动,并包含在此 RFC 中:
根名称服务器集也永远不会从缓存中过期(在典型实现中)。
在常规操作期间不会发生查询./IN/A
,因此需要先填充缓存。该资源记录集最终也将过期。
如果两个资源记录集都在缓存中,则典型的解析器响应时间将相同。
推荐阅读
- ios - Xcode 9.4 Apple Watch 模拟器无法与 iPhone 配对
- c++ - 依赖于特定类类型的 C++ 模板方法?
- cuda - 从 Nvprof 和 GPGPUsim 了解 IPC 指标
- c# - C# 算法代码未通过测试用例
- xamarin - android api 26 及更高版本未在 Visual Studio 2013 中显示
- html - 如何以紧凑的方式将子 div 放置在另一个下方而不浪费空间?
- ios - 方法和协议的区别?
- android - 使用微调器过滤由firebase填充的列表视图在删除后不刷新
- sql - 如何在 SQL 中查找出现次数最多的记录
- node.js - npm publish / npm install - 身份验证令牌失效