通讯报文学习手册

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

通讯报文学习手册1通讯报文学习手册通讯报文学习手册21常用报文类型目前常用报文类型包括:ISO8583报文、定长报文、不定长报文、XML报文、分隔符报文2ISO8583报文ISO8583包(简称8583包)是一个国际标准的包格式,最多由128个字段域组成,每个域都有统一的规定,并有定长与变长之分。8583包前面一段为位图,用来确定包的字段域组成情况。其中位图是8583包的灵魂,它是打包解包确定字段域的关键,而了解每个字段域的属性则是填写数据的基础。在网络中传输报文的格式是不断变化的,报文中使用位图来标识报文中有哪些域而没有哪些域。一个报文中可以有一个或两个位图位图在报文中位置如图所示:报文类型标识符位图报文域位图1=域2-64位图2=域66-128图1位图2.1第一个位图第一个位图又称为主位图,每一个报文都有主位图。它由64个二进制位(8个字节)构成,位于报文类型标识符之后。除了第一位,每一位和一个域相对应,即和域2到域64相对应。每位的值指示该域是否出现在报文中:如果一个位为0,与之对应的域不出现在报文中;如果一个位为1,与之对应的域出现在报文中。域号是1的域不存在。主位图的第一位用来指明在主位图后是否还有第二个位图,称为位图二。位图二的说明见下节。下图说明了位图的位置和功能。在这个例子中,位图第一位是0,表示主位图后没有第二个位图。第2、3、4位是1,表示域2、3、4出现在报文中。第5、6位是0,表示报文中没有域5、6。第7位是1,表示域7出现在报文中,依次类推。通讯报文学习手册3Bits1­89­1617­2425­3233­4041­4849­5657­640111001000000100010001001000000100101000110000001000000000010000数据域消息类型位图234714182225323537414249602-主账号3-交易处理码4-交易金额7-交易传输时间14-卡有效期18-商户类型22-服务点输入方式码25-服务点条件码32-代理机构标识码35-第二磁道数据37-检索参考号41-受卡机终端标识码42-受卡方标识码49-交易货币代码60-自定义域图2第一个位图示例2.2第二个位图主位图的第一位指明了主位图后是否有位图二。和主位图相同,位图二也由64个二进制位(八字节)构成。可以认为位图二是主位图的扩展,和域66到128相对应。报文域65不存在。只有当报文中包含有域66到域128中的域,位图二才会使用到。位图二紧接着主位图,并在报文域之前。下图显示了位图二的位置和功能。主位图的第一位是1表示位图二的存在。如果位图中的哪一位为1,表示以该位序号为序号的域存在。例如,位图二中的位90是1,表示报文中有域90存在。bits1-641位图1第1位表示位图二存在0位图2域2-64域66-128位图二所指的域图3第二个位图示例2.3程序处理的准则本节详细说明CUPS处理报文数据时的规则。通讯报文学习手册42.3.1报文的长度正确的报文最大长度不超过1846字节。错误的报文最大长度不超过1892字节。2.3.2数据的表示对于ISO8583报文中的域规定为数字的,CUPS以数字的ASCII码表示。本文中以这种方式表示:nx,x位定长数字字符对于ISO8583报文中的域规定为字符和数字的,CUPS以字符和数字ASCII码表示,本文中以这种方式表示:anx,x位定长的字母和数字字符对于一些域,虽然定义为字符和数字,实际内容的取值也可能只是数字,例如域37—检索参考号。标记为ans的域表示该域除了字母和数字,还允许有特殊字符,比如破折号、斜杠等。2.3.3域的对齐所有域以字节边界对齐。2.3.4域的长度ISO标准中规定的可变长度域最长可以达到999个字节。本文中的域描述给出了每个可变长度域的最大长度字节数,这个长度限制适应于整个域,该域中所有子域的长度和应小于等于整个域的长度。所有的长度值不包括长度子域本身的长度。报文域的长度占位含义依赖于域的属性,可以是字母、数字或二进制位。此规定可以让其它网络和系统的应用能正确的跳过这些域。所有的二进制位域,如位图和PIN,它们的位串必须被正确的构造。2.3.5变长域处理对于变长域通常定义为如下格式:ansb...512(LLLVAR)其中”ansb”:表示数据类型为字母、数字、特殊字符、二进制数“...512”:表示最大长度为512个字节“LLLVAR”:L表示长度位,LLL表示3个字节的长度ansb...512(LLLVAR):3个字节的长度值+最大512个字节(字母、数字、特殊字符、二进制数)的数据2.3.6对未使用位置的填充对于固定长度的报文域有以下填充规则:——如果是数字域,右靠齐,左边多余位填零;——如果不是数字域,左靠齐,右边多余位填空格。2.3.7带有可选择子域的报文域如果一个域带有子域,并且不是全部子域都要求出现在报文中,那么只要该域的任何一个子域出现在报文中,该域在位图中对应的位就要设为1。2.4BCD码二进制编码的十进制数,简称BCD码(BinarycodedDecimal).这种方法是用4位二进制码的组合代表十进制数的0,1,2,3,4,5,6,7,8,9十个数符。4位二进制数码有16种组合,原则上可任选其中的10种作为代码,分别代表十进制中的0,1,2,3,4,5,6,7,8,9这十个数符。最常用的BCD码称为8421BCD码,8.4.2.1分别是4位二进数的位取值。点击此处将给出十进制数和8421BCD编码的对应关系表。1、BCD码与十进制数的转换BCD码与十进制数的转换.关系直观,相互转换也很简单,将十进制数75.4转换为通讯报文学习手册5BCD码如:75.4=(0111(0101.0100)BCD若将BCD码10000101.0101转换为十进制数如:(10000101.0101)BCD=85.5注意:同一个8位二进制代码表示的数,当认为它表示的是二进制数和认为它表示的是二进制编码的十进制数时,数值是不相同的。例如:00011000,当把它视为二进制数时,其值为24;但作为2位BCD码时,其值为18。又例如00011100,如将其视为二进制数,其值为28,但不能当成BCD码,因为在8421BCD码中,它是个非法编码3定长报文定长报文,应该是目前使用最广泛的报文,是报文类型中的元老级别人物了,定长报文也比较简单,理解起来也比较方便。但是定长报文也有其局限性,它的最大弱点就是担心以后所定义域的长度要加长,这个时候配置或程序就要改变。4不定长报文由长度+数据组成,长度用一个字节的二进制数表示,数据全部转换成字符串传送,字符串的最大长度由系统的BYTE_MAX_LEN宏定义指定,大于该长度的部分系统保留作为控制命令用。如果数据单元的长度超过BYTE_MAX_LEN,则分段发送,0xFF作为超长数据的标志。例如要传768字节数据,由于系统定义BYTE_MAX_LEN为250,则该数据段为0xFF+250字符+0xFF+250字符+0xFF+250字符+0x12+18字符;如要传250字节数据时,则该数据段为0xFA+250字符。5XML报文XML是eXtensibleMarkupLanguage的缩写。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。6分隔符报文报文各域之间使用特殊符号区分,一般使用”|”作为分隔符,也可以使用其它符号作为报文之间的分隔符。

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功