UDP 协议学习总结 您所在的位置:网站首页 udp协议使用 UDP 协议学习总结

UDP 协议学习总结

2023-03-10 02:21| 来源: 网络整理| 查看: 265

UDP 协议

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

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

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

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

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

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

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

UDP 包头 type UDP struct { Source_Port uint16 Destination_Port uint16 Length uint16 Checksum uint16 }

UDP 报头包括 4 个字段,每个字段占用 2 个字节(即 16 个二进制位)。

在 IPv4 中,源连接端口(Source Port)和校验和(Checksum)是可选字段。因为UDP不需要应答,所以源端口是可选的,如果源端口不用,那么置为零。校验和部分同样是可选的,但在实际应用中一般都使用这一功能。长度域(Length)部分用来指定 UDP 数据报包括数据部分的长度,长度最小值为 8 字节,且由于这个字段的限制,UDP 报文的总长度不能超过 65535 字节。在 IPv6 的 巨型包(jumbogram)中,是有可能传输超过 65535 字节的 UDP 数据包的。依据 RFC 2675,如果这种情况发生,报文长度应被填写为 0

UDP 的 伪头部 type UDP_PsedoHeader struct { Source_Address uint32 Destination_Address uint32 Zeroes uint8 Protocol uint8 UDP_Length uint16 }

当 UDP 运行在 IPv4 之上时,为了能够计算校验和,需要在 UDP 数据包前添加一个伪头部(Psedo-Header)。伪头部仅用于计算校验和,不参与传输,发送方将计算完毕的校验和填入头部的校验和字段后,就会将伪头部去除,再发送出去。

UDP 校验和计算对于 IPv4 是可选的。如果未使用校验和,则应将其设置为值零。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有