fbpx
维基百科

用户数据报协议

用户数据报协议(英語:User Datagram Protocol,縮寫:UDP;又稱用户資料包协议)是一个简单的面向資料包通信协议,位于OSI模型传输层。该协议由David P. Reed英语David P. Reed在1980年设计且在RFC 768中被规范。典型网络上的众多使用UDP协议的关键应用在一定程度上是相似的。

TCP/IP模型中,UDP为网络层以上和应用层以下提供了一个简单的接口。UDP只提供資料的不可靠传递,它一旦把应用程序发给网络层的資料发送出去,就不保留資料备份(所以UDP有时候也被认为是不可靠的資料包协议)。UDP在IP資料包的头部仅仅加入了复用和資料校验字段。

UDP适用于不需要或在程序中执行错误检查和纠正应用,它避免了协议栈中此类处理的开销英语Overhead (computing)。对时间有较高要求的应用程序通常使用UDP,因为丢弃資料包比等待或重传导致延迟更可取。

可靠性

由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。某些应用程序(如TFTP)可能会根据需要在应用程序层中添加基本的可靠性机制。[1]

一些应用程序不太需要可靠性机制,甚至可能因为引入可靠性机制而降低性能,所以它们使用UDP这种缺乏可靠性的协议。流媒体,实时多人游戏和IP语音(VoIP)是经常使用UDP的应用程序。 在这些特定应用中,丢包通常不是重大问题。如果应用程序需要高度可靠性,则可以使用诸如TCP之类的协议。

例如,在VoIP中延迟抖动是主要问题。如果使用TCP,那么任何数据包丢失或错误都将导致抖动,因为TCP在请求及重传丢失数据时不向应用程序提供后续数据。如果使用TCP,那么应用程序则需要提供必要的握手,例如实时确认已收到的消息。

由于UDP缺乏拥塞控制,所以需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应。换句话说,因为UDP发送端无法检测拥塞,所以像使用包队列和丢弃技术的路由器之类的网络基础设备会被用于降低UDP过大流量。数据拥塞控制协议(DCCP)设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制,来减小这个潜在的问题。


应用

许多关键的互联网应用程序使用UDP[2],包括:

串流媒體線上遊戲流量通常使用UDP传输。 实时视频流和音频流应用程序旨在处理偶尔丢失、错误的数据包,因此只会发生质量轻微下降,而避免了重传数据包带来的高延迟。 由于TCP和UDP都在同一网络上运行,因此一些企业发现来自这些实时应用程序的UDP流量影响了使用TCP的应用程序的性能,例如销售会计数据库系统。 当TCP检测到数据包丢失时,它将限制其数据速率使用率。由于实时和业务应用程序对企业都很重要,因此一些人认为开发服务质量解决方案至关重要。[3]

某些VPN应用(如OpenVPN)使用UDP并可以在应用程序级别实现可靠连接和错误检查。

UDP的分组结构

UDP报头
偏移 字节 0 1 2 3
字节  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 来源连接端口 目的连接端口
4 32 报文长度 校验和

UDP报头包括4个字段,每个字段占用2个字节(即16个二进制位)。在IPv4中,“来源连接端口”和“校验和”是可选字段(以粉色背景标出)。在IPv6中,只有来源连接端口是可选字段。 各16bit的來源端口和目的端口用来标记发送和接受的应用进程。因为UDP不需要应答,所以來源端口是可选的,如果來源端口不用,那么置为零。在目的端口后面是长度固定的以字节为单位的长度域,用来指定UDP数据报包括数据部分的长度,长度最小值为8byte。首部剩下地16bit是用来对首部和数据部分一起做校驗和(Checksum)的,这部分是可选的,但在实际应用中一般都使用这一功能。

报文长度
该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。实际上通过IPv4协议传输时,由于IPv4的头部信息要占用20字节,因此数据长度不可能超过65507字节(65,535 − 8字节UDP报头 − 20字节IP头部)。
在IPv6的jumbogram中,是有可能传输超过65535字节的UDP数据包的。依据RFC 2675,如果这种情况发生,报文长度应被填写为0。
校验和
校验和字段可以用于发现头部信息和数据中的传输错误。该字段在IPv4中是可选的,在IPv6中则是强制的。如果不使用校验和,该字段应被填充为全0。

UDP校验和计算

IPv4伪头部

当UDP运行在IPv4之上时,为了能够计算校验和,需要在UDP数据包前添加一个“伪头部”。伪头部包括了IPv4头部中的一些信息,但它并不是发送IP数据包时使用的IP数据包的头部,而只是一个用来计算校验和而已。

0 – 7 8 – 15 16 – 23 24 – 31
0 来源地址
32 目的地址
64 全零 协议名 UDP报文长度
96 来源连接端口 目的连接端口
128 报文长度 检验和
160+  
数据
 

IPv6伪头部

当UDP运行于IPV6之上时,校验和是必须的,其计算方法位于RFC 2460:

任何包含来自IP头地址的传输层或其他上层协议,其校验和计算必须被修改,以适应IPv6的128位ip地址。[4]

IPv6伪头部是生成校验和所用的数据。

0 – 7 8 – 15 16 – 23 24 – 31
0 来源地址
32
64
96
128 目的地址
160
192
224
256 UDP报文长度
288 全零 下一个指针位置
320 来源连接端口 目的连接端口
352 报文长度 校验和
384+  
数据
 

参见

参考文献

  1. ^ Forouzan, B.A. (2000). TCP/IP: Protocol Suite, 1st ed. New Delhi, India: Tata McGraw-Hill Publishing Company Limited.
  2. ^ Kurose, J. F.; Ross, K. W. Computer Networking: A Top-Down Approach 5th. Boston, MA: Pearson Education. 2010. ISBN 978-0-13-136548-3. 
  3. ^ The impact of UDP on Data Applications. Networkperformancedaily.com. [17 August 2011]. (原始内容存档于31 July 2007).  已忽略未知参数|df= (帮助)
  4. ^ Deering S. & Hinden R. Internet Protocol, Version 6 (IPv6) Specification. Internet Engineering Task Force. December 1998 [2019-01-22]. RFC 2460 . (原始内容于2011-04-06). 

外部链接

用户数据报协议, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目包含過多行話或專業術語, 可能需要簡化或提出進一步解釋, 2019年4月12日, 請在討論頁中發表對於本議題的看法, 並移除或解釋本條目中的行話, 此條目需要編修, 以確保文法, 用詞, 语气, 格式, 標點等使用恰当, 2019年4月11日, 請按照校對指引, 幫助编辑這個條目, 幫助, 討論, 此條目需要擴充, 2018年9月8日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目包含過多行話或專業術語 可能需要簡化或提出進一步解釋 2019年4月12日 請在討論頁中發表對於本議題的看法 並移除或解釋本條目中的行話 此條目需要編修 以確保文法 用詞 语气 格式 標點等使用恰当 2019年4月11日 請按照校對指引 幫助编辑這個條目 幫助 討論 此條目需要擴充 2018年9月8日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 用户数据报协议 英語 User Datagram Protocol 縮寫 UDP 又稱用户資料包协议 是一个简单的面向資料包的通信协议 位于OSI模型的传输层 该协议由David P Reed 英语 David P Reed 在1980年设计且在RFC 768中被规范 典型网络上的众多使用UDP协议的关键应用在一定程度上是相似的 在TCP IP模型中 UDP为网络层以上和应用层以下提供了一个简单的接口 UDP只提供資料的不可靠传递 它一旦把应用程序发给网络层的資料发送出去 就不保留資料备份 所以UDP有时候也被认为是不可靠的資料包协议 UDP在IP資料包的头部仅仅加入了复用和資料校验字段 UDP适用于不需要或在程序中执行错误检查和纠正的应用 它避免了协议栈中此类处理的开销 英语 Overhead computing 对时间有较高要求的应用程序通常使用UDP 因为丢弃資料包比等待或重传导致延迟更可取 目录 1 可靠性 2 应用 3 UDP的分组结构 4 UDP校验和计算 4 1 IPv4伪头部 4 2 IPv6伪头部 5 参见 6 参考文献 7 外部链接可靠性 编辑由于UDP缺乏可靠性且属于无连接协议 所以应用程序通常必须容许一些丢失 错误或重复的数据包 某些应用程序 如TFTP 可能会根据需要在应用程序层中添加基本的可靠性机制 1 一些应用程序不太需要可靠性机制 甚至可能因为引入可靠性机制而降低性能 所以它们使用UDP这种缺乏可靠性的协议 流媒体 实时多人游戏和IP语音 VoIP 是经常使用UDP的应用程序 在这些特定应用中 丢包通常不是重大问题 如果应用程序需要高度可靠性 则可以使用诸如TCP之类的协议 例如 在VoIP中延迟和抖动是主要问题 如果使用TCP 那么任何数据包丢失或错误都将导致抖动 因为TCP在请求及重传丢失数据时不向应用程序提供后续数据 如果使用TCP 那么应用程序则需要提供必要的握手 例如实时确认已收到的消息 由于UDP缺乏拥塞控制 所以需要基于网络的机制来减少因失控和高速UDP流量负荷而导致的拥塞崩溃效应 换句话说 因为UDP发送端无法检测拥塞 所以像使用包队列和丢弃技术的路由器之类的网络基础设备会被用于降低UDP过大流量 数据拥塞控制协议 DCCP 设计成通过在诸如流媒体类型的高速率UDP流中增加主机拥塞控制 来减小这个潜在的问题 应用 编辑许多关键的互联网应用程序使用UDP 2 包括 域名系统 DNS 其中查询阶段必须快速 并且只包含单个请求 后跟单个回复数据包 动态主机配置协议 DHCP 用于动态分配IP地址 简单网络管理协议 SNMP 路由信息协议 RIP 網路時間協定 NTP 串流媒體 線上遊戲流量通常使用UDP传输 实时视频流和音频流应用程序旨在处理偶尔丢失 错误的数据包 因此只会发生质量轻微下降 而避免了重传数据包带来的高延迟 由于TCP和UDP都在同一网络上运行 因此一些企业发现来自这些实时应用程序的UDP流量影响了使用TCP的应用程序的性能 例如销售 会计和数据库系统 当TCP检测到数据包丢失时 它将限制其数据速率使用率 由于实时和业务应用程序对企业都很重要 因此一些人认为开发服务质量解决方案至关重要 3 某些VPN应用 如OpenVPN 使用UDP并可以在应用程序级别实现可靠连接和错误检查 UDP的分组结构 编辑UDP报头 偏移 字节 0 1 2 3字节 位 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 310 0 来源连接端口 目的连接端口4 32 报文长度 校验和UDP报头包括4个字段 每个字段占用2个字节 即16个二进制位 在IPv4中 来源连接端口 和 校验和 是可选字段 以粉色背景标出 在IPv6中 只有来源连接端口是可选字段 各16bit的來源端口和目的端口用来标记发送和接受的应用进程 因为UDP不需要应答 所以來源端口是可选的 如果來源端口不用 那么置为零 在目的端口后面是长度固定的以字节为单位的长度域 用来指定UDP数据报包括数据部分的长度 长度最小值为8byte 首部剩下地16bit是用来对首部和数据部分一起做校驗和 Checksum 的 这部分是可选的 但在实际应用中一般都使用这一功能 报文长度 该字段指定UDP报头和数据总共占用的长度 可能的最小长度是8字节 因为UDP报头已经占用了8字节 由于这个字段的存在 UDP报文总长不可能超过65535字节 包括8字节的报头 和65527字节的数据 实际上通过IPv4协议传输时 由于IPv4的头部信息要占用20字节 因此数据长度不可能超过65507字节 65 535 8字节UDP报头 20字节IP头部 在IPv6的jumbogram中 是有可能传输超过65535字节的UDP数据包的 依据RFC 2675 如果这种情况发生 报文长度应被填写为0 校验和 校验和字段可以用于发现头部信息和数据中的传输错误 该字段在IPv4中是可选的 在IPv6中则是强制的 如果不使用校验和 该字段应被填充为全0 UDP校验和计算 编辑IPv4伪头部 编辑 当UDP运行在IPv4之上时 为了能够计算校验和 需要在UDP数据包前添加一个 伪头部 伪头部包括了IPv4头部中的一些信息 但它并不是发送IP数据包时使用的IP数据包的头部 而只是一个用来计算校验和而已 位 0 7 8 15 16 23 24 310 来源地址32 目的地址64 全零 协议名 UDP报文长度96 来源连接端口 目的连接端口128 报文长度 检验和160 数据 IPv6伪头部 编辑 当UDP运行于IPV6之上时 校验和是必须的 其计算方法位于RFC 2460 任何包含来自IP头地址的传输层或其他上层协议 其校验和计算必须被修改 以适应IPv6的128位ip地址 4 IPv6伪头部是生成校验和所用的数据 位 0 7 8 15 16 23 24 310 来源地址326496128 目的地址160192224256 UDP报文长度288 全零 下一个指针位置320 来源连接端口 目的连接端口352 报文长度 校验和384 数据 参见 编辑TCP UDP端口列表 UDP Lite 一种通过减少校验和覆盖程度来提升数据可达性的改进 Micro Transport Protocol 基于UDP的数据传输协议参考文献 编辑 Forouzan B A 2000 TCP IP Protocol Suite 1st ed New Delhi India Tata McGraw Hill Publishing Company Limited Kurose J F Ross K W Computer Networking A Top Down Approach 5th Boston MA Pearson Education 2010 ISBN 978 0 13 136548 3 The impact of UDP on Data Applications Networkperformancedaily com 17 August 2011 原始内容存档于31 July 2007 已忽略未知参数 df 帮助 Deering S amp Hinden R Internet Protocol Version 6 IPv6 Specification Internet Engineering Task Force December 1998 2019 01 22 RFC 2460 原始内容存档于2011 04 06 外部链接 编辑RFC768 Archive is的存檔 存档日期2012 07 22 UDP协议详细资料 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 用户数据报协议 amp oldid 75534038, 维基百科,wiki,书籍,书籍,图书馆,

文章

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