UDP协议基本原理

UDP封装

第六章TCP和UDP基本原理(续)_第1张图片

RFC768定义的UDP(User Datagram Protocol 用户数据报协议)以IP为下层协议。UDP是为实现数据报(Datagram)模式的分组交换计算机网络通信而设计的。UDP对应用程序提供了用最简化的机制向网络上的另一个应用程序发送消息的方法。UDP提供无连接的、不可靠的数据报服务.

    由于功能简单,UDP头相对于TCP简化了很多。UDP头包含以下字段:

  • 源端口(Source Port):16位的源端口,含义与TCP相同。

  • 目的端口(Destination Port):16位的目的端口号,含义与TCP相同。

  • 长度(Length):16位的长度字段,表明包括UDP头和数据在内的整个UDP数据报的长度,单位为字节。

  • 校验和(Checksum):16位的错误检查字段,基于部分IP头信息、UDP头和载荷数据的内容计算得到,用于检测传输过程中出现的错误。

TCP与UDP的对比


    图示为UDP与TCP的功能对比。

    UDP报文没有序列号、确认、超时重传和滑动窗口,没有任何可靠性保证。因此基于UDP的应用和服务通常工作于可靠性较高的网络环境下。

    当然,使用UDP作为传输层协议也有独特的优势:

  • 实现简单,占用资源少:由于抛弃了复杂的机制,不需要维护连接状态,也省却了发送缓存,UDP协议可以很容易地运行在处理能力低、资源少的节点上。例如,无盘工作站在获得OS软件之前不可能实现复杂的传输机制,但系统的传递恰恰需要基于传输协议,这时就可以使用基于UDP的BootP获取引导信息。

  • 带宽浪费小,传输效率高:UDP头比TCP头的尺寸小,而且UDP节约了TCP用于确认的带宽消耗,因此提高了带宽利用率。

  • 延迟小:由于不需要等待确认和超时,也不需要考虑窗口的大小,UDP发送方可以持续而快速地发送数据。对于很多应用而言,特别是实时应用,重新传输实际上没有意义。例如对VoIP来说,如果丢失了一个语音包,通话质量立即会受到影响,但重新传递这个语音包也已经没有必要了,因为通话者不会等重建语音之后再听。这种情况下UDP比TCP更加合适。