首页 > 专利 > 常熟理工学院 > 一种高效可靠的物联网实现方法专利详情

一种高效可靠的物联网实现方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2018-05-08
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2018-12-18
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2020-08-04
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2038-05-08
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201810432478.X 申请日 2018-05-08
公开/公告号 CN108881021B 公开/公告日 2020-08-04
授权日 2020-08-04 预估到期日 2038-05-08
申请年 2018年 公开/公告年 2020年
缴费截止日
分类号 H04L12/741H04L12/733H04L29/08 主分类号 H04L12/741
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 2
权利要求数量 3 非专利引证数量 0
引用专利数量 0 被引证专利数量 0
非专利引证
引用专利 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、授权、权利转移
申请人信息
申请人 第一申请人
专利权人 常熟理工学院 当前专利权人 上海章鱼云商物联网科技(集团)股份有限公司
发明人 王晓喃 第一发明人 王晓喃
地址 江苏省苏州市常熟市常熟理工学院(东南校区)计算机科学与工程学院 邮编 215500
申请人数量 1 发明人数量 1
申请人所在省 江苏省 申请人所在市 江苏省苏州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
江苏圣典律师事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
胡建华
摘要
本发明提供了一种高效可靠的物联网实现方法,所述物联网包括移动节点;一种数据由一个名称唯一标识,能够提供一种数据的移动节点称为该种数据的提供者,请求一种数据的移动节点称为该种数据的消费者;移动节点通过本发明提供的方法能够快速获取数据,从而降低数据通信延迟和代价,提高服务质量。本发明可应用于农业工程化、智能医疗等诸多领域,具有广泛的应用前景。
  • 摘要附图
    一种高效可靠的物联网实现方法
  • 说明书附图:图1
    一种高效可靠的物联网实现方法
  • 说明书附图:图2
    一种高效可靠的物联网实现方法
  • 说明书附图:图3
    一种高效可靠的物联网实现方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2023-01-13 专利权的转移 登记生效日: 2022.12.30 专利权人由常熟理工学院变更为上海柚街网络科技有限公司 地址由215500 江苏省苏州市常熟市常熟理工学院(东南校区)计算机科学与工程学院变更为201800 上海市嘉定区菊园新区环城路2222号1幢J5608室
2 2020-08-04 授权
3 2018-12-18 实质审查的生效 IPC(主分类): H04L 12/741 专利申请号: 201810432478.X 申请日: 2018.05.08
4 2018-11-23 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种高效可靠的物联网实现方法,其特征在于,所述物联网包括移动节点;一种数据由一个名称唯一标识,能够提供一种数据的移动节点称为该种数据的提供者,请求一种数据的移动节点称为该种数据的消费者;
消费者通过消息获取数据,一个消息包含源MAC地址、目的MAC地址、名称域、消息类型域和负载,消息类型如下表所示:
消息类型 消息值
请求消息 1
数据消息 2
信标消息 3
回溯消息 4
每个移动节点维护一个转发表,一个转发表项包含名称域、下一跳域、距离域和提供者域;名称域唯一指定一种类型的数据,下一跳域为到达提供者的下一跳的MAC地址,距离域为到达提供者的跳数,提供者域为提供者的MAC地址;
每个移动节点维护一个数据表,每个数据表项包含消息域和生命周期域,如果一个数据表项的生命周期域值衰减为0,则从数据表中删除该数据表项;
每个移动节点维护一个请求表,一个请求表项包含名称域,前一跳域和生命周期域;
数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,消费者U1首先查看转发表,如果所有转发表项的名称域值都不等于NA1,消费者U1则通过下述过程获取数据C1:
步骤101:开始;
步骤102:消费者U1发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为空,名称为NA1,消息类型为1,负载为空;
步骤103:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤104,否则执行步骤105;
步骤104:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤108;
步骤105:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤106,否则执行步骤107;
步骤106:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤108;
步骤107:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤103;
步骤108:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤110,否则执行步骤109;
步骤109:接收到数据消息的移动节点丢弃该数据消息,执行步骤117;
步骤110:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
步骤111:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤115,否则执行步骤112;
步骤112:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤113,否则执行步骤114;
步骤113:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤115;
步骤114:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
步骤115:如果接收到数据消息的移动节点为消费者U1,则执行步骤117,否则执行步骤
116;
步骤116:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为该移动节点的MAC地址,删除该请求表项,发送该数据消息,执行步骤108;
步骤117:结束。

2.根据权利要求1所述的一种高效可靠的物联网实现方法,其特征在于,数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,则首先查看转发表,如果至少有一个转发表项的名称域值等于NA1且在通信过程中没有链路断裂,消费者U1则通过下述过程获取数据C1:
步骤201:开始;
步骤202:消费者U1查看所有名称域值等于NA1的转发表项,从所述转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
步骤203:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤205,否则执行步骤204;
步骤204:接收到请求消息的移动节点丢弃该请求消息,执行步骤210;
步骤205:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤206,否则执行步骤207;
步骤206:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤210;
步骤207:接收到请求消息的移动节点查看请求表,判断是否存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,如果是则执行步骤208,否则执行步骤209;
步骤208:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤210;
步骤209:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤203;
步骤210:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤212,否则执行步骤211;
步骤211:接收到数据消息的移动节点丢弃该数据消息,执行步骤219;
步骤212:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
步骤213:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤217,否则执行步骤214;
步骤214:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤215,否则执行步骤216;
步骤215:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤217;
步骤216:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
步骤217:判断接收到数据消息的移动节点是否为消费者U1,如果则执行步骤219,否则执行步骤218;
步骤218:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤210;
步骤219:结束。

3.根据权利要求1所述的一种高效可靠的物联网实现方法,其特征在于,一个移动节点维护一个邻居表,一个邻居表项由MAC地址域和生命周期域构成;一个移动节点定期广播信标消息,该信标消息的源MAC地址为该移动节点的MAC地址,目的MAC地址为空,消息类型为
3,名称域值为空,负载为空;一个移动节点从邻居移动节点接收到信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,它则将该邻居表项的生命周期设置为最大值,否则,该移动节点创建一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,该邻居表项的生命周期为最大值;
如果一个移动节点检测到一个邻居表项的生命周期衰减到0,则删除所有下一跳域值等于该邻居表项的MAC地址域值的转发表项,然后删除该邻居表项;
数据C1由名称NA1唯一标识;如果消费者U1需要获取数据C1,它首先查看转发表,如果至少有一个转发表项的名称域值都等于NA1且在通信过程中存在链路断裂,消费者U1则通过下述过程获取数据C1:
步骤301:开始;
步骤302:消费者U1查看所有名称域值等于NA1的转发表项,从这些转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
步骤303:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤305,否则执行步骤304;
步骤304:接收到请求消息的移动节点丢弃该请求消息,执行步骤312;
步骤305:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤306,否则执行步骤307;
步骤306:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤312;
步骤307:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤308,否则执行步骤309;
步骤308:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤312;
步骤309:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点判断是否存在名称域值等于该请求消息的名称的转发表项,如果是则执行步骤310,否则执行步骤311;
步骤310:接收到请求消息的移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤303;
步骤311:接收到请求消息的移动节点发送一个回溯消息,该回溯消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称域值等于该请求消息的名称域值,消息类型为4,负载为接收到的请求消息;
步骤312:接收到数据消息或者回溯消息的移动节点查看自己的MAC地址是否等于该数据消息或者回溯消息的目的MAC地址,如果等于,则执行步骤314,否则执行步骤313;
步骤313:接收到数据消息或者回溯消息的移动节点丢弃该数据消息或者回溯消息,执行步骤327;
步骤314:判断移动节点接收到的消息是否为数据消息,如果是则执行步骤315,否则执行步骤322;
步骤315:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
步骤316:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤320,否则执行步骤317;
步骤317:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤318,否则执行步骤319;
步骤318:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤320;
步骤319:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
步骤320:判断接收到数据消息的移动节点是否为消费者U1,如果是则执行步骤327,否则执行步骤321;
步骤321:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤312;
步骤322:接收到回溯消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,则执行步骤323,否则执行步骤324;
步骤323:接收到回溯消息的移动节点选择一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,所述移动节点发送一个请求消息,该请求消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该转发表项的下一跳域值,消息类型和名称域值分别等于该回溯消息负载中的请求消息中的消息类型和名称域值,负载为空,执行步骤303;
步骤324:判断接收到回溯消息的移动节点是否为消费者U1,如果是则执行步骤325,否则执行步骤326;
步骤325:消费者U1执行步骤101~117获取数据C1,执行步骤327;
步骤326:接收到回溯消息的移动节点查看请求表并选择所有名称域值等于该回溯消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的回溯消息的目的MAC地址更新为该请求表项的前一跳域值,将该回溯消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该回溯消息,执行步骤312;
步骤327:结束。
说明书

技术领域

[0001] 本发明涉及一种实现方法,尤其涉及的是一种高效可靠的物联网实现方法。

背景技术

[0002] 在典型的物联网构架中,一个电子标签具有全球唯一的电子编码,将其附着在物品上标识目标对象。目前的物联网架构能够很好地跟踪目标对象,但仍存在以下不足:
[0003] 1)用户只能通过数据库服务器来获取目标对象信息,无法实现与目标对象直接地点到点通信;
[0004] 2)用户只能查询目标对象的信息,无法直接控制目标对象的状态;
[0005] 3)目标对象信息只能通过读写器被动地读取,目标对象无法根据当前的状态主动请求数据更新或发出警报信息。

发明内容

[0006] 发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种高效可靠的物联网实现方法,从而实现物联网数据的实时通信。
[0007] 技术方案:本发明公开了一种高效可靠的物联网实现方法,所述物联网包括移动节点;一种数据由一个名称唯一标识,能够提供一种数据的移动节点称为该种数据的提供者,请求一种数据的移动节点称为该种数据的消费者;
[0008] 消费者通过消息获取数据,一个消息包含源MAC地址、目的MAC地址、名称域、消息类型域和负载,消息类型如下表所示:
[0009] 消息类型 消息值请求消息 1
数据消息 2
信标消息 3
回溯消息 4
[0010] 每个移动节点维护一个转发表,一个转发表项包含名称域、下一跳域、距离域和提供者域;名称域唯一指定一种类型的数据,下一跳域为到达提供者的下一跳的MAC地址,距离域为到达提供者的跳数,提供者域为提供者的MAC地址;
[0011] 每个移动节点维护一个数据表,每个数据表项包含消息域和生命周期域,如果一个数据表项的生命周期域值衰减为0,则从数据表中删除该数据表项;
[0012] 每个移动节点维护一个请求表,一个请求表项包含名称域,前一跳域和生命周期域;
[0013] 数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,消费者U1首先查看转发表,如果所有转发表项的名称域值都不等于NA1,消费者U1则通过下述过程获取数据C1:
[0014] 步骤101:开始;
[0015] 步骤102:消费者U1发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为空,名称为NA1,消息类型为1,负载为空;
[0016] 步骤103:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤104,否则执行步骤105;
[0017] 步骤104:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤108;
[0018] 步骤105:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤106,否则执行步骤107;
[0019] 步骤106:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,例如1s,执行步骤108;
[0020] 步骤107:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤103;
[0021] 步骤108:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤110,否则执行步骤109;
[0022] 步骤109:接收到数据消息的移动节点丢弃该数据消息,执行步骤117;
[0023] 步骤110:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0024] 步骤111:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤115,否则执行步骤112;
[0025] 步骤112:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤113,否则执行步骤114;
[0026] 步骤113:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤115;
[0027] 步骤114:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0028] 步骤115:如果接收到数据消息的移动节点为消费者U1,则执行步骤117,否则执行步骤116;
[0029] 步骤116:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为该移动节点的MAC地址,删除该请求表项,发送该数据消息,执行步骤108;
[0030] 步骤117:结束。
[0031] 消费者通过请求表获取数据,由于请求表能够实现请求消息的聚合和数据分享,因此消费者可以通过中间节点来分享数据,所以大幅度降低了数据通信延迟和代价。
[0032] 本发明所述方法中,数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,则首先查看转发表,如果至少有一个转发表项的名称域值等于NA1且在通信过程中没有链路断裂,链路断裂指从源节点到目的节点的路径上的所有移动节点均可达且能正常工作;消费者U1则通过下述过程获取数据C1:
[0033] 步骤201:开始;
[0034] 步骤202:消费者U1查看所有名称域值等于NA1的转发表项,从所述转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
[0035] 步骤203:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤205,否则执行步骤204;
[0036] 步骤204:接收到请求消息的移动节点丢弃该请求消息,执行步骤210;
[0037] 步骤205:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤206,否则执行步骤207;
[0038] 步骤206:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤210;
[0039] 步骤207:接收到请求消息的移动节点查看请求表,判断是否存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,如果是则执行步骤208,否则执行步骤209;
[0040] 步骤208:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,例如1s,执行步骤210;
[0041] 步骤209:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤203;
[0042] 步骤210:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤212,否则执行步骤211;
[0043] 步骤211:接收到数据消息的移动节点丢弃该数据消息,执行步骤219;
[0044] 步骤212:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0045] 步骤213:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤217,否则执行步骤214;
[0046] 步骤214:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤215,否则执行步骤216;
[0047] 步骤215:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤217;
[0048] 步骤216:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0049] 步骤217:判断接收到数据消息的移动节点是否为消费者U1,如果则执行步骤219,否则执行步骤218;
[0050] 步骤218:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤210;
[0051] 步骤219:结束。
[0052] 移动节点通过转发表和请求表获取数据,转发表能够确保移动节点能够从距离最近的数据提供者获取数据,而请求表能够实现请求消息的聚合和数据分享,因此移动节点能够通过距离最近的数据提供者或者中间节点来获取或者分享数据,所以大幅度降低了数据通信延迟和代价。
[0053] 本发明所述方法中,一个移动节点维护一个邻居表,一个邻居表项由MAC地址域和生命周期域构成;一个移动节点定期广播信标消息,该信标消息的源MAC地址为该移动节点的MAC地址,目的MAC地址为空,消息类型为3,名称域值为空,负载为空;一个移动节点从邻居移动节点接收到信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,它则将该邻居表项的生命周期设置为最大值,否则,该移动节点创建一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,该邻居表项的生命周期为最大值;
[0054] 如果一个移动节点检测到一个邻居表项的生命周期衰减到0,则删除所有下一跳域值等于该邻居表项的MAC地址域值的转发表项,然后删除该邻居表项;
[0055] 数据C1由名称NA1唯一标识;如果消费者U1需要获取数据C1,它首先查看转发表,如果至少有一个转发表项的名称域值都等于NA1且在通信过程中存在链路断裂,消费者U1则通过下述过程获取数据C1:
[0056] 步骤301:开始;
[0057] 步骤302:消费者U1查看所有名称域值等于NA1的转发表项,从这些转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
[0058] 步骤303:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤305,否则执行步骤304;
[0059] 步骤304:接收到请求消息的移动节点丢弃该请求消息,执行步骤312;
[0060] 步骤305:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤306,否则执行步骤307;
[0061] 步骤306:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤312;
[0062] 步骤307:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤308,否则执行步骤309;
[0063] 步骤308:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,例如1s,执行步骤312;
[0064] 步骤309:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点判断是否存在名称域值等于该请求消息的名称的转发表项,如果是则执行步骤310,否则执行步骤311;
[0065] 步骤310:接收到请求消息的移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤303;
[0066] 步骤311:接收到请求消息的移动节点发送一个回溯消息,该回溯消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称域值等于该请求消息的名称域值,消息类型为4,负载为接收到的请求消息;
[0067] 步骤312:接收到数据消息或者回溯消息的移动节点查看自己的MAC地址是否等于该数据消息或者回溯消息的目的MAC地址,如果等于,则执行步骤314,否则执行步骤313;
[0068] 步骤313:接收到数据消息或者回溯消息的移动节点丢弃该数据消息或者回溯消息,执行步骤327;
[0069] 步骤314:判断移动节点接收到的消息是否为数据消息,如果是则执行步骤315,否则执行步骤322;
[0070] 步骤315:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0071] 步骤316:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤320,否则执行步骤317;
[0072] 步骤317:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤318,否则执行步骤319;
[0073] 步骤318:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤320;
[0074] 步骤319:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0075] 步骤320:判断接收到数据消息的移动节点是否为消费者U1,如果是则执行步骤327,否则执行步骤321;
[0076] 步骤321:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤312;
[0077] 步骤322:接收到回溯消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,则执行步骤323,否则执行步骤324;
[0078] 步骤323:接收到回溯消息的移动节点选择一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,所述移动节点发送一个请求消息,该请求消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该转发表项的下一跳域值,消息类型和名称域值分别等于该回溯消息负载中的请求消息中的消息类型和名称域值,负载为空,执行步骤303;
[0079] 步骤324:判断接收到回溯消息的移动节点是否为消费者U1,如果是则执行步骤325,否则执行步骤326;
[0080] 步骤325:消费者U1执行步骤101~117获取数据C1,执行步骤327;
[0081] 步骤326:接收到回溯消息的移动节点查看请求表并选择所有名称域值等于该回溯消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的回溯消息的目的MAC地址更新为该请求表项的前一跳域值,将该回溯消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该回溯消息,执行步骤312;
[0082] 步骤327:结束。
[0083] 在链路断裂的情况下,移动节点通过回溯消息能够通过距离最近的未断裂路径来获取最终数据,从而增加了数据通信成功率,此外,请求表能够实现请求消息的聚合和数据分享,因此移动节点能够通过中间节点分享数据,所以进一步提高了数据通信成功率。
[0084] 有益效果:本发明提供了一种高效可靠的物联网实现方法,移动节点通过本发明提供的方法能够快速获取数据,从而降低数据通信延迟和代价,提高服务质量。本发明可应用于农业工程化、智能医疗等诸多领域,具有广泛的应用前景。

附图说明

[0085] 下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0086] 图1为本发明所述的数据获取流程示意图。
[0087] 图2为本发明所述的数据通信流程示意图。
[0088] 图3为本发明所述的链路断裂情况下的数据通信流程示意图。具体实施方式:
[0089] 本发明提供了一种高效可靠的物联网实现方法,移动节点通过本发明提供的方法能够快速获取数据,从而降低数据通信延迟和代价,提高服务质量。本发明可应用于农业工程化、智能医疗等诸多领域,具有广泛的应用前景。
[0090] 图1为本发明所述的数据获取流程示意图。所述物联网包括移动节点;一种数据由一个名称唯一标识,能够提供一种数据的移动节点称为该种数据的提供者,请求一种数据的移动节点称为该种数据的消费者;
[0091] 消费者通过消息获取数据,一个消息包含源MAC地址、目的MAC地址、名称域、消息类型域和负载,消息类型如下表所示:
[0092]消息类型 消息值
请求消息 1
数据消息 2
信标消息 3
回溯消息 4
[0093] 每个移动节点维护一个转发表,一个转发表项包含名称域、下一跳域、距离域和提供者域;名称域唯一指定一种类型的数据,下一跳域为到达提供者的下一跳的MAC地址,距离域为到达提供者的跳数,提供者域为提供者的MAC地址;
[0094] 每个移动节点维护一个数据表,每个数据表项包含消息域和生命周期域,如果一个数据表项的生命周期域值衰减为0,则从数据表中删除该数据表项;
[0095] 每个移动节点维护一个请求表,一个请求表项包含名称域,前一跳域和生命周期域;
[0096] 数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,消费者U1首先查看转发表,如果所有转发表项的名称域值都不等于NA1,消费者U1则通过下述过程获取数据C1:
[0097] 步骤101:开始;
[0098] 步骤102:消费者U1发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为空,名称为NA1,消息类型为1,负载为空;
[0099] 步骤103:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤104,否则执行步骤105;
[0100] 步骤104:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤108;
[0101] 步骤105:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤106,否则执行步骤107;
[0102] 步骤106:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤108;
[0103] 步骤107:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤103;
[0104] 步骤108:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤110,否则执行步骤109;
[0105] 步骤109:接收到数据消息的移动节点丢弃该数据消息,执行步骤117;
[0106] 步骤110:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0107] 步骤111:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤115,否则执行步骤112;
[0108] 步骤112:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤113,否则执行步骤114;
[0109] 步骤113:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤115;
[0110] 步骤114:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0111] 步骤115:如果接收到数据消息的移动节点为消费者U1,则执行步骤117,否则执行步骤116;
[0112] 步骤116:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为该移动节点的MAC地址,删除该请求表项,发送该数据消息,执行步骤108;
[0113] 步骤117:结束。
[0114] 图2为本发明所述的数据通信流程示意图。数据C1由名称NA1唯一标识,如果消费者U1需要获取数据C1,则首先查看转发表,如果至少有一个转发表项的名称域值等于NA1且在通信过程中没有链路断裂,消费者U1则通过下述过程获取数据C1:
[0115] 步骤201:开始;
[0116] 步骤202:消费者U1查看所有名称域值等于NA1的转发表项,从所述转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
[0117] 步骤203:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤205,否则执行步骤204;
[0118] 步骤204:接收到请求消息的移动节点丢弃该请求消息,执行步骤210;
[0119] 步骤205:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤206,否则执行步骤207;
[0120] 步骤206:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤210;
[0121] 步骤207:接收到请求消息的移动节点查看请求表,判断是否存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,如果是则执行步骤208,否则执行步骤209;
[0122] 步骤208:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤210;
[0123] 步骤209:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤203;
[0124] 步骤210:接收到数据消息的移动节点查看自己的MAC地址是否等于该数据消息的目的MAC地址,如果等于,则执行步骤212,否则执行步骤211;
[0125] 步骤211:接收到数据消息的移动节点丢弃该数据消息,执行步骤219;
[0126] 步骤212:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0127] 步骤213:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤217,否则执行步骤214;
[0128] 步骤214:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤215,否则执行步骤216;
[0129] 步骤215:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤217;
[0130] 步骤216:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0131] 步骤217:判断接收到数据消息的移动节点是否为消费者U1,如果则执行步骤219,否则执行步骤218;
[0132] 步骤218:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤210;
[0133] 步骤219:结束。
[0134] 图3为本发明所述的链路断裂情况下的数据通信流程示意图。一个移动节点维护一个邻居表,一个邻居表项由MAC地址域和生命周期域构成;一个移动节点定期广播信标消息,该信标消息的源MAC地址为该移动节点的MAC地址,目的MAC地址为空,消息类型为3,名称域值为空,负载为空;一个移动节点从邻居移动节点接收到信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,它则将该邻居表项的生命周期设置为最大值,否则,该移动节点创建一个邻居表项,该邻居表项的MAC地址域值等于该信标消息的源MAC地址,该邻居表项的生命周期为最大值;
[0135] 如果一个移动节点检测到一个邻居表项的生命周期衰减到0,则删除所有下一跳域值等于该邻居表项的MAC地址域值的转发表项,然后删除该邻居表项;
[0136] 数据C1由名称NA1唯一标识;如果消费者U1需要获取数据C1,它首先查看转发表,如果至少有一个转发表项的名称域值都等于NA1且在通信过程中存在链路断裂,消费者U1则通过下述过程获取数据C1:
[0137] 步骤301:开始;
[0138] 步骤302:消费者U1查看所有名称域值等于NA1的转发表项,从这些转发表项中选择一个距离域值最小的转发表项,发送一个请求消息,该请求消息的源MAC地址等于消费者U1的MAC地址,目的MAC地址为选择的转发表项的下一跳域值,名称为NA1,消息类型为1,负载为空;
[0139] 步骤303:接收到请求消息的移动节点判断自己的MAC地址是否等于该请求消息的目的MAC地址,如果是,则执行步骤305,否则执行步骤304;
[0140] 步骤304:接收到请求消息的移动节点丢弃该请求消息,执行步骤312;
[0141] 步骤305:接收到请求消息的移动节点查看数据表,判断是否存在一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,如果是则执行步骤306,否则执行步骤307;
[0142] 步骤306:接收到请求消息的移动节点选择一个数据表项,该数据表项中的消息域值中的名称域值等于该请求消息的名称域值,然后发送一个数据消息,该数据消息的源MAC地址为该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称和消息类型域值分别等于该数据表项中的消息域值中的名称和消息类型,负载包括三个部分:该移动节点的MAC地址,该数据表项中的消息域值中的负载值,参数d,参数d值为0,执行步骤312;
[0143] 步骤307:接收到请求消息的移动节点查看请求表,如果存在一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,则执行步骤308,否则执行步骤309;
[0144] 步骤308:接收到请求消息的移动节点选择一个请求表项,该请求表项的名称域值等于该请求消息的名称域值且前一跳域值等于该请求消息的源MAC地址,将该请求表项的生命周期设置为最大值,执行步骤312;
[0145] 步骤309:接收到请求消息的移动节点创建一个请求表项,该请求表项的名称域值等于该请求消息的名称域值,前一跳域值等于该请求消息的源MAC地址,生命周期设置为最大值,该移动节点判断是否存在名称域值等于该请求消息的名称的转发表项,如果是则执行步骤310,否则执行步骤311;
[0146] 步骤310:接收到请求消息的移动节点查看所有名称域值等于该请求消息的名称的转发表项,从这些转发表项中选取一个距离值最小的转发表项,将该请求消息的目的MAC地址更新为该转发表项的下一跳域值,将该请求消息的源MAC地址更新为自己的MAC地址,转发该请求消息,执行步骤303;
[0147] 步骤311:接收到请求消息的移动节点发送一个回溯消息,该回溯消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该请求消息的源MAC地址,名称域值等于该请求消息的名称域值,消息类型为4,负载为接收到的请求消息;
[0148] 步骤312:接收到数据消息或者回溯消息的移动节点查看自己的MAC地址是否等于该数据消息或者回溯消息的目的MAC地址,如果等于,则执行步骤314,否则执行步骤313;
[0149] 步骤313:接收到数据消息或者回溯消息的移动节点丢弃该数据消息或者回溯消息,执行步骤327;
[0150] 步骤314:判断移动节点接收到的消息是否为数据消息,如果是则执行步骤315,否则执行步骤322;
[0151] 步骤315:接收到数据消息的移动节点查看数据表,如果存在一个数据表项,该数据表项的消息域值中的名称等于该数据消息中的名称,该移动节点则将该数据消息中的生命周期设置为最大值;否则该移动节点创建一个数据表项,该数据表项的消息域值等于该数据消息,生命周期设置为最大值;
[0152] 步骤316:接收到数据消息的移动节点将该数据消息中的参数d递增1,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值不大于数据消息中的参数d,则执行步骤320,否则执行步骤317;
[0153] 步骤317:接收到数据消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址且距离域值大于数据消息中的参数d,则执行步骤318,否则执行步骤319;
[0154] 步骤318:接收到数据消息的移动节点选择一个转发表项,该转发表项的名称域值等于该数据消息的名称且提供者域值等于该数据消息负载中的MAC地址,将该转发表项的下一跳域值设置为该数据消息的源MAC地址,将该转发表项的距离域值设置为数据消息中的参数d,执行步骤320;
[0155] 步骤319:接收到数据消息的移动节点创建一个转发表项,该转发表项的名称域值等于该数据消息的名称,提供者域值等于该数据消息负载中的MAC地址,下一跳域值设置为该数据消息的源MAC地址,距离域值设置为数据消息中的参数d;
[0156] 步骤320:判断接收到数据消息的移动节点是否为消费者U1,如果是则执行步骤327,否则执行步骤321;
[0157] 步骤321:接收到数据消息的移动节点查看请求表并选择所有名称域值等于该数据消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的数据消息的目的MAC地址更新为该请求表项的前一跳域值,将该数据消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该数据消息,执行步骤312;
[0158] 步骤322:接收到回溯消息的移动节点查看转发表,如果存在一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,则执行步骤323,否则执行步骤324;
[0159] 步骤323:接收到回溯消息的移动节点选择一个转发表项,该转发表项的名称域值等于该回溯消息的名称域值且下一跳域值不等于该回溯消息的源MAC地址域值,所述移动节点发送一个请求消息,该请求消息的源MAC地址等于该移动节点的MAC地址,目的MAC地址等于该转发表项的下一跳域值,消息类型和名称域值分别等于该回溯消息负载中的请求消息中的消息类型和名称域值,负载为空,执行步骤303;
[0160] 步骤324:判断接收到回溯消息的移动节点是否为消费者U1,如果是则执行步骤325,否则执行步骤326;
[0161] 步骤325:消费者U1执行步骤101~117获取数据C1,执行步骤327;
[0162] 步骤326:接收到回溯消息的移动节点查看请求表并选择所有名称域值等于该回溯消息中的名称的请求表项;针对每一个选择的请求表项,移动节点将接收到的回溯消息的目的MAC地址更新为该请求表项的前一跳域值,将该回溯消息的源MAC地址更新为自己的MAC地址,删除该请求表项,发送该回溯消息,执行步骤312;
[0163] 步骤327:结束。
[0164] 实施例1
[0165] 基于表1的仿真参数,本实施例模拟了本发明中的一种高效可靠的物联网实现方法,性能分析如下:当数据量增加时,网络性能下降,数据获取延迟有所增加,当数据量减少时,网络性能增强,数据获取延迟有所降低,数据获取的平均延迟为528ms。
[0166] 表1仿真参数
[0167]
[0168] 本发明提供了一种高效可靠的物联网实现方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
专利联系人(活跃度排行)
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号