UDP的不可靠体现在哪里?

发布于 2022-09-01 23:29:02 字数 493 浏览 10 评论 0

都知道UDP是不可靠的,TCP是可靠的,那问题来了,UDP的不可靠体现在哪里?

  • UDP的首部有检验和,若检验和出错接收方会舍弃该包

  • UDP的首部的目的端口错误,接收方会通过ICMP告知发送方

以上可以看到其实UDP也对接受的报文进行了一定的检查,并不是无脑接收。

同时我参考了segmentfault里面其他关于UDP和TCP的答案,感觉上UDP的不可靠是体现在发送方只管发送,对方有没有收到(例如网络拥塞,这个包丢掉了,或者检验和出错被接收方扔掉了),我都不管。

  1. 请问这样的理解有错吗?

  2. 其次,如果这样的理解是正确的,那么想RIP采用UDP我可以理解,因为其实相对高频的交换信息,其中一次报文丢失了影响不大,可是为什么DNS也是采用UDP呢?假如带有域名对应的真实地址的报文丢失,发送方就不知道域名对应的IP地址,继而就无法访问网络了啊?

谢谢各位解答

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫竹語嫣☆ 2022-09-08 23:29:02

DNS是一个查询非常频繁,量很大,并且每个查询都是很短的连接的协议,在这个情况下如果采用TCP会放大TCP的缺点,比如说维护一个连接的开销很大,握手对于一个这么高频繁的服务来说纯粹在浪费时间和流量

UDP实际上是把可靠性的检查转交给用户了(这里的用户也就是更高层的协议)
它确实没有内建可靠性检查,但不代表你自己不可以实现一个保障机制,客户端DNS调用失败完全可以重试,还可以fallback到候选服务器的方式来规避这个问题(一个不行,那就换一个嘛,你看DNS服务器一般都会配置两个,Linux甚至允许你配置更多的dns服务器)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文