【网络编程】UDP协议

协议格式

特点

1.无连接(Connectionless)

  • 特点:在发送数据之前,双方不需要像 TCP 那样先建立连接(三次握手)。

  • 结果:节省了建立连接的开销,速度快。

2. 不可靠(Unreliable)

  • 特点:UDP 不保证数据报能送达对方。它"尽力而为"地发送,不具备重传机制。

  • 后果:

    • 数据可能丢失。

    • 数据可能乱序到达(先发的包后到,后发的包先到)。

    • 数据可能重复。

3. 面向报文(Message-Oriented)

  • 特点 :UDP 是一个报文 一个报文地发送和接收,保留了消息的边界。

  • 区别 :TCP 是"面向字节流"的,你发两次数据,接收方可能一次就把它们合在一起读了出来。但 UDP 不会,你发一个 100 字节的数据包,接收方必须用一次 recvfrom 读 100 字节;如果你发一个 200 字节的包,但你只提供一个 100 字节的缓冲区去读,余下的 100 字节会被直接丢弃。

常见问题

1.为什么我们写socket时,port是16位的?

答:因为内核中udp协议规定!

2.a.报头和有效载荷如何分离?b.有效载荷分用问题。

答:UDP报文的报头长度是固定的,为16位。16位目的端口号可以解决分用问题。

3.UDP存在粘包问题吗?

答:不存在。因为它是以数据报格式传输数据的。

4.怎么理解UDP协议报头?

答:它是一个协议结构体struct udphdr。

5.如何理解封装过程?

答:本质就是对结构体变量进行拷贝。

6.如何理解报文?

操作系统使用结构体struct sk_buff来管理报文信息。报文贯穿协议栈,封包和解包的核心就是移动指针。

7.当收到一个报文,我们如何做到用文件原理,读数据到应用层?见下图

相关推荐
低慢小uav1 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
垆边人似月.1 小时前
RDMA项目踩坑(一):为什么最后一块数据必须使用实际长度?
网络·c/c++·rdma·高性能io·tcp与rdma
YH_Analytics1 小时前
2026 高压 E-House 市场深度分析报告市场格局
网络·数据库
zl_dfq1 小时前
Windows 下 UDP 套接字编程指南
网络·windows·udp
日常筹谋记1 小时前
数据中心逆变设备运维|通讯对接、动环接入与多系统联动方案科普
运维·网络
上海研博数据2 小时前
HY-K 太阳能控制器协议|水利物联太阳能供电系统接入指南
网络
zerwave2 小时前
从慢订阅者到发布者:LiteBus 如何用 Unix Socket 背压保护可靠 Topic
网络·机器人·unix
piaoyiren2 小时前
Python FTP 服务端项目详细功能文档
网络·数据库·python
半杯咖啡半行码2 小时前
QML进阶实战(二):异步网络、性能优化与工程化落地
网络·qt·性能优化·qml
悟天特斯2 小时前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网