1.一种基于层次结构的网络数据通信方法,其特征在于,所述网络由骨干网和数据域构成;各个数据域之间的通信通过骨干网来实现;一个数据域包括两个以上的子域,一个子域包括以下设备:一个数据路由器、两个以上的接入节点、两个以上的服务器以及两个以上的移动节点;移动节点通过与自己关联的接入节点实现与其他设备的通信;服务器能够保存和提供本地数据,移动节点能够产生和获取数据;在一个数据域中,一个数据路由器作为主数据路由器,该主数据路由器用于将自己所在的数据域连接到骨干网从而实现与其他数据域的通信;主数据路由器所在的子域成为主子域;
一种数据由一个数据名称唯一标识,数据名称由域前缀、子域前缀、数据ID和部分ID构成;一个数据域由域前缀唯一标识,一个子域由子域前缀唯一标识,一种类型的数据由一个数据ID唯一标识,部分ID指明一种类型数据的一个具体部分;主子域的子域前缀成为主子域前缀;
数据通信通过域路由表,子域路由表和数据路由表来实现;域路由表用于实现各个数据域之间的路由和数据通信,子域路由表用于实现一个数据域内的子域之间的路由和数据通信,数据路由表用于实现一个子域内的数据路由器和数据路由器之间的数据通信;
域路由表由主数据路由器保存和维护,每个表项包含域前缀域和接口域,接口域值为接口集合;子域路由表由一个数据路由器或者接入节点保存和维护,每个表项包含子域前缀域和接口域,接口域值为接口集合;数据路由表由一个数据路由器保存和维护,每个表项包含数据ID域和接口域,接口域值为接口集合;
一个消息由三个部分构成,第一部分为消息类型域,第二部分为数据名称域,第三部分为负载域,消息类型域的定义如下所示:消息类型域值1对应消息类型为域前缀发布消息,消息类型域值2对应消息类型为子域前缀发布消息,消息类型域值3对应消息类型为数据ID发布消息,消息类型域值4对应消息类型为数据发布消息,消息类型域值5对应消息类型为数据请求消息,消息类型域值6对应消息类型为数据响应消息;在数据域ND1由域前缀值DP1唯一标识,数据域ND1中的主数据路由器为MCR4,主数据路由器MCR4位于子域SND4中,由子域前缀值SDP4唯一标识,主数据路由器MCR4负责维护数据域ND1的域路由表和子域SND4的子域路由表的情况下,主数据路由器MCR4启动后执行下述过程以建立域路由表或者子域路由表:
步骤101:开始;
步骤102:主数据路由器MCR4从每个与主数据路由器、数据路由器或者接入节点相连的接口发送一条域前缀发布消息,该消息负载为域前缀值DP1和子域前缀值SDP4;
步骤103:一个设备从自己的接口f收到域前缀发布消息,接口f与发送或者转发域前缀发布消息的设备相连,判断自己是否为主数据路由器,如果是,则执行步骤104,否则执行步骤105;
步骤104:主数据路由器查看域路由表,如果不存在域前缀值为DP1的表项,则创建一个新表项,该表项的域前缀值为DP1,接口域为接口f,如果存在域前缀值为DP1的表项,则将接口f加入到接口域;主数据路由器创建或者更新域前缀值为DP1的表项后,从每个与主数据路由器相连的接口发送接收到的域前缀发布消息,执行步骤108;
步骤105:从接口f收到发布消息的设备判断自己是否为数据路由器,如果是,则执行步骤106,否则执行步骤107;
步骤106:数据路由器查看子域路由表,如果不存在子域前缀值为SDP4的表项,则创建一个新表项,该表项的域前缀值为SDP4,接口域为接口f,如果存在子域前缀值为SDP4的表项,则将接口f加入到接口域;数据路由器创建或者更新域前缀值为SDP4的表项后,保存域前缀值DP1,同时将子域前缀值SDP4标记为主子域前缀,然后从每个与数据路由器相连的接口发送接收到的发布消息,执行步骤108;
步骤107:接入节点查看子域路由表,如果不存在子域前缀值为SDP4的表项,则创建一个新表项,该表项的子域前缀值为SDP4,接口域为接口f,如果存在子域前缀值为SDP4的表项,则将接口f加入到接口域;接入节点创建或者更新子域前缀值为SDP4的表项后,从每个与接入节点相连的接口发送接收到的发布消息;
步骤108:判断是否满足下述所有三个条件,如果是,执行步骤109,否则执行步骤103:
条件1:数据域ND1中的所有数据路由器都在子域路由表中建立或者更新了子域前缀值为SDP4的表项;
条件2:子域SND4中的所有接入节点都在子域路由表中建立或者更新了子域前缀值为SDP4的表项;
条件3:网络中所有主数据路由器都在域路由表中建立或者更新了域前缀值为DP1的表项;
步骤109:结束;
子域SND1位于数据域ND1中,由子域前缀值SDP1唯一标识,子域SND1中的数据路由器为CR1,数据路由器CR1启动后执行下述过程建立域路由表或者子域路由表:
步骤201:开始;
步骤202:数据路由器CR1从每个与主数据路由器、数据路由器或者接入节点相连的接口发送一条子域前缀发布消息,该消息负载为子域前缀值SDP1;
步骤203:一个设备从自己的接口f1收到子域前缀发布消息,接口f1与发送或者转发子域前缀发布消息的设备相连,查看子域路由表,如果存在子域前缀值为SDP1的表项,则将接口f1加入到接口域,否则创建一个新表项,该表项的子域前缀值为SDP1,接口域为接口f1;
步骤204:接收到子域前缀发布消息的设备判断自己是否为主数据路由器,如果是,则执行步骤205,否则执行步骤206;
步骤205:主数据路由器从每个与数据路由器相连的接口发送接收到的子域前缀发布消息,执行步骤209;
步骤206:接收到子域前缀发布消息的设备判断自己是否为数据路由器,如果是,则执行步骤207,否则执行步骤208;
步骤207:数据路由器从每个与主数据路由器或者数据路由器相连的接口发送接收到的子域前缀发布消息,执行步骤209;
步骤208:接入节点从每个与接入节点相连的接口发送接收到的发布消息;
步骤209:判断是否满足下述所有两个条件,如果是执行步骤210,否则执行步骤203:
条件1:数据域ND1中的主数据路由器和所有数据路由器都在子域路由表中建立或者更新了子域前缀值为SDP1的表项;
条件2:子域SND1中的所有接入节点都在子域路由表中建立或者更新了子域前缀值为SDP4的表项;
步骤210:结束;
服务器S1位于子域SND1,子域SND1由子域前缀值SDP1唯一标识,子域SND1的数据路由器为CR1,服务器S1启动后执行下述过程建立数据路由表:
步骤301:开始;
步骤302:服务器S1从与数据路由器CR1相连的接口发送一条数据ID发布消息,该数据ID发布消息负载为服务器S1能够保存和提供的所有数据的数据ID集合;
步骤303:数据路由器CR1从接口f2收到数据ID发布消息后,查看数据路由表,对于数据ID消息负载中的每个数据ID执行下述操作:如果不存在数据ID域值为该数据ID的表项,数据路由器CR1则创建一个新表项,该表项的数据ID域值为该数据ID,接口域为接口f2,如果存在数据ID域值为该数据ID的表项,则将接口f2加入到该表项的接口域;
步骤304:结束。
2.根据权利要求1所述的一种基于层次结构的网络数据通信方法,其特征在于,
在数据C1由数据名称N1唯一标识,数据名称N1的域前缀值为DP1,子域前缀值为SDP1,数据ID为CID1,数据域ND1由域前缀值DP1唯一标识,数据域ND1中的主数据路由器为MCR4,子域SND1位于数据域ND1中,由子域前缀值SDP1唯一标识,子域SND1中的数据路由器为CR1的情况下,移动节点M2产生数据C1后执行下述过程完成数据C1的发布操作:
步骤401:开始;
步骤402:移动节点M2向与自己关联的接入节点AP2发送一条数据发布消息,该数据发布消息的数据名称域为N1,负载为数据C1;
步骤403:接收到数据发布消息的设备判断自己是否为主数据路由器,如果是,则执行步骤404,否则执行步骤405;
步骤404:如果接收到数据发布消息的主数据路由器是主数据路由器MCR4,则查询子域路由表中子域前缀值为SDP1的表项,并从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤409;如果接收到数据发布消息的主数据路由器不是主数据路由器MCR4,则查询域路由表中域前缀值为DP1的表项,并从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤409;
步骤405:接收到数据发布消息的设备判断自己是否为数据路由器CR1,如果是,则执行步骤410,否则执行步骤406;
步骤406:接收到数据发布消息的设备判断自己是否为接入节点,如果是,则执行步骤408,否则执行步骤407;
步骤407:如果接收到数据发布消息的数据路由器位于数据域ND1内,则查询子域路由表中子域前缀值为SDP1的表项,并从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤409;如果接收到数据发布消息的数据路由器不位于数据域ND1内,则查询子域路由表中子域前缀值为主子域前缀值的表项,并从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤409;
步骤408:接收到数据发布消息的接入节点查询子域路由表,选择子域前缀值为所在子域的子域前缀的表项,从该表项对应的接口域中的一个接口发送该数据发布消息;
步骤409:判断是否数据路由器CR1收到数据发布消息,如果是执行步骤410,否则执行步骤403;
步骤410:数据路由器CR1收到数据发布消息后,查询数据路由表中数据ID值为CID1的表项,并从该表项接口域中的每个接口发送该数据发布消息;
步骤411:服务器收到数据发布消息后,保存数据发布消息中的数据C1;
步骤412:结束。
3.根据权利要求1所述的一种基于层次结构的网络数据通信方法,其特征在于,每个主数据路由器、数据路由器和接入节点维护一个请求表,请求表的一个表项由数据名称域和接口域构成;
数据C1由数据名称N1唯一标识,数据名称N1的域前缀值为DP1,子域前缀值为SDP1,数据ID为CID1,数据域ND1由域前缀值DP1唯一标识,数据域ND1中的主数据路由器为MCR4,子域SND1位于数据域ND1中,由子域前缀值SDP1唯一标识,子域SND1中的数据路由器为CR1;
如果移动节点M1位于数据域ND1中,那么执行下述过程获取数据C1:
步骤501:开始;
步骤502:移动节点M1向与自己关联的接入节点AP1发送一条数据请求消息,该数据请求消息的数据名称域为N1,负载为空;
步骤503:设备从自己的接口f3收到数据请求消息,接口f3与发送或者转发数据请求消息的设备相连,然后查看请求表,如果请求表中存在数据名称为N1的表项,则执行步骤504,否则执行步骤505;
步骤504:接收到数据请求消息的设备将接口f3加入到数据名称为N1的表项的接口域中,然后执行步骤513;
步骤505:接收到数据请求消息的设备在请求表中创建一个表项,该表项的数据名称域为N1,接口域为f3;
步骤506:接收到数据请求消息的设备判断自己是否为数据路由器CR1,如果是,则执行步骤511,否则执行步骤507;
步骤507:接收到数据请求消息的设备判断自己是否为数据路由器或者主数据路由器,如果是,执行步骤508,否则执行步骤509;
步骤508:接收到数据请求消息的数据路由器或者主数据路由器查询子域路由表中子域前缀值为SDP1的表项,并从该表项对应的接口域中的一个接口发送该数据请求消息,执行步骤510;
步骤509:接收到数据请求消息的接入节点查询子域路由表,选择子域前缀值为所在子域的子域前缀的表项,并从该表项对应的接口域中的一个接口发送该数据请求消息;
步骤510:执行步骤503;
步骤511:数据路由器CR1查询数据路由表中数据ID域值为CID1的表项,并从该表项中接口域中的一个接口发送该数据请求消息;
步骤512:服务器收到数据请求消息后,向数据路由器CR1返回一个数据响应消息,消息名称为N1,负载为C1;
步骤513:判断接收到数据响应消息的设备是否为接入节点AP2,如果是,则执行步骤516,否则执行步骤514;
步骤514:接收到数据响应消息的设备查看请求表中数据名称为N1的表项,从该表项接口域中的每个接口发送数据响应消息,并在数据表中删除数据名称为N1的表项;
步骤515:重复步骤513至514直到接入节点AP2收到数据响应消息;
步骤516:接入节点AP2将数据响应消息转发给移动节点M2,移动节点M2获取了数据C1;
步骤517:结束。
4.根据权利要求1所述的一种基于层次结构的网络数据通信方法,其特征在于,数据C1由数据名称N1唯一标识,数据名称N1的域前缀值为DP1,子域前缀值为SDP1,数据ID为CID1,数据域ND1由域前缀值DP1唯一标识,数据域ND1中的主数据路由器为MCR4,子域SND1位于数据域ND1中,由子域前缀值SDP1唯一标识,子域SND1中的数据路由器为CR1;
移动节点位于数据域ND5,数据域ND5由域前缀值DP5唯一标识,数据域ND5中的主数据路由器为MCR5,主数据路由器MCR5所在的子域为SND5,由子域前缀值SDP5唯一标识,执行下述过程获取数据C1:
步骤601:开始;
步骤602:移动节点M5向与自己关联的接入节点AP5发送一条数据请求消息,该数据请求消息的数据名称域为N1,负载为空;
步骤603:设备从自己的接口f5收到数据请求消息,接口f5与发送或者转发数据请求消息的设备相连,然后查看请求表,如果请求表中存在数据名称为N1的表项,则执行步骤604,否则执行步骤605;
步骤604:接收到数据请求消息的设备将接口f5加入到数据名称为N1的表项的接口域中,执行步骤615;
步骤605:接收到数据请求消息的设备在请求表中创建一个表项,该表项的数据名称域为N1,接口域为接口f5;
步骤606:接收到数据请求消息的设备判断自己是否为数据路由器CR1,如果是,则执行步骤613,否则执行步骤607;
步骤607:接收到数据请求消息的设备判断自己是否为主数据路由器,如果是,执行步骤608,否则执行步骤609;
步骤608:如果接收到数据请求消息的主数据路由器为MCR4,则查询子域路由表中子域前缀值为SDP1的表项,从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤612;如果接收到数据请求消息的主数据路由器不是MCR4,则查询域路由表中域前缀值为DP1的表项,从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤612;
步骤609:接收到数据请求消息的设备判断自己是否为数据路由器,如果是执行步骤610,否则执行步骤611;
步骤610:如果接收到数据请求消息的数据路由器位于数据域ND1内,则查询子域路由表中子域前缀值为SDP1的表项,从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤612;如果接收到数据请求消息的数据路由器位于数据域ND5内,则查询子域路由表中子域前缀值为SDP5的表项,从该表项对应的接口域中的一个接口发送该数据发布消息,执行步骤612;
步骤611:接收到数据请求消息的接入节点查询子域路由表,选择子域前缀值为所在子域的子域前缀的表项,从该表项对应的接口域中的一个接口发送该数据请求消息;
步骤612:执行步骤603;
步骤613:数据路由器CR1查询数据路由表中数据ID域值为CID1的表项,从该表项中接口域中的一个接口发送该数据请求消息;
步骤614:服务器收到数据请求消息后,向数据路由器CR1返回一个数据响应消息,消息名称为N1,负载为C1;
步骤615:接收到数据响应消息的设备是否为接入节点AP5,如果是,则执行步骤516,否则执行步骤616;
步骤616:接收到数据响应消息的设备查看请求表中数据名称为N1的表项,从该表项接口域中的每个接口发送数据响应消息,在数据表中删除数据名称为N1的表项;
步骤617:重复步骤615至616直到接入节点AP5收到数据响应消息;
步骤618:接入节点AP5将数据响应消息转发给移动节点M5,移动节点M5获取了数据C1;
步骤619:结束。