自定义应用层通信协议
来源:互联网 发布:地方门户网站源码 编辑:程序博客网 时间:2024/05/18 00:13
1.通信协议的概念及其要素
在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(Service Data Unit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(Protocol Data Unit,PDU),封装过程实际上是为SDU增加对等实体间约定的控制信息(Protocol Control Information,PCI)的过程。
为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。
网络协议的分层有利于将复杂的问题分解成多个简单的问题,从而分而治之。各层的协议由各层的实体实现,通信双方对等层中完成相同协议功能的实体称为对等实体。对等实体按协议进行通信,所以协议反映的是对等层的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。
通信协议精确地定义了双方通信控制信息和解释信息:发送方能将特定信息(文本、图片、音频、视频)按协议封装成指定格式的数据包,最终以串行化比特流在网络上传输;接收方接收到数据包后,根据协议将比特流解析为本地化数据,从而获取对方发送过来的原始信息。
通信协议包括三个要素:
(1)语法:规定了信息的结构和格式;
(2)语义:表明信息要表达的内容;
(3)同步:规则涉及双方的交互关系和事件顺序。
整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet互联网的核心协议。
2.通信协议开发步骤
(1) 协议的开发主要包括协议设计、协议形式描述、协议实现和协议一致性测试。协议的开发过程与步骤如图1所示。
图1 协议开发过程与步骤
(2) 协议设计过程中的分组发送接收模型如图2所示。
图2协议设计过程中的分组发送接收模型
(3)协议的一致性测试
协议的一致性测试是指测试协议能否按照预想的控制策略实现正确的通信,主要体现在数据包通过信道从信源传送到信宿后,信宿能够根据协议正确的解析出原始信息。
协议的一致性测试如图3所示。
图3 协议一致性测试环境
根据测试环境的可以分为局部测试和分布式测试,如图4所示。
图4局部测试法、分布式测试法
3.数据包和数据报
为方便描述自定义协议,还是借用数据包和数据报来描述封装数据单元和传输数据单元,但这里的数据包和数据报完全不同于TCP/IP架构中的Packet和Datagram概念。
下文所述的数据包指封装的基本单位,以TLV(Type-Length-Value)格式封装基本消息单位;数据报Package是传输的基本单位,头部包含序列号和命令信息。接收端根据命令信息分辨事件类型,做出不同的解析。报文实体是多个TLV数据包组成的链表。
参考:
《计算机网络协议和实现技术》 鲁士文
- 自定义应用层通信协议
- 自定义应用层通信协议
- 自定义应用层通信协议
- 自定义应用层通信协议
- 自定义应用层通信协议
- 自定义应用层通信协议
- 自定义应用层通信协议(1)
- 应用层通信协议开发浅析
- 应用层通信协议开发浅析
- 应用层通信协议开发浅析
- 自定义通信协议设计之TLV编码应用
- 自定义通信协议
- 自定义通信协议
- 熟悉基本通信协议(5)应用层(高层)
- 熟悉基本通信协议(5)应用层(高层)
- 亲历的几个糟糕的应用层通信协议设计
- 自定义通信协议举例
- 一种自定义网络通信协议
- Windows驱动_WSK驱动之一WSK是什么
- cocos2d-X 节点(CCLabelAtlas.h)API
- 七牛为什么没用erlang而用golang呢?
- 查询性能“逆袭”—巧用“BETWEEN”
- 2014找工作总结-机会往往留给有准备的人
- 自定义应用层通信协议
- ofstream的使用方法
- 距离与相似性度量
- 从操作系统角度看可执行文件的装载和执行
- Xcode5编译archive文件并上传到app store
- cocos2d-X 节点(CCLabelBMFont.h)API
- javascript中call方法使用
- 机器人行走问题
- UVA 10635 Prince and Princess [序列无重复元素时 LCS转换成LIS问题求解 O(nlogn) ]