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

相关推荐
IT大白鼠13 小时前
华为路由基础及静态路由详解
网络·华为
M1582276905514 小时前
工业级 EtherCAT 转 Modbus 网关|SG-ECAT 系列,打通高速总线与传统设备,无缝互联
网络
艾莉丝努力练剑14 小时前
【Linux网络】Linux 网络编程:传输层协议TCP(三)
linux·运维·服务器·网络·tcp/ip·http
闪电悠米14 小时前
黑马点评-优惠券秒杀-04_one_user_one_order
服务器·网络·数据库
星恒讯工业路由器14 小时前
物联网网关天线:分类解析与信号质量认知误区
网络·物联网·wifi·信息与通信·wifi 天线·lora 天线·物联网关天线
meowrain14 小时前
Git HTTPS Token 凭据配置指南
git·网络协议·https
yyuuuzz14 小时前
aws亚马逊云上运维常见问题梳理
运维·服务器·网络·云计算·aws
2501_9159090614 小时前
深入理解HTTPS中间人抓包技术原理与实战指南
网络协议·http·ios·小程序·https·uni-app·iphone
学习,学习,在学习14 小时前
Modbus TCP同步通信方式实现异步级效率
网络·c++·qt·网络协议·tcp/ip·qt5