iOS 模拟器上的 DNS 查找速度慢

Ren*_*ené 5 dns objective-c nsurlconnection ios

我用来NSURLConnection访问网络服务(在.local主机上)。当我通过主机名访问主机时,我看到了 5 秒以上的延迟,但是当我通过 IP 访问它时,连接几乎立即完成。在实际的 iPhone(而不是模拟器)上运行该应用程序根本不会显示任何延迟(测试是在同一网络连接上完成的)。所以这似乎是 iOS 模拟器或 OS X 特有的问题。

我可以使用以下终端命令来模拟问题:

nslookup webservice.myhost.local(速度很快)

dscacheutil -q host -a name webservice.myhost.local显示延迟

当使用命令的 Wireshark 分析网络流量时dscacheutil,我看到几个Standard query AAAA标记为红色的请求并得到空响应。完成这些操作后,我会看到一个Standard query A请求,该请求的响应包含正确的 IP 地址。AAAA 请求大约需要 5 秒,这可以解释延迟的原因。

Aln*_*tak 4

Web 服务是否可能启用了 IPv6,而您无法从模拟器中使用它?

例如,当我运行本地仅 IPv4 的 DNS 服务时,我会在 OSX 上看到此情况 - 如果我运行dig @localhost则会挂起几秒钟,直到初始 IPv6 连接超时,然后会尝试 IPv4。