UDP:数据报、首部与校验和
无连接传输UDP
使用UDP时,在发送报文段之前,发送方和接收方的传输层实体之间没有握手。正因为如此,UDP被称为是无连接的。
UDP尽最大努力将数据包交付到目的主机,但不保证可靠性和顺序,也不保证带宽及延迟要求。UDP相较于TCP的优势包括无需连接建立、无连接状态、分组首部开销小。
UDP首部只有4个字段,每个字段由2个字节组成,通过端口号可以将应用数据交给运行在目的端系统中的相应进程。长度字段指示了UDP报文段中的字节数(包括首部)。检验和可以用来检查该报文段中是否出现了差错。
构建UDP数据报
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
校验和(Checksum)
当UDP报文段从源到达目的地的过程中,其中的bit有可能会受到噪声干扰或在路由器中存储而发生改变。UDP检验和提供了差错检测的功能。发送方对UDP报文段中所有内容都当作16位整数进行求和,在求和时遇到的溢出都需要被回卷(wraparound),再对和进行求反,得到的结果被放在UDP报文段中的检验和字段。
例如两个16位的整数相加:
将溢出位进行回卷:
计算反码得到校验和0100010001000011。
接收方收到报文段后,将所有16位整数相加(包括检验和)。如果该分组中没有差错,则计算得到的和将是1111111111111111,否则说明分组中有差错。
当检验和错误的时候,该分组一定错误,将会被丢弃。但是当检验和没有错误时,并不能保证分组是完全正确的。虽然UDP提供差错检测,但它对差错恢复无能无力。
翻转比特并检查校验和
解锁完整互动实验、进阶解析与精选参考答案。
知识测验
计算并检验一补校验和
对16位数据字E666与D555(十六进制),写出二进制加法、回卷进位、校验和与接收检验。再把数据改为E667与D554,解释校验结果。另外求40字节载荷的UDP长度。本题只累加列出的数据字;实际UDP校验还覆盖IP伪首部、UDP首部与补齐的数据。