早期的 QQ 是 UDP 协议的,后来改成了 TCP,那么 UDP 作为没法确认握手数据包的不稳定协议,如今除了游戏,还能用在什么生产环境下?

2019-01-03 00:53:57 +08:00
 HarveyLiu

作为网络层的产物,虽然和 MAC 数据链路层的有着相同的头和数据体,UDP 除了物理实现,会表现的比较快以外,那些地方和场景还能适合 UDP 开发?除了网络游戏、聊天室、以外。

5878 次点击
所在节点    问与答
30 条回复
wwqgtxx
2019-01-03 00:55:22 +08:00
quic,不现在应该叫 http3 了
Mohanson
2019-01-03 01:22:24 +08:00
直播。视频会议。视频电话。语音电话。这些应用的特点是实时性要求高,同时对于过期的或丢失的数据完全不 care
hilbertz
2019-01-03 01:44:47 +08:00
你想实现自己的传输协议时就可以基于 udp
xiadong1994
2019-01-03 02:48:19 +08:00
要实现自己的可靠传输协议的时候
ladypxy
2019-01-03 04:51:57 +08:00
自己随便 google 一下,不管中文英文,都会告诉你 idp 的优势在于点对点速度快,适合于视频点播和流媒体
wd
2019-01-03 06:50:10 +08:00
你是不知道,国内有人为了快用 udp,为了不丢包,又设计了确认报…
Mutoo
2019-01-03 07:16:22 +08:00
网络的多机同步要求非常高,一般是不能丢包的。而且对速度要求也高,所以网络游戏用的通常是 rUDP (可信赖的 UDP ),是一种伪 TCP over UDP 的实现。
izoabr
2019-01-03 07:19:52 +08:00
日志算不算?
594duck
2019-01-03 08:11:48 +08:00
tcp 跑在 udp 上用于加速。很猛烈。用带宽干。1 个 tcp 包发 20 个 udp 过去。用概率来弥补网络不稳定
quqiuzhu
2019-01-03 08:34:58 +08:00
刚好相反,我感觉 TCP 都快要被废掉了,以后不仅上行的协议用 udp,下行也很快会用 udp 的( http/3 )。
BOYPT
2019-01-03 08:47:27 +08:00
udp 不提供确认,不代表程序不能为数据确认。
根据具体场景,写程序实现合适的机制才是重点。
felixlong
2019-01-03 08:58:50 +08:00
P2P
mritd
2019-01-03 09:01:14 +08:00
Kcp
passerbytiny
2019-01-03 09:03:24 +08:00
如果你是按照 OSI7 层去进行开发,那么 UDP 基本是费了,因为大部分应用层框架都在网络层选择 TCP。虽然相比基于 UDP,基于 TCP 需要额外的拆包粘包过程,并且仍然需要心跳连接和应用层自身的 ACK 机制才能保证数据有效性,然而不知道什么原因,那些框架就是选了 TCP。

然而现实情况是,按照 OSI7 层加框架进行开发,看起来是主流,实际上只占网络开发的一小部分,所以 UDP 的路很宽,只是我们还不知道。
hicdn
2019-01-03 09:18:57 +08:00
iptv 的组播是 UDP
stzz
2019-01-03 09:47:55 +08:00
我来我来~
"粘包"
ghostsimon
2019-01-03 11:13:37 +08:00
基于 snmp 协议的设备管理和告警管理。
evagreenworking
2019-01-03 11:35:58 +08:00
Wireguard 啊 直接集成到内核了 UDP 挺好的 但架不住国内运营商 QOS 发到国外的 udp 丢包丢得厉害 5g 需要低延迟场景 udp 协议肯定优势
HarveyLiu
2019-01-03 11:50:21 +08:00
@wwqgtxx #1
@Mohanson #2
@hilbertz #3
@xiadong1994 #4
@ladypxy #5
@wd #6
@Mutoo #7
@izoabr #8
@594duck #9
@quqiuzhu #10
@BOYPT #11
@felixlong #12
@mritd #13
@passerbytiny #14
@hicdn #15
@stzz #16
@ghostsimon #17
@evagreenworking #18

突然想到,DHCP 和 DNS 服务,不也是走 UDP 协议的么,这么说来,即便不稳定,没有握手,在某些情况下丢弃数据包也是可以被接受的,对吧,似乎用于广播形式的应用场景更适合

其它楼说的 kcptun 和 wireguard,一个是多倍发包,一个是以 V%P%N 形式的漫游在链路层的私有协议,所以能达到翻¥墙更快的体验吧,但毕竟只是开源项目的一种衍生品,对于严格生产环境来说,还是以 TCP 开发为主吧?
mritd
2019-01-03 11:58:44 +08:00
目前很多都是基于 UDP 实现一个可靠传输的协议(RUDP),然后把这个协议在应用于具体业务,上层应用层不关注底层实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX