3.3 无连接传输协议-UDP
目录:计算机网络-课程笔记目录
简介
-
基于Internet IP协议
- 复用/分用
- 简单的错误校验->没有纠正
-
为什么在传输层做错误检测?
- 端到端原则:不能确保每一个链路中都有链路检测
- 即使每一个链路都有检测,但是路由转发过程中也有可能
-
“Best effort”服务,UDP段可能(几乎把Internet裸露提供给应用层)
- 丢失
- 非按序到达
-
无连接
- 不需要握手
- UDP段处理独立于其他段
-
UDP存在的价值
- 无需建立连接,显著减少延迟(DNS使用UDP)
- 实现简单:无需维护连接状态
- 头部开销少
- 8字节
- PS:TCP20字节
- 没有拥塞控制:应用可以更好地控制发送时间和速率
- TCP自己会控制速率,不是百分之百听从于上层应用
-
用途
- 常用于流媒体
- 容忍丢失
- 速率敏感
- DNS
- SNMP
- 常用于流媒体
-
如何在UDP上实现可靠数据传输?
- 在应用层增加可靠性机制
- 应用特定的错误恢复机制
-
UDP报文段
UDP校验和(Checksum)
-
目的:检测UDP段在传输中是否发生错误(如位反转)
-
发送方
- 将段的内容视为16-bit整数
- 校验和计算:计算所有整数的和,进位加在和的后面(就是+1,见下面的例子),将得到的值按位求反,得到校验和
- 发送方将校验和放入校验和字段
-
接收方
- 计算所接收端的校验和
- 将其与校验和字段进行对比
- 不相等:检测出错误
- 相等:没有检测出错误,但有可能有错误
-
示例
-
注意:最高位进位必须加进去
-
1110011001100110
1101010101010101
11011101110111011(第一位1取出来,然后加到该数上)
1011101110111100(+1结果)
0100010001000011(取反,校验和)
-