-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# DIM Network | ||
|
||
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://github.com/moky/DIMP/blob/master/LICENSE) | ||
[![Version](https://img.shields.io/badge/alpha-0.1.0-red.svg)](https://github.com/moky/DIMP/wiki) | ||
|
||
Copyright © 2020 Albert Moky | ||
|
||
## 网络架构图 | ||
DIM 网络架构包含公网(Internet)和内网(Intranet)部分。 | ||
|
||
在公网部分,以 SP 作为不同子网(Subnet)的划分标志,可以认为每一个 SP 分管一个子网。 | ||
|
||
``` | ||
Internet | ||
. . . SP 1 . . . . . . . . . . . . . . . SP 2 . . . . | ||
. . . . | ||
. +---------+ +---------+ . . +---------+ . | ||
. | MTA 1 |<--->| MTA 2 | <========> | MTA 3 | . | ||
. +---------+ +---------+ . . +---------+ . | ||
. A A . . A A . | ||
. . . . .|. . . . . . . .|. . . . . . . . .|. .|. . . . | ||
| | | | | ||
| . . . .|. . . . . | +-----+ | ||
| . V . | | | ||
| . +---------+ . | V | ||
| . | POD 2 | <-------\ | +----------+ | ||
| . +---------+ . \-------> | Client 4 | | ||
| . A . | +----------+ | ||
| . | . | | ||
~ ~ ~ ~ ~|~ ~ ~ ~ ~ ~ ~ ~|~ ~ ~ ~ ~ ~ ~ ~ ~ ~ | ~ ~ ~ ~ ~ ~ ~ ~ | ||
Intranet | . | . | | ||
V . V . V | ||
+----------+ . +----------+ . +----------+ | ||
| Client 1 | . | Client 2 | . | Client 3 | | ||
+----------+ . +----------+ . +----------+ | ||
. . . . . . . . . | ||
``` | ||
|
||
1. 客户端1与客户端2登录到同一个 SP 的不同基站,所有消息通过基站间转发通讯; | ||
2. 客户端3与客户端4登录到同一个 SP 的相同基站,所有消息直接在基站内转发通讯; | ||
3. 客户端1与客户端3登录到不同 SP 的不同基站,由于双方 SP 存在合作关系(已并网),所有消息通过 SP 之间的网络桥进行通讯; | ||
4. 由于客户端4位于公网,而客户端2也在公网设置了一个 POD 协助收发消息,所以客户端2和客户端4无需依赖基站转发,可以直接通讯。 | ||
|
||
## 名词解析 | ||
|
||
### User 用户 | ||
每个 user 包含一个 DID,以及与之对应的公钥、私钥文件。 | ||
额外地,user 还可以包含 profile 信息,用于显示该用户的名称、图片等附加属性信息。 | ||
|
||
### Client 客户端 | ||
即用户终端,包括手机、电脑、物联网设备等。 | ||
一个客户端至少应该包含一个 user,特定需求下也可以支持在同一个客户端内同时使用多个用户账号。 | ||
|
||
### Station 基站 | ||
由于部分客户端可能不是 24 小时在线(比如移动终端),并且有可能隐藏在内网之中,外网无法直接联系,此时需要拥有公网 IP 地址的网络节点协助转发信息包,以及提供“离线消息支持”、“多终端登录支持”等增值服务。 | ||
|
||
一般地,一个 station 仅仅用做消息包转发服务,消息包转发成功后即删除缓存(支持多终端登录的情况下会继续保存缓存消息一定时间),并且缓存的所有消息内容都是已加密的,station 不会也不可能解密消息内容。 | ||
|
||
### Service Provider 服务提供商 | ||
虚拟概念(简称 SP),指拥有 1 个或以上的 station、并向部分或所有用户提供网络服务的个人或组织。 | ||
|
||
拥有多个 station 时,SP 负责解决内部多节点之间消息包的转发路径规划。 | ||
当网络中存在多个 SP 时,假如 SP 之间不存在合作关系,则连接到不同 SP 旗下 station 的用户则不能相互通讯;只有 SP 相互合作(也叫“并网”)的情况下才能相互通讯(消息包转发过程中,会通过接收方 SP 所指定的 bridge 桥节点进行转交)。 | ||
|
||
### Message Transfer Agent 消息传送代理 | ||
虚拟概念(简称 MTA),通常由 station 扮演该角色。 | ||
顾名思义,就是协助提供消息转发服务的网络节点。 | ||
|
||
### Personal Online Device 个人在线设备 | ||
虚拟概念(简称 POD),通常是一台具有公网 IP 的长期在线设备,作为不能长期在线的移动设备的助理,也可以在没有 station 的网络环境下扮演 MTA 角色。 | ||
|