5.2 UDP协议
最后更新于
最后更新于
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP是无连接的
UDP不保证可靠交付
UDP是面向报文的,适合一次性传输少量数据的网络应用
UDP无拥塞控制,适合很多实时应用
UDP首部开销小
面向报文:应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文,不做处理
首部字段
源端口号(16位,2B):可选填,当需要目的主机回应时使用
目的端口号(16位,2B):必要,目的进程的端口号
UDP长度(16位,2B):整个UDP数据报的长度(首部字段+数据字段)
UDP检验和(16位,2B):检测整个UDP数据报是否有错误
数据字段
分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP“端口不可达”差错报告报文
伪首部:只有在计算检验和时才出现, 不向下传送也不向上递交
伪首部模仿的是IP数据报的首部:
源IP、目的IP(4B)
0(1B):固定字段
17(1B):UDP的协议对应
UDP长度(2B):UDP首部8B+数据部分长度,不包括伪首部
若不使用校验,则将校验和字段全部置0
发送方
加上伪首部
全0填充检验和字段
全0填充数据部分(使整个UDP数据报是4字节的整数倍)
将伪首部+首部+数据字段进行二进制反码求和
以16bit(2B)为一组分开进行求和(校验和字段长度)
将求和结果填入检验和字段
若结果恰好全为0,则全部填入1
去掉伪首部
发送
接收方
加上伪首部
将伪首部+首部+数据字段进行二进制反码求和
结果全为1,则无差错
否则视情况丢弃数据,或交给应用层并附上差错警告