用于多路通信的网络协议

时间:2013-12-14 20:44:41

标签: network-protocols

我正在编写一个需要在多台计算机上运行的软件(一次3-4个),并显示相同的数据。可以从每台机器修改数据,并立即将更改发送到其他机器。

没有中央服务器,但所有机器都很友好且位于同一本地网络上。

这里最重要的事情是:(1)低延迟和(2)可串行化的消息(总是能够知道哪个是第一个) - 基本上我是什么我正在寻找一个聊天室,但是对于节目的消息。什么是最好的网络协议?

1 个答案:

答案 0 :(得分:1)

在第四层中,您将使用TCP来可靠地传递消息。如果你说的是3-4台应该没问题的机器。在TCP之上,您可以使用自己的应用程序特定协议。我不知道XMPP是否会让您在分散的环境中工作。

您需要解决的一个问题是所有人都以相同的顺序看到这些消息。为此,您可以使用向量时钟算法或某种方式来解决冲突,以防两个消息同时发送。

在局域网中,任何协议都应该适合低延迟。

关于您需要的连接数量,这取决于您的设计。一直在想少数同行:

  1. 对于网状连接,每2个对等体需要双向TCP连接。
  2. 您可以采用另一种设计:循环连接,其中每个节点连接到一个邻居。这将减少具有不同挑战的现有连接的数量(如果一个邻居崩溃或关闭会发生什么)。
  3. 几年前我实施的其他有趣的替代方案:使用UDP多播将消息发送到多播组的所有成员,然后所有接收方打开与发送方的TCP连接以发回ACK(确认)。然后,发送方检查收到的所有ACK,如果有人丢失,则会打开与该连接的TCP连接并可靠地发送消息。
  4. 您必须考虑的其他事项:集团管理。你怎么知道一个同伴离开了这个小组或一个新的同伴加入了这个小组?这是另一个考虑因素。