【网络编程】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.当收到一个报文,我们如何做到用文件原理,读数据到应用层?见下图

相关推荐
AlanBruce2 小时前
摩尔信使MThings IEC 60870-5-104数据配置使用指南
网络·网络协议·tcp/ip
隐擎fox10 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
binqian11 小时前
【linux】OpenSSH升级文档
linux·运维·网络
Bruce_Liuxiaowei11 小时前
2026年9月第2周网络安全形势周报
网络·安全·web安全·网络安全·漏洞评级
和裕11 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
Jae den11 小时前
网络延迟为什么会影响游戏和实时业务?
网络·游戏
水域安全老周11 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
IT摆渡者12 小时前
1panel 配置申请手动解析网站SSL证书
服务器·网络协议·ssl
易岳群12 小时前
物联网 MQTT 方案:服务端如何通过 MQTT 生命周期维护客户端设备状态
物联网·网络协议
制造业的搬运工12 小时前
智能家居工控PCB可靠性检测规范与制程管控实践
大数据·网络·人工智能·制造·pcb工艺