networking - DNS在传输层使用UDP协议时如何可靠?
问题描述
我搜索过同样的东西,得到了这样的东西:
“应用程序可以使用 UDP,并且可以通过在应用程序层使用超时和重新发送来实现可靠。”
可靠性是否仅意味着发送确认以及识别损坏/重复的数据包呢?谁能解释一下这个的深度。
解决方案
UDP不可靠意味着UDP不关心数据包是否被对等方接收,数据包的排序,重复等。
但是,应用层协议本身可以关心这一点,不需要依赖下层的可靠性。在 DNS 的情况下,每个请求都应该只导致一个响应,并且接收响应隐含地确认已收到请求。此外,每个 DNS 请求和响应都适合单个 UDP 数据包 - 因此重新排序并不重要。每个 UDP 请求都有一个唯一的 ID 和源端口组合,响应数据包包含相同的 ID 和端口 - 所以很清楚哪个响应属于哪个查询。如果在一段时间内没有收到响应,它将假定请求或响应丢失,并简单地使用新查询重试。
推荐阅读
- android - Google 开发者控制台中的“我们检测到您的应用正在使用旧版本的 Google Play 开发者 API”警告是什么?
- android - 如何从网络中获取频段信息?
- mysql - 插入mysql db时获取Last Insert Id的最可靠方法是什么
- jsf - 如何在 p:column 中应用正则表达式?
- c++ - 如何根据模板类型参数调用不同的函数?
- php - 更新到 php7.2 zip 无限创建文件
- scala - Spark tests failing when running with sbt test
- c - C RPC 服务器 malloc 内存损坏
- javascript - 如何根据日期过滤数据?
- c# - 如何使用 ASP.NET Core 中的自定义验证在索引处获取属性?