网络知识体系(六) —— UDP 协议
2021-05-27 本文已影响0人
Vic_wkx
UDP 协议是最精简的网络协议,他只实现了运输层的基本功能:进程间通信。对于应用层传过来的数据,UDP 为其附加一个首部之后,就直接交给网络层了。UDP 的首部非常简单,只有三个部分:
- 源端口、目标端口:端口号用来区分主机的不同进程
- 校验码:用于校验数据包在传输的过程中没有出现错误,例如某个 1 变成了 0
- 长度:报文的长度
所以 UDP 协议的功能也只有两个:区分不同的进程、校验数据包是否发生错误。
1.优点
- 效率高:不需要建立连接、断开连接,不需要拥塞控制等等
- 可以连接更多的客户端:没有连接状态,不需要为每个客户端创建缓存等信息
- 首部字节少,开销小:TCP 固定首部是 20 字节,而 UDP 只有 8 字节,更少的首部意味着更大比例的数据部分
- 可以进行广播:UDP 不是面向连接的,所以可以同时对多个进程发送报文,实现广播功能
2.缺点
- 无法保证消息完整、正确到达,UDP 是一个不可靠的传输协议
- 缺少拥塞控制,容易互相竞争资源,导致网络瘫痪
3.适用场景
在一些需要高效率传输,并且允许有限误差的场景下可以使用 UDP 协议。如视频直播,并不需要保证每个数据包都完整到达,允许一定的丢包率,此时使用 UDP 可以使数据包传输更快。
在广播通信时使用 UDP 协议,例如路由选择协议(Routing Information Protocol,RIP)就是采用的 UDP 协议。
在网络请求的 DNS (domain name server)解析过程中,既使用了 TCP 协议,又使用了 UDP 协议。
DNS 规范规定了两种类型的 DNS 服务器,一种叫主 DNS 服务器
,一种叫辅助 DNS 服务器
。主 DNS 服务器
从自己本机的数据文件中读取 DNS 信息,辅助 DNS 服务器
从主 DNS 服务器
中读取 DNS 信息。当一个辅助 DNS 服务器
启动时,他需要与主 DNS 服务器
通信,这叫做 区传送。区传送对准确性要求比较高,因此采用 TCP 协议。
当客户端向 DNS 服务器查询域名时,一般返回的内容都不超过 512 字节,因数据量较小,因此用 UDP 协议传输即可。这样可以保证 DNS 服务器负载更低,响应更快。如果发生了丢包,重传整个数据包即可。