自己设计系统之间的通信协议

    一个突发奇想


     昨天一直在想http协议的问题,http协议是基于TCP/IP协议的,我一直在想,http的实体在哪里?后来我想,http不过是一个“全球范围内的承诺”,所有使用它的人都承诺按照特定的格式传递数据。因此,用正式一点的话说,它只不过是一组全球共同承认的规范而已,定义了一组程序、服务器等必须遵守的通信约定,这么想来,协议貌似就没有那么神秘了。因此,我觉得我们人人都可以制定协议了,小到一句话大到一个庞大的协议族。我们在设计自己内部的系统时,有时候为了通信方便,我们可以设计自己的协议,比如FastDFS分布式文件系统就制定了自己系统内部的通信协议,如图:


详细设计


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

一般来说,一个基本的数据包协议需要以下部分:


1. 协议的标识
2. 协议版本号
3. 协议包的序号
4. 协议包的发出时间
5. 协议包的类型
6. 协议包的数据长度
7. 数据
8. 校验码

9. 结束符


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值