UDP根本了解
TCP、UDP区别
TCP(Transfer Control Protocol) UDP(User Datagram Protocol )
- 连接:TCP是面向连接的传输协议,传输数据前须要先建立连接。而UDP不须要连接,即刻传输数据
- 服务对象:TCP是一对一的两点服务,即一条连接只有两个端点,UDP支持一对一,一对多,多对多的交互通讯
- 可靠性:TCP是可靠交付数据,数据可以无不对,不丢失,不重复,按序到达。UDP则是尽最大努力交付。不保证可靠交付数据。但是我们可以基于UDP传输协议实现可靠的传输协议,如QUIC协议
- 拥塞控制、流量控制:TCP有拥塞控制和流量控制来保证数据传输的安全性。UDP没有,纵然网络变得拥挤也不影响UDP速率。
- 首部开销:TCP首部较长,会有肯定的开销,首部没有“选项”字段占20字节,有的话首部则会变长。而UDP只有8个字节,且长度固定稳定开销小。
- 传输方式:TCP是流式传输、没有边界、但保证序次和可靠。UDP是一个包一个包的发送,是有边界的,但可能会丢失包和乱序。
详细来看
UDP(User Datagram Protocol)即用户数据报协议,是一种简单的传输层协议,与 TCP 协议相比,具有不同的特点和应用场景。
主要特点
- 无连接
- UDP 在传输数据之前不须要建立连接,发送方直接将数据封装成 UDP 数据报发送给吸取方。这使得 UDP 的通讯过程更加简单和高效,减少了建立和开释连接的开销,例如延迟时间和资源消耗。
- 但是这种无连接的特性也意味着 UDP 无法保证数据传输的序次性和可靠性,数据报可能会丢失、重复大概乱序到达吸取方。
- 不可靠传输
- 由于 UDP 没有像 TCP 那样简直认、重传和流量控制机制,以是它不能保证数据肯定能够被吸取方正确吸取。当数据报在网络传输过程中出现丢失、损坏大概被丢弃的情况时,UDP 不会自动进行重传。
- 这种不可靠性在某些对实时性要求很高,但对数据完整性要求相对较低的场景下是可以接受的,甚至是更有利的,因为它可以减少因重传等机制带来的延迟。
- 面向报文
- UDP 是面向报文的,它对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。这意味着应用步伐交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。
- 吸取方收到 UDP 数据报后,在将数据交付给应用层时,也会保持报文的边界稳定。这与 TCP 面向字节流的特性形成对比,TCP 会将数据看作无布局的字节流进行处理惩罚。
- 高效性
- UDP 协议头部短小,只有 8 个字节,相比 TCP 头部(通常至少 20 个字节)开销更小。在数据传输过程中,UDP 不须要进行复杂的连接建立、维护和拆除操纵,也没有像 TCP 那样的拥塞控制和流量控制机制,这使得 UDP 在发送数据时更加高效,能够快速地将数据发送出去。
- 这种高效性使得 UDP 适合于那些对传输速度要求极高,对数据正确性要求相对较低的应用场景。
UDP 报文格式
UDP 报文由首部和数据两部分构成,首部格式比较简单,只有 8 个字节,详细如下:
源端口(16 位)目的端口(16 位)长度(16 位)校验和(16 位)
其中,源端口和目的端口用于标识发送方和吸取方的应用步伐;长度字段表示 UDP 数据报的总长度,包括首部和数据部分;校验和字段用于检验数据在传输过程中是否出现错误,是可选字段,当不盘算校验和时,该字段置为 0。
工作原理
- 数据封装
- 发送方的应用步伐将数据交给 UDP 层后,UDP 会将数据封装成 UDP 数据报。它会在数据报的首部添加源端口、目的端口、长度和校验和等信息,然后将整个数据报交给网络层进行传输。
- 数据传输
- 网络层将 UDP 数据报封装成 IP 数据报(因为 UDP 是基于 IP 协议的),并通过网络发送给吸取方。在网络传输过程中,数据报可能会经过多个路由器和网络链路,由于 UDP 没有对传输路径进行控制和保证,数据报可能会在传输过程中出现丢失、延迟大概乱序等情况。
- 数据吸取与交付
- 吸取方的网络层收到 IP 数据报后,会将其解封装,把 UDP 数据报交给 UDP 层。UDP 层会检查数据报的目的端口是否与本地应用步伐的端口匹配,如果匹配,则将数据报的数据部分交付给相应的应用步伐。如果数据报在传输过程中出现错误(例如校验和不匹配),UDP 通常会直接丢弃该数据报,而不会关照发送方。
应用场景
- 实时视频和音频传输
- 例如在线视频直播、IP 电话等应用。这些应用对实时性要求非常高,少量的数据丢失大概错误对于用户体验的影响相对较小,而延迟是更须要关注的问题。UDP 可以快速地将音频和视频数据发送出去,减少因为重传等机制导致的延迟,保证明时性。
- 网络游戏
- 许多网络游戏须要快速地在客户端和服务器之间通报玩家的操纵指令和游戏状态信息。虽然数据的正确性也很紧张,但在肯定水平上可以接受少量数据的丢失大概错误,因为游戏通常会有本身的机制来处理惩罚这些情况(例如预测和补偿机制)。UDP 的高效性可以保证游戏的流通性和实时相应。
- 简单的查询 - 相应系统
- 如 DNS(域名系统)查询。当客户端向 DNS 服务器发送域名查询哀求时,哀求的数据量通常较小,而且一次查询如果失败,可以很快进行下一次查询。UDP 的无连接和高效特性使得它适适用于这种简单的查询 - 相应场景,能够快速地获取查询结果。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |