UDP概述
用户数据报协议UDP只在IP的数据报服务上增加了两个两个共能。分别是端口功能(有了端口,运输层就能进行复用和分用)和差错检测功能。虽然UDP用户数据报只能提供不可靠的交付,但是在某些方面尤其特殊的优势:
1.UDP是无连接的,即发送数据之前不需要建立连接(当然发送数据结束时也没有连接可以释放),因此减少了开销和发送数据之间的时延。
2.UDP是提供最大努力交付,即不保证可靠交付,同时也不使用拥塞控制,因此主机不需要维持具有许多参数的,复杂的链接表。
3.UDP因为没有拥塞控制,所以网络出现的拥塞不会是源主机的发送速率降低。这对某些实时应用是很重要的(比如网络会议)
4.UDP是面向报文的。就是说,UDP对于应用层交给他的报文不在进行划分成若干个分组以便发送,同样也不会把 收到的若干个分组合并成一个报文合并后再交给应用程序。应用程序给UDP一个报文,它就发送这个报文;UDP接收到一个报文就,就把它交给应用程序。因此,应用程序必须选择合适的大小报文。若报文太长,udp把它交给IP层后,IP层在传输时可能要进行分片,这回降低IP层的速率。反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部相对变大,同样会影响IP层的效率。
5.UDP支持一对一,一对多,多对一和多对多的交互通信。
6.用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。
虽然某些时候需要使用没有拥塞机制的UDP,但当很多主机同时都向网络发送高速率的实时视频流时,网络就有可能发生拥塞,结果大家都无法正常接收。因此,UDP不使用拥塞机制可能会造成严重的网络拥塞问题。
UDP的首部格式
用户数据报UDP有两个字段:数据字段和首部字段。首部字段很简单只有8个字节(TCP有20个)。如下图所示,由4个字段组成,每个字段都是两个字节。
(1)源端口 源端口号
(2)目的端口 目的端口号
(3)长度 UDP用户数据报的长度
(4)检验和 防止UDP用户数据报在传输中出错
UDP用户数据报首部中检验和的计算方法有些特殊,他是在首部前面加一个伪首部,该伪首部的大小是12字节。之所以称他为伪首部是因为这种首部只是在计算检验和的时候,临时和UDP用户数据报连接在一起,得到一个临时的UDP用户数据报。检验和就是按照这个临时的UDP数据报来计算的。伪首部既不向下传送也不向上提交,而仅仅是为了计算检验。上图也给出了伪首部各字段的内容。