Skip to content

《面渣逆袭》计算机网络 篇 · 第 5/7 章。原版 PDF(下载 / 打印)

UDP 问的不多,基本上是被拿来和 TCP 比较。

44.说说 TCP 和 UDP 的区别?

最根本区别:TCP 是面向连接,而 UDP 是无连接

配图

可以这么形容:TCP 是打电话,UDP 是大喇叭。

配图

说说 TCP 和 UDP 的应用场景?

**TCP 应用场景:**效率要求相对低,但对准确性要求相对高的场景。因为传输中需要对数据确认、

重发、排序等操作,相比之下效率没有 UDP 高。例如:文件传输(准确高要求高、但是速度可以相对慢)、收发邮件、远程登录。

**UDP 应用场景:**效率要求相对高,对准确性要求相对低的场景。例如:QQ聊天、在线视频、网络语音电话(即时通讯,速度要求高,但是出现偶尔断续不是太大问题,并且此处完全不可以使用重发机制)、广播通信(广播、多播)。

45.为什么 QQ 采用 UDP 协议?

PS :这是多年前的老题了,拉出来怀怀旧。

配图

首先,QQ并不是完全基于 UDP 实现。比如在使用 QQ 进行文件传输等活动的时候,就会使用

TCP 作为可靠传输的保证。

使用 UDP 进行交互通信的好处在于,延迟较短,对数据丢失的处理比较简单。同时,TCP 是一个全双工协议,需要建立连接,所以网络开销也会相对大。

如果使用 QQ 语音和 QQ 视频的话,UDP 的优势就更为突出了,首先延迟较小。最重要的一点是不可靠传输,这意味着如果数据丢失的话,不会有重传。因为用户一般来说可以接受图像稍微模糊一点,声音稍微不清晰一点,但是如果在几秒钟以后再出现之前丢失的画面和声音,这恐怕是很难接受的。

由于 QQ 的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用 UDP 协议与客户端进行通讯才能保证这种超大规模的服务简单总结一下:UDP 协议是无连接方式的协议,它的效率高,速度快,占资源少,对服务器的压力比较小。但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。QQ采用的通信协议以

UDP 为主,辅以 TCP 协议。

46.UDP 协议为什么不可靠?

UDP 在传输数据之前不需要先建立连接,远地主机的运输层在接收到 UDP 报文后,不需要确认,提供不可靠交付。总结就以下四点:

不保证消息交付:不确认,不重传,无超时不保证交付顺序:不设置包序号,不重排,不会发生队首阻塞不跟踪连接状态:不必建立连接或重启状态机不进行拥塞控制:不内置客户端或网络反馈机制

47.DNS 为什么要用 UDP?

更准确地说,DNS 既使用 TCP 又使用 UDP 。

当进行区域传送(主域名服务器向辅助域名服务器传送变化的那部分数据)时会使用 TCP ,因为数据同步传送的数据量比一个请求和应答的数据量要多,而 TCP 允许的报文长度更长,因此为了保证数据的正确性,会使用基于可靠连接的 TCP 。

当客户端想 DNS 服务器查询域名(域名解析)的时候,一般返回的内容不会超过 UDP 报文的最大长度,即 512 字节,用 UDP 传输时,不需要创建连接,从而大大提高了响应速度,但这要求域名解析服务器和域名服务器都必须自己处理超时和重传从而保证可靠性。

本文整理自三分恶《面渣逆袭》系列的公开内容,仅供个人学习使用

本站仅供个人学习使用,请勿外传