网络:UDP

UDP:User Datagram Protocol,用户数据报协议。

UDP特点

  • 不建立连接

    传输数据之前源端和终端不建立连接,发送数据时就简单地抓取来自应用程序的数据,并尽可能快地把它扔到网络上;

    在发送端,UDP传送数据的速度只受应用程序生成数据的速度、计算机的能力和传输带宽的限制;

    在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读取一个消息段;

    由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务器可以同时向多个客户端传输相同的消息。

  • 简单:在发送端和接收端没有连接状态,每个数据报都是独立被处理的

  • 开销小:UDP的首部很短,只有8个字节,相对于TCP的20个字节额外开销很小

  • 无拥塞控制和流量控制:UDP可以尽可能快地发送报文;吞吐量只受应用程序生成数据的速率、传输带宽、源端和终端主机性能的限制。

  • UDP使用尽最大努力交付,可能丢失、可能乱序。

  • UDP是面向报文的:发送方的UDP对应用程序来的报文在添加首部后就向下交付给IP层,既不拆分,也不合并,而是保留这些报文的边界。因此,应用程序需要选择合适的报文大小。

  • 没有差错纠正机制。

    UDP头部中有一个校验和字段,可用于差错的校测,但没有差错恢复机制。

UDP的校验和

UDP的校验和:

目标:检测在被传输报文段中的差错

发送方将报文段的的内容视为16比特的整数,将校验和放到UDP的校验和字段;

接收方计算接收到的报文段的校验和,检查计算出的校验和与校验和字段的内容是否相等:

  • 不相等:检测到差错
  • 相等:没有检测到差错,但也许还是有差错(残存差错)

UDP应用

  • 流媒体(丢失不敏感、速率敏感、应用可控制传输速率)
  • DNS解析
  • SNMP

要在UDP上实现可靠传输:

  • 在应用层增加可靠性
  • 应用特定的差错恢复