C++网络编程之UDP协议

概述

UDP,即用户数据报协议,英文全称为User Datagram Protocol,是一种无连接的、不可靠的传输层协议。与TCP相比,UDP提供了更低的延迟和更少的开销,但不保证数据的可靠传输。在某些应用场景中,低延迟比数据的可靠性更为重要,这时UDP就成为了一个最佳的选择。

UDP协议主要具有以下五个特点。

1、无连接。UDP不需要建立连接,就可以直接发送数据。这意味着没有三次握手的过程,减少了网络延迟。

2、不可靠。UDP不提供数据包的确认、重传或排序功能。如果数据包丢失、重复或乱序,UDP不会进行处理。

3、面向数据报。每个数据报都是独立的,包含完整的源端口、目的端口、长度、校验和等信息。

4、低开销。由于不需要维护连接状态和复杂的错误控制机制,UDP的头部非常简单。

5、广播支持。UDP支持广播和多播,可以将数据同时发送到多个接收者。

报文格式

UDP的报文包括两个部分:报文头和数据。报文头固定为8个字节,各个字段的含义如下。

1、源端口号:2字节,标识发送方的应用程序端口。如果不需要源端口,可以设置为0。

2、目的端口号:2字节,标识接收方的应用程序端口,必须设置一个有效的端口号。

3、长度:2字节,表示整个UDP报文段的长度(包括报文头和数据),最小值为8字节(仅报文头)。

4、校验和:2字节,用于检测UDP报文头和数据在传输过程中是否发生了改变。这个字段是可选的,如果设置为0,则表示没有校验和。

报文头之后便是实际要传输的数据,长度不定,取决于应用的需求。

单播、广播、组播

UDP支持三种主要的通信方式:单播(Unicast)、广播(Broadcast)、组播(Multicast)。每种方式都有其特定的应用场景和特点,下面分别进行介绍。

1、单播。单播是最常见的网络通信方式,它是指从一个发送者到一个特定接收者的点对点通信。大多数基于TCP/IP的应用程序都使用单播,比如:Web浏览、电子邮件等。单播的优点是:高效、简单,数据直接从源发送到目的地,没有多余的复制和传输。缺点是:如果需要将相同的数据发送给多个接收者,必须为每个接收者单独发送一份数据,会导致带宽浪费。

2、广播。广播是指发送者将数据包发送到本地网络中的所有主机。在广播中,目标地址是一个特殊的广播地址,通常是255.255.255.255(对于IPv4)或FF02::1(对于IPv6)。广播的应用场景包括:DHCP(动态主机配置协议)、ARP(地址解析协议)、路由器发现等。广播的优点是:实现简单,适用于局域网内的快速信息传播。缺点是:广播会将数据包发送到网络中的每一个设备,即使这些设备并不需要该数据,这可能会导致网络拥塞。另外,广播不能跨越路由器,容易被监听,可能会泄露敏感信息。

3、组播。组播是一种一对多或多对多的通信方式,发送者将数据包发送到一组特定的接收者,接收者通过加入一个组播组来接收数据。组播的应用场景包括:IPTV、在线直播、视频会议等。组播的优点是:节省带宽,数据在网络中仅传输一次,然后由路由器等设备负责将数据复制并分发给多个接收者。另外,组播的可扩展性强,可以轻松地添加或移除接收者,而不需要修改发送者的行为。组播的缺点是:实现和配置复杂,需要路由器和交换机等设备支持组播路由,并正确配置组播组和相关的网络设备。

应用场景

UDP协议因其低延迟、高效率和简单的特性,在多种应用场景中被广泛使用。一些典型的应用场景如下。

1、实时视频/音频流:比如VoIP、直播等,这些应用对延迟的要求很高,可以容忍少量的数据丢失。

2、在线游戏:游戏中玩家的操作和状态更新需要快速响应,使用UDP可以减少延迟。

3、DNS查询:域名系统查询通常使用UDP,因为查询请求和响应都很小,且不要求绝对的可靠性。

4、NTP(网络时间协议):用于同步计算机时钟,对数据的一致性和准确性要求不高。

相关推荐
HH牛码8 分钟前
通讯的基础概念:涵盖串行通信、并行通信、TCP、UDP、Socket 等关键概念和技术
tcp/ip·udp
Gazer_S1 小时前
【HTTP/2:信息高速公路的革命】
网络·网络协议·http
lLinkl1 小时前
项目笔记2:post请求是什么,还有什么请求
服务器·网络协议·http
李匠20241 小时前
C++ RPC以及cmake
网络·c++·网络协议·rpc
科技小E1 小时前
EasyRTC音视频实时通话嵌入式SDK,打造社交娱乐低延迟实时互动的新体验
大数据·网络
静听夜半雨3 小时前
CANoe入门——3、新建LIN工程及LIN DataBase(LDF文件)的创建
网络·数据库·c++·编辑器
Jackilina_Stone3 小时前
【网工第6版】第5章 网络互联⑧
网络·软考·网工·第5章 网络互联
电鱼智能的电小鱼3 小时前
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案‌
linux·网络·人工智能·嵌入式硬件·无人机·边缘计算
花千树-0103 小时前
使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透
网络协议·http·https
夜空晚星灿烂3 小时前
http通信之axios vs fecth该如何选择?
网络·网络协议·http