目录
UDP 概述
UDP 的主要特点
UDP 的问题
UDP的多路分用模型
UDP 的首部格式
UDP 概述
用户数据报协议(User Datagram Protocol,UDP)
UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能
虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 的无连接、不进行拥塞控制以及简单性却使其比 TCP 更符合某些应用的需要,例如一些实时网络应用
UDP 的主要特点
UDP 是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可释放),因此减少了开销和发送数据之前的时延
UDP 只提供尽最大努力交付,即不保证可靠交付,同时也不进行流量控制和拥塞控制,因此主机不需要维持具有许多参数的、复杂的连接状态表
由于 UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很多的实时应用(如 IP 电话、实时视频会议等)要求源主机以恒定的速率发送数据,并且允许在网络发生拥塞时丢失一些数据,但却不允许数据有太大的时延。UDP 正好适合这种要求
应用程序交给 UDP 一个报文,UDP 就发送这个报文;而 UDP 收到一个报文,就把它交付给应用程序
应用程序必须选择合适大小的报文
UDP 支持一对一、一对多、多对一和多对多的交互通信、用户数据报只有 8 个字节的首部开销,比 TCP 的 20 个字节首部要短得多
UDP 是面向报文的。这就是说,UDP 对应用程序交下来的报文不再划分为若干个分组来发送,也不把收到的若干个报文合并后再交付给应用程序
UDP 的问题
虽然某些实时应用需要使用没有拥塞控制的 UDP,但当很多的源主机同时都向网络发送高速率的实时视频流时,网络就有可能发生拥塞,结果大家都无法正常接收
还有一些使用 UDP 的实时应用需要对UDP 的不可靠的传输进行适当的改进以减少数据的丢失
UDP的多路分用模型
UDP通过二元组(目的IP地址,目的端口号)来定位一个接收方应用进程,而用二元组(源IP地址,源端口号)来标识一个发送方进程
由于UDP没有流量控制功能,如果报文到达的速度长期大于应用进程从队列中读取报文的速度,则会导致队列溢出和报文丢失
报文文的目的IP地址和目的端口号相同,但源IP地址和源端口号并不一定相同。即不同源而同一目的地的报文会定位到同一队列
UDP 的首部格式
用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组
成,每个字段都是两个字节
在计算检验和时,临时把伪首部和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和