JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf
《JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf》由会员分享,可在线阅读,更多相关《JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf(41页珍藏版)》请在麦多课文档分享上搜索。
1、ICS 35.240.40 A 11 JR 中华人民共和国金融行业标准 JR/T 0066.32019 代替JR/T 00662011 银行间市场业务数据交换协议 第3部分:适流表示层 Interbank market information exchange protocol Part 3:Presentation streaming layer 2019 - 01 - 08发布 2019 - 01 - 08实施 中国人民银行 发布 JR/T 0066.32019 目 次 前言 . II 1 范围 . 1 2 术语和定义 . 1 3 语法和结构 . 2 4 编解码语法 . 4 附录A(资料性
2、附录) 错误代码汇总 . 36 I JR/T 0066.32019 前 言 JR/T 0066银行间市场业务数据交换协议分成3部分: 第1部分:语法、结构与会话层; 第2部分:应用层; 第3部分:适流表示层。 本部分为JR/T 0066的第3部分。 本部分依据GB/T 1.12009给出的规则起草。 本部分由中国外汇交易中心暨全国银行间同业拆借中心提出。 本部分由全国金融标准化技术委员会(SAC/TC 180)归口。 本部分负责起草单位:中国外汇交易中心暨全国银行间同业拆借中心。 本部分参与起草单位:中国人民银行科技司。 本部分主要起草人:许再越、姚前、杨富玉、朱荣、叶胜国、姜才康、王成勇、胡
3、剑、李正、陈彬、 胡卫平、沈峻、崔嵬、郦永达、余波、曲维民、孙小林、沈薇薇、茅廷、杨帆、夏志江、孙英昊、包晓 晶、赵俊锋、卢艳民、崔奇、邓钢轶、严璐祎、沈叶。 JR/T 0066于2011年6月2日首次发布,本次为第一次修订。 II JR/T 0066.32019 银行间市场业务数据交换协议 第3部分:适流表示层 1 范围 JR/T 0066的本部分规定了银行间市场参与方基于会话层和应用层的银行间市场成员交互数据进行 适流压缩的协议(Interbank Market Information Exchange Adapted for Streaming,简称IMAST)。 本部分适用于外汇市场、
4、货币市场和衍生品市场的前、中、后台以及债券市场的前、中台,不含债 券市场的后台清算、结算部分。 2 术语和定义 下列术语和定义适用于本文件。 2.1 IMIX适流 IMIX adapted for streaming(IMAST) 一种压缩IMIX报文数据的二进制流。 2.2 编码 encode 将IMIX报文转换成IMAST流的过程。 2.3 解码 decode 将IMAST流转换成报文的过程。 2.4 应用类型 application type IMIX会话层或应用层的域、组件或重复组在适流表示层的抽象概念。 2.5 域指令 field instruction IMIX会话层或应用层的域、
5、组件或重复组在适流表示层的编码规则。 2.6 模板 template 某个场景下若干域指令的集合所实现的编解码控制结构。 2.7 1 JR/T 0066.32019 上下文 context IMAST编码或解码的运行环境。 3 语法和结构 3.1 IMAST协议框架 适流表示层应用模式见图1。 图1 适流表示层应用模式图 IMAST协议框架依赖报文所指向的模板进行编码和解码,形成IMA ST流进行网络传输。 模板是针对某一IMIX报文的编解码控制结构,通过规定报文中域、组件、重复组的顺序和结构、运 算规则、二进制编码表示方法来控制与应用报文相对应的二进制流的编码和解码。模板是包含若干域指 令的
6、序列。 域指令规定报文中域、组件、重复组的编码方式。域指令由名称、应用类型、存在属性和操作符组 成。 应用类型是报文中域、组件或重复组在适流表示层的表现形式。 3.2 IMAST流总体结构 IMAST流的总体结构采用扩展巴科斯范式(EBNF)语法进行定义。 stream:=message*|block* block:=BlockSize message+ message:=segment* segment:=PresenceMap TemplateIdentifier? (field|segment)* field:=integer|string|Decimal|ByteVector IMAS
7、T总体结构图见图2。 IMIX报文 35=8 适流编码 IMAST流 11100000 10000001 01001000 适流解码 IMIX报文 35=8 模板 域指令 应用类型 模板 域指令 应用类型 2 JR/T 0066.32019 图2 IMAST流总体结构图 IMAST流总体结构具体说明如下: a) 流(stream):一个IMAST流(stream)为一个报文的序列(sequence),或为一个块的序列; b) 块(block):块(block)是包含单个或多个报文的一个序列,块带有一个前导的、用来表示 块包含报文所占字节数量的块大小(blocksize); c) 报文(mess
8、age):每个报文(message)由一个段(即报文段)来表示; d) 段(segment):段(segment)由头部和具体域组成。 IMAST流示例如下: 市场数据请求IMIX报文示例见图3。 图3 市场数据请求IMIX报文示例 通过编码后,形成市场数据请求IMAST流,其中PAMP表示占位图,TID表示模板标识符,见图4。 报文 Message 或 段 Segment 报文 Message 报文 Message 块 BlockSizeMessage 报文 Message 报文 Message 报文 Message 占位图 PresenceMap 模板标识符 TemplateIdentif
9、ier(可选) 域 Field 域 Field 子段 Segment 子段 Segment 头部 块 BlockSizeMessage 块 BlockSizeMessage 8=IMIX.2.09=4134=235=V49=CFETS-RMB-CSTP56=IH52=20151208-12:00:00263=21 46=148=CNY10=167 流 Stream 3 JR/T 0066.32019 图4 市场数据请求IMAST流示例 3.3 字节停止位 IMAST流采用停止位编码规则进行编码,即报文中每一个字节都有一个停止位。一个停止位编码实 体是一个字节序列,其中每个字节的最高有效位(th
10、e most significant bit)指示下一字节是否是实 体的一部分。 停止位示例说明见图5。 注:当字节为停止位实体的最后一个字节,停止位设置为1。 图5 停止位示例图 4 编解码语法 4.1 概述 编解码的过程依赖于报文所指向的模板。编码时,编码器通过模板中域的属性对原始消息中的域进 行编码操作,并根据规则生成占位图,从而把占位图和编码后的值输出到报文二进制流中。IMAST接收 端解码器根据接收的报文二进制流里的模板标识符找到模板后,根据模板中对域的编码规则(主要是由 操作符和占位图决定编码)进行解码,还原传输前的报文。 报文实例 字节 字节 字节 字节 字节 字节 第7位 第6
11、位 第5位 第4位 第3位 第2位 第1位 第0位 停止位 数据位 停止位实体 01111111 11111000 10000010 10101001 10000010 11010110 01000011 01000110 01000101 -PMAP-|-TID-|-9号域-|-34-|-35-|- 01010100 01010011 00101101 01010010 01001101 01000010 00101101 01000011 01010011 -39- 01010100 11010000 01001001 11001000 10000000 00110010 00110000
12、 00110001 00110101 -|-56-|-长度-|- 00110001 00110010 00110000 00111000 00101101 00110001 00110010 00111010 00110000 -52- 00110000 00111010 00110000 10110000 10000010 10000001 01000011 01001110 11011001 -|-263-|-146-|-48-| 00000001 10000111 -10- 4 JR/T 0066.32019 4.2 应用类型 应用类型能被映射为下列模型: a) 基本类型:包含整数类型、
13、十进制小数类型、字符串类型、字节向量类型; b) 组件类型:一个包含无序的域指令的集合; c) 重复组类型:一个包含长度及有序的若干组件类型的域指令的集合。 应用类型模型见图6。 图6 应用类型模型图 4.3 模板 4.3.1 概述 模板的定义应使用XML表达,由“”元素定义。一个模板定义的XML文档可包含单个 模板或多个模板的集合。模板集合应封装在“”元素中,该元素可包含应用于整个封装 的模板集合的命名空间参数。 4.3.2 语法规则 模板语法规则定义如下: start=templates|template templates=element templatesnsAttr?,templat
14、eNsAttr?,dictionaryAttr?,template* template=element templatetemplateNsName,nsAttr?,dictionaryAttr?,instruction* instruction=field 注: templates:多个模板; template:单个模板; element templates:多个模板元素; 应用类型 基本类型 模板 模板名称 模板标识符 十进制小数域指令 整数域指令 字符串域指令 字节向量域指令 组件域指令 重复组域指令 十进制小数类型 整数类型 字符串类型 字节向量类型 组件类型 重复组类型 5 JR/T
15、 0066.32019 element template:单个模板元素; nsAttr?:命名空间属性,可选元素; templateNsAttr?:模板命名空间属性,可选元素; dictionaryAttr?:字典属性,可选元素; template*:N个模板; templateNsName:模板命名空间名; instruction*:N个域指令。 示例: 下面的XML片段是采用具体语法格式的一个模板定义的例子。 6 JR/T 0066.32019 4.3.3 标识符 模板标识符在数据流中报文段头部,表示该报文所使用的模板,以一个无符号整数来表示。如果过 长,则产生可报告错误ERR R6。 如
16、果一个解码器无法找到与数据流中出现的模板标识符所关联的模板,则产生动态错误ERR D9。 模板标识符的编码与拷贝操作符的用法相同。拷贝操作符使用全局字典,且具有所有模板标识符域 公用的一个内部关键字(Key)。拷贝操作符定义见4.6.7。 4.3.4 名称 4.3.4.1 定义规则 模板名称的定义由两部分组成:命名空间(namespace)URI和本地名称。 使用应用类型、域和操作符关键字的命名空间URI由“ns”参数指定。 模板的命名空间URI由“templateNs”参数指定。 本地名称由参数“名称(name)”指定。 两个名称相同,当且仅当它们的命名空间标识符和本地名称都相同。 4.3.
17、4.2 语法规范 模板名称语法规范定义如下: nsName=nameAttr,nsAttr?,idAttr? templateNsName=nameAttr,templateNsAttr?,idAttr? nameAttr=attribute nametoken nsAttr=attribute nstext templateNsAttr=attribute templateNstext idAttr=attribute idtoken 注: nsName:命名空间名; nameAttr:名称属性; nsAttr?:命名空间属性,可选元素; 7 JR/T 0066.32019 idAttr?:
18、标识符属性,可选元素; templateNsName:模板命名空间名; templateNsAttr?:模板命名空间属性,可选元素。 4.3.5 指令 模板指令是包含若干指令的序列。指令应与数据在流中的位置相对应。 模板指令主要采用域指令,规定域的实例编码和二进制流的方法。 4.4 上下文 上下文规定编码和解码的运行环境,应包括: a) 模板的集合; b) 当前模板; c) 域指令的集合; d) 当前的域指令; e) 字典集合; f) 可选的初始值。 当前模板指正被处理的模板,在流中处理到一个模板标识符时当前模板被更新。对静态模板的引用 也可引起当前模板的改变。 4.5 域指令 4.5.1 定
19、义 域指令由名称、应用类型、存在属性和操作符组成。 域指令通过名称区分,名称在单个组件内具有唯一性。 应用类型规定了域的基本编码方法,具体包括:整数(integerField)、十进制小数(decimalField)、 ASCII码字符串(asciiStringField)、Unicode字符串(unicodeStringField)、字节向量 (byteVectorField)、重复组(sequence)、组件(group)。 存在属性用于指示域指令是必选域(mandatory)或者是可选域(optional)。如果存在属性未被 指定,则该域指令为必选。 域操作符是可选信息,用于规定域指令编
20、码的优化传输方式。除组件域和重复组域之外的域可定义 其域操作符。 4.5.2 空值属性 每个域指令的应用类型具有一个空值(nullability)的属性。如果类型为可空(nullable),则 NULL值采用一种特殊表示方式。如果类型不可空(non-nullable),则不保留任何NULL的表示方式。所 有的可空类型按照以下方式构建,即NULL由所有位均为0的7位实体值来表示。在使用停止位编码时,NULL 由0 x80来表示。 除非明确指定,否则缺省使用不可空的表示方式。 4.5.3 语法规则 域指令语法规则如下: field=integerField|decimalField|asciiSt
21、ringField|unicodeStringField|byteVectorField| sequence|group 8 JR/T 0066.32019 fieldInstrContent=nsName,presenceAttr?,fieldOp? presenceAttr=attribute presencemandatory|optional 注: integerField:整数域指令; decimalField:十进制小数域指令; asciiStringField:ascii码类型字符串域指令; unicodeStringField:unicode字符串域指令; byteVector
22、Field;字节向量域指令; sequence:重复组域指令; group;组件域指令; nsName:域指令命名空间名; presenceAttr:存在属性,可选元素; fieldOp:域操作符,可选元素。 4.5.4 分类 4.5.4.1 整数域指令 4.5.4.1.1 概述 整数域指令的类型包括32位无符号整数(uInt32),32位整数(int32), 64位无符号整数(uInt64), 64位整数(int64)。 整数(Integer)在传送编码中的大小不受限。 所有的整数域指令使用大尾端(big endian)方式来表示,其中位元和字节均采用网络字节顺序, 即高位在低位前,高字节在
23、低字节前。 4.5.4.1.2 有符号整数域指令 实体的值为一个补码TWOC。实体值的最高有效位为符号位。 4.5.4.1.3 无符号整数域指令 实体值即为整数的二进制表示形式。 4.5.4.1.4 语法规则 整数域指令语法规则如下: integerField = element int32fieldInstrContent |element uInt32fieldInstrContent |element int64fieldInstrContent |element uInt64fieldInstrContent 注: integerField:整数域指令; fieldInstrConte
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行间市场业务数据交换协议 第3部分:适流表示层 JR 0066.3-2019 银行间市场业务数据交换协议 第3部分:适流表示层 0066.3 2019 银行间 市场 业务 数据 交换 协议 部分
