如何设计两个系统之间的通信协议

来源:互联网 发布:淘宝默认好评是五星吗 编辑:程序博客网 时间:2024/05/20 22:28

 当需要进行网络通讯时,要想让双方识别对方,就涉及对协议的设计。那么
在具体项目中,如何设计协议呢?或者如何设计出较高效的协议?来满足项目的
要求呢?

     一般来说,一个基本的数据包协议需要以下部分
1. 协议的标识
2. 协议版本号
3. 协议包的序号
4. 协议包的发出时间
5. 协议包的类型

-------------------

6. 协议包的数据长度
7. 数据

-------------------
8. 校验码
9. 结束符

上面的9点中,第一个横线上的是包头部分,对于每个数据包都是
一样的,但对于后面的6,7跟具体的包有关,这部分是不同的。
下面的8.9也是相同的。

 

下面继续说明6, 7两点的设计办法。

如果协议包的每种类型下面没有更多的分类,那么,数据这部分无需再设计
只要一个值即可,但情况往往不是那么简单,情况如下
(1)如果数据也有多种类型,那么数据部分得再加上一个类型标号,
(2)如果数据同时有多个,那么数据部分必须分成二部分,一部分表明其数据
个数,后面再跟多个数据个体。

对于MD5加密,它是对任意长的字节串进行运算,产生一定长的大整数,
它的长度是32个字节,128位。
MD5广泛用在数字签名中,及用户验证中
数字签名的应用比如,在下载时,会附带一个.md5,里面有一个32个字符,
这就是此下载文件的md5值,
下载者可将此文件进行md5运算,看其值是否等于.md5里的内容。

用户验证的例子比如.
将登录名计算成一个md5大整数,
当用户登录时,将此时的登录名用md5算法运算一下,看其值与md5是否相等。


---------------------------------
例子:设计一个传递室内温度,与 空气含氧量的协议
首先
1, 2, 3, 4, 点好设计,照搬即可, 那么5的类型,此处有二个,即温度或
者空气含氧量, 其类型有二种0xC1, 0xC2

6数据的长度与7数据内容有关,7数据内容可以是获取温度时间与温度值,
也可以是获取时间与空气含氧量。

8, 9 照搬即可。


0 0