需要一份技术白皮书
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连接并不是必须的,就像会议秘书在两个会议室之间互相传达消息一样。