4

使用加密编程点对点聊天的最佳方式是什么。SSL 对 p2p 有用吗,因为客户端没有威瑞信签名的证书,...?是否可以在没有主服务器的情况下编写这样的聊天程序来告诉客户端他们聊天伙伴的 IP?

我真的很想编写这样一个聊天程序,因为在所有这些隐私问题的时候,我想要一个我真正可以信任的程序。我有一些网络编程经验,但只有客户端<->服务器。

我不想要任何代码,只是点对点聊天的理论部分(如Skype)。

谢谢。

4

1 回答 1

2

首先,您可以在两端强制使用自签名证书,或者您甚至可以使用“预共享密钥”而不是证书进行身份验证。预共享密钥应该被所有相关方提前知道。

其次,SSL 是一种加密机制,因此它与通信模型(即客户端/服务器与 p2p 的设计)无关。

最后,如果您的两个 p2p 节点都有公共或实时 ip,并且每个节点都知道对方的,那么您不需要任何类型的中央服务器。这里真正的问题是,在实践中,大多数机器都在使用 NAT 和私有 ip 的防火墙后面。所以你需要某种机制来穿越 NAT,确定公共 ip 和端口,以便成功到达目标机器。

看看下面的SO question,它是我写的答案。它提到了一些常见的 p2p 应用程序使用的技术,例如 skype(对 skype 协议的了解是有限的,因为它是专有的)、gtalk 以及其他基于 XMPP 的聊天应用程序。

于 2012-11-29T06:02:20.127 回答