本發(fā)明涉及一種數(shù)據(jù)通信方法,尤其涉及的是一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法。
背景技術(shù):
:近年來,很多研究工作致力于無線網(wǎng)絡(luò)數(shù)據(jù)通信方法,以便使移動(dòng)節(jié)點(diǎn)能夠快速獲取網(wǎng)絡(luò)服務(wù)。隨著無線網(wǎng)絡(luò)技術(shù)的發(fā)展,無線網(wǎng)絡(luò)數(shù)據(jù)通信方法會(huì)成為未來提供服務(wù)的一種模式。目前,無線網(wǎng)絡(luò)數(shù)據(jù)通信的實(shí)現(xiàn)模式是通過廣播來實(shí)現(xiàn),因此延遲和代價(jià)都比較大,降低了網(wǎng)絡(luò)服務(wù)性能。因此,如何降低無線網(wǎng)絡(luò)提供服務(wù)的延遲和代價(jià)成為近年來研究的熱點(diǎn)問題。技術(shù)實(shí)現(xiàn)要素:發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對(duì)現(xiàn)有技術(shù)的不足,提供一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法。技術(shù)方案:本發(fā)明公開了一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法,所述網(wǎng)絡(luò)包括兩個(gè)以上的節(jié)點(diǎn)和兩個(gè)以上的數(shù)據(jù)路由器,一種類型的數(shù)據(jù)包括兩個(gè)以上的數(shù)據(jù)塊且由一個(gè)數(shù)據(jù)名稱唯一定義,每個(gè)數(shù)據(jù)塊由一個(gè)數(shù)據(jù)塊id唯一標(biāo)識(shí);數(shù)據(jù)消費(fèi)者為有權(quán)限獲取一種類型的數(shù)據(jù)的節(jié)點(diǎn),數(shù)據(jù)提供者為有權(quán)提供一種類型的數(shù)據(jù)的節(jié)點(diǎn);節(jié)點(diǎn)不具有路由轉(zhuǎn)發(fā)功能,數(shù)據(jù)路由器具有路由轉(zhuǎn)發(fā)功能;每種消息結(jié)構(gòu)包括五個(gè)部分:數(shù)據(jù)名稱域、數(shù)據(jù)塊id集合、消息類型域,、序列號(hào)以及負(fù)載;消息類型如下表所示:消息類型消息類型域值數(shù)據(jù)發(fā)布消息1數(shù)據(jù)請求消息2數(shù)據(jù)響應(yīng)消息3數(shù)據(jù)確認(rèn)消息4錯(cuò)誤消息5數(shù)據(jù)路由器維護(hù)一個(gè)轉(zhuǎn)發(fā)表,一個(gè)轉(zhuǎn)發(fā)表項(xiàng)由接口域、數(shù)據(jù)名稱域以及數(shù)據(jù)塊id集合構(gòu)成,其中,接口域值指向到達(dá)數(shù)據(jù)提供者的下一跳,數(shù)據(jù)名稱域值為目標(biāo)數(shù)據(jù)的數(shù)據(jù)名稱,目標(biāo)數(shù)據(jù)為數(shù)據(jù)消費(fèi)者請求的數(shù)據(jù);數(shù)據(jù)塊id集合域值為構(gòu)成目標(biāo)數(shù)據(jù)的部分或者全部數(shù)據(jù)塊id的集合;在數(shù)據(jù)c1由數(shù)據(jù)名稱n1定義,數(shù)據(jù)提供者p1產(chǎn)生了數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的情況下,如果網(wǎng)絡(luò)鏈路穩(wěn)定,例如有線網(wǎng)絡(luò),數(shù)據(jù)提供者p1則執(zhí)行下述過程建立轉(zhuǎn)發(fā)表:步驟101:開始;步驟102:數(shù)據(jù)提供者p1構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)提供者p1通過與本地?cái)?shù)據(jù)路由器相連的接口發(fā)送該數(shù)據(jù)發(fā)布消息;步驟103:數(shù)據(jù)路由器從自己的接口j接收到數(shù)據(jù)發(fā)布消息,查看轉(zhuǎn)發(fā)表判斷是否存在數(shù)據(jù)名稱域值為n1,接口域?yàn)閖,數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng),如果存在,執(zhí)行步驟105,否則執(zhí)行步驟104;步驟104:數(shù)據(jù)路由器創(chuàng)建一個(gè)轉(zhuǎn)發(fā)表項(xiàng),該轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值為n1,接口域值為j,數(shù)據(jù)塊id集合域值為s1,數(shù)據(jù)路由器從每個(gè)符合條件1和條件2的接口轉(zhuǎn)發(fā)該數(shù)據(jù)發(fā)布消息,執(zhí)行步驟106;條件1:該接口與數(shù)據(jù)路由器相連;條件2:從該接口沒有接收到數(shù)據(jù)發(fā)布消息;步驟105:數(shù)據(jù)路由器放棄接收到的數(shù)據(jù)發(fā)布消息,執(zhí)行步驟106;步驟106:重復(fù)步驟103~105直到網(wǎng)絡(luò)內(nèi)所有的數(shù)據(jù)路由器都接收到數(shù)據(jù)提供者p1發(fā)送的數(shù)據(jù)發(fā)布消息且建立了數(shù)據(jù)名稱域值為n1、數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng)為止;步驟107:結(jié)束;數(shù)據(jù)提供者定期執(zhí)行步驟101~107建立或者更新數(shù)據(jù)路由器的轉(zhuǎn)發(fā)表;如果網(wǎng)絡(luò)鏈路不穩(wěn)定,不穩(wěn)定的評(píng)價(jià)指標(biāo)為丟包率,例如丟包率達(dá)到一定比例,比如20%,數(shù)據(jù)路由器、數(shù)據(jù)消費(fèi)者和數(shù)據(jù)提供者通過保存四元組<發(fā)送的消息,發(fā)送消息的接口,消息中的序列號(hào),確認(rèn)定時(shí)器>來確保消息的傳輸成功率;確認(rèn)定時(shí)器的初始值預(yù)先設(shè)定,例如100ms,然后根據(jù)時(shí)鐘衰減,如果時(shí)鐘衰減到0,則定時(shí)器過期。通過上述過程,數(shù)據(jù)路由器能夠建立轉(zhuǎn)發(fā)表從而確保用戶能夠快速獲取數(shù)據(jù)。本發(fā)明所述方法中,在數(shù)據(jù)c1由數(shù)據(jù)名稱n1定義,數(shù)據(jù)提供者p1提供數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的條件下,如果網(wǎng)絡(luò)鏈路不穩(wěn)定,數(shù)據(jù)提供者p1則執(zhí)行下述過程建立轉(zhuǎn)發(fā)表:步驟201:開始;步驟202:數(shù)據(jù)提供者p1產(chǎn)生一個(gè)隨機(jī)數(shù)同時(shí)構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空;數(shù)據(jù)提供者p1通過與本地?cái)?shù)據(jù)路由器相連的接口發(fā)送該數(shù)據(jù)發(fā)布消息,同時(shí)保存四元組<發(fā)送的數(shù)據(jù)發(fā)布消息,與本地?cái)?shù)據(jù)路由器相連的接口,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,然后啟動(dòng)確認(rèn)定時(shí)器;步驟203:數(shù)據(jù)路由器從自己的接口j接收到數(shù)據(jù)發(fā)布消息后,通過接口j發(fā)送一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息中的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為s1,消息類型為4,序列號(hào)為數(shù)據(jù)發(fā)布消息中的序列號(hào);數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表判斷是否存在數(shù)據(jù)名稱域值為n1,接口域?yàn)閖,數(shù)據(jù)塊id集合域值為s1的表項(xiàng),如果存在,執(zhí)行步驟205,否則執(zhí)行步驟204;步驟204:數(shù)據(jù)路由器創(chuàng)建一個(gè)轉(zhuǎn)發(fā)表項(xiàng),該轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值為n1,接口域值為j,數(shù)據(jù)塊id集合域值為s1;對(duì)于每個(gè)符合條件1和條件2的接口數(shù)據(jù)路由器執(zhí)行下述操作:產(chǎn)生一個(gè)隨機(jī)數(shù)同時(shí)構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空;通過從該接口發(fā)送數(shù)據(jù)發(fā)布消息,同時(shí)保存四元組<發(fā)送的數(shù)據(jù)發(fā)布消息,發(fā)送數(shù)據(jù)發(fā)布消息的接口,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,然后啟動(dòng)確認(rèn)定時(shí)器,執(zhí)行步驟206;步驟205:數(shù)據(jù)路由器放棄接收到的數(shù)據(jù)發(fā)布消息;步驟206:數(shù)據(jù)提供者p1查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟208,否則執(zhí)行步驟207;步驟207:數(shù)據(jù)提供者p1通過步驟202中保存的四元組中的接口域值重新發(fā)送四元組中的數(shù)據(jù)發(fā)布消息,重新啟動(dòng)四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟203;步驟208:數(shù)據(jù)提供者p1刪除保存的四元組;步驟209:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟211,否則執(zhí)行步驟210;步驟210:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中對(duì)應(yīng)接口的接口域值重新發(fā)送該四元組中的數(shù)據(jù)發(fā)布消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟203;步驟211:數(shù)據(jù)路由器收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟212:重復(fù)步驟203~211直到所述網(wǎng)絡(luò)內(nèi)所有的數(shù)據(jù)路由器都接收到數(shù)據(jù)提供者p1發(fā)送的數(shù)據(jù)發(fā)布消息且建立了數(shù)據(jù)名稱域值為n1、數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng)為止;步驟213:結(jié)束;數(shù)據(jù)提供者定期執(zhí)行步驟201~213建立或者更新數(shù)據(jù)路由器的轉(zhuǎn)發(fā)表。通過上述過程,數(shù)據(jù)路由器能夠建立轉(zhuǎn)發(fā)表從而確保用戶能夠快速獲取數(shù)據(jù)。本發(fā)明所述方法中,在數(shù)據(jù)路由器維護(hù)一個(gè)聚合表,一個(gè)聚合表項(xiàng)由接口域、數(shù)據(jù)名稱域和數(shù)據(jù)塊id集合構(gòu)成,接口域指向到達(dá)數(shù)據(jù)消費(fèi)者的下一跳,數(shù)據(jù)名稱域值為目標(biāo)數(shù)據(jù)的數(shù)據(jù)名稱,數(shù)據(jù)塊id集合域值記錄未收到的目標(biāo)數(shù)據(jù)塊的條件下,如果聚合表項(xiàng)的數(shù)據(jù)塊id集合域值為空,那么刪除該聚合表項(xiàng);在數(shù)據(jù)消費(fèi)者u1通過自己的接口f與本地?cái)?shù)據(jù)路由器r1相連,數(shù)據(jù)消息者u1需要獲取由數(shù)據(jù)名稱n1定義的數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的情況下,如果網(wǎng)絡(luò)性能穩(wěn)定,那么數(shù)據(jù)消息者u1通過下述過程獲取目標(biāo)數(shù)據(jù)塊:步驟301:開始;步驟302:數(shù)據(jù)消費(fèi)者u1構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型域值為2,數(shù)據(jù)塊id集合為s1,序列號(hào)為0,負(fù)載為空;數(shù)據(jù)消費(fèi)者u1從接口f發(fā)送該數(shù)據(jù)請求消息;步驟303:數(shù)據(jù)路由器r1從自己的接口f1接收到數(shù)據(jù)請求消息后,判斷自己的聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟311,否則執(zhí)行步驟304;步驟304:數(shù)據(jù)路由器r1創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f1;步驟305:數(shù)據(jù)路由器r1查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息,如果一個(gè)集合s2中的每一個(gè)元素都在集合s1中,且集合s1中可能包含s2中沒有的元素,則集合s1就是s2的一個(gè)超集,反過來,s2是s1的子集;否則,數(shù)據(jù)路由器r1選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r1進(jìn)行如下操作:構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建數(shù)據(jù)請求消息;條件3:所述數(shù)據(jù)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的并集是接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集;步驟306:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)提供者從接口f2接收到數(shù)據(jù)請求消息,如果是數(shù)據(jù)提供者接收到數(shù)據(jù)請求消息,則執(zhí)行步驟307,否則執(zhí)行步驟308;步驟307:數(shù)據(jù)提供者創(chuàng)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)名稱域值為n1,消息類型為3,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為0,負(fù)載為提供的數(shù)據(jù)塊,然后從接口f2發(fā)送該數(shù)據(jù)響應(yīng)消息,執(zhí)行步驟311;步驟308:數(shù)據(jù)路由器判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f2且數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟311,否則執(zhí)行步驟309;步驟309:數(shù)據(jù)路由器創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f2;步驟310:數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息;否則,數(shù)據(jù)路由器選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器進(jìn)行如下操作:構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建的數(shù)據(jù)請求消息,執(zhí)行步驟306;步驟311:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)消費(fèi)者從接口f3接收到數(shù)據(jù)響應(yīng)消息,如果是數(shù)據(jù)路由器接收到數(shù)據(jù)響應(yīng)消息,則執(zhí)行步驟312,否則執(zhí)行步驟313;步驟312:數(shù)據(jù)路由器從聚合表中選擇所有數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合的交集不為空的表項(xiàng),對(duì)于每個(gè)選擇的聚合表項(xiàng),數(shù)據(jù)路由器構(gòu)建一個(gè)數(shù)據(jù)響應(yīng)消息,數(shù)據(jù)響應(yīng)消息的名稱域值為n1,數(shù)據(jù)塊id集合為該聚合表項(xiàng)中的數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)id集合的交集,消息類型為3,序列號(hào)為0,負(fù)載為數(shù)據(jù)響應(yīng)消息中的負(fù)載,數(shù)據(jù)路由器從該聚合表項(xiàng)中的接口域發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息,從該聚合表項(xiàng)的數(shù)據(jù)塊id集合中減去構(gòu)建的數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)塊id集合,如果該聚合表項(xiàng)的數(shù)據(jù)塊id集合為空,則刪除該聚合表項(xiàng),執(zhí)行步驟311;步驟313:數(shù)據(jù)消費(fèi)者u1獲取并保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊;步驟314:數(shù)據(jù)消費(fèi)者u1整理所有收到的數(shù)據(jù)響應(yīng)消息中從而獲取數(shù)據(jù)塊id集合為s1的數(shù)據(jù)塊;步驟315:結(jié)束。通過上述過程,數(shù)據(jù)消息者u1能夠快速獲取目標(biāo)數(shù)據(jù)塊。本發(fā)明所述方法中,在數(shù)據(jù)消費(fèi)者u1通過接口f與本地?cái)?shù)據(jù)路由器r1相連,數(shù)據(jù)消息者u1需要獲取由數(shù)據(jù)名稱n1定義的數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的條件下,如果網(wǎng)絡(luò)性能不穩(wěn)定,那么數(shù)據(jù)消費(fèi)者u1通過下述過程獲取目標(biāo)數(shù)據(jù)塊:步驟401:開始;步驟402:數(shù)據(jù)消費(fèi)者u1產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)消費(fèi)者u1從接口f發(fā)送該數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,接口f,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟403:數(shù)據(jù)路由器r1從自己的接口f1接收到數(shù)據(jù)請求消息后,從接口f1返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息中的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為s1,消息類型為4,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),數(shù)據(jù)路由器r1判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟417,否則執(zhí)行步驟404;步驟404:數(shù)據(jù)路由器r1創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f1;步驟405:數(shù)據(jù)路由器r1查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器r1產(chǎn)生一個(gè)隨機(jī)數(shù)并創(chuàng)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;否則,數(shù)據(jù)路由器r1選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r1進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟406:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)提供者從接口f2接收到數(shù)據(jù)請求消息,如果是數(shù)據(jù)提供者接收到數(shù)據(jù)請求消息,則執(zhí)行步驟407,否則執(zhí)行步驟408;步驟407:數(shù)據(jù)提供者從接口f2返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),消息類型為4;數(shù)據(jù)提供者產(chǎn)生一個(gè)隨機(jī)數(shù)并創(chuàng)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)名稱域值為n1,消息類型為3,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為提供的數(shù)據(jù)塊,數(shù)據(jù)提供者從接口f2發(fā)送該數(shù)據(jù)響應(yīng)消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)響應(yīng)消息,發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息的接口,構(gòu)建的數(shù)據(jù)響應(yīng)消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器,執(zhí)行步驟417;步驟408:數(shù)據(jù)路由器從接口f2返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),消息類型為4;數(shù)據(jù)路由器判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f2且數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟417,否則執(zhí)行步驟409;步驟409:數(shù)據(jù)路由器創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f2;步驟410:數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),那么數(shù)據(jù)路由器產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息中的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,從該轉(zhuǎn)發(fā)表項(xiàng)的接口發(fā)送構(gòu)建的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;否則,數(shù)據(jù)路由器選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)和構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟411:數(shù)據(jù)消費(fèi)者u1查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟413,否則執(zhí)行步驟412;步驟412:數(shù)據(jù)消費(fèi)者u1通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)請求消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟403;步驟413:數(shù)據(jù)消費(fèi)者u1收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟414:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟416,否則執(zhí)行步驟415;步驟415:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)請求消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟406;步驟416:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組,執(zhí)行步驟406;步驟417:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)消費(fèi)者從接口f3接收到數(shù)據(jù)響應(yīng)消息,如果是數(shù)據(jù)路由器接收到數(shù)據(jù)響應(yīng)消息,則執(zhí)行步驟419,否則執(zhí)行步驟418;步驟418:數(shù)據(jù)消費(fèi)者u1從接口f3返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)響應(yīng)消息中的序列號(hào),消息類型為4,數(shù)據(jù)消費(fèi)者u1獲取并保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊,執(zhí)行步驟426;步驟419:數(shù)據(jù)路由器從接口f3返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)響應(yīng)消息中的序列號(hào),消息類型為4,數(shù)據(jù)路由器從聚合表中選擇所有數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合的交集不為空的聚合表項(xiàng),對(duì)于每個(gè)選擇的聚合表項(xiàng),數(shù)據(jù)路由器產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的名稱域值為n1,數(shù)據(jù)塊id集合為該聚合表項(xiàng)中的數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)id集合的交集,消息類型為3,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為數(shù)據(jù)響應(yīng)消息中的負(fù)載,數(shù)據(jù)路由器從該聚合表項(xiàng)中的接口域發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息,從該聚合表項(xiàng)的數(shù)據(jù)塊id集合中減去構(gòu)建的數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)塊id集合,如果該聚合表項(xiàng)的數(shù)據(jù)塊id集合為空,則刪除該聚合表項(xiàng),同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)響應(yīng)消息,發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息的接口,構(gòu)建的數(shù)據(jù)請求響應(yīng)中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟420:返回?cái)?shù)據(jù)響應(yīng)消息的數(shù)據(jù)提供者查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟422,否則執(zhí)行步驟421;步驟421:數(shù)據(jù)提供者通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)響應(yīng)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟417;步驟422:數(shù)據(jù)提供者收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟423:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟425,否則執(zhí)行步驟424;步驟424:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)響應(yīng)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟417;步驟425:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組,執(zhí)行步驟417;步驟426:數(shù)據(jù)消費(fèi)者u1整理所有收到的數(shù)據(jù)響應(yīng)消息中從而獲取數(shù)據(jù)塊id集合為s1的數(shù)據(jù)塊;步驟427:結(jié)束。通過上述過程,數(shù)據(jù)消息者u1能夠快速獲取目標(biāo)數(shù)據(jù)塊。本發(fā)明所述方法中,在數(shù)據(jù)路由器r2通過接口f3與鄰居數(shù)據(jù)路由器或者鄰居數(shù)據(jù)提供者相連且該鄰居路由器或者理論數(shù)據(jù)提供者失效的條件下,如果網(wǎng)絡(luò)性能穩(wěn)定,那么數(shù)據(jù)路由器r2執(zhí)行下述過程更新轉(zhuǎn)發(fā)表:步驟501:開始;步驟502:數(shù)據(jù)路由器r2從轉(zhuǎn)發(fā)表中選擇接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),然后構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為0,負(fù)載為接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r2從除了接口f3的所有與數(shù)據(jù)路由器相連的接口發(fā)送該不可達(dá)消息,數(shù)據(jù)路由器r2刪除所有接口域值為f3的轉(zhuǎn)發(fā)表項(xiàng);步驟503:鄰居數(shù)據(jù)路由器從自己的接口f4收到不可達(dá)消息,從除了接口f4的所有與數(shù)據(jù)路由器相連的接口發(fā)送不可達(dá)消息;步驟504:鄰居數(shù)據(jù)路由器選擇接口域值為f4,且數(shù)據(jù)名稱域值等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值,且數(shù)據(jù)塊id集合等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的轉(zhuǎn)發(fā)表項(xiàng),刪除這些選擇的轉(zhuǎn)發(fā)表項(xiàng);步驟505:執(zhí)行步驟503~504直到所有的數(shù)據(jù)路由器都接收到不可達(dá)消息;步驟506:結(jié)束。通過上述過程,數(shù)據(jù)路由器能夠快速更新轉(zhuǎn)發(fā)表以確保用戶能夠正確快速地獲取目標(biāo)數(shù)據(jù)。本發(fā)明所述方法中,在數(shù)據(jù)路由器r2通過接口f3與鄰居數(shù)據(jù)路由器或者鄰居數(shù)據(jù)提供者相連且該鄰居路由器或者理論數(shù)據(jù)提供者失效的條件下,如果網(wǎng)絡(luò)性能不穩(wěn)定,那么數(shù)據(jù)路由器r2執(zhí)行下述過程更新轉(zhuǎn)發(fā)表:步驟601:開始;步驟602:數(shù)據(jù)路由器r2從轉(zhuǎn)發(fā)表中選擇接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于除了接口f3之外的每個(gè)與數(shù)據(jù)路由器相連的接口,數(shù)據(jù)路由器r2進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r2從該接口發(fā)送該不可達(dá)消息,同時(shí)保存四元組<構(gòu)建的不可達(dá)消息,發(fā)送構(gòu)建的不可達(dá)消息的接口,構(gòu)建的不可達(dá)消息的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器,數(shù)據(jù)路由器r2刪除所有接口域值為f3的轉(zhuǎn)發(fā)表項(xiàng);步驟603:鄰居數(shù)據(jù)路由器從自己的接口f4收到不可達(dá)消息,數(shù)據(jù)路由器從接口f4返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合為空,序列號(hào)為不可達(dá)消息中的序列號(hào),消息類型為4;對(duì)于除了接口f4之外的每個(gè)與數(shù)據(jù)路由器相連的接口,鄰居數(shù)據(jù)路由器進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為接收到的不可達(dá)消息中的負(fù)載,鄰居數(shù)據(jù)路由器從該接口發(fā)送該不可達(dá)消息,同時(shí)保存四元組<構(gòu)建的不可達(dá)消息,發(fā)送構(gòu)建的不可達(dá)消息的接口,構(gòu)建的不可達(dá)消息的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟604:鄰居數(shù)據(jù)路由器選擇接口域值為f4,且數(shù)據(jù)名稱域值等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值,并且數(shù)據(jù)塊id集合等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的轉(zhuǎn)發(fā)表項(xiàng),刪除這些選擇的轉(zhuǎn)發(fā)表項(xiàng);步驟605:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟607,否則執(zhí)行步驟606;步驟606:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的不可達(dá)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘;步驟607:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟608:執(zhí)行步驟603~607直到所有的數(shù)據(jù)路由器都接收到不可達(dá)消息;步驟609:結(jié)束;數(shù)據(jù)路由器刪除無效的轉(zhuǎn)發(fā)表項(xiàng)之后,通過數(shù)據(jù)提供者定期執(zhí)行步驟101~107或者步驟201~213建立轉(zhuǎn)發(fā)表。通過上述過程,數(shù)據(jù)路由器能夠快速更新轉(zhuǎn)發(fā)表以確保用戶能夠正確快速地獲取目標(biāo)數(shù)據(jù)。有益效果:本發(fā)明提供了一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法,用戶通過本發(fā)明所提供的數(shù)據(jù)通信方法能夠從距離最近的數(shù)據(jù)提供者以單播方式獲取服務(wù)數(shù)據(jù),縮短了獲取服務(wù)數(shù)據(jù)的延遲和代價(jià),提高了服務(wù)質(zhì)量,本發(fā)明可應(yīng)用于道路路況監(jiān)測、環(huán)境監(jiān)測等領(lǐng)域,具有廣泛的應(yīng)用前景。附圖說明下面集合附圖和具體實(shí)施方式對(duì)本發(fā)明做更進(jìn)一步的具體說明,本發(fā)明的上述和/或其他方面的優(yōu)點(diǎn)將會(huì)變得更加清楚。圖1為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的轉(zhuǎn)發(fā)表建立流程示意圖。圖2為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的轉(zhuǎn)發(fā)表建立流程示意圖。圖3為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的數(shù)據(jù)獲取流程示意圖。圖4為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的數(shù)據(jù)獲取流程示意圖。圖5為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的轉(zhuǎn)發(fā)表更新流程示意圖。圖6為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的轉(zhuǎn)發(fā)表更新流程示意圖。具體實(shí)施方式:本發(fā)明提供了一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法,用戶通過本發(fā)明所提供的數(shù)據(jù)通信方法能夠從距離最近的數(shù)據(jù)提供者以單播方式獲取服務(wù)數(shù)據(jù),縮短了獲取服務(wù)數(shù)據(jù)的延遲和代價(jià),提高了服務(wù)質(zhì)量,本發(fā)明可應(yīng)用于道路路況監(jiān)測、環(huán)境監(jiān)測等領(lǐng)域,具有廣泛的應(yīng)用前景。圖1為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的轉(zhuǎn)發(fā)表建立流程示意圖。所述網(wǎng)絡(luò)包括兩個(gè)以上的節(jié)點(diǎn)和兩個(gè)以上的數(shù)據(jù)路由器,一種類型的數(shù)據(jù)包括兩個(gè)以上的數(shù)據(jù)塊且由一個(gè)數(shù)據(jù)名稱唯一定義,每個(gè)數(shù)據(jù)塊由一個(gè)數(shù)據(jù)塊id唯一標(biāo)識(shí);數(shù)據(jù)消費(fèi)者為有權(quán)限獲取一種類型的數(shù)據(jù)的節(jié)點(diǎn),數(shù)據(jù)提供者為有權(quán)提供一種類型的數(shù)據(jù)的節(jié)點(diǎn);節(jié)點(diǎn)不具有路由轉(zhuǎn)發(fā)功能,數(shù)據(jù)路由器具有路由轉(zhuǎn)發(fā)功能;每種消息結(jié)構(gòu)包括五個(gè)部分:數(shù)據(jù)名稱域、數(shù)據(jù)塊id集合、消息類型域,、序列號(hào)以及負(fù)載;消息類型如下表所示:消息類型消息類型域值數(shù)據(jù)發(fā)布消息1數(shù)據(jù)請求消息2數(shù)據(jù)響應(yīng)消息3數(shù)據(jù)確認(rèn)消息4錯(cuò)誤消息5數(shù)據(jù)路由器維護(hù)一個(gè)轉(zhuǎn)發(fā)表,一個(gè)轉(zhuǎn)發(fā)表項(xiàng)由接口域、數(shù)據(jù)名稱域以及數(shù)據(jù)塊id集合構(gòu)成,其中,接口域值指向到達(dá)數(shù)據(jù)提供者的下一跳,數(shù)據(jù)名稱域值為目標(biāo)數(shù)據(jù)的數(shù)據(jù)名稱,目標(biāo)數(shù)據(jù)為數(shù)據(jù)消費(fèi)者請求的數(shù)據(jù);數(shù)據(jù)塊id集合域值為構(gòu)成目標(biāo)數(shù)據(jù)的部分或者全部數(shù)據(jù)塊id的集合;在數(shù)據(jù)c1由數(shù)據(jù)名稱n1定義,數(shù)據(jù)提供者p1產(chǎn)生了數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的情況下,如果網(wǎng)絡(luò)鏈路穩(wěn)定,例如有線網(wǎng)絡(luò),如圖1所示,數(shù)據(jù)提供者p1則執(zhí)行下述過程建立轉(zhuǎn)發(fā)表:步驟101:開始;步驟102:數(shù)據(jù)提供者p1構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)提供者p1通過與本地?cái)?shù)據(jù)路由器相連的接口發(fā)送該數(shù)據(jù)發(fā)布消息;步驟103:數(shù)據(jù)路由器從自己的接口j接收到數(shù)據(jù)發(fā)布消息,查看轉(zhuǎn)發(fā)表判斷是否存在數(shù)據(jù)名稱域值為n1,接口域?yàn)閖,數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng),如果存在,執(zhí)行步驟105,否則執(zhí)行步驟104;步驟104:數(shù)據(jù)路由器創(chuàng)建一個(gè)轉(zhuǎn)發(fā)表項(xiàng),該轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值為n1,接口域值為j,數(shù)據(jù)塊id集合域值為s1,數(shù)據(jù)路由器從每個(gè)符合條件1和條件2的接口轉(zhuǎn)發(fā)該數(shù)據(jù)發(fā)布消息,執(zhí)行步驟106;條件1:該接口與數(shù)據(jù)路由器相連;條件2:從該接口沒有接收到數(shù)據(jù)發(fā)布消息;步驟105:數(shù)據(jù)路由器放棄接收到的數(shù)據(jù)發(fā)布消息,執(zhí)行步驟106;步驟106:重復(fù)步驟103~105直到網(wǎng)絡(luò)內(nèi)所有的數(shù)據(jù)路由器都接收到數(shù)據(jù)提供者p1發(fā)送的數(shù)據(jù)發(fā)布消息且建立了數(shù)據(jù)名稱域值為n1、數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng)為止;步驟107:結(jié)束;數(shù)據(jù)提供者定期執(zhí)行步驟101~107建立或者更新數(shù)據(jù)路由器的轉(zhuǎn)發(fā)表。通過上述過程,數(shù)據(jù)路由器能夠建立轉(zhuǎn)發(fā)表從而確保用戶能夠快速獲取數(shù)據(jù)。圖2為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的轉(zhuǎn)發(fā)表建立流程示意圖。如果網(wǎng)絡(luò)鏈路不穩(wěn)定,不穩(wěn)定的評(píng)價(jià)指標(biāo)為丟包率,例如丟包率達(dá)到一定比例,比如20%,數(shù)據(jù)路由器、數(shù)據(jù)消費(fèi)者和數(shù)據(jù)提供者通過保存四元組<發(fā)送的消息,發(fā)送消息的接口,消息中的序列號(hào),確認(rèn)定時(shí)器>來確保消息的傳輸成功率;確認(rèn)定時(shí)器的初始值預(yù)先設(shè)定,例如100ms,然后根據(jù)時(shí)鐘衰減,如果時(shí)鐘衰減到0,則定時(shí)器過期。在數(shù)據(jù)c1由數(shù)據(jù)名稱n1定義,數(shù)據(jù)提供者p1提供數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的條件下,如果網(wǎng)絡(luò)鏈路不穩(wěn)定,數(shù)據(jù)提供者p1則執(zhí)行下述過程建立轉(zhuǎn)發(fā)表:步驟201:開始;步驟202:數(shù)據(jù)提供者p1產(chǎn)生一個(gè)隨機(jī)數(shù)同時(shí)構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空;數(shù)據(jù)提供者p1通過與本地?cái)?shù)據(jù)路由器相連的接口發(fā)送該數(shù)據(jù)發(fā)布消息,同時(shí)保存四元組<發(fā)送的數(shù)據(jù)發(fā)布消息,與本地?cái)?shù)據(jù)路由器相連的接口,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,然后啟動(dòng)確認(rèn)定時(shí)器;步驟203:數(shù)據(jù)路由器從自己的接口j接收到數(shù)據(jù)發(fā)布消息后,通過接口j發(fā)送一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息中的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為s1,消息類型為4,序列號(hào)為數(shù)據(jù)發(fā)布消息中的序列號(hào);數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表判斷是否存在數(shù)據(jù)名稱域值為n1,接口域?yàn)閖,數(shù)據(jù)塊id集合域值為s1的表項(xiàng),如果存在,執(zhí)行步驟205,否則執(zhí)行步驟204;步驟204:數(shù)據(jù)路由器創(chuàng)建一個(gè)轉(zhuǎn)發(fā)表項(xiàng),該轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值為n1,接口域值為j,數(shù)據(jù)塊id集合域值為s1;對(duì)于每個(gè)符合條件1和條件2的接口數(shù)據(jù)路由器執(zhí)行下述操作:產(chǎn)生一個(gè)隨機(jī)數(shù)同時(shí)構(gòu)建數(shù)據(jù)發(fā)布消息,該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)名稱域值為n1,消息類型為1,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空;通過從該接口發(fā)送數(shù)據(jù)發(fā)布消息,同時(shí)保存四元組<發(fā)送的數(shù)據(jù)發(fā)布消息,發(fā)送數(shù)據(jù)發(fā)布消息的接口,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,然后啟動(dòng)確認(rèn)定時(shí)器,執(zhí)行步驟206;步驟205:數(shù)據(jù)路由器放棄接收到的數(shù)據(jù)發(fā)布消息;步驟206:數(shù)據(jù)提供者p1查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟208,否則執(zhí)行步驟207;步驟207:數(shù)據(jù)提供者p1通過步驟202中保存的四元組中的接口域值重新發(fā)送四元組中的數(shù)據(jù)發(fā)布消息,重新啟動(dòng)四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟203;步驟208:數(shù)據(jù)提供者p1刪除保存的四元組;步驟209:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟211,否則執(zhí)行步驟210;步驟210:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中對(duì)應(yīng)接口的接口域值重新發(fā)送該四元組中的數(shù)據(jù)發(fā)布消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟203;步驟211:數(shù)據(jù)路由器收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟212:重復(fù)步驟203~211直到所述網(wǎng)絡(luò)內(nèi)所有的數(shù)據(jù)路由器都接收到數(shù)據(jù)提供者p1發(fā)送的數(shù)據(jù)發(fā)布消息且建立了數(shù)據(jù)名稱域值為n1、數(shù)據(jù)塊id集合域值為s1的轉(zhuǎn)發(fā)表項(xiàng)為止;步驟213:結(jié)束;數(shù)據(jù)提供者定期執(zhí)行步驟201~213建立或者更新數(shù)據(jù)路由器的轉(zhuǎn)發(fā)表。通過上述過程,數(shù)據(jù)路由器能夠建立轉(zhuǎn)發(fā)表從而確保用戶能夠快速獲取數(shù)據(jù)。圖3為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的數(shù)據(jù)獲取流程示意圖。在數(shù)據(jù)路由器維護(hù)一個(gè)聚合表,一個(gè)聚合表項(xiàng)由接口域、數(shù)據(jù)名稱域和數(shù)據(jù)塊id集合構(gòu)成,接口域指向到達(dá)數(shù)據(jù)消費(fèi)者的下一跳,數(shù)據(jù)名稱域值為目標(biāo)數(shù)據(jù)的數(shù)據(jù)名稱,數(shù)據(jù)塊id集合域值記錄未收到的目標(biāo)數(shù)據(jù)塊的條件下,如果聚合表項(xiàng)的數(shù)據(jù)塊id集合域值為空,那么刪除該聚合表項(xiàng);在數(shù)據(jù)消費(fèi)者u1通過自己的接口f與本地?cái)?shù)據(jù)路由器r1相連,數(shù)據(jù)消息者u1需要獲取由數(shù)據(jù)名稱n1定義的數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的情況下,如果網(wǎng)絡(luò)性能穩(wěn)定,那么數(shù)據(jù)消息者u1通過下述過程獲取目標(biāo)數(shù)據(jù)塊:步驟301:開始;步驟302:數(shù)據(jù)消費(fèi)者u1構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型域值為2,數(shù)據(jù)塊id集合為s1,序列號(hào)為0,負(fù)載為空;數(shù)據(jù)消費(fèi)者u1從接口f發(fā)送該數(shù)據(jù)請求消息;步驟303:數(shù)據(jù)路由器r1從自己的接口f1接收到數(shù)據(jù)請求消息后,判斷自己的聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟311,否則執(zhí)行步驟304;步驟304:數(shù)據(jù)路由器r1創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f1;步驟305:數(shù)據(jù)路由器r1查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息;否則,數(shù)據(jù)路由器r1選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r1進(jìn)行如下操作:構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建數(shù)據(jù)請求消息;條件3:所述數(shù)據(jù)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的并集是接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集;步驟306:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)提供者從接口f2接收到數(shù)據(jù)請求消息,如果是數(shù)據(jù)提供者接收到數(shù)據(jù)請求消息,則執(zhí)行步驟307,否則執(zhí)行步驟308;步驟307:數(shù)據(jù)提供者創(chuàng)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)名稱域值為n1,消息類型為3,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為0,負(fù)載為提供的數(shù)據(jù)塊,然后從接口f2發(fā)送該數(shù)據(jù)響應(yīng)消息,執(zhí)行步驟311;步驟308:數(shù)據(jù)路由器判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f2且數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟311,否則執(zhí)行步驟309;步驟309:數(shù)據(jù)路由器創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f2;步驟310:數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息;否則,數(shù)據(jù)路由器選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器進(jìn)行如下操作:構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為0,負(fù)載為空,數(shù)據(jù)路由器從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建的數(shù)據(jù)請求消息,執(zhí)行步驟306;步驟311:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)消費(fèi)者從接口f3接收到數(shù)據(jù)響應(yīng)消息,如果是數(shù)據(jù)路由器接收到數(shù)據(jù)響應(yīng)消息,則執(zhí)行步驟312,否則執(zhí)行步驟313;步驟312:數(shù)據(jù)路由器從聚合表中選擇所有數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合的交集不為空的表項(xiàng),對(duì)于每個(gè)選擇的聚合表項(xiàng),數(shù)據(jù)路由器構(gòu)建一個(gè)數(shù)據(jù)響應(yīng)消息,數(shù)據(jù)響應(yīng)消息的名稱域值為n1,數(shù)據(jù)塊id集合為該聚合表項(xiàng)中的數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)id集合的交集,消息類型為3,序列號(hào)為0,負(fù)載為數(shù)據(jù)響應(yīng)消息中的負(fù)載,數(shù)據(jù)路由器從該聚合表項(xiàng)中的接口域發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息,從該聚合表項(xiàng)的數(shù)據(jù)塊id集合中減去構(gòu)建的數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)塊id集合,如果該聚合表項(xiàng)的數(shù)據(jù)塊id集合為空,則刪除該聚合表項(xiàng),執(zhí)行步驟311;步驟313:數(shù)據(jù)消費(fèi)者u1獲取并保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊;步驟314:數(shù)據(jù)消費(fèi)者u1整理所有收到的數(shù)據(jù)響應(yīng)消息中從而獲取數(shù)據(jù)塊id集合為s1的數(shù)據(jù)塊;步驟315:結(jié)束。通過上述過程,數(shù)據(jù)消息者u1能夠快速獲取目標(biāo)數(shù)據(jù)塊。圖4為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的數(shù)據(jù)獲取流程示意圖。在數(shù)據(jù)消費(fèi)者u1通過接口f與本地?cái)?shù)據(jù)路由器r1相連,數(shù)據(jù)消息者u1需要獲取由數(shù)據(jù)名稱n1定義的數(shù)據(jù)c1的數(shù)據(jù)塊,所述數(shù)據(jù)塊的數(shù)據(jù)塊id集合為s1的條件下,如果網(wǎng)絡(luò)性能不穩(wěn)定,那么數(shù)據(jù)消費(fèi)者u1通過下述過程獲取目標(biāo)數(shù)據(jù)塊:步驟401:開始;步驟402:數(shù)據(jù)消費(fèi)者u1產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為s1,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)消費(fèi)者u1從接口f發(fā)送該數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,接口f,產(chǎn)生的隨機(jī)數(shù),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟403:數(shù)據(jù)路由器r1從自己的接口f1接收到數(shù)據(jù)請求消息后,從接口f1返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息中的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為s1,消息類型為4,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),數(shù)據(jù)路由器r1判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟417,否則執(zhí)行步驟404;步驟404:數(shù)據(jù)路由器r1創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f1;步驟405:數(shù)據(jù)路由器r1查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),則數(shù)據(jù)路由器r1產(chǎn)生一個(gè)隨機(jī)數(shù)并創(chuàng)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口轉(zhuǎn)發(fā)接收到的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;否則,數(shù)據(jù)路由器r1選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r1進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,數(shù)據(jù)路由器r1從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟406:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)提供者從接口f2接收到數(shù)據(jù)請求消息,如果是數(shù)據(jù)提供者接收到數(shù)據(jù)請求消息,則執(zhí)行步驟407,否則執(zhí)行步驟408;步驟407:數(shù)據(jù)提供者從接口f2返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),消息類型為4;數(shù)據(jù)提供者產(chǎn)生一個(gè)隨機(jī)數(shù)并創(chuàng)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)名稱域值為n1,消息類型為3,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為提供的數(shù)據(jù)塊,數(shù)據(jù)提供者從接口f2發(fā)送該數(shù)據(jù)響應(yīng)消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)響應(yīng)消息,發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息的接口,構(gòu)建的數(shù)據(jù)響應(yīng)消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器,執(zhí)行步驟417;步驟408:數(shù)據(jù)路由器從接口f2返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)請求消息中的序列號(hào),消息類型為4;數(shù)據(jù)路由器判斷聚合表中是否存在數(shù)據(jù)名稱域值為n1,接口域值為f2且數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的表項(xiàng),如果是,執(zhí)行步驟417,否則執(zhí)行步驟409;步驟409:數(shù)據(jù)路由器創(chuàng)建一個(gè)聚合表項(xiàng),該聚合表項(xiàng)的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合域值為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合,接口域值為f2;步驟410:數(shù)據(jù)路由器查看轉(zhuǎn)發(fā)表,如果存在數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合為數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合的超集的轉(zhuǎn)發(fā)表項(xiàng),那么數(shù)據(jù)路由器產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息中的數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為接收到的數(shù)據(jù)請求消息中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,從該轉(zhuǎn)發(fā)表項(xiàng)的接口發(fā)送構(gòu)建的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;否則,數(shù)據(jù)路由器選擇符合條件3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于每個(gè)選擇的轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)和構(gòu)建一個(gè)數(shù)據(jù)請求消息,數(shù)據(jù)名稱域值為n1,消息類型為2,數(shù)據(jù)塊id集合為該轉(zhuǎn)發(fā)表項(xiàng)中的數(shù)據(jù)塊id集合域值,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為空,從該轉(zhuǎn)發(fā)表項(xiàng)的接口域值發(fā)送構(gòu)建的數(shù)據(jù)請求消息,同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)請求消息,發(fā)送構(gòu)建的數(shù)據(jù)請求消息的接口,構(gòu)建的數(shù)據(jù)請求消息中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟411:數(shù)據(jù)消費(fèi)者u1查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟413,否則執(zhí)行步驟412;步驟412:數(shù)據(jù)消費(fèi)者u1通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)請求消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟403;步驟413:數(shù)據(jù)消費(fèi)者u1收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟414:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟416,否則執(zhí)行步驟415;步驟415:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)請求消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟406;步驟416:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組,執(zhí)行步驟406;步驟417:判斷是數(shù)據(jù)路由器還是數(shù)據(jù)消費(fèi)者從接口f3接收到數(shù)據(jù)響應(yīng)消息,如果是數(shù)據(jù)路由器接收到數(shù)據(jù)響應(yīng)消息,則執(zhí)行步驟419,否則執(zhí)行步驟418;步驟418:數(shù)據(jù)消費(fèi)者u1從接口f3返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)響應(yīng)消息中的序列號(hào),消息類型為4,數(shù)據(jù)消費(fèi)者u1獲取并保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊,執(zhí)行步驟426;步驟419:數(shù)據(jù)路由器從接口f3返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值為n1,數(shù)據(jù)塊id集合為數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合,序列號(hào)為數(shù)據(jù)響應(yīng)消息中的序列號(hào),消息類型為4,數(shù)據(jù)路由器從聚合表中選擇所有數(shù)據(jù)名稱域值為n1且數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)塊id集合的交集不為空的聚合表項(xiàng),對(duì)于每個(gè)選擇的聚合表項(xiàng),數(shù)據(jù)路由器產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的名稱域值為n1,數(shù)據(jù)塊id集合為該聚合表項(xiàng)中的數(shù)據(jù)塊id集合與數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)id集合的交集,消息類型為3,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為數(shù)據(jù)響應(yīng)消息中的負(fù)載,數(shù)據(jù)路由器從該聚合表項(xiàng)中的接口域發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息,從該聚合表項(xiàng)的數(shù)據(jù)塊id集合中減去構(gòu)建的數(shù)據(jù)響應(yīng)消息的數(shù)據(jù)塊id集合,如果該聚合表項(xiàng)的數(shù)據(jù)塊id集合為空,則刪除該聚合表項(xiàng),同時(shí)保存四元組<構(gòu)建的數(shù)據(jù)響應(yīng)消息,發(fā)送構(gòu)建的數(shù)據(jù)響應(yīng)消息的接口,構(gòu)建的數(shù)據(jù)請求響應(yīng)中的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟420:返回?cái)?shù)據(jù)響應(yīng)消息的數(shù)據(jù)提供者查看保存的四元組,如果在四元組中的確認(rèn)時(shí)鐘過期之前收到了與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,則執(zhí)行步驟422,否則執(zhí)行步驟421;步驟421:數(shù)據(jù)提供者通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)響應(yīng)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟417;步驟422:數(shù)據(jù)提供者收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟423:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟425,否則執(zhí)行步驟424;步驟424:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的數(shù)據(jù)響應(yīng)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘,執(zhí)行步驟417;步驟425:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組,執(zhí)行步驟417;步驟426:數(shù)據(jù)消費(fèi)者u1整理所有收到的數(shù)據(jù)響應(yīng)消息中從而獲取數(shù)據(jù)塊id集合為s1的數(shù)據(jù)塊;步驟427:結(jié)束。通過上述過程,數(shù)據(jù)消息者u1能夠快速獲取目標(biāo)數(shù)據(jù)塊。圖5為本發(fā)明所述的網(wǎng)絡(luò)穩(wěn)定情況下的轉(zhuǎn)發(fā)表更新流程示意圖。在數(shù)據(jù)路由器r2通過接口f3與鄰居數(shù)據(jù)路由器或者鄰居數(shù)據(jù)提供者相連且該鄰居路由器或者理論數(shù)據(jù)提供者失效的條件下,如果網(wǎng)絡(luò)性能穩(wěn)定,那么數(shù)據(jù)路由器r2執(zhí)行下述過程更新轉(zhuǎn)發(fā)表:步驟501:開始;步驟502:數(shù)據(jù)路由器r2從轉(zhuǎn)發(fā)表中選擇接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),然后構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為0,負(fù)載為接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r2從除了接口f3的所有與數(shù)據(jù)路由器相連的接口發(fā)送該不可達(dá)消息,數(shù)據(jù)路由器r2刪除所有接口域值為f3的轉(zhuǎn)發(fā)表項(xiàng);步驟503:鄰居數(shù)據(jù)路由器從自己的接口f4收到不可達(dá)消息,從除了接口f4的所有與數(shù)據(jù)路由器相連的接口發(fā)送不可達(dá)消息;步驟504:鄰居數(shù)據(jù)路由器選擇接口域值為f4,且數(shù)據(jù)名稱域值等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值,且數(shù)據(jù)塊id集合等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的轉(zhuǎn)發(fā)表項(xiàng),刪除這些選擇的轉(zhuǎn)發(fā)表項(xiàng);步驟505:執(zhí)行步驟503~504直到所有的數(shù)據(jù)路由器都接收到不可達(dá)消息;步驟506:結(jié)束。通過上述過程,數(shù)據(jù)路由器能夠快速更新轉(zhuǎn)發(fā)表以確保用戶能夠正確快速地獲取目標(biāo)數(shù)據(jù)。圖6為本發(fā)明所述的網(wǎng)絡(luò)不穩(wěn)定情況下的轉(zhuǎn)發(fā)表更新流程示意圖。在數(shù)據(jù)路由器r2通過接口f3與鄰居數(shù)據(jù)路由器或者鄰居數(shù)據(jù)提供者相連且該鄰居路由器或者理論數(shù)據(jù)提供者失效的條件下,如果網(wǎng)絡(luò)性能不穩(wěn)定,那么數(shù)據(jù)路由器r2執(zhí)行下述過程更新轉(zhuǎn)發(fā)表:步驟601:開始;步驟602:數(shù)據(jù)路由器r2從轉(zhuǎn)發(fā)表中選擇接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),對(duì)于除了接口f3之外的每個(gè)與數(shù)據(jù)路由器相連的接口,數(shù)據(jù)路由器r2進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為接口域值為f3的所有轉(zhuǎn)發(fā)表項(xiàng),數(shù)據(jù)路由器r2從該接口發(fā)送該不可達(dá)消息,同時(shí)保存四元組<構(gòu)建的不可達(dá)消息,發(fā)送構(gòu)建的不可達(dá)消息的接口,構(gòu)建的不可達(dá)消息的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器,數(shù)據(jù)路由器r2刪除所有接口域值為f3的轉(zhuǎn)發(fā)表項(xiàng);步驟603:鄰居數(shù)據(jù)路由器從自己的接口f4收到不可達(dá)消息,數(shù)據(jù)路由器從接口f4返回一個(gè)數(shù)據(jù)確認(rèn)消息,該數(shù)據(jù)確認(rèn)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合為空,序列號(hào)為不可達(dá)消息中的序列號(hào),消息類型為4;對(duì)于除了接口f4之外的每個(gè)與數(shù)據(jù)路由器相連的接口,鄰居數(shù)據(jù)路由器進(jìn)行如下操作:產(chǎn)生一個(gè)隨機(jī)數(shù)并構(gòu)建一個(gè)不可達(dá)消息,該不可達(dá)消息的數(shù)據(jù)名稱域值和數(shù)據(jù)塊id集合均為空,消息類型為5,序列號(hào)為產(chǎn)生的隨機(jī)數(shù),負(fù)載為接收到的不可達(dá)消息中的負(fù)載,鄰居數(shù)據(jù)路由器從該接口發(fā)送該不可達(dá)消息,同時(shí)保存四元組<構(gòu)建的不可達(dá)消息,發(fā)送構(gòu)建的不可達(dá)消息的接口,構(gòu)建的不可達(dá)消息的序列號(hào),確認(rèn)定時(shí)器>,啟動(dòng)確認(rèn)定時(shí)器;步驟604:鄰居數(shù)據(jù)路由器選擇接口域值為f4,且數(shù)據(jù)名稱域值等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)名稱域值,并且數(shù)據(jù)塊id集合等于不可達(dá)消息負(fù)載中任一個(gè)轉(zhuǎn)發(fā)表項(xiàng)的數(shù)據(jù)塊id集合的轉(zhuǎn)發(fā)表項(xiàng),刪除這些選擇的轉(zhuǎn)發(fā)表項(xiàng);步驟605:數(shù)據(jù)路由器查看保存的所有四元組,對(duì)于每個(gè)四元組判斷是否在該四元組中的確認(rèn)時(shí)鐘過期之前收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息,如果是,則執(zhí)行步驟607,否則執(zhí)行步驟606;步驟606:對(duì)于每個(gè)沒有收到確認(rèn)消息的四元組,數(shù)據(jù)路由器通過該四元組中的接口域值重新發(fā)送該四元組中的不可達(dá)消息,重新啟動(dòng)該四元組中的確認(rèn)時(shí)鐘;步驟607:數(shù)據(jù)路由器收到與四元組中的序列號(hào)相同的數(shù)據(jù)確認(rèn)消息后,刪除該四元組;步驟608:執(zhí)行步驟603~607直到所有的數(shù)據(jù)路由器都接收到不可達(dá)消息;步驟609:結(jié)束;數(shù)據(jù)路由器刪除無效的轉(zhuǎn)發(fā)表項(xiàng)之后,通過數(shù)據(jù)提供者定期執(zhí)行步驟101~107或者步驟201~213建立轉(zhuǎn)發(fā)表。通過上述過程,數(shù)據(jù)路由器能夠快速更新轉(zhuǎn)發(fā)表以確保用戶能夠正確快速地獲取目標(biāo)數(shù)據(jù)。實(shí)施例1基于表1的仿真參數(shù),本實(shí)施例模擬了本發(fā)明中的網(wǎng)絡(luò)數(shù)據(jù)通信方法,性能分析如下:隨著數(shù)據(jù)提供者速度的增加,數(shù)據(jù)消費(fèi)者獲取數(shù)據(jù)的延遲和代價(jià)隨之降低;當(dāng)數(shù)據(jù)提供者數(shù)量增加時(shí),數(shù)據(jù)消費(fèi)者獲取數(shù)據(jù)的延遲和代價(jià)隨之降低;車輛節(jié)點(diǎn)獲取服務(wù)數(shù)據(jù)的平均延遲為80ms,平均代價(jià)為4.5。表1仿真參數(shù)本發(fā)明提供了一種快速的網(wǎng)絡(luò)數(shù)據(jù)通信方法的思路,具體實(shí)現(xiàn)該技術(shù)方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。本實(shí)施例中未明確的各組成部份均可用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。當(dāng)前第1頁12