Lazy loaded image
如果想用 UDP 实现可靠传输怎么处理?
字数 469阅读时长≈ 2 分钟
2026-10-12
type
Post
status
Published
date
Oct 12, 2026
slug
udp
summary
tags
技术探索
category
手写
icon
password
UDP 本身不可靠,如果要实现可靠传输,应该在应用层或 UDP 之上的传输层实现序列号、ACK 确认、超时重传、滑动窗口和拥塞控制,分别解决乱序、丢包、流量控制和网络拥塞问题。 典型实现就是 QUIC 协议,HTTP/3 正是基于 QUIC + UDP 实现的。 相比 TCP,QUIC 不仅能保证流内可靠有序传输,还能减少连接建立延迟,通过多路独立 Stream 缓解 TCP 层的队头阻塞问题。
主要实现 5 个机制:
机制
解决什么问题
怎么实现
1. 序列号
数据乱序、重复
给数据编号,接收方按编号排序、去重
2. ACK 确认
不知道数据是否到达
接收方收到数据后返回确认
3. 超时重传
数据丢失
发送方超时未收到 ACK,就重传
4. 滑动窗口
传输效率低、接收方处理不过来
允许批量发送未确认数据,并控制发送量
5. 拥塞控制
发送过快造成网络拥塞
根据丢包、RTT 等动态调整发送速率

举个例子

客户端通过 UDP 发送三个数据包:
这样就能在 UDP 上实现可靠、有序传输。
 
回到首页