V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mejee
V2EX  ›  问与答

关于 UDP 的安全性的一些疑问

  •  
  •   mejee · 2018-02-24 09:44:44 +08:00 · 3073 次点击
    这是一个创建于 2476 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,QQ 发送消息应该是 UDP 为主?那么 QQ 的服务器是不是:

    • 每收到一个 UDP 包就进行验证用户身份,客户端的每个 UDP 包都要带有一个 Token ?这样的话服务端任务有点重啊

    还是

    • 根据客户端网关的 IP 和端口来进行身份认证,那么这样的话,如果客户端在一个内网,比如企业内网,那么网络管理员是不是有能力冒用任何一个在内网登录的 QQ ?甚至客户端断掉了,又有另一个用户使用这个 IP 和端口,会不会乱掉?

    还是其他的解决方案?甚至可靠私密的网络就不应该用 UDP ?只有视频等流媒体方便用?

    8 条回复    2018-02-26 20:09:24 +08:00
    DevNet
        1
    DevNet  
       2018-02-24 10:13:18 +08:00
    QQ 是 udp8000 吧?我猜身份认证通过应用层实现,使用 udp 仅仅是因为它快,可靠保证也只需要从应用层实现,四层不需要关注
    liudanking
        2
    liudanking  
       2018-02-24 14:32:31 +08:00 via iPhone
    同意一楼。qq 用 udp 实现了一个可靠传输的流协议,应用层是感知不到下层是 udp 还是 tcp 的。因此按照应用层的方案做认证设计即可。
    msg7086
        3
    msg7086  
       2018-02-24 15:26:13 +08:00
    UDP 是网络层,应用在应用层,都不能放在一起谈的……
    TCP 和 UDP 有多大区别……只要下层解决了组包问题,上层就都一样了。至于组包,TCP 也会丢包,也会有外来包,一个是 TCP 协议自己过滤,一个是自己写协议过滤,工作量一样,服务器端任务怎么会变重呢。
    mejee
        4
    mejee  
    OP
       2018-02-24 21:29:52 +08:00
    @DevNet
    @liudanking
    @msg7086 感谢回答,我疑惑的不是应用层来保证 UDP 的送达的可靠性,而是服务器需不需要判断收到的每个 UDP 包是由客户端发送的,而不是网络管理员或者局域网的人冒充真实的客户端发的?还是有什么类似 TLS 的加密技术?
    msg7086
        5
    msg7086  
       2018-02-26 04:21:55 +08:00
    @mejee 我对底层了解不多,直觉上 UDP 本身应该挺难判断的,需要上层去解决。但是工作量和下层用 TCP 解决是差不多的,编号,校验,等等这些,区别就是内核做还是程序做。
    TLS 又是在这之上的技术了,一般是 TLS over TCP/UDP 这样。
    HillW
        6
    HillW  
       2018-02-26 20:05:30 +08:00
    楼主是不是上次在阿里休息区问我同样问题的那个人
    HillW
        7
    HillW  
       2018-02-26 20:06:31 +08:00
    是上次给你解释的没弄明白吗
    mejee
        8
    mejee  
    OP
       2018-02-26 20:09:24 +08:00
    @HillW 是啊 上次你还说要攻打火星,我也没听明白 2333
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6030 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:09 · PVG 10:09 · LAX 18:09 · JFK 21:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.