自定义应用层通信协议

自定义应用层通信协议

ID:35228020

大小:133.00 KB

页数:5页

时间:2019-03-22

自定义应用层通信协议_第1页
自定义应用层通信协议_第2页
自定义应用层通信协议_第3页
自定义应用层通信协议_第4页
自定义应用层通信协议_第5页
资源描述:

《自定义应用层通信协议》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.通信协议的概念及其要素在OSI开放互联参考模型中,对等实体之间数据单元在发送方逐层封装,在接收方的逐层解析。发送方N层实体从N+1层实体得到的数据包称为服务数据单元(ServiceDataUnit,SDU)。N层实体只将其视为需要本实体提供服务的数据,将服务数据单元进行封装,使其成为一个对方能够理解的数据单元(ProtocolDataUnit,PDU),封装过程实际上是为SDU增加对等实体间约定的控制信息(ProtocolControlInformation,PCI)的过程。为了保证网络的各个功能的相对独立性,以及便于实现和维护,通常将协议划

2、分为多个子协议,并且让这些协议保持一种层次结构,子协议的集合通常称为协议簇。网络协议的分层有利于将复杂的问题分解成多个简单的问题,从而分而治之。各层的协议由各层的实体实现,通信双方对等层中完成相同协议功能的实体称为对等实体。对等实体按协议进行通信,所以协议反映的是对等层的对等实体之间的一种横向关系,严格地说,协议是对等实体共同遵守的规则和约定的集合。通信协议精确地定义了双方通信控制信息和解释信息:发送方能将特定信息(文本、图片、音频、视频)按协议封装成指定格式的数据包,最终以串行化比特流在网络上传输;接收方接收到数据包后,根据协议将比特流解析为本

3、地化数据,从而获取对方发送过来的原始信息。通信协议包括三个要素:(1)语法:规定了信息的结构和格式;(2)语义:表明信息要表达的内容;(3)同步:规则涉及双方的交互关系和事件顺序。整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet互联网的核心协议。2.通信协议开发步骤(1)协议的开发主要包括协议设计、协议形式描述、协议实现和协议一致性测试。协议的开发过程与步骤如图1所示。图1协议开发过程与步骤(2)协议设计过程中的分组发送接收模型如图2所示。图2协议设计过程中的分组发送接收模型(3)协议的一致性测试协议的一致性测试是指测试协

4、议能否按照预想的控制策略实现正确的通信,主要体现在数据包通过信道从信源传送到信宿后,信宿能够根据协议正确的解析出原始信息。协议的一致性测试如图3所示。图3协议一致性测试环境根据测试环境的可以分为局部测试和分布式测试,如图4所示。图4局部测试法、分布式测试法3.数据包和数据报为方便描述自定义协议,还是借用数据包和数据报来描述封装数据单元和传输数据单元,但这里的数据包和数据报完全不同于TCP/IP架构中的Packet和Datagram概念。下文所述的数据包指封装的基本单位,以TLV(Type-Length-Value)格式封装基本消息单位;数据报Pa

5、ckage是传输的基本单位,头部包含序列号和命令信息。接收端根据命令信息分辨事件类型,做出不同的解析。报文实体是多个TLV数据包组成的链表。4.数据包TLV的设计从应用层HTTP协议,到超文本置标语言HTML(HyperTextMark-upLanguage),再到可扩展置标语言XML(ExtensibleMarkupLanguage),它们提供了数据的格式化存储、传输和格式化显示的规范,是网络通信的基石。然而HTTP协议以及HTML/XML置标语言的本质就是定义一堆标签(Tag)对数据进行串行化序列化,然后接收方再根据标签解析、还原数据。自定义

6、通信协议的关键是对数据包的合理构造(construct)和正确解析(parse),即制定编解码规则。抽象语法标记ASN(AbstractSyntaxNotation)BER的长度确定的编码方式,由3部分组成Identifieroctets、Lengthoctets和Contentsoctets,实际上这就是一中TLV(Type-Length-Value)模型:类型字段(Type或Tag)是关于标签和编码格式的信息;长度字段(Length)定义数值的长度;内容字段(Value)表示实际的数值。因此,一个编码值又称TLV三元组。编码可以是基本型或结构

7、型,如果它表示一个简单类型的、完整的显式值,那么编码就是基本型(primitive);如果它表示的值具有嵌套结构,那么编码就是结构型(constructed)。TLV编码就是指对Type(Tag)、Length和Value进行编码,形成比特流数据包;解码是编码的逆过程,是从比特流缓冲区中解析还原出原始数据。采用C++编程语言设计TLV协议类,其类视图如图5所示。图5CTLV类视图目前只提供设置整形值(int型)的setValue_Int和设置字符串值(C_String型)的SetValue_Cstring两个接口。TLV将数据封装成包的格式如表1

8、所示。表1TLV包格式TLV包头部包实体m_dwTagm_nLenm_pValueTLV的接口说明:(1)值类型标签m_vtTag是内部

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。