Networking DNS请求丢失

Networking DNS请求丢失,networking,Networking,UDP包就像一去不复返,你永远不会知道它是否被接收到。因此,不确定是否会收到天气包裹。我了解到,DNS大多使用UDP包来发送请求。如何处理使用UDP请求的DNS丢失?如果在一定时间内未收到响应数据包,则会重新发送请求 有两种方法可以确定UDP数据报已丢失。两者都不完全可靠 最常见的是超时。您发送消息并等待响应。如果在一段时间后没有收到响应,则假定消息或响应丢失。在这一点上,你要么再试一次,要么放弃。也有可能消息或响应需要很长时间才能通过网络,因此您必须考虑重复的消息或响应。注意,所有分组交换通

UDP包就像一去不复返,你永远不会知道它是否被接收到。因此,不确定是否会收到天气包裹。我了解到,DNS大多使用UDP包来发送请求。如何处理使用UDP请求的DNS丢失?

如果在一定时间内未收到响应数据包,则会重新发送请求

有两种方法可以确定UDP数据报已丢失。两者都不完全可靠

  • 最常见的是超时。您发送消息并等待响应。如果在一段时间后没有收到响应,则假定消息或响应丢失。在这一点上,你要么再试一次,要么放弃。也有可能消息或响应需要很长时间才能通过网络,因此您必须考虑重复的消息或响应。注意,所有分组交换通信,包括TCP,都是这样工作的。TCP只是为您隐藏细节

  • 另一种方法是查找ICMP消息,该消息告诉您数据包已被丢弃。例如,
    ICMP\u未读\u端口
    ICMP\u未读\u主机
    ,或
    ICMP\u未读\u主机
    。但是,这些信息不仅很少发送,而且可能会丢失,而且有时即使信息成功传递,您也可以接收到它们。充其量,如果您收到ICMP消息,您可以将其视为可能发生的事情的建议


大多数DNS实现使用较短的超时,因为复制不是什么大问题。对一台DNS服务器重复几次后,它将尝试另一台(假设有多台服务器可用)。大多数实现还将缓存关于哪些服务器正在响应,哪些服务器没有响应的信息。

Timeout。您在几秒钟内没有收到响应-它可能已丢失或从未发送过。DNS可以使用UDP或TCP。事实上,DNS实现需要TCP支持。在最初的DNS RFC中有一些人的误解。请参阅,其中澄清了TCP是必需的:“因此,本文档更新了核心DNS协议规范,从而使对TCP的支持成为完整DNS协议实现的必需部分。”