zhangshenhua/cosmos

需要一份技术白皮书

zhangshenhua opened this issue · 1 comments

在技术层面将COSMOS网络的组网原理作以交代。

COSMOS网络

COSMOS网络由互联网上的COSMOS结点,以及在节点间构成传递的消息构成。
相关数学概念请参考图论以及范畴论。

设计**

1.初衷是设计一个原理上不高深,技术上没壁垒,实现上没难度,运营上没秘密,具有图灵完备性的可供研讨的网络。
2.它是一种将OSI[3]建立在Websocket协议之上而构成的B/S/C架构的计算机网络。
3.COSMOS节点是语言、平台无关的。

COSMOS节点

COSMOS节点分为COSMOS交换机和COSMOS终端两类,统称“COSMOS节点”,简称"节点"。

交换机

交换机节点其本质是一个网络服务程序,为<终端>提供网络接入服务。

终端

所有接入<COSMOS网络>但不是<交换机>的程序进程(比如浏览器中打开的一张网页)。

地址协议

网络地址由完全编码在Websocket连接的URL字段中:
ws://xxx.xxx.xxx.xxx:port/<房名>/[<发送者>@<接受者>]

我们称"ws://xxx.xxx.xxx.xxx:port/<房名>"为<网络名>

多播地址

ws://xxx.xxx.xxx.xxx:port/<房名>/[<发送者>]

单播地址

ws://xxx.xxx.xxx.xxx:port/<房名>/[<发送者>]@<接受者>

COSMOS报文

也就(几乎)是Websocket报文的正文。mmm,此处值得商榷。

COSMOS节点的报文转发机制

多播

COSMOS节点将报文转发至所有同个<网络名>下的所有在线的Websocket连接(其中包括发送者自己)。

单播

COSMOS节点将报文转发至所有同个<网络名>下所有在线的<接收者>所对应的Websocket连接。

报文路由

报文路由需要解决的问题是:
报文如何从一个网络(由一个<网络名>唯一标识)发送至另一个网络。
一个办法是使一<节点>在两个网络之间传达,前提是他必须知道两个<网络名>。
不过同时保持两个websocket连接并不是必须的,就像会议秘书在两个会议室之间互相传达消息一样。