V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kheow
V2EX  ›  程序员

P2P2 网络下的社交软件是如何实现消息推送的?

  •  
  •   kheow · 2023-09-12 16:27:03 +08:00 · 2184 次点击
    这是一个创建于 430 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前段时间了解到一个基于 P2P 网络的社交软件 WireMin ,自称是去中心化的,不存在服务器,也就不会宕机;且每个节点之间是平等的,永远不会被封号。 我的理解是,P2P 网络最大的弊病之一就是收消息延迟很高,全靠缘分。 但 WireMin 感觉消息通知还是相对及时的,用了一段时间感觉也还挺安全,适合畅所欲言。 想深入研究下安全性和原理,但他们官网都是英语的,看起来太费劲。https://wiremin.org/ 有懂的吗?

    20 条回复    2023-09-13 16:24:09 +08:00
    NewYear
        1
    NewYear  
       2023-09-12 16:44:44 +08:00
    去中心化不是去服务器化,客户端可以作为服务器,要是真没有服务器你和谁连接呢
    javerlei
        2
    javerlei  
       2023-09-12 16:49:00 +08:00
    还是会和中心引导节点进行通讯,例如 libp2p\ipfs 都需要中心引导服务器进行引导打洞。如果 NAT 限制很大的话还会依赖中心服务器的中继节点进行中继。无法实现完全的点对点网络,要实现对网络环境要求蛮高的。
    githmb
        3
    githmb  
       2023-09-12 17:08:23 +08:00
    有兴趣的话可以看一下我的 P2P 实现:
    https://github.com/rust-net/remote-bind/blob/tokio/core/src/p2p.rs#L71
    sedrup
        4
    sedrup  
       2023-09-12 17:24:21 +08:00
    整个去中心化的网络就是由每一个用户充当一个节点组成的一个网络,因此是 P2P network (Peer to Peer network),这种网络最大的通病就是像你说的接受信息延时性,但这仅是因为网络没有足够的节点。

    中心化平台类似微信,QQ ,外网的推特,脸书等等,为什么能接收到实时消息,因为强大的服务器,你的所有信息都需要先到这个服务器,靠它来帮你传输,缺点就是,你的信息是第三方可见的了,隐私性差。

    其实还是看个人选择,如果你想要隐私性强,以及说话不过脑的讨论,那去中心化的聊天软件确实是最好的选择。
    如果不 care 隐私方面的隐患,或者觉得自己没啥好怕暴露的那就继续使用中心化社交平台,毕竟他们还有什么算法给你推送你喜欢的内容。我自己是两者都有使用,我感觉不冲突。

    WireMin 我也有用,但不多,因为感觉外国人还是比较多,只有几个华人群。
    功能还算齐全,什么消息定时自焚,语音通话,私密小组,还有个类似朋友圈的东西。
    但是还是用的人没有特别多,以至于网络不够稳定,像你说的消息不及时,我就有时候上去看看有没有什么有意思的话题,参与一下。
    kyokobunberry
        5
    kyokobunberry  
       2023-09-12 17:37:38 +08:00
    @NewYear 这个我知道,只是我预期去中心化的信息延迟会更高一些。
    kheow
        6
    kheow  
    OP
       2023-09-12 17:40:48 +08:00
    @kyokobunberry 我用下来感觉这个软件延迟不是很高,不是很懂。
    kheow
        7
    kheow  
    OP
       2023-09-12 17:41:29 +08:00
    @sedrup 有中文群吗?界面全是英文的,我还没太用明白。
    sedrup
        8
    sedrup  
       2023-09-12 17:49:25 +08:00
    @kheow
    你可以自己去 discovery 那里刷刷,会显示近期活跃的群,还有 NSFW 群
    ysc3839
        9
    ysc3839  
       2023-09-12 17:54:24 +08:00 via Android
    没听说过,不过可以研究一下 Bitmessage 和 ZeroNet 。
    前者是需要客户端一直在线的,消息发出后在全网传递一段时间就会被丢弃,不在线的话是收不到消息的。具体细节我没了解过。
    后者则不需要你在线,用户“发出”的数据会一直存储。网站允许用户存储一定量的数据,用户用私钥签名后把签名和数据一起发给别的节点,别的节点验证签名通过就会保存用户数据。
    kheow
        10
    kheow  
    OP
       2023-09-12 18:03:12 +08:00
    @ysc3839 从安全性来说,是不是前者更安全?
    XiLingHost
        11
    XiLingHost  
       2023-09-12 18:22:15 +08:00
    @kheow 安全性上其实区别不大
    ysc3839
        12
    ysc3839  
       2023-09-12 18:29:03 +08:00 via Android
    @kheow 追求“不留痕迹”的话,Bitmessage 是更安全的。如果我上述理解没错的话,Bitmessage 是不会长时间存储消息的,过了一段时间就丢了。
    而 ZeroNet 是一直存储的,似乎只有原发布者和网站所有者可以删除。对于一对一通信,可以用目标账号的公钥加密后发布,持有私钥才能解密,可以保证内容安全。
    ysc3839
        13
    ysc3839  
       2023-09-12 19:01:52 +08:00 via Android
    至于延迟问题,似乎是看整个网络的客户端数量,以及你能连接到的客户端数量。人数多的话其实延迟不会太高,印象中几年前用 ZeroNet 时延迟大约 30 秒吧。
    tutudou
        14
    tutudou  
       2023-09-12 20:34:44 +08:00
    我理解的去中心化是,数据去中心化且有哈希值此类的效验码保证数据无法被单方面修改,并不是中间真的没有服务器,比特币也还有记账服务器呢,和我上面说的类似。
    kheow
        15
    kheow  
    OP
       2023-09-13 10:20:45 +08:00
    @ysc3839 谢谢大佬
    ysc3839
        16
    ysc3839  
       2023-09-13 11:25:08 +08:00 via Android
    @ysc3839 重新去确认了一下,Bitmessage 发送时需要类似比特币的工作证明,平均要算 4 分钟,这么设计应该是为了防止大量垃圾消息。ZeroNet 没有这种限制,不过需要别的节点添加了网站,才会接收并保存网站数据。
    Bitmessage 消息发送后会保存两天时间,接收端收到后会回复确认消息,所以如果接收端长时间离线的话,发送端也能重发。
    ysc3839
        17
    ysc3839  
       2023-09-13 11:50:25 +08:00 via Android
    去看了下 WireMin 的官网,似乎不开源,根据 FAQ 里面的说明,感觉上有点类似 Bitmessage ,发送都需要工作证明,消息保存时长都是两天,不过 WireMin 的工作证明难度比 Bitmessage 低,发送消息所需要的时间降低了。WireMin 使用了 DHT 来发现其他客户端。
    wkong
        18
    wkong  
       2023-09-13 12:46:03 +08:00
    不错哦 可以研究下
    kheow
        19
    kheow  
    OP
       2023-09-13 14:30:23 +08:00
    @ysc3839 大佬,他们官网我都看不懂。所以理论上它的安全性和 Bitmessage 差不多?
    ysc3839
        20
    ysc3839  
       2023-09-13 16:24:09 +08:00 via Android
    @kheow 理论上是的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:43 · PVG 12:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.