点对点聊天理论

4
什么是编写具有加密功能的点对点聊天应用的最佳方式?由于客户端没有经过Verisign签名的证书,SSL是否适用于P2P?是否可能编写这样一个聊天应用而不需要主服务器告诉客户端其聊天伙伴的IP地址?
我真的很想编写这样的聊天应用程序,因为在所有这些隐私问题的时代,我希望能够信任一个程序。我有一些网络编程经验,但只限于客户端<->服务器。
我不需要任何代码,只需要点对点聊天(如Skype)的理论部分。
谢谢。
1个回答

2
首先,您可以在两端强制使用自签名证书,或者甚至可以使用“预共享密钥”代替证书进行身份验证。预共享密钥应该由所有参与方事先知道。
其次,SSL是一种加密机制,因此它对通信模型的设计没有影响,即客户端/服务器 vs p2p。
最后,如果您的两个p2p节点都有公共或实时IP,并且每个节点都知道另一个节点的IP,则不需要任何中央服务器。真正的问题在于,在实践中,大多数机器都在使用NAT和私有IP的防火墙后面。因此,您需要某种机制来穿越NAT,确定公共IP和端口,以便成功到达目标机器。
请查看以下SO question及其答案。它提到了一些常见的p2p应用程序使用的技术,例如skype(由于它是专有的,因此对skype协议的了解有限),gtalk以及其他基于XMPP的聊天应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接