1.一种基于命名数据的物联网数据通信方法,其特征在于,所述物联网包括一个以上的节点,每个节点配置一个无线接口;一种数据由一个数据ID唯一标识,数据ID为大于0的正整数;
一个消息包含消息类型、数据ID、广播范围和负载域;
邻居消息的消息类型为1,邻居查询消息的消息类型为2,邻居数据消息的消息类型为
3,查询消息的消息类型为4,数据消息的消息类型为5,二次查询消息的消息类型为6,二次数据消息的消息类型为7,数据创建消息的消息类型为8;
每个节点维护一个索引表,每个索引表项包含数据ID集合域和生命周期域;
每个节点维护一个存储表,每个存储表项包含数据ID域,数据域和生命周期域;
节点N1定期执行下述过程来建立索引表:
步骤101:开始;
步骤102:节点N1查看存储表并创建一个数据ID集合参数D1,参数D1的初始值为空;针对每一个存储表项,节点N1判断参数D1中是否包含该存储表项的数据ID域值,如果不包括,节点N1则将该存储表项的数据ID域值加入到参数D1中,否则节点N1不执行任何操作;
步骤103:节点N1发送邻居消息,该邻居消息的消息类型为1,数据ID域值为0,广播范围为1,负载为参数D1;
步骤104:邻居节点接收到该邻居消息后,将该邻居消息的广播范围递减1,查看索引表,如果存在一个索引表项,该索引表项的数据ID集合域值等于该邻居消息负载中的参数D1,则将该索引表项中的生命周期设置为最大值,否则该邻居节点创建一个索引表项,该索引表项的数据ID集合域值等于该邻居消息负载中的参数D1,生命周期为最大值;
步骤105:接收到该邻居消息的邻居节点判断该邻居消息的广播范围是否为0,如果是,则执行步骤107,否则执行步骤106;
步骤106:接收到该邻居消息的邻居节点转发该邻居消息,执行步骤104;
步骤107:结束;
如果节点检测到一个索引表项的生命周期衰减为0,则从索引表中删除该索引表项。
2.根据权利要求1所述的一种基于命名数据的物联网数据通信方法,其特征在于,数据C1由数据ID CID1标识,如果节点N1检测到自己的索引表中存在一个索引表项,且该索引表项的数据ID集合中包含数据ID CID1,则通过下述过程获取数据C1:步骤201:开始;
步骤202:节点N1发送邻居查询消息,该邻居查询消息的消息类型为2,数据ID为CID1,广播范围域值为1,负载为空;
步骤203:邻居节点接收到邻居查询消息后,将该邻居查询消息的广播范围域值递减1,查看存储表;如果存在一个存储表项,该存储表项的数据ID等于该邻居查询消息的数据ID,则执行步骤206,否则执行步骤204;
步骤204:接收到邻居查询消息的邻居节点判断该邻居查询消息的广播范围域值是否等于0,如果是,则执行步骤207,否则执行步骤205;
步骤205:接收到邻居查询消息的邻居节点转发该邻居查询消息,执行步骤203;
步骤206:接收到邻居查询消息的邻居节点选择一个存储表项,该存储表项的数据ID等于该邻居查询消息的数据ID,该邻居节点发送一个邻居数据消息,该邻居数据消息的数据ID等于该邻居查询消息的数据ID,消息类型为3,广播范围域值为1,负载为该存储表项中的数据域值;
步骤207:接收到邻居数据消息的节点将该邻居数据消息的广播范围域值递减1,查看存储表,如果存在一个存储表项,该存储表项的数据ID等于该邻居数据消息的数据ID,则丢弃该邻居数据消息,否则,接收到邻居数据消息的节点创建一个存储表项,该存储表项的数据ID等于该邻居数据消息的数据ID,数据域值等于该邻居数据消息负载中的数据域值,生命周期设置为最大值;
步骤208:接收到邻居数据消息的节点判断该邻居数据消息的广播范围域值是否等于
0,如果是,则执行步骤210,否则执行步骤209;
步骤209:接收到邻居数据消息的节点转发该邻居数据消息,执行步骤207;
步骤210:结束;
如果节点检测到一个存储表项的生命周期衰减为0,则从存储表中删除该存储表项。
3.根据权利要求1所述的一种基于命名数据的物联网数据通信方法,其特征在于,节点保存一个查询表,每个查询表项包含数据ID域、距离域和生命周期域;
数据C1由数据ID CID1标识;如果节点N1检测到自己的索引表中任何一个索引表项的数据ID集合中都不包含数据ID CID1,则通过下述过程获取数据C1:步骤301:开始;
步骤302:节点N1设置一个参数h0,参数h0的初始值为常量X;
步骤303:节点N1将参数h0的值递增1;如果参数h0的值大于阈值TS1,则执行步骤315,否则执行步骤304;阈值TS1为大于常量X的正整数;
步骤304:节点N1设置一个时钟TM1,节点N1发送一个查询消息,该查询消息的消息类型为4,数据ID为CID1,广播范围域值等于参数h0,负载为参数h0;
步骤305:接收到查询消息的节点将该查询消息的广播范围域值递减1,查看存储表,如果存在一个存储表项,该存储表项的数据ID等于该查询消息的数据ID,则执行步骤306,否则执行步骤307;
步骤306:接收到查询消息的节点选择一个存储表项,该存储表项的数据ID等于该查询消息的数据ID,该节点发送一个数据消息,该数据消息的数据ID等于该查询消息的数据ID,消息类型为5,广播范围域值等于该查询消息负载中的参数h0与该查询消息广播范围域值之差的绝对值,负载为该存储表项中的数据域值,执行步骤310;
步骤307:接收到查询消息的节点查看查询表,如果存在一个查询表项,该查询表项的数据ID等于该查询消息的数据ID,则执行步骤310,否则执行步骤308;
步骤308:接收到查询消息的节点创建一个查询表项,该查询表项的数据ID等于该查询消息的数据ID,距离域值等于该查询消息负载中的参数h0与该查询消息广播范围域值之差的绝对值,生命周期设置为最大值;该节点判断该查询消息的广播范围域值是否为0,如果是,则执行步骤310,否则执行步骤309;
步骤309:接收到查询消息的节点转发接收到的查询消息,执行步骤305;
步骤310:接收到数据消息节点将该数据消息的广播范围域值递减1,查看查询表,如果存在一个查询表项,该查询表项的数据ID等于该数据消息的数据ID,则执行步骤311,否则执行步骤312;
步骤311:接收到数据消息的节点选择一个查询表项,该查询表项的数据ID等于该数据消息的数据ID,将该数据消息的广播范围域值更新为该查询表项的距离域值,删除该查询表项,转发该数据消息,执行步骤310;
步骤312:接收到数据消息的节点丢弃该数据消息;
步骤313:判断节点N1是否在时钟TM1规定的时间范围内接收到数据消息,如果是,则执行步骤314,否则执行步骤303;
步骤314:接收到数据消息的节点N1创建一个存储表项,该存储表项的数据ID等于该数据消息的数据ID,数据域值等于该数据消息负载中的数据域值,生命周期设置为最大值;
步骤315:结束。
4.根据权利要求1所述的一种基于命名数据的物联网数据通信方法,其特征在于,数据C1由数据ID CID1标识;如果节点N2创建了数据C1,则通过下述过程发布数据C1:步骤401:开始;
步骤402:节点N2创建一个存储表项,该存储表项的数据ID等于数据ID CID1,数据域值等于数据C1,生命周期设置为最大值;节点N2发送一个数据创建消息,该数据创建消息的数据ID等于数据ID CID1,消息类型为8,广播范围域值为常量X,负载为数据C1;
步骤403:接收到数据创建消息的节点将该数据创建消息的广播范围域值递减1,查看存储表,如果存在一个存储表项,该存储表项的数据ID等于该数据创建消息的数据ID,该节点则将该存储表项的数据域值更新为该数据创建消息负载中的数据,将生命周期设置为最大值;否则,该节点创建一个存储表项,该存储表项的数据ID等于该数据创建消息的数据ID,数据域值等于该数据创建消息负载中的数据,生命周期设置为最大值;
步骤404:接收到数据创建消息的节点查看查询表;如果存在一个查询表项,该查询表项的数据ID等于该数据创建消息的数据ID,则执行步骤405,否则执行步骤406;
步骤405:接收到数据创建消息的节点选择一个查询表项,该查询表项的数据ID等于该数据创建消息的数据ID,将该数据创建消息的广播范围域值更新为该查询表项的距离域值,删除该查询表项,转发该数据创建消息,执行步骤403;
步骤406:接收到数据创建消息的节点判断该数据创建消息的广播范围域值是否等于
0,如果是,则执行步骤408,否则执行步骤407;
步骤407:接收到数据创建消息的节点转发该数据创建消息,执行步骤403;
步骤408:结束。
5.根据权利要求3所述的一种基于命名数据的物联网数据通信方法,其特征在于,数据C1由数据ID CID1标识;如果节点N1检测到自己的索引表中任何一个索引表项的数据ID集合中都不包含CID1,并且执行步骤301~315并没有获取数据C1,节点N1则通过下述过程获取数据C1:步骤501:开始;
步骤502:节点N1设置一个参数h2,参数h2的初始值为常量X;
步骤503:节点N1将参数h2的值递增1;如果参数h2的值大于阈值TS2,则执行步骤516,否则执行步骤504;阈值TS2为大于常量X的正整数;
步骤504:节点N1设置一个时钟TM2,发送二次查询消息,该二次查询消息的消息类型为
6,数据ID为CID1,广播范围域值为参数h2,负载为参数h2;
步骤505:接收到二次查询消息的节点将该二次查询消息的广播范围域值递减1,查看存储表;如果存在一个存储表项,该存储表项的数据ID等于该二次查询消息的数据ID,则执行步骤506,否则执行步骤507;
步骤506:接收到二次查询消息的节点选择一个存储表项,该存储表项的数据ID等于该二次查询消息的数据ID,该节点发送一个二次数据消息,该二次数据消息的数据ID等于该二次查询消息的数据ID,消息类型为7,广播范围域值等于该二次查询消息负载中的参数h2与该二次查询消息广播范围域值之差的绝对值,负载为该存储表项中的数据域值,执行步骤510;
步骤507:接收到二次查询消息的节点查看查询表,如果存在一个查询表项,该查询表项的数据ID等于该二次查询消息的数据ID,则执行步骤510,否则执行步骤508;
步骤508:接收到二次查询消息的节点创建一个查询表项,该查询表项的数据ID等于该二次查询消息的数据ID,距离域值等于该二次查询消息负载中的参数h2与该二次查询消息广播范围域值之差的绝对值,生命周期设置为最大值;该节点判断该二次查询消息的广播范围域值是否为0,如果是,则执行步骤510,否则执行步骤509;
步骤509:接收到二次查询消息的节点转发接收到的二次查询消息,执行步骤505;
步骤510:接收到二次数据消息的节点,将该二次数据消息的广播范围域值递减1,查看查询表;如果存在一个查询表项,该查询表项的数据ID等于该二次数据消息的数据ID,则执行步骤511,否则执行步骤512;
步骤511:接收到二次数据消息的节点选择一个查询表项,该查询表项的数据ID等于该二次数据消息的数据ID,将该二次数据消息的广播范围域值更新为该查询表项的距离域值,删除该查询表项,转发该二次数据消息,执行步骤510;
步骤512:接收到二次数据消息的节点查看该二次数据消息的广播范围域值是否为0,如果是,则执行步骤514,否则执行步骤513;
步骤513:接收到二次数据消息的节点转发该二次数据消息,执行步骤510;
步骤514:判断节点N1是否在时钟TM2规定的时间范围内接收到二次数据消息,如果是,则执行步骤515,否则执行步骤503;
步骤515:接收到二次数据消息的节点N1创建一个存储表项,该存储表项的数据ID等于该二次数据消息的数据ID,数据域值等于该二次数据消息负载中的数据域值,生命周期设置为最大值;
步骤516:结束。