系统设计,协议先行。
大部分人不了解协议的设计细节,更多使用已有协议进行应用层设计,例如:
无论如何,了解协议设计的原则,对深入理解系统通信非常有帮助。
所谓“协议”,是双方共同遵守的规则,例如:离婚协议,停战协议。协议有语法、语义、时序三要素:
画外音:后文主要讲语法设计。
协议设计通常分为三层:应用层协议、安全层协议、传输层协议。
下面分别看下这三层的协议应该如何选型。
应用层协议选型,常见的有三种:文本协议、二进制协议、流式XML协议。
(1) 文本协议
文本协议是指“贴近人类书面语言表达”的通讯传输协议,典型的协议是HTTP协议,一个HTTP协议的请求报文样例如下:
GET / HTTP/1.1
User-Agent: curl
Host: musicml.net
Accept: */*
文本协议的特点是:
(2) 二进制协议
二进制协议即binary协议,典型是IP协议,以下是IP协议的一个图示:
二进制协议一般包含:一般包含:
二进制协议的特点是:
这是一个典型的16字节二进制定长包头的例子:
//sizeof(cs_header)=16
struct cs_header {
uint32_t version;
uint32_t magic_num;
uint32_t cmd;
uint32_t len;
uint8_t data[];
}__attribute__((packed));
其中:
(1)前4个字节表示版本号version;
(2)接下来4个字节表示魔法数字magic_num,用来解决数据错位或丢包问题;
画外音:例如,约定好魔法数字是0x01020304,收到的报文,魔法数字匹配,认为是正常报文,否则认为是报文异常,断开连接。
(3)接下来4个字节表示命令号command,不同的命令号对应不同的变长包体;
(4)最后4个字节表示包体长度length,以确定变长包体有多少字节;
这是一个实际的二进制变长包体:
message CUserLoginReq {
optional string username = 1;
optional string passwd = 2;
}
message CUserLoginResp {
optional uint64 uid =1;
}
它使用的是Google的Protobuf协议,容易看到:
PB是很流行的二进制变长包体协议,其优点为:
流式XML协议流式XML似乎是文本协议的一个特例,亦可以单独作为一类。例如:xmpp就是典型的流式XML协议,下面是xmpp协议的一个典型报文:
Wherefore art thou, Romeo?
从xml标签中大致可以判断这是一个romeo发给juliet的聊天消息。
XML协议有几个特点:
安全层协议设计,除了使用SSL,自行实现的话,常见的又有以下三种方案。
画外音:SSL秘钥管理是个问题。
(1) 固定密钥
服务端和客户端约定好一个密钥,同时约定好一个加密算法(例如:AES),每次客户端发送报文前,就用约定好的算法,以及约定好的密钥加密再传输,服务端收到报文后,用约定好的算法,约定好的密钥再解密。
画外音:安全性低,安全性基于程序员的职业操守。
(2) 一人一密
简单来说,就是一个人的密钥是固定的,但是每个人之间又不同。常见的实现方式是:
(3) 一次一密
即动态密钥,一Session一密钥的安全性更高,每次会话前协商密钥。密钥协商的过程要经过2次非对称密钥的随机生成,1次对称加密密钥的随机生成,具体详情这里不展开。
可选的协议有TCP和UDP,现在基本都是使用TCP,有了epoll等技术后,多连接就不是瓶颈了,单机几十万链接没什么问题。[来源:架构师之路]
局域网监控软件可以监控外网吗?一文解析
如今,随着数字办公的日益普及,局域网监控软件已经成为企业网络管理不可或缺的一部分。然而,局域网监控软件能否监控外网一直困扰着许多企业网络工程师。本文将深入探讨这一问题,分析局域网监控软件在外网监控中能力与局限性。一、局域网监控软件的主要功能局域网监控软件是一种基于桌面管理软件和监控系统的综合监控工具。它通常具有以下基本...
安企神网络安全准入系统
安企神软件网络安全准入系统是一种高效、灵活、易于管理的网络密钥管理解决方案,旨在为公司网络环境提供全面的安全保障。通过身份认证、健康体检和安全设置评定,此系统保证只有授权的设备与用户才能浏览公司的内部网络资源,进而最大限度地降低安全隐患。一、网络安全准入系统主要功能1、用户身份认证安企神网络准入系统选用严格的身份认证机...
网络准入设备:守护企业数字资产的第一道防线
在数字时代,公司网络如同公司的神经系统,连接着每个业务单元,背负着数据的流动与价值的转换。但是,随着网络环境的日益繁杂,网络威协也非常大。怎样确保公司网络的安全平稳已成为每家企业必须面对的挑战。做为这条防线的门将,网络准入设备发挥了越来越重要的作用。一、什么叫网络准入设备?网络准入设备是一种专门给控制和管理网络设备访问...
企业数据防泄密软件有哪些?企业数据防泄密软件大盘点
在当今数字时代,公司数据的安全至关重要。为了保护公司的核心资产和客户资料免遭威胁,很多企业都在寻找高效的数据防泄密软件。今天我们就来盘点一下市场上广受好评的几款公司数据防泄密软件,帮助大家更好的了解和选择适合自己公司的防泄漏解决方案。一、安企神软件安企神软件集数据加密、密钥管理、行为审计等多种功能于一体,为用户提供全方...
揭秘数据加密系统的加密过程
在数字时代,数据安全已是企业和个人不可忽视一个重要难题。数据加密系统做为数据安全重要防御,在加密过程中非常重要。本文将详尽揭露数据加密的全面加密过程,以帮助您更好的了解这一关键要素。一、数据加密系统的前提数据加密系统通常包括三个核心部分:加密算法、密钥管理与信息加密破译过程。加密算法是数据加密的关键,它决定了如何把明文...