UDPLITE - Linux手册页

时间:2019-08-20 18:02:03  来源:igfitidea点击:

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/