对点对点加密聊天进行编程的最佳方式是什么。 SSL 对于 p2p 有用吗,因为客户端没有 verisign 签名的证书,...?是否可以在没有主服务器告诉客户端其聊天伙伴的 IP 的情况下编写这样的聊天程序?
我真的很想编写这样一个聊天程序,因为在出现所有这些隐私问题时,我想要一个我真正可以信任的程序。我有一些网络编程经验,但仅限于客户端 <-> 服务器。
我不需要任何代码,只需要点对点聊天(如 Skype)的理论部分。
谢谢。
最佳答案
首先,您可以强制在两端使用自签名证书,或者甚至可以使用“预共享 key ”而不是证书进行身份验证。预共享 key 应该被所有参与方提前知晓。
其次,SSL是一种加密机制,因此它与通信模型(即客户端/服务器与p2p)的设计无关。
最后,如果您的两个 p2p 节点都有公共(public)或实时 IP,并且每个节点都知道对方的 IP,那么您不需要任何类型的中央服务器。这里真正的问题是,实际上,大多数机器都位于使用 NAT 和私有(private) IP 的防火墙后面。所以你需要某种机制来穿越NAT,确定公网IP和端口,才能成功到达目的机器。
看看下面的SO question这是我写的答案。它提到了常见 p2p 应用程序使用的一些技术,例如 Skype(Skype 协议(protocol)的知识有限,因为它是专有的)、gtalk 以及其他基于 XMPP 的聊天应用程序。
关于networking - 点对点聊天理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13604661/