作为网络层的产物,虽然和 MAC 数据链路层的有着相同的头和数据体,UDP 除了物理实现,会表现的比较快以外,那些地方和场景还能适合 UDP 开发?除了网络游戏、聊天室、以外。
1
wwqgtxx 2019-01-03 00:55:22 +08:00 via iPhone 3
quic,不现在应该叫 http3 了
|
2
Mohanson 2019-01-03 01:22:24 +08:00 via Android 1
直播。视频会议。视频电话。语音电话。这些应用的特点是实时性要求高,同时对于过期的或丢失的数据完全不 care
|
3
hilbertz 2019-01-03 01:44:47 +08:00
你想实现自己的传输协议时就可以基于 udp
|
4
xiadong1994 2019-01-03 02:48:19 +08:00
要实现自己的可靠传输协议的时候
|
5
ladypxy 2019-01-03 04:51:57 +08:00 via iPhone
自己随便 google 一下,不管中文英文,都会告诉你 idp 的优势在于点对点速度快,适合于视频点播和流媒体
|
6
wd 2019-01-03 06:50:10 +08:00 via iPhone 2
你是不知道,国内有人为了快用 udp,为了不丢包,又设计了确认报…
|
7
Mutoo 2019-01-03 07:16:22 +08:00
网络的多机同步要求非常高,一般是不能丢包的。而且对速度要求也高,所以网络游戏用的通常是 rUDP (可信赖的 UDP ),是一种伪 TCP over UDP 的实现。
|
8
izoabr 2019-01-03 07:19:52 +08:00
日志算不算?
|
9
594duck 2019-01-03 08:11:48 +08:00 via iPhone
tcp 跑在 udp 上用于加速。很猛烈。用带宽干。1 个 tcp 包发 20 个 udp 过去。用概率来弥补网络不稳定
|
10
quqiuzhu 2019-01-03 08:34:58 +08:00 via Android
刚好相反,我感觉 TCP 都快要被废掉了,以后不仅上行的协议用 udp,下行也很快会用 udp 的( http/3 )。
|
11
BOYPT 2019-01-03 08:47:27 +08:00
udp 不提供确认,不代表程序不能为数据确认。
根据具体场景,写程序实现合适的机制才是重点。 |
12
felixlong 2019-01-03 08:58:50 +08:00
P2P
|
13
mritd 2019-01-03 09:01:14 +08:00 via iPhone
Kcp
|
14
passerbytiny 2019-01-03 09:03:24 +08:00
如果你是按照 OSI7 层去进行开发,那么 UDP 基本是费了,因为大部分应用层框架都在网络层选择 TCP。虽然相比基于 UDP,基于 TCP 需要额外的拆包粘包过程,并且仍然需要心跳连接和应用层自身的 ACK 机制才能保证数据有效性,然而不知道什么原因,那些框架就是选了 TCP。
然而现实情况是,按照 OSI7 层加框架进行开发,看起来是主流,实际上只占网络开发的一小部分,所以 UDP 的路很宽,只是我们还不知道。 |
15
hicdn 2019-01-03 09:18:57 +08:00
iptv 的组播是 UDP
|
16
stzz 2019-01-03 09:47:55 +08:00 1
我来我来~
"粘包" |
17
ghostsimon 2019-01-03 11:13:37 +08:00
基于 snmp 协议的设备管理和告警管理。
|
18
evagreenworking 2019-01-03 11:35:58 +08:00
Wireguard 啊 直接集成到内核了 UDP 挺好的 但架不住国内运营商 QOS 发到国外的 udp 丢包丢得厉害 5g 需要低延迟场景 udp 协议肯定优势
|
19
HarveyLiu OP @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 开发为主吧? |
20
mritd 2019-01-03 11:58:44 +08:00
目前很多都是基于 UDP 实现一个可靠传输的协议(RUDP),然后把这个协议在应用于具体业务,上层应用层不关注底层实现
|
21
swulling 2019-01-03 12:02:19 +08:00 via iPhone 2
不出意外又出现了粘包人士…
|
22
ttgo 2019-01-03 12:40:03 +08:00
我们做高速(>10Gbps )低时延(<10ms )应用,用 udp,tcp 顶不住。
|
23
zhujinliang 2019-01-03 12:52:29 +08:00
UDP 包可以广播 /组播 /多播,在 IPTV 中有应用,广播特性也用于局域网设备发现,比如 mdns/bonjour/zeroconf
|
24
chinvo 2019-01-03 13:00:35 +08:00 via iPhone
粘包到底什么鬼,哪家见鬼的培训班搞出来的
|
25
xzc19970719 2019-01-03 13:04:25 +08:00
@ttgo 这谁顶得住呀
|
26
cluulzz 2019-01-03 15:10:18 +08:00
tcp over udp 了解下
|
27
ladypxy 2019-01-03 15:15:44 +08:00 via iPhone
@HarveyLiu UDP 的优势就在于不握手,不检验。所以对于目标不确定,或者可以接受少量丢包的场景,非常合适。DNS 并不全是 UDP,当包的大小超过一个值就要用 TCP。具体多大我忘了
|
28
lusheldon 2019-01-03 16:13:29 +08:00 via Android
@chinvo 粘包现象本来就存在,叫法不一样而已。试试发 tcp 不先发个长度,接收端根本不知道怎么分割数据。设计私有协议的时候都要确定每个数据包怎么划分,界限在哪里。基本都是 length-value 的格式,包括 snmp,都是用 type-length-value 的形式来解决数据包的分割。这不是什么培训班搞出来。
|
30
dirwdirw 2019-01-03 16:32:13 +08:00 via Android
很多很多年前,有工具可以伪装任意 QQ 号,与目标号的人聊天。这是…
|