fbpx
维基百科

轻量用户数据报协议

UDP-LiteLightweight User Datagram Protocol[1]轻量用户数据报协议),或者简称:UDP Lite),是一种无连接通信传输层协议,允许将有潜在损坏的数据负载发送给接收方,而不会被接收方直接丢弃,因为它允许一些应用层协议(例如一些视频编码传输的协议)在了解自己应用数据的损坏影响的情况,对数据完整度的控制决定。它定义于RFC 3828[1]

协议介绍

UDP-Lite是基于用户数据报协议(UDP),但又不同于UDP,它允许对数据报的任意长度计算相应的校验和进行验证保护,通过UDP数据包头的“报文长度”字段来控制需要计算校验和的数据包长度,从而容许没被校验和覆盖的数据部分可能有损地传输。它被用于设计多媒体数据传输协议,例如VoIP或流视频协议,这些协议会认为接收有一定程度损坏的数据比没接收到数据要好,对于其他传输层协议,例如传输控制协议(TCP)、用户数据报协议,校验和会覆盖整个数据包的负载,一旦数据包即使有一个字节的损坏,接收方都会因为校验和验证失败而丢弃整个数据包,单个字节的错误会影响整个数据包的接收,但对于这些应用层协议来说,这些损坏是微不足道的。

对于大部分现在多媒体编解码处理程序,其处理的应用数据本身就内建了对数据错误的检测和回放时的错误纠正的机制。UDP-Lite很适合配合这些应用程序使用,因为这些应用本身能接受有损坏的应用数据,能容许少量的数据损坏被接收而非因为校验和错误导致整个数据被丢弃。应用层了解自己应用数据各部分的重要性,从而允许负载数据前部分受校验和保护,而非整个数据包强制受校验和保护。在Hammer等人的研究中,UDP-Lite与AMR编解码器结合使用,可在有损网络条件下提高语音质量。[2]

由于数据链路层也存在校验和机制用于丢弃数据有损坏的数据帧,所以UDP-Lite也需要了解其数据链路层,从而需要相应的驱动程序调整。

UDP-Lite的IP协议号为136,可以使用互联网号码分配局(IANA)分配给UDP的相同功能端口。为了和UDP保持兼容,UDP-Lite使用和UDP、TCP相同的校验和算法。[3]

实现支持

以下操作系统有相应的实现支持:

使用

Berkeley套接字中,使用UDP-Lite的话,需要在调用socket创建方法socket时增加第三个参数值IPPROTO_UDPLITE[8]

int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDPLITE); 

然后在设置socket参数方法setsockopt添加控制校验和需要覆盖长度的控制参数(计算长度值是从数据包头开始):

int val = 20; /* 8字节长的包头 + 12字节的负载长度 */ (void)setsockopt(fd, SOL_UDPLITE, UDPLITE_SEND_CSCOV, &val, sizeof val); /* 如果实际负载长度小于12字节,则等同整个数据包都被校验和覆盖 */ 

默认情况下,接收方将丢弃所有校验和未完全覆盖的数据包,如同UDP那样,所以接收方也需要类似的接收设置:

int val = 20; /* 8字节长的包头 + 12字节的负载长度 */ (void)setsockopt(fd, SOL_UDPLITE, UDPLITE_RECV_CSCOV, &val, sizeof val); 

这样至少保证负载长度为12字节长的部分数据被校验和保护,任何少于12字节长负载的数据包会被协议视为坏包而丢弃,而如果数据包的覆盖长度值至少为20字节长(包括数据包头),并且其校验和正确,则将其交付给应用层的应用程序。如果校验和不正确,数据包同样被丢弃。校验和覆盖值可以等于0或大于等于8字节时,也就是校验和的校验部分至少包括数据包头,以防止一些对所有流量都感兴趣的嗅探器。

参考文献

  1. ^ 1.0 1.1 Fairhurst, Godred. The Lightweight User Datagram Protocol (UDP-Lite). tools.ietf.org. [2020-03-08]. (原始内容于2021-04-23) (英语). 
  2. ^ Corrupted Speech Data Considered Useful, 2003. [2012-01-12]. (原始内容于2015-12-22). 
  3. ^ Computing the Internet Checksum, RFC 1071. [2012-01-12]. (原始内容于2021-05-02). 
  4. ^ 存档副本. [2020-03-08]. (原始内容于2020-12-22). 
  5. ^ Commit message for introduction into CURRENT. [2014-07-26]. (原始内容于2017-07-06). 
  6. ^ udplite(7) - Linux manual page. man7.org. [2020-03-08]. (原始内容于2021-01-22). 
  7. ^ Laurent Guillo, Cécile Marc. WULL: A Windows UDP-Lite library (PDF). IRISA. 10 January 2005 [2015-12-15]. (原始内容 (PDF)于2014-08-10). 
  8. ^ UDP-Lite Howto (kernel and userland applications). [2015-10-11]. (原始内容于2021-03-23). 

外部链接

  • RFC 3828 — The Lightweight User Datagram Protocol (UDP-Lite)
  • RFC 5097 — MIB for the UDP-Lite protocol
  • RFC 4019 — RObust Header Compression (ROHC): Profiles for User Datagram Protocol (UDP) Lite
  • RFC 5405 — Unicast UDP Usage Guidelines for Application Designers

轻量用户数据报协议, lite, lightweight, user, datagram, protocol, 或者简称, lite, 是一种无连接通信的传输层协议, 允许将有潜在损坏的数据负载发送给接收方, 而不会被接收方直接丢弃, 因为它允许一些应用层协议, 例如一些视频编码传输的协议, 在了解自己应用数据的损坏影响的情况, 对数据完整度的控制决定, 它定义于rfc, 3828, 目录, 协议介绍, 实现支持, 使用, 参考文献, 外部链接协议介绍, 编辑udp, lite是基于用户数据报协议, 但又不同于ud. UDP Lite Lightweight User Datagram Protocol 1 轻量用户数据报协议 或者简称 UDP Lite 是一种无连接通信的传输层协议 允许将有潜在损坏的数据负载发送给接收方 而不会被接收方直接丢弃 因为它允许一些应用层协议 例如一些视频编码传输的协议 在了解自己应用数据的损坏影响的情况 对数据完整度的控制决定 它定义于RFC 3828 1 目录 1 协议介绍 2 实现支持 3 使用 4 参考文献 5 外部链接协议介绍 编辑UDP Lite是基于用户数据报协议 UDP 但又不同于UDP 它允许对数据报的任意长度计算相应的校验和进行验证保护 通过UDP数据包头的 报文长度 字段来控制需要计算校验和的数据包长度 从而容许没被校验和覆盖的数据部分可能有损地传输 它被用于设计多媒体数据传输协议 例如VoIP或流视频协议 这些协议会认为接收有一定程度损坏的数据比没接收到数据要好 对于其他传输层协议 例如传输控制协议 TCP 用户数据报协议 校验和会覆盖整个数据包的负载 一旦数据包即使有一个字节的损坏 接收方都会因为校验和验证失败而丢弃整个数据包 单个字节的错误会影响整个数据包的接收 但对于这些应用层协议来说 这些损坏是微不足道的 对于大部分现在多媒体编解码处理程序 其处理的应用数据本身就内建了对数据错误的检测和回放时的错误纠正的机制 UDP Lite很适合配合这些应用程序使用 因为这些应用本身能接受有损坏的应用数据 能容许少量的数据损坏被接收而非因为校验和错误导致整个数据被丢弃 应用层了解自己应用数据各部分的重要性 从而允许负载数据前部分受校验和保护 而非整个数据包强制受校验和保护 在Hammer等人的研究中 UDP Lite与AMR编解码器结合使用 可在有损网络条件下提高语音质量 2 由于数据链路层也存在校验和机制用于丢弃数据有损坏的数据帧 所以UDP Lite也需要了解其数据链路层 从而需要相应的驱动程序调整 UDP Lite的IP协议号为136 可以使用互联网号码分配局 IANA 分配给UDP的相同功能端口 为了和UDP保持兼容 UDP Lite使用和UDP TCP相同的校验和算法 3 实现支持 编辑以下操作系统有相应的实现支持 FreeBSD 自10 1 RELEASE版本可用 4 自r264212引入特性 5 Linux内核 自2 6 20版本 6 Windows存在第三方支持 WALL 7 使用 编辑在Berkeley套接字中 使用UDP Lite的话 需要在调用socket创建方法socket时增加第三个参数值IPPROTO UDPLITE 8 int fd socket PF INET SOCK DGRAM IPPROTO UDPLITE 然后在设置socket参数方法setsockopt添加控制校验和需要覆盖长度的控制参数 计算长度值是从数据包头开始 int val 20 8字节长的包头 12字节的负载长度 void setsockopt fd SOL UDPLITE UDPLITE SEND CSCOV amp val sizeof val 如果实际负载长度小于12字节 则等同整个数据包都被校验和覆盖 默认情况下 接收方将丢弃所有校验和未完全覆盖的数据包 如同UDP那样 所以接收方也需要类似的接收设置 int val 20 8字节长的包头 12字节的负载长度 void setsockopt fd SOL UDPLITE UDPLITE RECV CSCOV amp val sizeof val 这样至少保证负载长度为12字节长的部分数据被校验和保护 任何少于12字节长负载的数据包会被协议视为坏包而丢弃 而如果数据包的覆盖长度值至少为20字节长 包括数据包头 并且其校验和正确 则将其交付给应用层的应用程序 如果校验和不正确 数据包同样被丢弃 校验和覆盖值可以等于0或大于等于8字节时 也就是校验和的校验部分至少包括数据包头 以防止一些对所有流量都感兴趣的嗅探器 参考文献 编辑 1 0 1 1 Fairhurst Godred The Lightweight User Datagram Protocol UDP Lite tools ietf org 2020 03 08 原始内容存档于2021 04 23 英语 Corrupted Speech Data Considered Useful 2003 2012 01 12 原始内容存档于2015 12 22 Computing the Internet Checksum RFC 1071 2012 01 12 原始内容存档于2021 05 02 存档副本 2020 03 08 原始内容存档于2020 12 22 Commit message for introduction into CURRENT 2014 07 26 原始内容存档于2017 07 06 udplite 7 Linux manual page man7 org 2020 03 08 原始内容存档于2021 01 22 Laurent Guillo Cecile Marc WULL A Windows UDP Lite library PDF IRISA 10 January 2005 2015 12 15 原始内容存档 PDF 于2014 08 10 UDP Lite Howto kernel and userland applications 2015 10 11 原始内容存档于2021 03 23 外部链接 编辑RFC 3828 The Lightweight User Datagram Protocol UDP Lite RFC 5097 MIB for the UDP Lite protocol RFC 4019 RObust Header Compression ROHC Profiles for User Datagram Protocol UDP Lite RFC 5405 Unicast UDP Usage Guidelines for Application Designers 取自 https zh wikipedia org w index php title 轻量用户数据报协议 amp oldid 70868599, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。