(控制理论与控制工程专业论文)数字防伪短信平台的研究与设计.pdf_第1页
(控制理论与控制工程专业论文)数字防伪短信平台的研究与设计.pdf_第2页
(控制理论与控制工程专业论文)数字防伪短信平台的研究与设计.pdf_第3页
(控制理论与控制工程专业论文)数字防伪短信平台的研究与设计.pdf_第4页
(控制理论与控制工程专业论文)数字防伪短信平台的研究与设计.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南京理工大学硕士学位论文数字蒴伪短信平台的研究与设 卜 摘要 目前,市场上商品假冒伪造现象严重,但传统防伪方法不能完全满足防伪要求。 为了解决这个问题,本文提出了短消息数字防伪的新方法。在短消息数字防伪系统 总体设计的基础上,设计并实现了短消息数字防伪的支撑平台数字防伪短信平 台。 平台采用c ,s 模式,遵循电信运营商协议,通过与互联网短信网关通信,接收 手机用户的防伪查询请求,经防伪系统处理后,将结果返回给手机用户。平台软件 按模块化设计,以数据库作为模块问交换数据的接口,能很容易的随时增加协议支 持及业务处理,具有良好的可扩展性。系统采用多线程队列、滑动窗口机制,自行 按标准协议封装网关通讯接口。只需简单修改通讯接口参数,就可以以同一网关通 讯接口登陆同一运营商不同厂商的网关,屏蔽了网关的地域差异性。系统能高效地 实现短信收发的异步处理、路由调度控制、流量控制、消息处理等。 经实验环境测试,系统能及时高效的处理消息,且无网络故障情况下不丢包率 达到了l o o ,满足了某著名酒厂的防伪要求,可以作为商用产品推广。 关键词l 数字防伪 短信平台c m p p 协议服务提供商 南京理工大学硕士学位沦文敷宁防伪短信平台的研究与设计 a b s t r a c t t h ep h e n o m e n o no fc o u n t e r f e i th a sb e e ns e r i o u si nt h em a r k e tn o w a d a y sw h i l et h e t r a d i t i o n a la n t i - c o u n t e r f e i tm e t h o dc o u l dn o tm e e ti t sr e q u i r e m e n t t os o l v em i sp r o b l e m , t h i st h e s i sp u t sf o r w a r dan e ws m sd i g i t a la n t i - c o u n t e r f e i tm e t h o dw h i c hh a sd e s i g n e d a n di m p l e m e n t e dt h ed i g i t a la n t i - c o u n t e r f e i ts m s p l a t f o r mw h i c hi sb a s e do nt h ew h o l e d e s i g no f s m sa n t i - c o u n t e r f e i ts y s t e m t h ep l a t f o r m , w h i c hi su n d e rac sm o d e , f o l l o w sp r o t o c o lo ft e l e e o ms e r v i c e p r o v i d e rb yc o m m u n i c a t i n gw i t hi n t e r n e ts m sg a t e w a ya n da c c e p t i n ga n t i - c o u n t e r f e i t r e q u e s t sf r o mm o b i l ep h o n eu s e r s , a n di tw mf e e db a c kt h er e s u l tt ot h e ma f t e r m a n a g e m e n to fa n d - c o u n t e r f e i ts y s t e n lt h ep l a t f o r m , w h i c hi sd e s i g n e da c c o r d i n gt o m o d u l a r i z e ds t a n d a r d ,c o u l de a s i l ya d ds u p p o r to fp r o t o c o la n dm a n a g e m e n to fb u s i n e s s w i t ha ne x c e l l e n te x p a n s i b i l i t yb yt a k i n gd a t a b a s ea st h ei n t e r f a c eo fe x c h a n g i n gd a t a a m o n gm o d u l e s a p p l y i n gm u l t i - t h r e a db u f f e rq u e u ea n ds l i d i n gw i n d o wm e c h a n i s m , t h e i s m gc o m m u n i c a t i o ni n t e r f a c ec a nb ee n c a p s u l a t e da u t o n o m o u s l ya c c o r d i n gt os t a n d a r d p r o t o c 0 1 i tc a nl a n dg a t e w a yo fd i f f e r e n tm a n u f a c t u r e r sb e l o n gt ot h es a m es e r v i c e p r o v i d e r w i t ht h es a m eg a t e w a yc o m m u n i c a t i o ni n t e r f a c e o n l yb ym o d i f y i n g c o m m u n i c a t i o ni n t e r f a c ep a r a m e t e re a s i l y n er e g i o n a l l yd i f f e r e n c eo fg a t e w a yi s a v o i d e di nd a i sw a y a n dt h es y s t e mc a ne f f e c t i v e l yr e a l i z ea s y n c h r o n o u so p e r a t i o n so f s m ss e n d i n ga n dr e c e i v i n g ,r o u t ec o n t r o l ,f l o wc o n t r o l ,m e s s a g em a n a g e m e n t ,e t c a c c o r d i n gt ot h et e s ti nl a b o r a t o r i a le n v i r o n m e n t ,t h i ss y s t e m , w h i c hc a ne f f e c t i v e l y m a n a g em e s s a g ei nt i m ew h i l ei tc 越a l s oa v o i dl o s i n gd a t ap a c k a g ea tar a t eo f1 0 0 w h e nt h e r ei sn om a l f u n c t i o no f 出ei n t e r n e t , n o to n l ya c h i e v e st h ea n t i - c o u n t e r f e i t r e q u i r e m e n to fs o m ef a m o u sw i n ef a c t o r yb u ta l s od e s e r v e st ob ep o p u l a r i z e da sa k e yw o r d s a n t i - c o u n t e r f e i t s m sp l a t f o r mc m p p p r o t o c o l s p ( s e r v i c ep r o v i d e r ) m 声明 本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本 学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或 公布过的研究成果,也不包含我为获得任何教育机构的学位或学历而使 用过的材料。与我一同工作的同事对本学位论文做出的贡献均已在论文 中作了明确的说明。 研究生签名: 加缶7 月产日 学位论文使用授权声明 南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或 上网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并 授权其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密 论文,按保密的有关规定和程序处理。 研究生签名:谢嗣刊。日 南京理工大学硕士学位论丈教宁防伪短信平台的研究与设计 l 绪论 1 1 课题研究背景 伪造、假冒类违法犯罪活动自古就有,是商品市场竞争中的必然现象,只要有 市场经济,有利益主体间的差别,假冒活动就难以避免。当今世界各国的商品市场, 没有不受假冒伪劣产品冲击者。伪造和假冒与艾滋病、贩毒和吸毒、环境污染已并 列为世界四大公害。在全世界,伪造与假冒类违法犯罪活动,几乎与科学技术的进 步、金融贸易的发展同步进行。有些伪造、仿冒者组成犯罪团伙,甚至有国际背景, 他们动用高科技手段制作赝品、防伪标识以及防伪包装物,打入市场,扰乱金融、 谋取暴利、玷污名牌、扼杀创新、吓退投资商、危害国家和民众的利益,甚至危害 消费者的健康和生命。 改革开放以来,我国的国民经济快速增长,但也不可避免的遇到了经济领域里 的各种违法犯罪活动。据报,1 9 9 4 年以来,各级工商行政管理部门共查处各种经济 违法违章案件近4 0 万件,涉及违法金额3 0 0 亿元。可见,近些年经济领域里犯罪 案件增长速度之快、危害之大。 为保护国家的利益,维护企事业单位的合法权益以及广大消费者的切身利益, 近年来全国人大和国务院先后颁布了反不正当竞争法、消费者权益保护法等 法律、法规,在打击伪造、假目等违法犯罪活动中发挥了作用。但是,只要有商品 市场就有经济竞争,就有利益的驱动,加之当前的法制还不健全,市场管理还不规 范、到位,所以说,在相当长的时期内,制假贩假就只能是受到某种程度的遏制或 相对的减少,而不可能彻底消灭。因此,防伪打假的任务将是长期的、艰巨的,甚 至是相当复杂的。所以,在强调生产、销售和市场管理的同时,必须有远见、有组 织,有计划、有投入的研究防伪技术及相关措施、开发防伪技术新产品并对防伪技 术产品的研制、生产以及销售等各个环节实行严格的管理。 1 2 防伪技术的发展现状和趋势 ,传统防伪技术主要有以下两类: 第一类是视觉防伪技术。如:多重激光防伪、一维、二维条形码防伪、荧光防 伪、变温防伪、水印防伪等。这一类防伪技术在防伪技术发展的初期阶段确实起到 了较好的作用,但随着市场的发展,假冒伪劣产品也采用激光防伪技术。由于多重 激光防伪技术很难靠人的视觉识别其真伪,使假冒伪劣产品仍然达到了以假乱真的 地步。一些用于特定包装上的一维、二维条形码标识,在社会公众没有专业知识或 识别设备的情况下,对产品的真伪性更是难于区分。其它一些防伪技术,如荧光等, 硕士论文 由于技术含量低,结构组合极易破译,而且是以制造者拥有某种特殊技术和配方为 前提的,一旦泄漏将会出现大量伪造包装和产品。 第二类是电子识别防伪技术。如磁卡记录、i c 卡等防伪标识,这种标识的确起 到了很好的防伪作用,假冒伪劣产品由于无法进入计算机管理系统,所以无法进行 假冒。但这种防伪标识需要使用专用设备进行查询,也就是只能在特定条件下才有 可能进行查询,从而限制了用户的使用范围,推广也就受到了限制。 在9 0 年代中期,随着计算机技术、数据库技术和信息编码技术的发展,一种 新的防伪技术数字防伪技术应运而生。数字防伪技术很好的解决了传统防伪方 法存在的问题,其防伪原理是:首先由计算机为每一件使用数字防伪的产品随机加 密生成一组2 4 位防伪数码。由于是随机生成,也就是无规律可循,所以没有人预 知其数码的构成,这使任何人都无法去成批量的造假,包括生成数码的操作人本身。 而且这个数码是由2 4 位组成,所以可以保证随机猜中的概率几乎为零。新数码生 成后将利用现代印刷技术将其印在防伪标识物上,然后再次利用印刷技术将其覆 盖。消费者在需要鉴别商品真伪时,只需以刮开标签或撕开覆盖层后得到的防伪数 码向防伪系统查询,就可以判断该商品的真伪。 数字防伪技术一经推向市场就引起了国家、企业和社会各方面的关注。对于数 字防伪技术的应用,国内外企业多是采用电话查询的方式。1 9 9 6 年3 月2 7 日,国 家经贸委等多个部门联合成立了数码电话防伪系统工程领导小组,由领导小组 组织、协调在全国范围内实施这项跨世纪的防伪工程。此后连续多年国家科委都将 此项目列入国家级火炬计划“”。在国家政府的大力支持下,我国的数字防伪技术得 到了飞快的发展。海南腾龙防伪技术有限公司获得国家专利的“电码防伪标识及识 别系统m ”为国际国内首家运用电话查询的数字防伪技术的应用系统。 但随着应用的深入,电话防伪表现出诸多不足。一是不符合中国国情,电话查 询分8 0 0 被叫付费和1 6 8 信息查询两种方式,前者对于企业来说防伪成本过大,企 业和服务提供商不堪重负,后者对于广大低收入消费者来说是完全没有能力支付 的;二是受通信条件影响,查询不方便,查询率低,防伪效果差;三是功能单一, 不能对顾客数据进行有效利用,造成效果和费用成反比的矛盾模型,难以满足企业 的多功能需求。 基于此种情况,在长期对短信增值业务的研究基础上,根据短消息存储转发、 资费低廉、易于操作等特点,我们提出了短消息数字防伪技术。这种防伪技术以短 消息为承载,融合了计算机技术、移动通信技术、数据库技术、信息编码技术及现 代化管理技术等多项高科技成果。通过手机短信息的方式实现消费者对商品真伪的 鉴别,成功的解决了企业防伪难题,为行政执法部门打假提供了有效的依据。在消 费者和企业之间架起了一道简便、快捷的沟通桥梁,使消费者随时随地可以利用手 2 南京理工大学硕士学位论文敦宁防伪短信平台的研究与设计 机短信进行商品真伪的查验鉴别。 短消息数字防伪具备如下等技术特点: 夺技术的不可伪造性。数码防伪标识物浓缩了多项高科技手段,具有独特的 防伪机理,即使是伪造者掌握了该防伪标识的制造方法,也无法伪造出与 真品相对应的正确伪密码,更无法将伪造的密码信息送存于防伪中心数据 库中,因此从根本上杜绝了大批量工业化造假行为。 夺鉴别的简易性。消费者无论在何时何地均可通过手机输入标识上的数码, 由计算机系统自动鉴别,即可得到生产厂家、商品真伪等相关的信息,鉴 别过程只需几十秒钟。 成本的低廉性。企业首先不必再因产品被大量伪造而更换防伪措施,因而 可节约大量的包装及广告费用;其次,数字防伪技术的主要表现形式为一 串数据符号,生产相对简单,防伪成本明显低于其它防伪措施。 夺单体防伪性。对每一单件产品用计算机随机加密生成个唯一的防伪数码, 绝无重复,防伪是针对每一个个体的。 密码使用的一次性。每个防伪密码部是隐藏在数字防伪标识物中,只有破 坏性刮掉涂层或揭开标识物,才能看到密码,当密码被首次查询后,中心 数据库便自动记录此密码已被查询次数,并将结果反馈给消费者。从而排 除了防伪密码重复使用的可能性。 功能的延伸性。短消息数字防伪技术在提供防伪的同时还具有其他防伪技 术无法达到的功熊: 假货和信息反馈。消费者通过短消息查询商品时,中心数据库随时 记录查询电话和时间,根据这些信息可以初步发现假货的地点。 挂失功能。一般的防伪标志在运输、使用过程中发生了丢失,后果 将无法弥补,防伪标志可能被制假者利用。而数码防伪标识物发生 了丢失,只需通知防伪数据中心,中心能够即刻将丢失部分的数码 作废,丝毫不影响剩余标识物的使用。 物流管理功能。一是营销部门可以利用数字防伪技术防止经销商相 互串货并增加售后服务功能:二是可以利用数字防伪技术掌握和控 制产品的生产过程。 应用的广泛性。由于短消息本身的存储转发 处理一 发送”的整个流程,故而在软硬件上如此划分,事实证明 此种划分也是比较科学的。 所以此层对于本人工作来说,即采用客户机服务器结构,使短信平台通过o d b c ( 开放数据库连接) 连接工具和远程的数据库服务器建立连接,平台将接收到的消 息存储到远程的数据库中,再从远程数据库中读取经业务处理程序处理后的数据, 组包发送到网关。 毛2 3 三层律系结构的优点 三层体系结构可以改进程序的可伸缩性。采用模块化设计,克服了业务处理与 网关通信之间的混淆,增强了其可扩展性和可维护性。 三层应用体系结构还可以帮助开发人员处理现有的系统( 或称为遗留系统) 。 开发人员可以把对现有系统的访问封装在业务逻辑或者数据访问服务中。客户应 用程序只需关心怎样访问业务逻辑,而不用关心怎样访问它们可能依赖的各种不 同的陈旧系统。而如果某个遗留系统被更改或者替换了,在保持接口稳定性的情 况下,只需将包装程序更新即可。三层结构的选择适应了短信业务更新快、资源 重组以及业务资源共享的要求。 屯3 本章小结 本章针对现在市场上一些s p 平台网络存在的问题,根据本系统的情况设计了 适合数字防伪系统的网络,并给出具体的硬件配置。给出了软件系统的模块化设计 思路,并分析了采用三层体系结构的优点。 南京理工大学硕士学位论文数字防伪短信平台的研究与设计 5 短信平台软件模块化设计 如前总体设计所述,将平台的业务处理功能跟运营商的通讯接口分开,以数据 库作为双方通信的接口这样可以不必一个业务功能设计一个系统、特定运营商特 定系统的繁琐结构。按模块化设计的平台,可以轻松实现同业务处理功能为不同 运营商接口共享,同一运营商接口也可以调用不同的业务处理模块,为平台的增容 和维护奠定了良好的基础。 5 1 趼罔关接入层 其实各网关厂商都提供了通讯接口a p i ,但是根据业界测试证明,网关提供的 a p i 效率非常低( 如华为的a p i 不支持异步并发通信,s p 必须在收到应答包后才能 继续下一个数据包) ,函数不容易理解,而且各网关之间不能兼容。故而自己根据 标准c m p p 3 0 协议开发接口。 按照系统设计要求,s p 网关接入层需按照模块化设计,提供标准接口供调用。 而面向对象语言恰好为这提供了可能。采用c + + 语言按类封装形式定义网关的通讯 接口,一个运营商的通讯接口就是一个类,仍然以移动( 定义为c c m p p 类) 为例。 采用滑动窗口流量可调的并发长连接方式进行消息的发送,在c c m p p 类中共创建了 五个线程,发送线程( t h r e a ds e n d ) 、接收线程( t h r e a d _ r e c v ) 、链路检测线程 ( t h r e a da c t v ) 、超时重发线程( t h r e a d _ r e s e n d ) 、链路守护线程( t h r e a d g u a r d ) 。 还定义了六个f i f o 队列( 下发队列、重发队列、下发结果队列、状态报告队列、 上行消息队列、超时队列) 。作为通讯模块与调度模块通信的接口( 重发队列用于 模块内部线程间通信) 夺发送线程:不停的扫描滑动窗口,寻找未发送的消息下发,同时检测是否 有超时数据,压入超时队列让超时重发线程进行重发。 接收线程:接收网关过来的所有数据,按c o a n d _ i d 解析,进行相应处理。 链路检测线程:按照c j l p p 3 0 协议要求,当链路上没有消息往来达一定时 间( 协议建议为1 8 0 s ,可视具体网络情况而定) 时,应发送链路检测包, 此线程作用即在此处 夺超时重发线程:c m p p 3 0 协议要求,发送超时( 下发过后,在一定时间内, 协议建议为6 0 s ,没有收到应答包) 的数据,应该荐重新发送n - 1 次,n 建议取3 。所以发送超时的数据由此线程单独处理,一来可以让发送线程 及时处理未发送的消息,二来能提高处理效率。 链路守护线程:当网络出现问题,如断线时,负责等网络恢复时自动重新 连接。 短信平台软件模块化设计硕士论文 5 1 1 助5 数字签名技术 由于m d 5 旧b 1 1 m 1 是一种不可逆的字符串变化算法,经m d 5 加密过的数据是不可 能回复到原始状态。所以采用此种算法用来s p 与网关之间的身份认证是足够安全 的。 s p 登录时,采用m d 5 算法将用户名、密码、时间戳、i p 地址等进行加密计算 成m d 5 值。然后登录网关,网关将此m d 5 值与注册时保存在网关系统中的m d 5 值进 行比较进而确定s p 身份是否正确。通过这样的步骤,系统在并不知道用户密码的 明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具 有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。 m d 5 的全称是m e s s a g e - d i g e s ta l g o r i t h m5 ( 信息一摘要算法) ,在9 0 年代初 由m i tl a b o r a t o r yf o rc o m p u t e rs c i e n c e 和r s ad a t as e c u r i t yi n c 的r o n a l dl r i v e s t 开发出来,经m d 2 、m d 3 和m d 4 发展而来。它的作用是让大容量信息在用数 字签名软件签署私人密钥前被压缩成一种保密的格式( 就是把一个任意长度的字 节串变换成一定长的大整数) 。最终获得一个随机长度的信息并产生一个1 2 8 位的 信息摘要。 算法原理: 夺数据填充 首先填充消息使得数据长度恰好为一个比5 1 2 的倍数小6 4 位的数。填充方 法是附一个l 在消息后面,后接所要求的多个o ,然后在其后附上6 4 位的消息长度。 这两部分的作用是让消息长度恰好为5 1 2 的整数倍,同时确保不同的消息在填充后 不相同。 夺初始化变量 用到4 个变量,分别为a ,b ,c 和d ,均为3 2 位长。初始化为:a = o x 0 1 2 3 4 5 6 7 , b = o x 8 9 a b c d e f ,c = o x f e d c b a 9 8 ,d = o x 7 6 5 4 3 2 1 0 ,它们将始终参与运算并形成最终的 散列结果。 夺数据处理 首先定义4 个辅助函数: f ( x ,y ,z ) = ( x y ) i ( ( x ) z ) g ( x jy ,z ) = ( x z ) f ( y ( ,) ) h ( x ,y ,z ) = x y z i ( x ,y ,z ) = y ( x l ( z ) ) 其中,是与,l 是或,是非,是异或。 这4 轮变化是对进入主循环的5 1 2 位消息分组的1 6 个3 2 位子分组分别进行如 下操作:将a ,b ,c ,d 的副本a ,b ,c ,d 中的3 个经f ,g ,h ,i 运算后的结果 3 6 南京理工大学硕士学位论文教字防伪短信平台的研究与设计 与第四个相加,再加上3 2 位子分组和一个3 2 位子分组的加法常数,并将所得之值 循环左移若干位,最后将所得结果加上a ,b ,c ,d 之一,并回送至a b c d ,由此完 成一次循环。 所用的加法常数由这样一张表t i 来定义,其中i 为1 至6 4 之中的值。t i 是i 的正弦绝对值乘以4 2 9 4 9 6 7 2 9 6 ( 2 的3 2 次方) 的整数部分,这样做是为了通 过正弦函数和幂函数来进一步消除变化中的线性。 夺输出 当所有的5 1 2 位分组都运算完毕后,a b c d 的级联将被输出为m d 5 的结果。 5 1 2 先入先出缓冲队列 由于s p 与i s m g 之间的消息量会很大,如果对消息的处理不够及时或者出现 网络拥塞时就会出现丢包现象而f i f o 队列恰好能解决这个问题,同时还可以作 为通讯类模块的接口供模块与外界通信。f i f 0 队列是排队机制,先进先出。当网络 出现拥塞时,它可以存储数据包,到网络恢复时,再顺序发出去。 因为每个网关接口类模块都会用到队列,所以采用类模板的形式自己定义了一 个队列( c p r o t o c o l q u e u e 类) ,这样所有的网关接口类都可以芙享这令队列,两不 需再单独设计。 队列采用顺序存储表示,利用维数组作为队列元素的存储结构。数组在创建 队列对象后,设置队列大小( m a x s i z e ) 时动态创建。 对队列的操作主要是两个函数p u s h ( ) ( 进队) 、f o p ( ) ( 出队) 。进队、出队 时数组中元素位置查找是通过两个数组下标实现的:队尾下标( m i t a i l ) 、队头 下标( m i h e a d ) 队列刚建立时,这两个整型变量都被初始化为0 。数据元素从队 尾入队,驮头出欧。新入一个元素后,将队尾下标加i :出队一个元素,将队头下 标加1 。为了避免重复建立数组而造成内存泄漏,队列数组使用时采用环行缓冲区 的形式,成为循环队列。采用除法取余的运算来实现循环队列的首尾相接。 队头下标加l :m _ i h e a d = ( m _ i h e a z i + 1 ) m a x s iz e ; 队尾下标加hm i t a i l = ( m _ i t a i l + 1 ) m a x s i z e ; 由于进队出队是对同一个数组的操作,则引入临界区对两种操作进行同步,对 数组元素进行保护。另外,在入队前,应该判断队列是否已满,出队前判断队列是 否为空。为了方便判断队列的空或满,定义了一个变量mc o u n t ,表示当前队列中 数据元素的个数,新入元素时,r e _ c o u n t 加l ,出队一个元素,m _ c o u n t 减1 。再创 建两个事件对象m _ h p u s h e v e n t ( 创建为有信号状态) 和m _ h p o p e v e n t ( 创建为无信 号状态) ,入队煎应等mh p u s h e v e n t 变为有信号状态,出队前需等到m _ h p o p e v e n t 变为有信号状态入队后,如果m _ c o u n t :m a x s i z e 则r e s e t ( m _ h p u s h e v e n t ) ,出 短信平台软件模块化设计硕士论文 队一个元素后再s e t ( mh p u s b l e v e n t ) ;出队后,如果m _ c o u n t = 0 ,贝l j r e s e t ( m _ h p o p e v e n t ) ,等到入队一个元素后再s e t ( m _ h p o p e v e n t ) 。 采用r e _ c o u n t 表示当前队列中数据元素个数的方法,比传统的根据队头队尾位 置判断队列的方法要先进,能完全利用数组所有的空间。 5 1 3 网络传输中的数据包定义 按照协议格式定义消息包头以及各种消息包体,统一用结构体表示,包头为固 定大小的1 2 个字节。包头定义为; t y p e d e fs t r u c t c l j p p - h e a d i n tt o t a l _ l e n g t h ; 数据包长度 i n tc o m m a n di d ) 命令码 i n ts e q u e n c ei d ; 流水号 ) c m p p _ h e a d ; 冷t o t a l _ l e n g t h 为c o m m a n d i d 对应的消息的数据包大小( 含包头部分) 。 c o m m a n dl d 表明该条消息到底是什么消息。发送方或接收方可以根据此字 段确定该数据包是何种消息,从而可以按照确定的消息类型,解析消息体。 夺s e q u e n c e i d 表示此数据包在发送此消息端的唯一编号,消息的流水号。 由于采用滑动窗口机制的长连接通信方式,发送消息时不是每发送一条就 停下来等待应答,而是可能同时发送多个,然后等待应答。此字段就是解 决应答消息与之前发送消息的一一对应问题的。s p 按流水号下发消息, i s m g 将收到的s p 下发的消息的s e q u e n c e i d 填入相应字段,发送响应包, 表明这是某条消息的回应。s p 端对i s m g 的响应类似,s e q u e n c ei d 要求在 一定时间内唯一,程序是以简单的累加实现的。 为了处理方便,将网络上经常使用的消息进行统一处理,定义包体如下: t y p e d e f s t r u c t _ c 加p p _ p a c k e t c m p p _ h e a dh e a d ) 数据包包头 u n i o n _ b o d y c 聍p - c 0 n n e c tc o n n e c t ; c 聍p _ c o n n e c tr e s pc o n n e c t _ r e s p ) c m p p _ s u m a i t s u b m i t ; c 肝p _ s u b m i t _ r e s ps u b a i t _ r e s p ; 南京理工大学硕士学位论文数字防伪短信平台的研究与设计 c m p p _ d e l i v e rd e l i v e r ; c m p p _ d e l i v e r _ r e s pd e l i v e r _ r e s p ; c m p p _ q u e r yq u e r y ; c 船p _ q u e r y _ r e s pq u e r y _ r e s p ; c g p p _ c a n c e l c a n c e l ; c m p p _ c a n c e l _ r e s p c a n c e l r e s p ; ) b o d y ;各种消息体 i n t r e s u l t ; i n tn : t i m e tt ; i n t s : 0 f p p - p a c k e t ; 包体采用联合体的形式定义,这样可以做至用一个数据包表示所有消息。包 体里的各种消息体同样按照协议格式定义,限于篇幅,此处不再罗列。为了处理数 据包方便,增加了几个字段: r e s u l t :标志数据包下发结果。根据下发消息响应包的结果及其他情况( 如 超时等,自己定义错误码) 来填写,成功为0 ,失败为具体原因对应的值。 n :表示该数据包的发送次数,用来计数超时重发次数的。初始值为0 ,重 发一次n 加1 。 t :数据包发送时间,用来判断数据包是否超时未收到响应。填包时写上当 前系统时间,发送过后,检测数据包时,用当前系统时间减去t ,看是否 达到超时时间,达到且未超过重发次数,则将t 更新为当前时间。 s :数据包发送状态,初始疽为0 、成功为l 、失败为2 。此处的发送成功 与否是以s e n d ( ) 函数的返回值判断的,返回值等于发送的字节数则成功, 不等于则失败。 ,事实证明,添加这么几个字段,对数据包的处理就显得相当轻松。由于这几个 字段是本人为了方便处理添加的,没有跟i s m g 方面统一。所以发送时,只发送包 头加包体数据,对这几个增加字段不下发;接收时,把i s m g 传送过来的包头加包 体拷贝到c m p pp a c k e t 格式的对应位置,然后做相应处理。 5 1 4 p 通信链路的建立 c m p p 协议规定s p 端为客户机,i s m g 为服务器端,s p 向i s m g 发连接请求( 联 通的s g i p 是s p 与i s l l g 互为c s 模式的) 。 短信平台软件模块化设计硕士论文 因为c 咿p 协议是应用层协议,所以要实现s p 与i s m g 之间的通信,首先还得 建立t c p 连接,然后才能在此连接上进行c m p p 通信。 c c m p p 类提供了两个用来建立通信链路的函数给外界调用。 ( 1 ) i n i t 0 :由外界传递连接网关的一系列参数,如网关i p 、端口号( 7 8 9 0 ) 、 s p _ i d ( s p 的企业代码) 、向网关登陆密码以及协议版本号。 ( 2 ) s t a r t0 :外界调用在i n i t0 初始化之后,可以随时通过调用此函数启 动s p 向i s m g 发出连接请求。此函数封装了t c p 链路的建立、s p 向i s m g 的注册登 陆过程、以及创建前面提到的5 个线程,为s p 与i s m g 之间的消息往来做好准备。 建立t c p 链路:创建流式套接字,建立与i s m g 之间的t c p 连接,此后所有 应用层的消息全是在此套接字上操作的。 登陆i s m g :即向i s m g 发送c m p p _ c o n n e c t 消息包,注册作为合法s p 身份, 以建立应用层连接。有必要说明一下c i i p p _ c o n n e c t 消息的结构,如表5 1 1 所示。用m d 5 算法将s p _ i d 、9 个字节的0 、s p 登陆网关的密码( 注册时, s p 相关信息保存在i s m g 系统中) 和登陆时间戳( t i m e s t a m p ) 进行加密, 随登陆包发送到i s m g ,i s m g 接收后对s p 身份进行验证,以c m p p _ c o n n e c t _ r e s p 包返回验证结果。正确则建立起应用层连接,错误则返回错误码,并断 开连接。 4 0 表5 1 ,1c m p p _ c o n n e c t 消息定义 字段名字节数属性描述 s o u r c e _ a d d $6 o c t e t s t r i n g 源地址,此处为s p _ i d ,即s p 的企韭 代码。 a u t h e n t i c a t o r s o u r c e1 6o c t e ts t r i n g用于鉴别源地址。其值通过单向m d 5 h a s h 计算得出,表示如下: a u t h e m i c a t o r s o u r c e = m i ) 5 ( s o u r c e _ a d d r + 9 字节的0 + s h a r e ds e c r e t + t i m e s t a m p ) s h a r e d c m t 由中国移动与源地址实 体事先商定。t i n s t a m p 格式为: m m d d i l m 蹦s s ,即月日时分秒,l o 位。 v e r s i o nl u n s i g n e d 双方协商的版本号( 高位4 b i t 表示主 i n t e g e r 版本号,低位4 b i t 表示次版本号) t i m e s t a m p 4 u n s i g n e d对闻戳的明文。由客户端产生,格式为 i n t e g e r m m d d h h s s ,即月日时分秒,l o 位数字的整型,右对齐。 南京理工大学硕士学位论文敦宁舫伪短信平台的研究与设计 5 1 - 5 滑动窗口漉量控制机制 从多线程异步并发处理消息角度考虑,将s p - i s m g 与i s m g - s p 的消息分开在 两个单独的线程中处理,s p 一 i s m g 的所有消息都投入窗口,由发送线程到窗口提取 发送。 对滑动窗口的操作涉及到4 个动作:填包、发送、接收、超时检测,所以本节 将围绕着滑动窗口展开介绍。 ( 1 ) 定义窗口 c h w p _ p a c k e tw i n d o w i c 心p _ w i n d o w _ s i z e ; 窗口的实现形式定义为一个数组,数组元素类型为前面定义的结构体数据包形 式c m p p _ p a c k e t 。对窗口的操作即是对此数组操作,数组大小按协议建议宏定义为 1 6 ( c 聊p _ w i n d o w _ s i z e = = 1 6 ) ,创建一个信号量h s e m a _ w n d 来计数窗口的空格。 ( 2 ) 多线程同步发送接收 当滑动窗口里有数据时,发送线程则发送。没有则阻塞。则可以考虑使用“生 产者一消费者”模型的多线程阻塞套接字模式处理。外界调用填包到滑动窗口,扮 演生产者的角色;发送线程读取滑动窗口里的数据包,扮演消费者的角色。采用这 种模式,可以防止程序陷入“凝固”状态,同时不必连续性地检查系统网络缓冲。 而接收方面,s p 根本就不知道何时i s m g 会有消息过来,如果直接使用阻塞套接字 模式,网络上没有数据时,程序肯定会陷入“凝固”状态。为了解决这个问题,接 收采用s e l e c t 模型。利用s e l e c t 函数判断套接字上是否存在数据,存在则接收, 不存在则返回继续监视,定义为l s 轮询一次。 填包 定义一个填包函数,负责把要下发的数据包投入滑动窗口。考虑到一种情况, 就是填包速度大于发送或者接收速度时,此时窗口就没有空格使用,新传过来的数 据包就会丢失。为了解决这个问题,定义了一个下发队列m tm s g _ p k g ,起缓冲作用, 同时可以同步写数据入队,保护操作不会出错。由调度层将数据入队,填包函数将 数据出队投入窗口。 前面提到,对滑动窗口有多种操作的可能,所以必须要对其同步操作,以保护 数据安全。创建一个临界区c s e cw n d ,对窗口进行同步,所有的填包、发送、接收 操作都要先进入临界区才能取得对窗口的操作权。 定义一个c m p p _ p a c k e t 结构的数据包,首先从队列读取数据包,由于所有需下 发的包都事先按c m p p _ p a c k e t 结构定义好了,现在所需要做的仅仅是初始化数据包 里自定义的几个字段。初始化完数据包后,等待窗口空位,通过w a i t f o r s i n g l e o b j e c t ( h s e m aw n d ,1 0 0 0 ) 实现,等待时间为1 s 。等到窗口有空位,就把数据拷贝到窗口; 4 l 短信平台软件模块化设计 硕士论文 没有等到则表明窗口已满,则检测是否有超时数据,做超时处理,清空窗格,同时 返回窗口己满的通知。 为了使链路检测线程了解链路上是否还有消息往来,引入一个l o n g 型变量s e n d c o u n t 进行消息计数。每往窗口中投入一个消息,就计数加一( i n t e r l o c k e d i n c r e m e n t ( & s e n dc o u n t ) ) 。发送线程每发送成功一个计数减一s e n d _ c o u n t 一0 就表 示没有消息发送,则链路检测线程就可以开始计时,准备发送链路检测包了。 同时,从系统资源角度出发,当窗口中没有数据发送时,应该让发送线程挂起, 直到有数据填入窗口。所以创建一个事件对象h e v n t s e n d ,创建为人工重置事件, 用来通知发送线程到窗口中提取数据发送。将数据投入窗口后就将其置为有信号状 态( s e t e v e n t ( h e v n t s e n d ) ) ,其有信号状态一直保持到窗口中所有数据包都己下 发,通过r e s e t e v e n t ( h e v n t s e n d ) 将其置为无信号。发送线程在发送之前前先等待 该事件变为有信号状态( w a i t f o r s i n g l e o b j e c t ( h e v n t s e n d ,1 0 0 0 ) ) ,等到说明 有数据发送,进入窗口寻找未发送的发送;没有等到就挂起。 流程如图5 1 1 所示。 图5 1 1 填包流程图 发送线程! 前面提到,发送线程需要等到窗口中有数据时,才正式开始工作,否则就挂起。 所以如果没有数据要下发时,发送线程基本上是空闲状态,因为线程在等待对象状 态变成有信号时,只消耗很少的c p u 资源。 发送线程空闲有两种情况,一种就是滑动窗口为空,没有数据要下发;第二种 是窗口中所有数据都已发送成功,可能是网络或i s m g 处理速度方面的原因,但窗 口中数据都没有收到应答包,窗口已满,则时间一长就会出现数据包超时。如果发 南京理工大学硕士学位论文敦字防伪短信平台的研究与设计 送线程长时间的处于空闲等待状态,则超时数据包就得不到及时的重发。所以在发 送线程等待事件对象的过程中,让发送线程检测滑动窗口中是否有数据包超时,以 清空窗格,让数据包得到重发。 发送线程等待h e v n t s e n d 变为有信号状态,等待时间定义为1 s ,等到就进入 窗口寻找未发送数据包进行下发;没有等到就检测窗口是否有数据包超时。当填包 函数将数据包投入窗口后,将h e v n t s e n d 变为有信号,则发送线程获知有数据要 发送。进入窗口临界区,获得窗口的操作权。 对窗口的操作是采用顺序轮询的方式,即从w i n d o w o j 到w i n d o w 1 5 :逐个操作, 到循环结束才释放对窗口的操作权。而消息的发送及响应并不是严格按序操作的, 所以在寻找到需要发送的数据包前,可能会先遇到空窗格或超时的数据包。所以可 以在循环中,顺便检测非空已发送数据包是否超时。在窗口的轮询中,如果是空窗 格,则继续循环;如果是已发送数据包超时,则清空该窗格,做超时重发处理( 此 处省略,在后面部分详细介绍) ;找到未发送数据包,先将数据包的发送次数加1 ( 初始为o ) 、发送状态( w i n d o w i s ) 置为1 ( 1 表示发送成功) ,然后立马同 步发送( 对发送函数也是同步调用的,因为在发送线程发送的时候,可能接收线程 也正在发送应答包等) ,有两种结果: 夺发送成功:即返回值等于发送的字节数,则将消息计数减l ,并判断是否 为o ( i n t e r l o c k e d d e c r e m e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论