无连接的传输协议UDP
# 无连接的传输协议UDP
# UDP(User Datagram Protocol[RFC 768]) 概述
基于 Internet IP 协议
- 复用/分用
- 简单的错误校验
- 校验和
- 端到端原则
- 传输的每一步都可能引入错误,要在靠近传输层的地方进行检验
"Best effort" 服务,UDP段可能丢失
- 因为网络层提供的即为 "Best effort" 服务
UDP 是无连接的
- UDP 发送方和接收方之间不需要握手
- 每个 UDP 段的处理独立于其他段
UDP 为什么存在
- 无需建立连接
- 减少延迟
- 实现简单
- 无需维护连接状态
- 头部开销少
- 没有拥塞控制
- 应用可更好地控制发送时间和速率
# UDP 的用途
常用于流媒体应用
- 容忍丢失
- 速率敏感
UDP 还用于
- DNS
- SNMP ⌛tag+todo
# UDP 的数据报
UDP 数据报的示意图
在 UDP 上实现可靠数据传输?
- 在应用层增加可靠性机制
- 应用特定的错误恢复机制
# UDP 校验和(checksum)
目的:检测UDP段在传输中是否发生错误(如位翻转)
发送方
- 将段的内容视为16-bit整数
- 校验和计算
- 计算所有整数的和,进位加在和的后面
- 将得到的值按位求反,得到校验和
- 发送方将校验和放入校验和字段
接收方
- 计算所收到段的校验和
- 将其与校验和字段进行对比
- 不相等:检测出错误
- 相等:没有检测出错误(但可能有错误)
# 校验和计算示例
编辑 (opens new window)