第3章 运输层(1)运输层 UDP
(结构1)为上层提供的服务
- 多路分解与多路复用:利用两个端口号可以确定对应的 socket 。
- 完整性检查:利用检验和进行有限的检查,检查通过则上交,否则直接丢弃。
- 特别的:可以在使用UDP的应用层中自定义可靠性机制;使应用进程可以进行可靠通信,而无需像TCP般受到拥塞控制的限制。
(结构2)UDP报文段 - 运输层数据结构
- 源端口号(2 Byte):用以返回UDP报文时设置目的端口号,和当前目的端口号形成二元组标识符标识 socket 。
- 目的端口号(2 Byte):和当前目的端口号形成二元组标识符标识 socket 。
- 长度(2 Byte):指明了包含首部在内的UDP报文长度。
- 检验和(2 Byte):用以检验差错,和部分IP数据报中的字段一起被使用。
- 应用数据():包含应用层数据。
(假设1)UDP工作流程
(假设2)UDP检验和的使用
- 对UDP伪首部,UDP首部,应用数据中的所有16比特字进行求和,遇到的任何溢出都被回卷。
- 求和完成后进行反码运算,即0置1,1置0。
若两个16位的二进制数进行求和得到了17位的二进制数(1)0100101011000001;
回卷即 0100101011000001 + 1 = 0100101011000010 。
为什么运输层需要使用检验和对数据进行检验?
因为某些链路中的链路层会使用无差错检测的协议,并且网络层从来不对数据进行差错检测,还有也无法确保内存中的差错检测。
(假设3)