为什么当我的连接繁忙时 DNS 总是首先被关闭?

为什么当我的连接繁忙时 DNS 总是首先被关闭?

似乎每当我达到下载/上传速率的明显极限(或被限制)时,最先开始变慢或完全超时的就是 DNS 查找。通常我会将这归咎于 DNS 是执行大多数活动所需的第一个请求,但奇怪的是,我仍然可以发出大量请求并将数据发送到 DNS 已缓存或我直接使用的 IP 地址的页面(例如,通过 HTTP)。为什么会这样?

答案1

已建立 TCP 会话的两个主机将检测并重新传输丢弃的 TCP 数据包。

丢失的 UDP 数据包不属于会话的一部分,并且没有内置的传输失败检测功能。对于 DNS,丢失的数据包会导致超时,然后重复查询,可能是向不同的服务器查询。

UDP 的开销比 TCP 低得多。(我的 Mac OSX 9.2 系统有 92 个可调 TCP 参数,每个 TCP 会话都会设置这些参数。UDP 只有 7 个。)这样,DNS 服务器就可以为比使用 TCP 进行相同事务时多出数千倍的客户端提供名称服务。

相关内容