HarveyLiu
V2EX  ›  问与答

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

  •  1
     
  •   HarveyLiu · Jan 3, 2019 · 6500 views
    This topic created in 2713 days ago, the information mentioned may be changed or developed.

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

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

    然而现实情况是,按照 OSI7 层加框架进行开发,看起来是主流,实际上只占网络开发的一小部分,所以 UDP 的路很宽,只是我们还不知道。
    hicdn
        15
    hicdn  
       Jan 3, 2019
    iptv 的组播是 UDP
    stzz
        16
    stzz  
       Jan 3, 2019   ❤️ 1
    我来我来~
    "粘包"
    ghostsimon
        17
    ghostsimon  
       Jan 3, 2019
    基于 snmp 协议的设备管理和告警管理。
    evagreenworking
        18
    evagreenworking  
       Jan 3, 2019
    Wireguard 啊 直接集成到内核了 UDP 挺好的 但架不住国内运营商 QOS 发到国外的 udp 丢包丢得厉害 5g 需要低延迟场景 udp 协议肯定优势
    HarveyLiu
        19
    HarveyLiu  
    OP
       Jan 3, 2019
    @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
        20
    mritd  
       Jan 3, 2019
    目前很多都是基于 UDP 实现一个可靠传输的协议(RUDP),然后把这个协议在应用于具体业务,上层应用层不关注底层实现
    swulling
        21
    swulling  
       Jan 3, 2019 via iPhone   ❤️ 2
    不出意外又出现了粘包人士…
    ttgo
        22
    ttgo  
       Jan 3, 2019
    我们做高速(>10Gbps )低时延(<10ms )应用,用 udp,tcp 顶不住。
    zhujinliang
        23
    zhujinliang  
       Jan 3, 2019
    UDP 包可以广播 /组播 /多播,在 IPTV 中有应用,广播特性也用于局域网设备发现,比如 mdns/bonjour/zeroconf
    chinvo
        24
    chinvo  
       Jan 3, 2019 via iPhone
    粘包到底什么鬼,哪家见鬼的培训班搞出来的
    xzc19970719
        25
    xzc19970719  
       Jan 3, 2019
    @ttgo 这谁顶得住呀
    cluulzz
        26
    cluulzz  
       Jan 3, 2019
    tcp over udp 了解下
    Dragonish3600
        27
    Dragonish3600  
       Jan 3, 2019 via iPhone
    @HarveyLiu UDP 的优势就在于不握手,不检验。所以对于目标不确定,或者可以接受少量丢包的场景,非常合适。DNS 并不全是 UDP,当包的大小超过一个值就要用 TCP。具体多大我忘了
    lusheldon
        28
    lusheldon  
       Jan 3, 2019 via Android
    @chinvo 粘包现象本来就存在,叫法不一样而已。试试发 tcp 不先发个长度,接收端根本不知道怎么分割数据。设计私有协议的时候都要确定每个数据包怎么划分,界限在哪里。基本都是 length-value 的格式,包括 snmp,都是用 type-length-value 的形式来解决数据包的分割。这不是什么培训班搞出来。
    simple2025
        29
    simple2025  
       Jan 3, 2019
    @lusheldon 但是这样感觉,只能用回调的写法了呀,
    dirwdirw
        30
    dirwdirw  
       Jan 3, 2019 via Android
    很多很多年前,有工具可以伪装任意 QQ 号,与目标号的人聊天。这是…
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1082 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 128ms · UTC 23:22 · PVG 07:22 · LAX 16:22 · JFK 19:22
    ♥ Do have faith in what you're doing.