一个突发奇想

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

详细设计

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

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

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

9. 结束符

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

自己设计系统之间的通信协议相关推荐

  1. 基于xDSL宽带网络测试系统的TL1通信协议设计与实现

    摘要:基于xDSL宽带网络测试系统的TL1通信协议模块的设计与实现,以TCP/IP协议承载的TL1协议模块在设备层提供TL1协议接C7,根据ADSL宽带网络测试系统的工作流程以及TL1协议进行研究分析 ...

  2. 设计系统(Design System),设计和开发之间的“DevOps”

    最近,我们网站的上新增了几个新功能,比如通过导航栏的QR Code可以下载App:通过Carousel的方式,显示多条信息. 以往这样的功能可能需要2-3个Sprints完成,但是现在这些功能都是在一 ...

  3. 计算机辅助焊接过程控制,重型车辆计算机辅助焊接工艺自动设计系统.pdf

    金属学与金属工艺 维普资讯 第26卷 第10期 焊 接 学 报 v.1.26 N..10 2005年 10月 TRANSACTIONSOFTHECHINAWELDINGINSTITUTION Octo ...

  4. 出入口控制系统工程设计规范_[问答]连载77-控制系统之间如何时钟同步?

    仪表小猪 在控制系统中,趋势.报警.事件记录等都与时间相关,因此整个系统始终保持一个统一的时钟很关键.如果操作站和控制站时间不同步,操作员站上面显示的事件.趋势等也不能真正的反应出现场实际变化的时间, ...

  5. FPGA之道(3)数字系统之间的接口电平标准

    文章目录 前言 双阈值标准 TTL LVTTL LVTTL3V3 LVTTL2V5 CMOS LVCOMS LVCOMS3V3 LVCOMS2V5 LVCOMS1V8 LVCOMS1V5 LVCOMS ...

  6. 基于pt100温度计仿真_基于8pt网格的设计系统

    基于pt100温度计仿真 重点 (Top highlight) This article is the 2nd in a two part series - to the previous chapt ...

  7. figma设计_Figma中简单,可重复使用的设计系统

    figma设计 Putting together a design system may seem like an unnecessary hassle. It's often easier to j ...

  8. 微信公众号无需二次登录_您无需两次解决问题-您需要一个设计系统

    微信公众号无需二次登录 重点 (Top highlight) The design system concept can be differently defined according to eac ...

  9. 图书漂流系统的设计和研究_研究在设计系统中的作用

    图书漂流系统的设计和研究 Having spent the past 8 months of my academic career working co-ops and internships in ...

最新文章

  1. 免费资源:Typicons-免费图标字体
  2. 破windows xp登陆密码
  3. dataGridView1去掉第一列
  4. fanuc机器人提示暂停_川崎机器人故障排除参考方法
  5. SpringBoot加itext实现PDF导出
  6. python 3d大数据可视化软件_最受欢迎的大数据可视化软件
  7. 讲100个科学道理,不如做这些有趣的理科实验!
  8. 什么是JAX-RS注释? (第3部分)
  9. 配置mysql使其允许外部ip进行登录
  10. 开启httponly之后登陆失败_二次元约会模拟《少女都市》正式版登陆Steam 橘势大好...
  11. 系统蓝屏代码为0X00000024的解决办法
  12. Spark 计算人员二度关系
  13. 小米手机定时开关机在哪里设置?让你的小米手机“休息一下”
  14. python生成图像公章_科学网—python pillow库 python界的ps 实现数据批量盖章 并打包成exe - 李鸿斌的博文...
  15. 【题解】【中国大学MOOC】(北京大学)人工智能与信息社会考试——期末考试
  16. Python文件操作-替换srt文件行文本
  17. 将本地代码push到github上
  18. Drill系列(1):Dremel的原理
  19. 罗技k380键盘-数字键上的字符对不上怎么办?
  20. 【JMeter】JMeter怎么实现接口关联?

热门文章

  1. gstreamer学习笔记---编码videoencoder
  2. sqlalchemy.exc.ArgumentError: relationship 'tags' expects a class or a mapper argument (received:
  3. 王家林最受欢迎的一站式云计算大数据和移动互联网解决方案课程 V1之Android架构设计和实现完整训练:HALFrameworkNative ServiceAndroid ServiceBes
  4. 图像处理(6)--图像深度
  5. 如何撰写android课程设计ppt,课程设计实例讲解.ppt
  6. P2615 神奇的幻方
  7. 如何理解shared library
  8. wordpress入门-wordpress入门一键建站免费插件配置教程
  9. 【unity】游戏的第一人称编写,限制角色视野范围,unity的Rotate使用情况区分一次搞懂
  10. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第03章 加工原料文本