无连接传输UDP
UDP
- “尽力而为的”服务,报文段可能
- 丢失
- 送到应用进程的报文段乱序
- 无连接
- UDP发送端和接收端之间没有握手
- 每个UDP报文段都被独立的处理
- UDP被用于
- 流媒体
- DNS
- SNMP
- 在UDP上实现可靠传输
- 在应用层增加可靠性
- 应用特定的差错格式
UDP:用户数据报协议
为什么要有UDP
- 不建立连接(会增加延时)
- 简单:在发送端和接收端没有连接状态
- 报文段的头部很小(开销小)
- 无拥塞控制和流量控制:UDP可以尽可能快的发送报文段
- 应用 -> 传输的速率 = 主机 -> 网格的速率
UDP校验和
目标:检测在被传输报文段中的差错(如比特反转)
发送方
- 将报文段的内容视为16比特的整数
- 校验和:报文段的加法和(1的补运算)
- 发送方将校验和放在UDP的校验和字段
接收方
- 计算接收到的报文段的校验和
- 检查计算出的校验和与校验和字段的内容是否相等
- 不相等——检测到差错
- 相等:没有检测到差错 ,但也许还是有差错 (残存错误,未检测出来)
Internet校验和的例子
- 注意:当数字相加时,在最高位的进位要回卷(加到最低位上),再加到结果上
- 目标端:校验范围+校验和=1111111111111111 通过校验
- 否则没有通过校验
- 注:求和时,必须将进位回卷到结果上(进位回滚)