本發(fā)明涉及一種數(shù)據(jù)傳輸方法,尤其涉及的是一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法。
背景技術:
:在典型的物聯(lián)網(wǎng)構架中,一個電子標簽具有全球唯一的電子編碼,將其附著在物品上標識目標對象。在物品的生存期間,讀寫器利用射頻識別技術(RFID,Radio-frequencyidentification)讀取附著在目標對象的電子標簽并將電子編碼發(fā)送給物聯(lián)網(wǎng)中間件,物聯(lián)網(wǎng)中間件將電子編碼所標識的目標對象信息數(shù)據(jù)傳輸?shù)竭h程數(shù)據(jù)庫服務器進行存儲或者更新。用戶通過向物聯(lián)網(wǎng)中間件發(fā)送物品的電子編碼來查詢目標對象的相關信息,物聯(lián)網(wǎng)中間件將目標對象的電子編碼發(fā)送到對象名解析服務器(ONS,ObjectNameService)進行解析從而獲取目標對象信息所在數(shù)據(jù)庫服務器的統(tǒng)一資源標識(URI,UniversalResourceIdentifier),即目標對象信息所在數(shù)據(jù)庫服務器的IP地址,然后通過數(shù)據(jù)庫服務器獲取目標對象的相關信息數(shù)據(jù),并將此數(shù)據(jù)返回給用戶。目前典型的物聯(lián)網(wǎng)解決方案包括美國的EPC(ElectronicProductCode)系統(tǒng)和日本的UID(UbiquitousID)系統(tǒng)。目前的物聯(lián)網(wǎng)架構能夠很好地跟蹤目標對象,但仍存在以下不足:1)用戶只能通過數(shù)據(jù)庫服務器來獲取目標對象信息,無法實現(xiàn)與目標對象直接地點到點通信;2)用戶只能查詢目標對象的信息,無法直接控制目標對象的狀態(tài);3)目標對象信息只能通過讀寫器被動地讀取,目標對象無法根據(jù)當前的狀態(tài)主動請求數(shù)據(jù)更新或發(fā)出警報信息。技術實現(xiàn)要素:發(fā)明目的:本發(fā)明所要解決的技術問題是針對現(xiàn)有技術的不足,提供一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法。技術方案:本發(fā)明公開了一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法,所述物聯(lián)網(wǎng)中包含四類節(jié)點:數(shù)據(jù)路由器、用戶設備、傳感節(jié)點和執(zhí)行節(jié)點;數(shù)據(jù)路由器用于路由轉(zhuǎn)發(fā),用戶設備為數(shù)據(jù)消費者,用于獲取傳感節(jié)點感知的數(shù)據(jù)或者向執(zhí)行節(jié)點發(fā)布命令從而實現(xiàn)遠程控制,例如自動關燈,傳感節(jié)點和數(shù)據(jù)節(jié)點為數(shù)據(jù)提供者;一個數(shù)據(jù)路由器與一跳范圍內(nèi)的用戶設備、傳感節(jié)點和執(zhí)行節(jié)點構建成一個簇,數(shù)據(jù)路由器為簇首節(jié)點,用戶設備、傳感節(jié)點和執(zhí)行節(jié)點為簇內(nèi)節(jié)點;簇內(nèi)節(jié)點不執(zhí)行路由轉(zhuǎn)發(fā)功能;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點有一個無線接口,并通過該無線接口與所在簇簇首節(jié)點進行通信;數(shù)據(jù)路由器具有一個無線接口和兩個以上的有線接口,通過無線接口域本簇簇內(nèi)節(jié)點進行通信,通過有線接口與其他數(shù)據(jù)路由器進行通信;數(shù)據(jù)路由器由一個路由器ID唯一標識,傳感節(jié)點和執(zhí)行節(jié)點由一個名字唯一標識,傳感節(jié)點的名字由名字前綴和名字ID組成;執(zhí)行節(jié)點的名字由名字前綴、名字ID和命令域構成;消息結構由四部分構成:名字集合域、消息類型值、跳數(shù)和負載;其中名字集合域為定義目標數(shù)據(jù)的數(shù)據(jù)名字的集合,跳數(shù)定義該消息被轉(zhuǎn)發(fā)的最大距離;消息類型值如下所示:消息類型消息類型值信標消息0發(fā)布消息1數(shù)據(jù)推送消息2數(shù)據(jù)請求消息3數(shù)據(jù)響應消息4命令請求消息5命令響應消息6數(shù)據(jù)路由器維護一個轉(zhuǎn)發(fā)表,每個轉(zhuǎn)發(fā)表項包括三個域:源路由器ID域值、接口域值和名字前綴集合;傳感節(jié)點的名字預先設定,例如Temp,執(zhí)行節(jié)點的名字前綴和名字ID預先設定,例如名字前綴為Light,名字ID為On,具有網(wǎng)絡唯一性;執(zhí)行節(jié)點的名字前綴和名字ID具有唯一性;數(shù)據(jù)路由器維護一個本簇名字前綴集合,該本簇名字前綴集合為本簇所有傳感節(jié)點和執(zhí)行節(jié)點的名字前綴的集合,數(shù)據(jù)路由器通過無線接口定期廣播信標消息,該信標消息的名字集合域域值為名字前綴集合,消息類型為0,跳數(shù)域值為1,負載為自己的路由器ID;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點啟動后,偵聽數(shù)據(jù)路由器廣播的信標消息,選擇發(fā)送信號最強的信標幀的數(shù)據(jù)路由器為簇首節(jié)點,記錄簇首節(jié)點的路由器ID,將自己標記為簇內(nèi)節(jié)點;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點開始從無線接口定期廣播信標消息,傳感節(jié)點和執(zhí)行節(jié)點廣播的信標消息的名字集合域值為自己名字的名字前綴,消息類型為0,跳數(shù)域值為1,負載為簇首節(jié)點的路由器ID;用戶設備廣播的信標消息的名字集合域值為空,消息類型為0,跳數(shù)域值為1,負載為簇首節(jié)點的路由器ID;簇首節(jié)點收到信標消息后,如果信標消息中的路由器ID等于自己的路由器ID,則將信標消息中的名字集合域值加入到維護的名字前綴集合;簇首節(jié)點收到所有簇內(nèi)節(jié)點的信標幀后,獲取并保存本簇名字前綴集合;對于該集合中的每個元素設置一個定時器,如果簇首節(jié)點在一個元素的定時器過期之前收到了該元素的信標消息,即該元素屬于該信標消息的名字集合,那么簇首節(jié)點重新設置定時器,否則從本簇名字前綴集合中刪除該元素;然后執(zhí)行下述步驟建立轉(zhuǎn)發(fā)表:步驟101:開始;步驟102:簇首節(jié)點構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟103:鄰居數(shù)據(jù)路由器從接口f接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中創(chuàng)建一個轉(zhuǎn)發(fā)表項,該轉(zhuǎn)發(fā)表項的源路由器ID為發(fā)布消息負載中的路由器ID,接口域值為f,名字前綴集合為發(fā)布消息中的名字集合域值;步驟104:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟106,否則執(zhí)行步驟105;步驟105:鄰居數(shù)據(jù)路由器從除了接口f之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟103;步驟106:結束。上述過程可以快速建立轉(zhuǎn)發(fā)表從而實現(xiàn)數(shù)據(jù)通信。本發(fā)明所述方法中,在簇CL1的簇首節(jié)點為CH1,簇CL2的簇首節(jié)點CH2,傳感節(jié)點或者執(zhí)行節(jié)點M1的名字前綴為NP1的條件下,如果節(jié)點M1從簇CL1移動到CL2,那么節(jié)點M1收到簇首節(jié)點CH2的信標消息后保存簇首節(jié)點CH2的路由器ID,然后執(zhí)行下述過程:步驟201:開始;步驟202:節(jié)點M1從無線接口發(fā)送一個信標消息,該信標消息的名字集合為它名字的名字前綴,消息類型為0,跳數(shù)為1,負載為簇首節(jié)點CH2的路由器ID;步驟203:簇首節(jié)點CH2接收到信標消息后,查看自己的本簇名字前綴集合,如果本簇名字前綴集合不包含信標消息中的名字集合中的名字前綴,那么執(zhí)行步驟204,否則執(zhí)行步驟207;步驟204:簇首節(jié)點CH2將信標消息中名字集合中的名字前綴加入到自己的本簇名字前綴集合中,然后構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點CH2從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟205:鄰居數(shù)據(jù)路由器從自己的接口f1接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中查找源路由器ID值等于發(fā)布消息負載中的路由器ID的轉(zhuǎn)發(fā)表項,將該轉(zhuǎn)發(fā)表項的接口域值更新為f1,名字前綴集合更新為發(fā)布消息中的名字集合域值;步驟206:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟208,否則執(zhí)行步驟207;步驟207:鄰居數(shù)據(jù)路由器從除了接口f1之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟205;步驟208:結束。本發(fā)明所述方法中,在簇CL1的簇首節(jié)點為CH1,簇CL2的簇首節(jié)點CH2,傳感節(jié)點或者執(zhí)行節(jié)點M1的名字前綴為NP1,節(jié)點M1為簇CL1的簇內(nèi)節(jié)點且簇CL1中只有節(jié)點M1的名字前綴為NP1條件下,如果節(jié)點M1從簇CL1移動到CL2,那么簇首節(jié)點CH1執(zhí)行下述過程:步驟301:開始;步驟302:如果簇首節(jié)點CH1檢測到名字前綴NP1的定時器過期,則從本簇名字前綴集合將名字前綴NP1刪除;簇首節(jié)點CH1構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點CH1從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟303:鄰居數(shù)據(jù)路由器從自己的接口f2接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中查找源路由器ID值等于發(fā)布消息負載中的路由器ID的轉(zhuǎn)發(fā)表項,然后將該轉(zhuǎn)發(fā)表項的接口域值更新為f2,名字前綴集合更新為發(fā)布消息中的名字集合域值;步驟304:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟306,否則執(zhí)行步驟305;步驟305:鄰居數(shù)據(jù)路由器從除了接口f2之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟303;步驟306:結束;每個簇首節(jié)點維護一個數(shù)據(jù)表,每個數(shù)據(jù)表項由名字域,數(shù)據(jù)域和生命周期域;傳感節(jié)點定期收集感知到的數(shù)據(jù),然后執(zhí)行下述數(shù)據(jù)推送操作:步驟401:開始;步驟402:傳感節(jié)點構建數(shù)據(jù)推送消息,該數(shù)據(jù)推送消息的名字集合由該傳感節(jié)點的名字構成,消息類型為2,跳數(shù)為1,負載為感知到的數(shù)據(jù),然后從無線接口發(fā)送該數(shù)據(jù)推送消息;步驟403:與傳感節(jié)點位于相同簇的簇首節(jié)點接收到數(shù)據(jù)推送消息后,在數(shù)據(jù)表中創(chuàng)建一個數(shù)據(jù)表項,該數(shù)據(jù)表項的名字域值為數(shù)據(jù)推送消息中名字集合的名字,數(shù)據(jù)域為數(shù)據(jù)推送消息負載中的數(shù)據(jù),生命周期為最大值,例如10min;步驟404:結束;如果簇首節(jié)點檢測到一個數(shù)據(jù)表項的生命周期衰減到0,那么刪除該數(shù)據(jù)表項。上述過程能夠?qū)崿F(xiàn)數(shù)據(jù)推送過程,從而用戶可以快速獲取所需數(shù)據(jù)。本發(fā)明所述方法中,每個數(shù)據(jù)路由器保存一個聚合表,一個聚合表項包括名字集合域和接口域;用戶設備U1為簇CL3的簇內(nèi)節(jié)點,簇CL3的簇首節(jié)點為CH3;如果用戶節(jié)點U1需要獲取名字集合S1定義的數(shù)據(jù),名字集合S1的名字前綴集合為NPS1,那么用戶設備U1執(zhí)行下述過程:步驟501:開始;步驟502:用戶設備U1構建一個數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的名字集合為S1,消息類型為3,跳數(shù)為d/r+2,d為網(wǎng)絡直徑,r為傳輸半徑,負載為簇首節(jié)點CH3的路由器ID;用戶設備U1從無線接口發(fā)送該數(shù)據(jù)請求消息;步驟503:簇首節(jié)點CH3從接口f3接收到該數(shù)據(jù)請求消息后,將數(shù)據(jù)請求消息中的跳數(shù)遞減1,然后判斷數(shù)據(jù)表中是否存在滿足條件1的數(shù)據(jù)表項,如果是,執(zhí)行步驟504,否則執(zhí)行步驟506;條件1:數(shù)據(jù)表項的名字域值屬于數(shù)據(jù)請求消息中的名字集合;步驟504:簇首節(jié)點CH3構建一個數(shù)據(jù)響應消息,該數(shù)據(jù)響應消息的名字集合為符合條件1的數(shù)據(jù)表項的名字域集合,消息類型為4,跳數(shù)為1,負載為符合條件1的數(shù)據(jù)表項中的數(shù)據(jù)域值;簇首節(jié)點CH3從接口f3發(fā)送數(shù)據(jù)響應消息;步驟505:簇首節(jié)點CH3從數(shù)據(jù)請求消息的名字集合中減去數(shù)據(jù)響應消息中的名字集合;如果數(shù)據(jù)響應消息的名字集合等于數(shù)據(jù)請求消息中的名字集合,那么執(zhí)行步驟518,否則執(zhí)行步驟506;步驟506:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟518,否則執(zhí)行步驟507;步驟507:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟508,否則執(zhí)行步驟509;步驟508:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合,執(zhí)行步驟518;步驟509:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合;簇首節(jié)點CH3構建一個名字集合S2,其值為數(shù)據(jù)請求消息的名字集合,名字集合S2的名字前綴集合為NPS2,然后對于集合NPS2中的任一個名字前綴P,簇首節(jié)點CH3進行如下操作:簇首節(jié)點從集合S2中選擇名字前綴為P的所有名字并用這些名字構建成名字集合S3,從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含名字前綴P的所有轉(zhuǎn)發(fā)表項,對于每一個名字前綴集合包含名字前綴P的轉(zhuǎn)發(fā)表項,簇首節(jié)點CH3構建一個數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的名字集合為集合S3,消息類型為3,跳數(shù)為d/r+2,負載為空;簇首節(jié)點從該轉(zhuǎn)發(fā)表項的接口域發(fā)送構建的數(shù)據(jù)請求消息;步驟510:鄰居數(shù)據(jù)路由器從接口f4接收到該數(shù)據(jù)請求消息后,將數(shù)據(jù)請求消息中的跳數(shù)遞減1,判斷數(shù)據(jù)表中是否存在滿足條件1的數(shù)據(jù)表項,如果是,執(zhí)行步驟511,否則執(zhí)行步驟513;步驟511:鄰居數(shù)據(jù)路由器構建一個數(shù)據(jù)響應消息,該數(shù)據(jù)響應消息的名字集合為符合條件1的數(shù)據(jù)表項的名字域集合,消息類型為4,跳數(shù)為d/r+2,負載為符合條件1的數(shù)據(jù)表項中的數(shù)據(jù)域值,然后從接口f4發(fā)送數(shù)據(jù)響應消息;步驟512:鄰居數(shù)據(jù)路由器從數(shù)據(jù)請求消息的名字集合中減去數(shù)據(jù)響應消息中的名字集合,如果數(shù)據(jù)響應消息的名字集合等于數(shù)據(jù)請求消息中的名字集合,那么執(zhí)行步驟518,否則執(zhí)行步驟513;步驟513:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟518,否則執(zhí)行步驟514;步驟514:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟515,否則執(zhí)行步驟516;步驟515:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合,執(zhí)行步驟518;步驟516:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合,如果數(shù)據(jù)請求消息中的跳數(shù)為0,則執(zhí)行步驟518,否則執(zhí)行步驟517;步驟517:鄰居數(shù)據(jù)路由器從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含數(shù)據(jù)請求消息名字集合的名字前綴的所有轉(zhuǎn)發(fā)表項,對于每一個接口域值不等于f4且名字前綴集合包含數(shù)據(jù)請求消息名字集合的名字前綴的轉(zhuǎn)發(fā)表項,鄰居數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項的接口域發(fā)送接收到的數(shù)據(jù)請求消息,執(zhí)行步驟510;步驟518:如果用戶設備U1接收到數(shù)據(jù)響應消息,執(zhí)行步驟520,否則執(zhí)行步驟519;步驟519:對于數(shù)據(jù)響應消息名字集合中的每一個名字N,數(shù)據(jù)路由器創(chuàng)建一個數(shù)據(jù)表項,該數(shù)據(jù)表項的名字域值為名字N,數(shù)據(jù)域為名字N定義的數(shù)據(jù),生命周期設置為最大值;對于每個名字集合為數(shù)據(jù)響應消息名字集合的超集的聚合表項,數(shù)據(jù)路由器從該聚合表項的接口域轉(zhuǎn)發(fā)接收到的數(shù)據(jù)響應消息,然后從該聚合表項的名字集合中減去數(shù)據(jù)響應消息的名字集合;如果該聚合表項的名字集合為空,則刪除該聚合表項;執(zhí)行步驟518;步驟520:用戶設備U1收到所有數(shù)據(jù)響應消息后,保存數(shù)據(jù)響應消息中的數(shù)據(jù)從而獲取名字集合S1定義的數(shù)據(jù);步驟521:結束。上述過程能夠確保用戶可以快速獲取所需數(shù)據(jù)。本發(fā)明所述方法中,用戶設備U1為簇CL3的簇內(nèi)節(jié)點,簇CL3的簇首節(jié)點為CH3;如果用戶節(jié)點U1想要執(zhí)行節(jié)點執(zhí)行一種操作,例如關燈,所述執(zhí)行節(jié)點的名字集合為SA1,名字集合SA1的名字前綴集合為NPSA1,那么用戶設備U1執(zhí)行下述過程:步驟601:開始;步驟602:用戶設備U1構建一個命令請求消息,該命令請求消息的名字集合為SA1,消息類型為5,跳數(shù)為d/r+2,d為網(wǎng)絡直徑,r為傳輸半徑,負載為簇首節(jié)點CH3的路由器ID;用戶設備U1從無線接口發(fā)送該命令請求消息;步驟603:簇首節(jié)點CH3從接口f3接收到該命令請求消息后,將命令請求消息中的跳數(shù)遞減1,然后判斷自己維護的本簇名字前綴集合與命令請求消息名字集合的名字前綴集合是否為空,如果是,執(zhí)行步驟606,否則執(zhí)行步驟604;步驟604:簇首節(jié)點CH3從接口f3轉(zhuǎn)發(fā)命令請求消息,如果接收到命令請求消息的執(zhí)行節(jié)點的名字前綴和名字ID等于命令請求消息的名字集合的一個元素E的名字前綴和名字ID,則執(zhí)行元素E的命令域值,例如關燈,然后從無線接口發(fā)送一個命令響應消息,該命令響應消息名字集合為元素E的名字,消息類型為6,跳數(shù)為2,負載為簇首節(jié)點CH3的路由器ID;步驟605:簇首節(jié)點CH3接收到命令響應消息后,從命令請求消息的名字集合中減去所有收到的命令響應消息中的名字集合,如果簇首節(jié)點CH3收到的命令響應消息個數(shù)等于命令請求消息名字集合的元素個數(shù),那么執(zhí)行步驟618,否則執(zhí)行步驟606;步驟606:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟618,否則執(zhí)行步驟607;步驟607:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟608,否則執(zhí)行步驟609;步驟608:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合,執(zhí)行步驟618;步驟609:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合;簇首節(jié)點CH3構建一個名字集合SA2,其值為命令請求消息的名字集合,名字集合SA2的名字前綴集合為NPSA2,然后對于集合NPSA2中的任一個名字前綴PA,簇首節(jié)點CH3進行如下操作:簇首節(jié)點從集合SA2中選擇名字前綴為PA的所有名字并用這些名字構建成名字集合SA3,然后從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含名字前綴PA的所有轉(zhuǎn)發(fā)表項,對于每一個名字前綴集合包含名字前綴PA的轉(zhuǎn)發(fā)表項,簇首節(jié)點CH3構建一個命令請求消息,該命令請求消息的名字集合為集合SA3,消息類型為5,跳數(shù)為d/r+2,負載為空,然后從該轉(zhuǎn)發(fā)表項的接口域發(fā)送構建的命令請求消息;步驟610:鄰居數(shù)據(jù)路由器從接口f4接收到該命令請求消息后,將命令請求消息中的跳數(shù)遞減1,然后判斷自己維護的本簇名字前綴集合與命令請求消息名字集合的名字前綴集合是否為空,如果是,執(zhí)行步驟613,否則執(zhí)行步驟611;步驟611:鄰居數(shù)據(jù)路由器從無線接口轉(zhuǎn)發(fā)命令請求消息,如果接收到命令請求消息的執(zhí)行節(jié)點的名字前綴和名字ID等于命令請求消息的名字集合的一個元素E1的名字前綴和名字ID,則執(zhí)行元素E1的命令域值,例如關燈,;鄰居數(shù)據(jù)路由器從無線接口發(fā)送一個命令響應消息,該命令響應消息名字集合為元素E1的名字,消息類型為6,跳數(shù)為d/r+1,負載為鄰居數(shù)據(jù)路由器的路由器ID;步驟612:鄰居數(shù)據(jù)路由器接收到命令響應消息后,從命令請求消息的名字集合中減去所有收到的命令響應消息中的名字集合,如果鄰居數(shù)據(jù)路由器收到的命令響應消息個數(shù)等于命令請求消息名字集合的元素個數(shù),那么執(zhí)行步驟618,否則執(zhí)行步驟613;步驟613:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟618,否則執(zhí)行步驟614;步驟614:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟615,否則執(zhí)行步驟616;步驟615:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為命令請求消息的名字集合,執(zhí)行步驟618;步驟616:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為命令請求消息的名字集合,如果命令請求消息中的跳數(shù)為0,則執(zhí)行步驟618,否則執(zhí)行步驟617;步驟617:鄰居數(shù)據(jù)路由器從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含命令請求消息名字集合的名字前綴集合的所有轉(zhuǎn)發(fā)表項,對于每一個接口域值不等于f4且名字前綴集合包含命令請求消息名字集合的名字前綴集合的轉(zhuǎn)發(fā)表項,鄰居數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項的接口域發(fā)送接收到的命令請求消息,執(zhí)行步驟610;步驟618:如果用戶設備U1接收到命令響應消息,執(zhí)行步驟620,否則執(zhí)行步驟619;步驟619:對于每個名字集合為命令響應消息名字集合的超集的聚合表項,數(shù)據(jù)路由器從該聚合表項的接口域轉(zhuǎn)發(fā)接收到的命令響應消息,從該聚合表項的名字集合中減去命令響應消息的名字集合;如果該聚合表項的名字集合為空,則刪除該聚合表項;執(zhí)行步驟618;步驟620:用戶設備U1收到所有命令響應消息以確認執(zhí)行節(jié)點已經(jīng)收到命令請求消息并執(zhí)行了響應操作;步驟621。用戶通過上述過程能夠讓執(zhí)行節(jié)點快速準確地執(zhí)行遠程命令。有益效果:本發(fā)明提供了一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法,用戶通過該方法可實時查詢目標對象節(jié)點所處環(huán)境的參數(shù),并根據(jù)目標對象節(jié)點的狀態(tài)及時向傳感器節(jié)點發(fā)送命令實現(xiàn)對目標對象節(jié)點的實時控制和調(diào)節(jié),本發(fā)明可廣泛用于農(nóng)業(yè)環(huán)境監(jiān)測和遠程控制等領域。附圖說明下面結合附圖和具體實施方式對本發(fā)明做更進一步的具體說明,本發(fā)明的上述和/或其他方面的優(yōu)點將會變得更加清楚。圖1為本發(fā)明所述的建立轉(zhuǎn)發(fā)表流程示意圖。圖2為本發(fā)明所述的移動流程示意圖。圖3為本發(fā)明所述的移動切換流程示意圖。圖4為本發(fā)明所述的數(shù)據(jù)推動流程示意圖。圖5為本發(fā)明所述的獲取數(shù)據(jù)流程示意圖。圖6為本發(fā)明所述的執(zhí)行命令流程示意圖。具體實施方式:本發(fā)明提供了一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法,用戶通過該方法可實時查詢目標對象節(jié)點所處環(huán)境的參數(shù),并根據(jù)目標對象節(jié)點的狀態(tài)及時向傳感器節(jié)點發(fā)送命令實現(xiàn)對目標對象節(jié)點的實時控制和調(diào)節(jié),本發(fā)明可廣泛用于農(nóng)業(yè)環(huán)境監(jiān)測和遠程控制等領域。圖1為本發(fā)明所述的建立轉(zhuǎn)發(fā)表流程示意圖。所述物聯(lián)網(wǎng)中包含四類節(jié)點:數(shù)據(jù)路由器、用戶設備、傳感節(jié)點和執(zhí)行節(jié)點;數(shù)據(jù)路由器用于路由轉(zhuǎn)發(fā),用戶設備為數(shù)據(jù)消費者,用于獲取傳感節(jié)點感知的數(shù)據(jù)或者向執(zhí)行節(jié)點發(fā)布命令從而實現(xiàn)遠程控制,例如自動關燈,傳感節(jié)點和數(shù)據(jù)節(jié)點為數(shù)據(jù)提供者;一個數(shù)據(jù)路由器與一跳范圍內(nèi)的用戶設備、傳感節(jié)點和執(zhí)行節(jié)點構建成一個簇,數(shù)據(jù)路由器為簇首節(jié)點,用戶設備、傳感節(jié)點和執(zhí)行節(jié)點為簇內(nèi)節(jié)點;簇內(nèi)節(jié)點不執(zhí)行路由轉(zhuǎn)發(fā)功能;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點有一個無線接口,并通過該無線接口與所在簇簇首節(jié)點進行通信;數(shù)據(jù)路由器具有一個無線接口和兩個以上的有線接口,通過無線接口域本簇簇內(nèi)節(jié)點進行通信,通過有線接口與其他數(shù)據(jù)路由器進行通信;數(shù)據(jù)路由器由一個路由器ID唯一標識,傳感節(jié)點和執(zhí)行節(jié)點由一個名字唯一標識,傳感節(jié)點的名字由名字前綴和名字ID組成;執(zhí)行節(jié)點的名字由名字前綴、名字ID和命令域構成;消息結構由四部分構成:名字集合域、消息類型值、跳數(shù)和負載;其中名字集合域為定義目標數(shù)據(jù)的數(shù)據(jù)名字的集合,跳數(shù)定義該消息被轉(zhuǎn)發(fā)的最大距離;消息類型值如下所示:消息類型消息類型值信標消息0發(fā)布消息1數(shù)據(jù)推送消息2數(shù)據(jù)請求消息3數(shù)據(jù)響應消息4命令請求消息5命令響應消息6數(shù)據(jù)路由器維護一個轉(zhuǎn)發(fā)表,每個轉(zhuǎn)發(fā)表項包括三個域:源路由器ID域值、接口域值和名字前綴集合;傳感節(jié)點的名字預先設定,例如Temp,執(zhí)行節(jié)點的名字前綴和名字ID預先設定,例如名字前綴為Light,名字ID為On,具有網(wǎng)絡唯一性;執(zhí)行節(jié)點的名字前綴和名字ID具有唯一性;數(shù)據(jù)路由器維護一個本簇名字前綴集合,該本簇名字前綴集合為本簇所有傳感節(jié)點和執(zhí)行節(jié)點的名字前綴的集合,數(shù)據(jù)路由器通過無線接口定期廣播信標消息,該信標消息的名字集合域域值為名字前綴集合,消息類型為0,跳數(shù)域值為1,負載為自己的路由器ID;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點啟動后,偵聽數(shù)據(jù)路由器廣播的信標消息,選擇發(fā)送信號最強的信標幀的數(shù)據(jù)路由器為簇首節(jié)點,記錄簇首節(jié)點的路由器ID,將自己標記為簇內(nèi)節(jié)點;用戶設備、傳感節(jié)點和執(zhí)行節(jié)點開始從無線接口定期廣播信標消息,傳感節(jié)點和執(zhí)行節(jié)點廣播的信標消息的名字集合域值為自己名字的名字前綴,消息類型為0,跳數(shù)域值為1,負載為簇首節(jié)點的路由器ID;用戶設備廣播的信標消息的名字集合域值為空,消息類型為0,跳數(shù)域值為1,負載為簇首節(jié)點的路由器ID;簇首節(jié)點收到信標消息后,如果信標消息中的路由器ID等于自己的路由器ID,則將信標消息中的名字集合域值加入到維護的名字前綴集合;簇首節(jié)點收到所有簇內(nèi)節(jié)點的信標幀后,獲取并保存本簇名字前綴集合;對于該集合中的每個元素設置一個定時器,如果簇首節(jié)點在一個元素的定時器過期之前收到了該元素的信標消息,即該元素屬于該信標消息的名字集合,那么簇首節(jié)點重新設置定時器,否則從本簇名字前綴集合中刪除該元素;然后執(zhí)行下述步驟建立轉(zhuǎn)發(fā)表:步驟101:開始;步驟102:簇首節(jié)點構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟103:鄰居數(shù)據(jù)路由器從接口f接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中創(chuàng)建一個轉(zhuǎn)發(fā)表項,該轉(zhuǎn)發(fā)表項的源路由器ID為發(fā)布消息負載中的路由器ID,接口域值為f,名字前綴集合為發(fā)布消息中的名字集合域值;步驟104:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟106,否則執(zhí)行步驟105;步驟105:鄰居數(shù)據(jù)路由器從除了接口f之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟103;步驟106:結束。上述過程可以快速建立轉(zhuǎn)發(fā)表從而實現(xiàn)數(shù)據(jù)通信。圖2為本發(fā)明所述的移動流程示意圖。在簇CL1的簇首節(jié)點為CH1,簇CL2的簇首節(jié)點CH2,傳感節(jié)點或者執(zhí)行節(jié)點M1的名字前綴為NP1的條件下,如果節(jié)點M1從簇CL1移動到CL2,那么節(jié)點M1收到簇首節(jié)點CH2的信標消息后保存簇首節(jié)點CH2的路由器ID,然后執(zhí)行下述過程:步驟201:開始;步驟202:節(jié)點M1從無線接口發(fā)送一個信標消息,該信標消息的名字集合為它名字的名字前綴,消息類型為0,跳數(shù)為1,負載為簇首節(jié)點CH2的路由器ID;步驟203:簇首節(jié)點CH2接收到信標消息后,查看自己的本簇名字前綴集合,如果本簇名字前綴集合不包含信標消息中的名字集合中的名字前綴,那么執(zhí)行步驟204,否則執(zhí)行步驟207;步驟204:簇首節(jié)點CH2將信標消息中名字集合中的名字前綴加入到自己的本簇名字前綴集合中,然后構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點CH2從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟205:鄰居數(shù)據(jù)路由器從自己的接口f1接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中查找源路由器ID值等于發(fā)布消息負載中的路由器ID的轉(zhuǎn)發(fā)表項,將該轉(zhuǎn)發(fā)表項的接口域值更新為f1,名字前綴集合更新為發(fā)布消息中的名字集合域值;步驟206:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟208,否則執(zhí)行步驟207;步驟207:鄰居數(shù)據(jù)路由器從除了接口f1之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟205;步驟208:結束。圖3為本發(fā)明所述的移動切換流程示意圖。在簇CL1的簇首節(jié)點為CH1,簇CL2的簇首節(jié)點CH2,傳感節(jié)點或者執(zhí)行節(jié)點M1的名字前綴為NP1,節(jié)點M1為簇CL1的簇內(nèi)節(jié)點且簇CL1中只有節(jié)點M1的名字前綴為NP1條件下,如果節(jié)點M1從簇CL1移動到CL2,那么簇首節(jié)點CH1執(zhí)行下述過程:步驟301:開始;步驟302:如果簇首節(jié)點CH1檢測到名字前綴NP1的定時器過期,則從本簇名字前綴集合將名字前綴NP1刪除;簇首節(jié)點CH1構建一個發(fā)布消息,發(fā)布消息的名字集合域為本簇名字前綴集合,消息類型為1,跳數(shù)為d/r,d為網(wǎng)絡直徑,r為傳輸半徑,負載為自己的路由器ID;簇首節(jié)點CH1從每一個與數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息;步驟303:鄰居數(shù)據(jù)路由器從自己的接口f2接收到該發(fā)布消息后,將發(fā)布消息中的跳數(shù)值遞減1,在轉(zhuǎn)發(fā)表中查找源路由器ID值等于發(fā)布消息負載中的路由器ID的轉(zhuǎn)發(fā)表項,然后將該轉(zhuǎn)發(fā)表項的接口域值更新為f2,名字前綴集合更新為發(fā)布消息中的名字集合域值;步驟304:鄰居數(shù)據(jù)路由器判斷發(fā)布消息中的跳數(shù)值是否為0,如果是,執(zhí)行步驟306,否則執(zhí)行步驟305;步驟305:鄰居數(shù)據(jù)路由器從除了接口f2之外的所有與其他數(shù)據(jù)路由器相連的有線接口發(fā)送該發(fā)布消息,執(zhí)行步驟303;步驟306:結束;每個簇首節(jié)點維護一個數(shù)據(jù)表,每個數(shù)據(jù)表項由名字域,數(shù)據(jù)域和生命周期域。圖4為本發(fā)明所述的數(shù)據(jù)推動流程示意圖。傳感節(jié)點定期收集感知到的數(shù)據(jù),然后執(zhí)行下述數(shù)據(jù)推送操作:步驟401:開始;步驟402:傳感節(jié)點構建數(shù)據(jù)推送消息,該數(shù)據(jù)推送消息的名字集合由該傳感節(jié)點的名字構成,消息類型為2,跳數(shù)為1,負載為感知到的數(shù)據(jù),然后從無線接口發(fā)送該數(shù)據(jù)推送消息;步驟403:與傳感節(jié)點位于相同簇的簇首節(jié)點接收到數(shù)據(jù)推送消息后,在數(shù)據(jù)表中創(chuàng)建一個數(shù)據(jù)表項,該數(shù)據(jù)表項的名字域值為數(shù)據(jù)推送消息中名字集合的名字,數(shù)據(jù)域為數(shù)據(jù)推送消息負載中的數(shù)據(jù),生命周期為最大值,例如10min;步驟404:結束;如果簇首節(jié)點檢測到一個數(shù)據(jù)表項的生命周期衰減到0,那么刪除該數(shù)據(jù)表項。上述過程能夠?qū)崿F(xiàn)數(shù)據(jù)推送過程,從而用戶可以快速獲取所需數(shù)據(jù)。圖5為本發(fā)明所述的獲取數(shù)據(jù)流程示意圖。每個數(shù)據(jù)路由器保存一個聚合表,一個聚合表項包括名字集合域和接口域;用戶設備U1為簇CL3的簇內(nèi)節(jié)點,簇CL3的簇首節(jié)點為CH3;如果用戶節(jié)點U1需要獲取名字集合S1定義的數(shù)據(jù),名字集合S1的名字前綴集合為NPS1,那么用戶設備U1執(zhí)行下述過程:步驟501:開始;步驟502:用戶設備U1構建一個數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的名字集合為S1,消息類型為3,跳數(shù)為d/r+2,d為網(wǎng)絡直徑,r為傳輸半徑,負載為簇首節(jié)點CH3的路由器ID;用戶設備U1從無線接口發(fā)送該數(shù)據(jù)請求消息;步驟503:簇首節(jié)點CH3從接口f3接收到該數(shù)據(jù)請求消息后,將數(shù)據(jù)請求消息中的跳數(shù)遞減1,然后判斷數(shù)據(jù)表中是否存在滿足條件1的數(shù)據(jù)表項,如果是,執(zhí)行步驟504,否則執(zhí)行步驟506;條件1:數(shù)據(jù)表項的名字域值屬于數(shù)據(jù)請求消息中的名字集合;步驟504:簇首節(jié)點CH3構建一個數(shù)據(jù)響應消息,該數(shù)據(jù)響應消息的名字集合為符合條件1的數(shù)據(jù)表項的名字域集合,消息類型為4,跳數(shù)為1,負載為符合條件1的數(shù)據(jù)表項中的數(shù)據(jù)域值;簇首節(jié)點CH3從接口f3發(fā)送數(shù)據(jù)響應消息;步驟505:簇首節(jié)點CH3從數(shù)據(jù)請求消息的名字集合中減去數(shù)據(jù)響應消息中的名字集合;如果數(shù)據(jù)響應消息的名字集合等于數(shù)據(jù)請求消息中的名字集合,那么執(zhí)行步驟518,否則執(zhí)行步驟506;步驟506:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟518,否則執(zhí)行步驟507;步驟507:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟508,否則執(zhí)行步驟509;步驟508:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合,執(zhí)行步驟518;步驟509:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為數(shù)據(jù)請求消息的名字集合;簇首節(jié)點CH3構建一個名字集合S2,其值為數(shù)據(jù)請求消息的名字集合,名字集合S2的名字前綴集合為NPS2,然后對于集合NPS2中的任一個名字前綴P,簇首節(jié)點CH3進行如下操作:簇首節(jié)點從集合S2中選擇名字前綴為P的所有名字并用這些名字構建成名字集合S3,從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含名字前綴P的所有轉(zhuǎn)發(fā)表項,對于每一個名字前綴集合包含名字前綴P的轉(zhuǎn)發(fā)表項,簇首節(jié)點CH3構建一個數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的名字集合為集合S3,消息類型為3,跳數(shù)為d/r+2,負載為空;簇首節(jié)點從該轉(zhuǎn)發(fā)表項的接口域發(fā)送構建的數(shù)據(jù)請求消息;步驟510:鄰居數(shù)據(jù)路由器從接口f4接收到該數(shù)據(jù)請求消息后,將數(shù)據(jù)請求消息中的跳數(shù)遞減1,判斷數(shù)據(jù)表中是否存在滿足條件1的數(shù)據(jù)表項,如果是,執(zhí)行步驟511,否則執(zhí)行步驟513;步驟511:鄰居數(shù)據(jù)路由器構建一個數(shù)據(jù)響應消息,該數(shù)據(jù)響應消息的名字集合為符合條件1的數(shù)據(jù)表項的名字域集合,消息類型為4,跳數(shù)為d/r+2,負載為符合條件1的數(shù)據(jù)表項中的數(shù)據(jù)域值,然后從接口f4發(fā)送數(shù)據(jù)響應消息;步驟512:鄰居數(shù)據(jù)路由器從數(shù)據(jù)請求消息的名字集合中減去數(shù)據(jù)響應消息中的名字集合,如果數(shù)據(jù)響應消息的名字集合等于數(shù)據(jù)請求消息中的名字集合,那么執(zhí)行步驟518,否則執(zhí)行步驟513;步驟513:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟518,否則執(zhí)行步驟514;步驟514:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的名字集合域值為數(shù)據(jù)請求消息的名字集合域值的超集,那么執(zhí)行步驟515,否則執(zhí)行步驟516;步驟515:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合,執(zhí)行步驟518;步驟516:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為數(shù)據(jù)請求消息的名字集合,如果數(shù)據(jù)請求消息中的跳數(shù)為0,則執(zhí)行步驟518,否則執(zhí)行步驟517;步驟517:鄰居數(shù)據(jù)路由器從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含數(shù)據(jù)請求消息名字集合的名字前綴的所有轉(zhuǎn)發(fā)表項,對于每一個接口域值不等于f4且名字前綴集合包含數(shù)據(jù)請求消息名字集合的名字前綴的轉(zhuǎn)發(fā)表項,鄰居數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項的接口域發(fā)送接收到的數(shù)據(jù)請求消息,執(zhí)行步驟510;步驟518:如果用戶設備U1接收到數(shù)據(jù)響應消息,執(zhí)行步驟520,否則執(zhí)行步驟519;步驟519:對于數(shù)據(jù)響應消息名字集合中的每一個名字N,數(shù)據(jù)路由器創(chuàng)建一個數(shù)據(jù)表項,該數(shù)據(jù)表項的名字域值為名字N,數(shù)據(jù)域為名字N定義的數(shù)據(jù),生命周期設置為最大值;對于每個名字集合為數(shù)據(jù)響應消息名字集合的超集的聚合表項,數(shù)據(jù)路由器從該聚合表項的接口域轉(zhuǎn)發(fā)接收到的數(shù)據(jù)響應消息,然后從該聚合表項的名字集合中減去數(shù)據(jù)響應消息的名字集合;如果該聚合表項的名字集合為空,則刪除該聚合表項;執(zhí)行步驟518;步驟520:用戶設備U1收到所有數(shù)據(jù)響應消息后,保存數(shù)據(jù)響應消息中的數(shù)據(jù)從而獲取名字集合S1定義的數(shù)據(jù);步驟521:結束。上述過程能夠確保用戶可以快速獲取所需數(shù)據(jù)。圖6為本發(fā)明所述的執(zhí)行命令流程示意圖。用戶設備U1為簇CL3的簇內(nèi)節(jié)點,簇CL3的簇首節(jié)點為CH3;如果用戶節(jié)點U1想要執(zhí)行節(jié)點執(zhí)行一種操作,例如關燈,所述執(zhí)行節(jié)點的名字集合為SA1,名字集合SA1的名字前綴集合為NPSA1,那么用戶設備U1執(zhí)行下述過程:步驟601:開始;步驟602:用戶設備U1構建一個命令請求消息,該命令請求消息的名字集合為SA1,消息類型為5,跳數(shù)為d/r+2,d為網(wǎng)絡直徑,r為傳輸半徑,負載為簇首節(jié)點CH3的路由器ID;用戶設備U1從無線接口發(fā)送該命令請求消息;步驟603:簇首節(jié)點CH3從接口f3接收到該命令請求消息后,將命令請求消息中的跳數(shù)遞減1,然后判斷自己維護的本簇名字前綴集合與命令請求消息名字集合的名字前綴集合是否為空,如果是,執(zhí)行步驟606,否則執(zhí)行步驟604;步驟604:簇首節(jié)點CH3從接口f3轉(zhuǎn)發(fā)命令請求消息,如果接收到命令請求消息的執(zhí)行節(jié)點的名字前綴和名字ID等于命令請求消息的名字集合的一個元素E的名字前綴和名字ID,則執(zhí)行元素E的命令域值,例如關燈,然后從無線接口發(fā)送一個命令響應消息,該命令響應消息名字集合為元素E的名字,消息類型為6,跳數(shù)為2,負載為簇首節(jié)點CH3的路由器ID;步驟605:簇首節(jié)點CH3接收到命令響應消息后,從命令請求消息的名字集合中減去所有收到的命令響應消息中的名字集合,如果簇首節(jié)點CH3收到的命令響應消息個數(shù)等于命令請求消息名字集合的元素個數(shù),那么執(zhí)行步驟618,否則執(zhí)行步驟606;步驟606:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟618,否則執(zhí)行步驟607;步驟607:如果簇首節(jié)點CH3檢測到存在一個聚合表項,該聚合表項的名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟608,否則執(zhí)行步驟609;步驟608:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合,執(zhí)行步驟618;步驟609:簇首節(jié)點CH3創(chuàng)建一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合;簇首節(jié)點CH3構建一個名字集合SA2,其值為命令請求消息的名字集合,名字集合SA2的名字前綴集合為NPSA2,然后對于集合NPSA2中的任一個名字前綴PA,簇首節(jié)點CH3進行如下操作:簇首節(jié)點從集合SA2中選擇名字前綴為PA的所有名字并用這些名字構建成名字集合SA3,然后從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含名字前綴PA的所有轉(zhuǎn)發(fā)表項,對于每一個名字前綴集合包含名字前綴PA的轉(zhuǎn)發(fā)表項,簇首節(jié)點CH3構建一個命令請求消息,該命令請求消息的名字集合為集合SA3,消息類型為5,跳數(shù)為d/r+2,負載為空,然后從該轉(zhuǎn)發(fā)表項的接口域發(fā)送構建的命令請求消息;步驟610:鄰居數(shù)據(jù)路由器從接口f4接收到該命令請求消息后,將命令請求消息中的跳數(shù)遞減1,然后判斷自己維護的本簇名字前綴集合與命令請求消息名字集合的名字前綴集合是否為空,如果是,執(zhí)行步驟613,否則執(zhí)行步驟611;步驟611:鄰居數(shù)據(jù)路由器從無線接口轉(zhuǎn)發(fā)命令請求消息,如果接收到命令請求消息的執(zhí)行節(jié)點的名字前綴和名字ID等于命令請求消息的名字集合的一個元素E1的名字前綴和名字ID,則執(zhí)行元素E1的命令域值,例如關燈,;鄰居數(shù)據(jù)路由器從無線接口發(fā)送一個命令響應消息,該命令響應消息名字集合為元素E1的名字,消息類型為6,跳數(shù)為d/r+1,負載為鄰居數(shù)據(jù)路由器的路由器ID;步驟612:鄰居數(shù)據(jù)路由器接收到命令響應消息后,從命令請求消息的名字集合中減去所有收到的命令響應消息中的名字集合,如果鄰居數(shù)據(jù)路由器收到的命令響應消息個數(shù)等于命令請求消息名字集合的元素個數(shù),那么執(zhí)行步驟618,否則執(zhí)行步驟613;步驟613:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的接口域值為f3,名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟618,否則執(zhí)行步驟614;步驟614:如果鄰居數(shù)據(jù)路由器檢測到存在一個聚合表項,該聚合表項的名字集合域值為命令請求消息的名字集合域值的超集,那么執(zhí)行步驟615,否則執(zhí)行步驟616;步驟615:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為命令請求消息的名字集合,執(zhí)行步驟618;步驟616:鄰居數(shù)據(jù)路由器創(chuàng)建一個聚合表項,該聚合表項的接口域值為f4,名字集合域值為命令請求消息的名字集合,如果命令請求消息中的跳數(shù)為0,則執(zhí)行步驟618,否則執(zhí)行步驟617;步驟617:鄰居數(shù)據(jù)路由器從轉(zhuǎn)發(fā)表中選擇名字前綴集合包含命令請求消息名字集合的名字前綴集合的所有轉(zhuǎn)發(fā)表項,對于每一個接口域值不等于f4且名字前綴集合包含命令請求消息名字集合的名字前綴集合的轉(zhuǎn)發(fā)表項,鄰居數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項的接口域發(fā)送接收到的命令請求消息,執(zhí)行步驟610;步驟618:如果用戶設備U1接收到命令響應消息,執(zhí)行步驟620,否則執(zhí)行步驟619;步驟619:對于每個名字集合為命令響應消息名字集合的超集的聚合表項,數(shù)據(jù)路由器從該聚合表項的接口域轉(zhuǎn)發(fā)接收到的命令響應消息,從該聚合表項的名字集合中減去命令響應消息的名字集合;如果該聚合表項的名字集合為空,則刪除該聚合表項;執(zhí)行步驟618;步驟620:用戶設備U1收到所有命令響應消息以確認執(zhí)行節(jié)點已經(jīng)收到命令請求消息并執(zhí)行了響應操作;步驟621。用戶通過上述過程能夠讓執(zhí)行節(jié)點快速準確地執(zhí)行遠程命令。實施例1基于表1的仿真參數(shù),本實施例模擬了本發(fā)明中的物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法,性能分析如下:當用戶與目的節(jié)點距離較遠時,平均通信代價和延遲也隨之增加,通信半徑增加時,平均通信代價和延遲也隨之降低。平均通信代價為8,路由延遲為80ms。表1仿真參數(shù)本發(fā)明提供了一種物聯(lián)網(wǎng)數(shù)據(jù)傳輸方法的思路,具體實現(xiàn)該技術方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本
技術領域:
的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。本實施例中未明確的各組成部份均可用現(xiàn)有技術加以實現(xiàn)。當前第1頁1 2 3