P2P -还不存在的节点的消息



我发现的p2p库依赖于这样一个前提:为了传输信息,两个节点(发送方和接收方)都存在。如果接收节点还不存在怎么办?接收方如何获得私有以前写给他的信

让我给你更多的背景。我想在Flutter中制作一个P2P消息应用程序,发送方a可以向接收方B发送私信,即使接收方B还没有应用程序。当接收方B下载应用程序时,接收方B从发送方a获得以前发给他的所有私信(不在服务器中)。

我一直在绘制多个MSC关于如何使用两个节点和一个服务器来完成这一点,该服务器注册节点之间发送的状态(已发送,待定)。然而,我得出的结论是,试图提出我自己的P2P协议是多余的,特别是我关心的身份验证。(我怎么能阻止恶意Node_C请求所有发送给Node_B的消息)

我将感激任何帮助,并提前感谢您为我指出正确的方向。

最诚挚的问候,# driggy

PS:解决方案可能涉及到有一个服务器,正如我提到的,但服务器不能存储消息。

一个简单的解决方案是A定期检查B是否存在,并在B上线时发送消息。如果B知道A(例如,因为他们在联系人列表中),他们可以主动向A宣布他们的存在,从而避免轮询间隔的延迟。

这仍然要求两个节点在将来的某个时刻同时在线。如果你不想要这个要求,那么消息必须存储在第三方,可以是服务器或p2p网络中的另一个节点。

我特别关心认证。(我怎么能阻止恶意的Node_C请求所有发送给Node_B的消息

验证似乎与交付时间无关。每个节点都应该有一个加密标识(一个非对称密钥对),并且应该根据接收方的公钥对消息进行加密。如果您想要在没有中介的情况下直接传递,那么在传递消息之前,应该使用抗mitm的挑战-响应身份验证来验证远程节点的身份。

最新更新