UDP协议

UDP(User Datagram Protocol 即用户数据报协议)是传输层的重要协议之一(还有一个重要协议是TCP)

UDP协议端格式

UDP数据报 = 报头 + 载荷(应用层数据包)

其中UDP报头中一共有 4 个字段,每个字段 2 个字节(因此一共8字节)

即:

UDP报头中使用2个字节表示端口号,因此,端口号的取值范围为:0 - 65535,这也是合法端口号的取值范围,其中 0 - 1023 为知名端口号(例如ssh服务器,使用22端口,端口号是固定的),1024 - 65535为操作系统动态分配的端口号

16位UDP长度:整个数据报(UDP首部 + UDP数据)的最大长度

16位UDP校验和:检测数据经过传输后是否正确

网络中的数据传输,本质上是通过光信号、电信号等进行传播,而这些传输可能受到干扰,(例如,使用高电平表示1 低电平表示 0 ,在外界磁场的影响下,低电平就可能变为高电平,此时 0 就变为了 1,就发生了比特翻转,数据就出现了错误)因此,在接收数据后,要检测收到的数据是否正确(通过校验和检验),若检测发现数据有误,就可以将其丢弃
UDP校验和是如何进行校验的呢?

UDP使用了**CRC校验算法(循环冗余校验和)**来计算校验和,即将UDP数据报中的每个字节都进行累加,再将累加结果保存在2个字节的UDP校验和中(在这里不用考虑数据是否会溢出的问题,最终计算结果是多少就保存多少)

在发送UDP数据报之前,发送方先使用CRC校验算法,计算出校验和(v1),并将其保存到UDP数据报中

当接收方接收到数据后,也会使用CRC校验算法,计算出结果(v2),再比较v1和v2是否相同,若相同,则数据正确,若不同,则在传输过程中发送了比特翻转

UDP的特点

**无连接:**发送方只需要知道接收方的IP和端口号就可以直接进行传输了,不需要建立连接

**不可靠传输:**无确认机制也无重传机制,若由于网络故障导致数据无法发送给接收方,UDP协议层也不会向应用层返回任何错误信息

**面向数据报:**以数据报为单位进行传输,应用层交给UDP多长的报文,UDP原样发送,不能灵活控制读写数据的次数和数量

**有接收缓冲区,无发送缓冲区:**UDP无发送缓冲区,只要有数据,就进行发送,不管对方是否能够正确接收,因此不会缓冲,也就不需要发送缓冲区;而UDP有接收缓冲区,但不能保证收到的UDP报文顺序和发送UDP报文的顺序一致,当缓冲区满时,新的数据报无法进入接收缓冲区,此数据报就会被丢弃

**大小受限(一次最多传输64K):**由于UDP报头中使用2字节(取值范围为0 - 65535)来表示16位UDP长度,因此能传输的最大数据长度为64K(包括UDP首部)

由于使用UDP协议大小受限,那么,若需要传输的数据超过64K时,应该如何传输呢?

若需要传输的数据超过64K,则需要在应用层手动分包,多次发送,并在接收方手动拼装;或是改用TCP协议

基于UDP的应用层协议

NFS(Network File System):网络文件系统

TFTP(Trivial File Transfer Protocol):简单文件传输协议

DHCP(Dynamic Host Configuration Protocol):动态主机配置协议

DNS(Domain Name System):域名解析协议

SNMP(Simple Network Management Protocol):简单网络管理协议

...

相关推荐
yyuuuzz2 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
GlobalInfo2 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
运维行者_4 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
2401_868534784 小时前
陈冲2026年上海纽约大学全英文毕业演讲
服务器·网络
FPGA小迷弟6 小时前
FPGA开发Vivado Block Design/Vitis/SDK/xlinx/开发教程,保姆级别,一看就会!
网络协议·tcp/ip·fpga开发·verilog·fpga
FPGA小迷弟6 小时前
基于FPGA实现智能网卡的概念,什么是智能网卡
网络协议·tcp/ip·fpga开发·verilog·fpga
DYWorker0018 小时前
第1课:基于正点原子RK3568开发板读懂Linux内核
linux·运维·网络
Lzg_na9 小时前
数据链路层差错控制使用的算法详解
网络
努力努力再努力wz10 小时前
【C++ 高阶系列】C++ 高性能网络编程:当 Reactor 遇见协程:从 epoll 回调到异步 MySQL,彻底打通任务挂起与恢复
网络·c++·mysql
loulanyue_10 小时前
当AI学会自主攻击与渗透破壁:Agent行为链失控与Mythos级攻防颠覆下的安全范式重构——读CNCC2026第六届网络生态治理论坛实录
网络·人工智能·安全