UDPLITE - Linux手册页
Linux程序员手册 第7部分
更新日期: 2017-09-15
名称
udplite-轻量级用户数据报协议
语法
#包括
sockfd =套接字(AF_INET,SOCK_DGRAM,IPPROTO_UDPLITE);
说明
如RFC 3828中所述,这是轻量级用户数据报协议(UDP-Lite)的实现。
UDP-Lite是UDP(RFC 768)的扩展,以支持可变长度的校验和。这对于某些类型的多媒体传输具有优势,这些类型的多媒体传输可能能够使用略有损坏的数据报,而不是被较低层的协议丢弃。
可变长度校验和覆盖率是通过setsockopt(2)选项设置的。如果未设置此选项,则与UDP的唯一区别在于使用了不同的IP协议标识符(IANA号136)。
UDP-Lite实现是udp(7)的完整扩展,也就是说,它共享相同的API和API行为,此外还提供了两个套接字选项来控制校验和覆盖。
Address format
UDP-Litev4使用ip(7)中描述的sockaddr_in地址格式。 UDP-Litev6使用ipv6(7)中描述的sockaddr_in6地址格式。
Socket options
要设置或获取UDP-Lite套接字选项,请调用getsockopt(2)来读取或设置setsockopt(2)来写入选项级别参数设置为IPPROTO_UDPLITE的选项。此外,所有IPPROTO_UDP套接字选项在UDP-Lite套接字上均有效。有关更多信息,请参见udp(7)。
以下两个选项特定于UDP-Lite。
- UDPLITE_SEND_CSCOV
- 此选项设置发送方校验和的覆盖范围,并以int作为参数,校验和的覆盖范围为0..2 ^ 16-1。
- 值为0表示始终覆盖整个数据报。 1-7的值是非法的(RFC 3828,3.1),并四舍五入到最小覆盖范围8。
- 关于IPv6七巧图(RFC 2675),根据RFC 3828,3.5,UDP-Litev6校验和的覆盖范围仅限于前2 ^ 16-1个八位位组。因此,较高的值将被静默截断为2 ^ 16-1。如有疑问,可以始终使用getsockopt(2)查询当前coverage值。
- UDPLITE_RECV_CSCOV
- 这是接收方模拟,使用与UDPLITE_SEND_CSCOV相同的参数格式和值范围。启用部分校验和覆盖的流量不需要此选项。它的功能是流量过滤器的功能:启用后,它指示内核丢弃覆盖范围小于指定覆盖范围值的所有数据包。
- 当UDPLITE_RECV_CSCOV的值超出实际的数据包覆盖范围时,传入的数据包将被静默丢弃,但可能会在系统日志中生成警告消息。
错误说明
可能会返回针对udp(7)记录的所有错误。 UDP-Lite不会添加其他错误。
文件
- /proc/net/snmp
- 基本UDP-Litev4统计信息计数器。
- /proc/net/snmp6
- 基本的UDP-Litev6统计信息计数器。
版本
UDP-Litev4 / v6首次出现在Linux 2.6.20中。
BUGS
如果缺少glibc支持,则需要以下定义:
#define IPPROTO_UDPLITE 136 #define UDPLITE_SEND_CSCOV 10 #define UDPLITE_RECV_CSCOV 11
另外参见
ip(7),ipv6(7),socket(7),udp(7)
轻量级用户数据报协议(UDP-Lite)的RFC 3828。
Linux内核源代码树中的Documentation / networking / udplite.txt
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。