传输层——UDP

简介

RFC768定义的UDP只是做了传输协议能够做的最少工作,它仅在IP的数据报服务上增加了两个最基本的服务:复用和分用以及差错检测。UDP是非面向连接的、不可靠的传输协议。

  • 不需要建立连接
  • 不支持流量控制和拥塞控制,没有确认/重传机
  • UDP段在传输过程中可能会丢失、失序和延迟
  • 支持广播和组播,这对多媒体传输是非常有用的

和TCP的区别

  1. UDP无需建立连接,因此UDP不会引入建立连接的时延。
  2. 无连接状态。TCP需要在端系统中维护连接状态,此状态包括发送接收缓存、拥塞控制参数、确认号、顺序号等。而UDP不维护连接状态,也不跟踪这些参数。
  3. 分组头部开销小。TCP头部有20B,而UDP只有8B。
  4. UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送速率。某些应用要求以稳定的速率发送,但不允许有较大的延迟,UDP正好满足。 
  5. UDP提供尽最大努力的交付,即不保证可靠交付,但这并不意味着应用对数据的要求事不可靠的,因此所有维护传输可靠性工作需要用户在应用层来完成。应用实体可以根据应用的需求来灵活设计自己的可靠性原则。
  6.  UDP事面向报文的。发送方UDP对应用层交下来的报文,在添加首部后就交给IP层,既不合并,也不拆分,而是保留这些报文的边界;接收方UDP对于IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付给上层应用进程,一次性交付一个完整的报文。因此报文不可分割,是UDP数据报处理的最小单位。

UDP报文段格式

                                                                                                                                              

  • 源端口:在需要对方回信是选用,不需要时可用全0;
  • 目的端口:目的端口号,在终点交付报文时必须使用到
  • 长度:UDP数据报的长度(包括首部和数据),最小值为8B(仅含首部)
  • 校验和:检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,直接令该字段全为0

基于UDP的应用层协议

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议