UDP
UDP数据报
UDP的概述
- UDP仅在IP的数据报服务之上增加了两个最基本的服务:复用和分用以及差错检测;
- UDP优点:
- 无需建立连接,因此不会引入建立连接的时延;
- 无连接状态,此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数;UDP不维护连接状态,也不跟踪这些参数;
- 分组首部开销小,TCP有20B的首部开销,UDP只有8B的开销;
- 应用层能更早地控制要发送的数据和发送时间,UDP没有拥塞控制,因此网络中的拥塞不会影响主机的发送效率;
- UDP支持一对一、一对多、多对一和多对多的交互通信;
- UDP不保证可靠传输,但这并不意味着应用对数据的要求是不可靠的,所有维护可靠性的工具在应用层完成,应用开发者可根据应用的需求来灵活设计自己的可靠性机制;
- UDP是面向报文的,发送方UDP对应用层交下来的报文,在添加首部后就向下交付给IP层,一次发送一个报文,既不合并也不拆分,而是保留这些报文的边界;接收方UDP对IP层交上来UDP数据报,在去除首部后就原封不动地交付给上层应用进程,一次交付一个完整的报文;因此报文不可分割,是UDP数据报处理的最小单位;
- 应用程序必须选择合适大小的报文:
- 报文太长,UDP把它交给IP层后,可能会导致分片;
- 报文太短,UDP把它交给IP层后,会使IP数据报首部的相对长度太大;
- 两者都会降低IP层的效率;
UDP首部格式
UDP校验
- 计算校验和时,要在UDP数据报之前增加12B的伪首部,伪首部并不是UDP的真正首部,只是在计算校验和时,临时添加在UDP数据报前面,得到一个临时的UDP数据报,校验和就是按照这个临时UDP数据报来计算的,伪首部即不向下传送又不向上递交,只是为了计算校验和;
- UDP数据报首部和伪首部:
-
校验步骤
- 发送方首先把全0放入校验和字段并添加伪首部,然后把UDP数据报视为许多16位的字串接起来;
- 若UDP数据报的数据报的数据部分不是偶数字节,则要在数据部分末尾填入一个全0字节,此增加字节不发送;
- 按二进制反码计算出这些16位字的和,将此和的二进制反码写入校验和字段;,并发送;
- 接收方把收到的UDP数据报加上伪首部,按二进制反码求这些16位字的和,当无差错时其结果应为全1,某则就表明有差错出现,接收方就应该丢弃这个UDP数据报;
-
缺点:
-
优点:
|