專利名稱:數(shù)據(jù)資源傳輸?shù)姆椒ê驮O(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明實(shí)施例涉及網(wǎng)絡(luò)通信領(lǐng)域,并且更具體地涉及數(shù)據(jù)資源傳輸?shù)姆椒ê驮O(shè)備。
背景技術(shù):
輕量級(jí)應(yīng)用層協(xié)議(ConstrainedApplication Protocol,簡(jiǎn)稱 “CoAP”)主要是用于物聯(lián)網(wǎng)(Machine to Machine,簡(jiǎn)稱“ M2M”)的場(chǎng)景中,比如家庭控制器、樓宇自動(dòng)化、智能能源、傳感器網(wǎng)絡(luò)等。在這樣的環(huán)境中,這些機(jī)器的功能比較簡(jiǎn)單,一般處理器只有8位,存儲(chǔ)空間小,不支持復(fù)雜的傳輸協(xié)議,數(shù)據(jù)傳輸速率也較低。CoAP提供一種請(qǐng)求/響應(yīng)的交互模式,支持內(nèi)嵌的資源發(fā)現(xiàn),包括關(guān)鍵的網(wǎng)頁概念,比如統(tǒng)ー資源標(biāo)識(shí)(URI)和內(nèi)容類型。CoAP可以很容易地翻譯到超文本鏈接協(xié)議(HTTP),用于集成到網(wǎng)絡(luò)中。基于CoAP傳輸數(shù)據(jù)的傳統(tǒng)方案中不計(jì)算數(shù)據(jù)資源的準(zhǔn)確容量,無法評(píng)估分包的精確數(shù)目,因此無法并發(fā)獲取數(shù)據(jù)資源,造成傳輸效率低下。另外由于很多使用CoAP的設(shè)備處理能力較低,最大傳輸速率也低,所以在激活多個(gè)連接或者同時(shí)處理多個(gè)請(qǐng)求吋,CoAP設(shè)備就很容易面臨擁塞問題,導(dǎo)致無法及時(shí)處理后續(xù)新發(fā)生的任務(wù)。為了解決擁塞,現(xiàn)有CoAP協(xié)議中規(guī)定了ー種消息重發(fā)控制機(jī)制,當(dāng)CoAP客戶端設(shè)備向服務(wù)器設(shè)備發(fā)送的需要確認(rèn)的(Confirmable)消息并且長(zhǎng)時(shí)間沒有得到響應(yīng)時(shí)(擁塞等問題導(dǎo)致),客戶端設(shè)備會(huì)在Tn秒后重發(fā)該消息并重復(fù)若干次,直到收到服務(wù)器設(shè)備發(fā)回的響應(yīng)消息或者達(dá)到最大重發(fā)次數(shù)限制而放棄嘗試;設(shè)默認(rèn)重發(fā)間隔為X秒且當(dāng)前為第η次重發(fā),則Tn = X+random(O 2n),其中random(0 2n)為O到2n之間的任一隨機(jī)整數(shù),因此該方法也被稱為指數(shù)后退算法,毎次重發(fā)的時(shí)間間隔以指數(shù)級(jí)增加,給予服務(wù)器設(shè)備更寬松的響應(yīng)時(shí)間。但現(xiàn)有技術(shù)使用的算法是基于時(shí)隙的,消息級(jí)別的擁塞控制,并不能有效解決節(jié)點(diǎn)級(jí)別的擁塞問題,當(dāng)server因?yàn)橘Y源處理能力達(dá)到瓶頸,或者發(fā)生異常的時(shí)候,指數(shù)后退就顯得杯水車薪了,而且因?yàn)槭莄lient端的隨機(jī)算法,也完全沒有考慮到server的具體狀態(tài),嚴(yán)重時(shí)候可能會(huì)進(jìn)ー步加重?fù)砣?br>
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了ー種數(shù)據(jù)資源傳輸?shù)姆椒ê驮O(shè)備,能夠支持在CoAP中提高傳輸效率。在本發(fā)明實(shí)施例中,提供了一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議的節(jié)點(diǎn)的數(shù)據(jù)資源傳輸方法,包括向服務(wù)器發(fā)送攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng);接收所述服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息在本發(fā)明實(shí)施例中,提供了一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議的節(jié)點(diǎn)的數(shù)據(jù)資源傳輸方法,包括接收客戶端發(fā)送的攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng);向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。在本發(fā)明實(shí)施例中,提供了一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議傳輸節(jié)點(diǎn)的數(shù)據(jù)資源的客戶端,包括發(fā)送模塊,用于向服務(wù)器發(fā)送攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng);接收模塊,用于接收根據(jù)響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。
在本發(fā)明實(shí)施例中,提供了一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議傳輸節(jié)點(diǎn)的數(shù)據(jù)資源的服務(wù)器設(shè)備,包括接收模塊,用于接收客戶端發(fā)送的攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的ー次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng);發(fā)送模塊,向所述客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,通過在消息交互過程中指定響應(yīng)方式選項(xiàng),客戶端可以指定所需的響應(yīng),提高了 CoAP的消息交互效率。根據(jù)本發(fā)明實(shí)施例,可以對(duì)響應(yīng)方式進(jìn)行指示,并根據(jù)所指示的響應(yīng)方式接收響應(yīng)消息,這樣便于請(qǐng)求方進(jìn)行會(huì)話處理,以提高傳輸效率,比如在指示延遲響應(yīng)時(shí)間的情況下,避免請(qǐng)求方一直等待響應(yīng)消息,可以在指示的延遲時(shí)間過期后,提前結(jié)束會(huì)話;在請(qǐng)求方指示立即響應(yīng)時(shí),如果在請(qǐng)求方自定義的超時(shí)時(shí)間內(nèi),不能接收到響應(yīng)消息,也可以提前結(jié)束會(huì)話;在指示延遲的多次響應(yīng)時(shí),請(qǐng)求方可以保存資源訂閱的信息,以便于接收多個(gè)推遲的響應(yīng)。
為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的ー些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。在附圖中圖I是本發(fā)明一種實(shí)施例的傳輸數(shù)據(jù)的方法的流程圖;圖2是本發(fā)明一種實(shí)施例的網(wǎng)關(guān)從傳感器獲取數(shù)據(jù)資源的具體實(shí)現(xiàn)過程的流程圖;圖3是本發(fā)明一種實(shí)施例中改進(jìn)的分片選項(xiàng)的結(jié)構(gòu)圖;圖4是本發(fā)明一種替代實(shí)施例的網(wǎng)關(guān)從傳感器獲取數(shù)據(jù)資源具體實(shí)現(xiàn)過程的流程圖;圖5是本發(fā)明一種替代實(shí)施例中改進(jìn)的分片選項(xiàng)的結(jié)構(gòu)圖;圖6是本發(fā)明一種替代實(shí)施例的網(wǎng)關(guān)從傳感器獲取數(shù)據(jù)資源的具體實(shí)現(xiàn)過程的流程圖;圖7是本發(fā)明一種替代實(shí)施例中改進(jìn)的分片選項(xiàng)的結(jié)構(gòu)圖;圖8是本發(fā)明一種實(shí)施例的網(wǎng)關(guān)向傳感器發(fā)送數(shù)據(jù)資源的具體實(shí)現(xiàn)過程的流程圖;圖9是本發(fā)明一種實(shí)施例的客戶端設(shè)備的框圖;圖10是本發(fā)明一種實(shí)施例的服務(wù)器設(shè)備的框圖11是本發(fā)明一種實(shí)施例的傳輸數(shù)據(jù)的方法的流程圖;圖12是本發(fā)明一種實(shí)施例的傳輸數(shù)據(jù)的方法的流程圖;圖13是本發(fā)明ー種實(shí)施例的消息交互圖;圖14是本發(fā)明一種實(shí)施例的消息交互圖; 圖15是本發(fā)明ー種實(shí)施例的消息交互圖;圖16是本發(fā)明一種實(shí)施例的傳輸數(shù)據(jù)的客戶端的結(jié)構(gòu)圖;圖17是本發(fā)明一種實(shí)施例的傳輸數(shù)據(jù)的服務(wù)器的結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。CoAP是基于用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,簡(jiǎn)稱“UDP”)進(jìn)行傳輸,是基于無連接的消息處理模式。其交互模式可以是同步的響應(yīng),也可以是異步的響應(yīng)。消息類型可以是需要確認(rèn)的消息(Confirmable)、不需要確認(rèn)的消息(Non-confirmable)、確認(rèn)消息(Acknowledgement)、重置消息(Reset)??梢酝ㄟ^消息標(biāo)識(shí)(Message ID)來關(guān)聯(lián)ー對(duì)請(qǐng)求和響應(yīng)。CoAP支持的方法有四個(gè)獲取資源(Get)、更新資源(Put)、創(chuàng)建資源(Post)和刪除資源(Delete)。資源通過表述性狀態(tài)轉(zhuǎn)移(Representational State Transfer,簡(jiǎn)稱“REST”) URI來識(shí)別。我們通常稱資源的擁有方為節(jié)點(diǎn)或服務(wù)器,包括但不限于傳感器、控制器、端點(diǎn)(End-point)等,請(qǐng)求資源方為客戶端,包括但不限于網(wǎng)關(guān)(Proxy)、網(wǎng)絡(luò)側(cè)設(shè)備。CoAP協(xié)議支持不同的選項(xiàng)(Option),用以解釋CoAP消息體中數(shù)據(jù)的語義,比如Block (分片)、Location (位置)、Token (令牌)選項(xiàng)等,不同的選項(xiàng)支持不同的功能,并且可以通過定義新的Option來擴(kuò)展新的功能。CoAP支持分片選項(xiàng)(Block Option),主要用于將較大的資源進(jìn)行分片傳輸,以適應(yīng)于低帶寬傳輸?shù)膽?yīng)用場(chǎng)景。Block選項(xiàng)可以為I個(gè)字節(jié)、2個(gè)字節(jié)或3個(gè)字節(jié),依據(jù)分片數(shù)目的容量所需要的長(zhǎng)度進(jìn)行選取。傳統(tǒng)方案中不計(jì)算數(shù)據(jù)資源的準(zhǔn)確容量,無法評(píng)估分包的精確數(shù)目,因此無法并發(fā)獲取。另外也不知道資源是靜態(tài)的還是動(dòng)態(tài)的。在以下描述中,通常稱資源的擁有方為服務(wù)器,以傳感器作為示例,請(qǐng)求資源方為客戶端,以網(wǎng)關(guān)作為示例。但是,傳感器或者網(wǎng)關(guān)并不用作對(duì)服務(wù)器或者客戶端的限制。由于不知道目標(biāo)資源的精確容量,網(wǎng)關(guān)在〈Get〉命令中使用Block Option時(shí),只能按順序來獲取,即選獲取Block O,等Block O返回時(shí),再獲取Blockl,—直到最后ー個(gè)Block。不能并發(fā)地發(fā)送〈Get〉請(qǐng)求。Block選項(xiàng)的字段結(jié)構(gòu)一般包括NUM字段,M字段和SZX字段,其中NUM表不分片的順序序號(hào),可以是4 20位的無符號(hào)整型數(shù)字。O表不第一個(gè)分片。M :用一個(gè)比特位來表示當(dāng)前分片后面是否還有其他分片,其值為I表示后面還有分片,為O表示后面沒有分片,即為最后ー個(gè)分片。SZX:用于表征分片容量,其計(jì)算公式為分片容量=2~(SZX+4),即2的(SZX+4)次方。由于SZX由3個(gè)比特位來表示,其值可以為O 7,所以分片容量的取值范圍2~4 2~11,即 16 2048。對(duì)于Block選項(xiàng)的使用說明如下 在〈Get〉請(qǐng)求中,Block選項(xiàng)的NUM字段給出當(dāng)前請(qǐng)求的分片的序號(hào),并且當(dāng)分片序號(hào)為O吋,SZX給出網(wǎng)關(guān)建議的每個(gè)分片的容量。在〈Get〉響應(yīng)中或是<Put>/〈P0st>請(qǐng)求中,Block選項(xiàng)的NUM字段描述當(dāng)前傳輸?shù)姆制男蛱?hào),M字段表明后面是否還有后續(xù)分片。在<Put>/〈Post>響應(yīng)中,Block選項(xiàng)的NUM字段表明當(dāng)前響應(yīng)的分片序號(hào)。當(dāng)網(wǎng)關(guān)使用〈Get〉方法獲取第一個(gè)分片(Block)吋,NUM被設(shè)置為0,并攜帶建議的分片容量(即SZX),傳感器節(jié)點(diǎn)可以選擇同意建議的分片容量,或是選擇ー個(gè)比建議分片小的分片,并在響應(yīng)中返回,同時(shí),在響應(yīng)中返回第一個(gè)分片的數(shù)據(jù)。本發(fā)明考慮網(wǎng)關(guān)事先獲知目標(biāo)資源的精確容量,則網(wǎng)關(guān)可以選擇是否用BlockOption來發(fā)送資源獲取的請(qǐng)求,也可以實(shí)現(xiàn)并發(fā)請(qǐng)求,即在請(qǐng)求BlockO的同時(shí),也可以請(qǐng)求Block I,而不必等待。在請(qǐng)求Block的順序上也可以靈活處理。簡(jiǎn)單設(shè)計(jì)方案中,Block Option有三個(gè)選擇,可以是ー個(gè)字節(jié),可以是2個(gè)字節(jié),也可以是三個(gè)字節(jié),依據(jù)資源的容量不同,分片(Block)的數(shù)量容量不同,所需要的長(zhǎng)度也不一樣。協(xié)議規(guī)定,除了最后ー個(gè)分片外,分片的容量必須相同,但每次傳輸中,還是每次都需要攜帯M位(表明后面是否還有分片)和SZX(分片的容量)。毎次在請(qǐng)求和響應(yīng)中,M位和SZX位都需要傳送,而實(shí)際上,除了最后ー個(gè)分片外,M位和SZX的值每次都是相同的,重復(fù)的傳輸浪費(fèi)傳輸資源。重復(fù)發(fā)送SZX的目的假定雙方都不保存協(xié)商后的SZX,第一次響應(yīng)中攜帯的是協(xié)商后的SZX,網(wǎng)關(guān)從響應(yīng)中獲取并再次在請(qǐng)求中發(fā)送,從而網(wǎng)關(guān)和傳感器都不需要保存狀態(tài)。在一次的請(qǐng)求響應(yīng)回合中,共浪費(fèi)ー個(gè)字節(jié),如果分片數(shù)目很多時(shí),浪費(fèi)的字節(jié)就很多了,對(duì)于M2M設(shè)備,傳輸資源是受限的,這個(gè)傳輸資源的浪費(fèi)是很可觀的。假設(shè)要傳送的數(shù)據(jù)為64M的話,每個(gè)Block的負(fù)載(payload)容量為1024byte則發(fā)送的block條目數(shù)為65536。則發(fā)送的Block選項(xiàng)按照字節(jié)來分的個(gè)數(shù)為(I) 一個(gè)字節(jié)16 個(gè)(2)兩個(gè)字節(jié)4080個(gè)(3)三個(gè)字節(jié)61440個(gè)如果M和SZX可以不發(fā)送,則請(qǐng)求加上響應(yīng)能夠節(jié)省的數(shù)據(jù)為65536字節(jié)(byte),即64K數(shù)據(jù)。另外,如果這兩個(gè)字段不要,則NUM字段可以用滿所有位(bit),則需要發(fā)送的數(shù)據(jù)包的數(shù)目變更為(I) 一個(gè)字節(jié)256 個(gè)(2)兩個(gè)字節(jié)65280個(gè)此時(shí)不需要發(fā)送3個(gè)字節(jié)的結(jié)構(gòu),因此還可以節(jié)省數(shù)據(jù)為61440*2bytes,即60K數(shù)據(jù)。則總共節(jié)省數(shù)據(jù)位124K,節(jié)省數(shù)據(jù)率0. 189 %。頭域節(jié)省百分比為(16+4080*2+61440*3-256-65280*2) / (16+4080*2+61440*3) = 61680/192496 = 32%。
節(jié)省數(shù)據(jù)量的公式T為總的Block數(shù)量,S為分片容量(Block Size),節(jié)省的流量的百分比(只比較頭域)T < 16時(shí)無節(jié)??;兩者都是ー個(gè)字節(jié);
16 < T < 256時(shí)1_T*1バ16*1+(T-16) *2),簡(jiǎn)單設(shè)計(jì)方案需要2個(gè)字節(jié),優(yōu)選方
案只需要一個(gè)字節(jié);256 < T < 4096 時(shí)1-(256*1+(1'-256)*2))バ16*1+(1'_16)*2),簡(jiǎn)單設(shè)計(jì)方案需要2個(gè)字節(jié),優(yōu)選方案需要2個(gè)字節(jié);4096 < T < 65256 時(shí)卜(256* 1+(4096-256) *2+(Τ-4096) *3) ) /(256*1+(Τ-256) *2),簡(jiǎn)單設(shè)計(jì)方案需要3個(gè)字節(jié),優(yōu)選方案需要2個(gè)字節(jié)。T > 65256時(shí),無節(jié)省,本發(fā)明優(yōu)選方案實(shí)施例和簡(jiǎn)單設(shè)計(jì)方案都需要3個(gè)字節(jié)。簡(jiǎn)單設(shè)計(jì)方案中,使用Put/Post命令時(shí),分片容量協(xié)商缺乏效率。在Put/Post請(qǐng)求中,對(duì)于第一個(gè)分片,需要發(fā)送第一個(gè)分片的數(shù)據(jù)和推薦的分片容量,如果傳感器節(jié)點(diǎn)選擇不一樣的分片容量,網(wǎng)關(guān)需要按照傳感器的分片容量進(jìn)行重新發(fā)送,則上次發(fā)送的分片數(shù)據(jù)被浪費(fèi)掉了。而且,網(wǎng)關(guān)在使用Put/Post請(qǐng)求基于分片選項(xiàng)發(fā)送容量大的資源時(shí),事先無法告知傳感器資源容量信息,在傳輸過程中,傳感器邊接收,邊緩存所接收的資源,如果傳感器發(fā)現(xiàn)存儲(chǔ)空間不夠,而資源又未傳輸完成時(shí),只能發(fā)送回ー個(gè)413的錯(cuò)誤狀態(tài)碼,表示請(qǐng)求的資源太大,結(jié)束此次傳輸。此前傳輸?shù)牟糠仲Y源則沒用了,傳輸資源被浪費(fèi)了。如果網(wǎng)關(guān)能夠在第一個(gè)分片消息中告知傳感器所要傳輸?shù)馁Y源的容量信息,傳感器則可以比較資源容量信息與存儲(chǔ)容量,如果容量不足,提前返回413 “請(qǐng)求的資源太大”的狀態(tài)碼,來結(jié)束資源傳輸,以此來達(dá)到節(jié)省傳輸資源的目的?;ヂ?lián)網(wǎng)上的斷點(diǎn)續(xù)傳,也就是要從文件已經(jīng)下載的地方開始繼續(xù)下載。網(wǎng)關(guān)在向傳感器請(qǐng)求數(shù)據(jù)的時(shí)候,要多加一條信息來表示請(qǐng)求下載數(shù)據(jù)的范圍(Range),表明從哪里開始。比如,網(wǎng)關(guān)用瀏覽器來傳遞請(qǐng)求信息給Web傳感器,要求從2000070字節(jié)開始GET/down. zip HTTP/1. OUser-Agent:NetFoxRange:bytes = 2000070-Accept:text/html, image/gif, image/jpeg, * ;q = · 2,*/* ;q = . 2其中,RANGE:bytes = 2000070-,這一行的意思就是告訴傳感器down, zip這個(gè)文件從2000070字節(jié)開始傳,前面的字節(jié)不用傳了。這種方案的缺點(diǎn)是,沒有分片機(jī)制,不支持分片容量的協(xié)商,也不支持分片總數(shù)的協(xié)商。本發(fā)明實(shí)施例考慮了在分片傳輸過程中,進(jìn)行分片容量和/或分片總數(shù)的協(xié)商。為此本發(fā)明提供了一種數(shù)據(jù)分片傳輸?shù)姆椒?,可以獲取目標(biāo)數(shù)據(jù)資源的精確容量,進(jìn)行分片容量的協(xié)商,獲取分片總數(shù),井根據(jù)分片總數(shù)進(jìn)行數(shù)據(jù)資源傳輸。以下參照?qǐng)DI具體說明本發(fā)明ー種實(shí)施例的流程。圖I是本發(fā)明一種實(shí)施例的流程圖。在SllO過程中,獲取節(jié)點(diǎn)的數(shù)據(jù)資源的容量信息。如果是網(wǎng)關(guān)從傳感器獲取數(shù)據(jù),則節(jié)點(diǎn)的數(shù)據(jù)資源容量信息保存在傳感器上。網(wǎng)關(guān)可以通過請(qǐng)求消息,向傳感器獲取節(jié)點(diǎn)的數(shù)據(jù)資源的容量信息。如果是網(wǎng)關(guān)向傳感器發(fā)送數(shù)據(jù),則網(wǎng)關(guān)本地已經(jīng)知道了節(jié)點(diǎn)的數(shù)據(jù)資源的容量信息。獲取節(jié)點(diǎn)的數(shù)據(jù)資源容量信息,是為下ー步進(jìn)行分片容量的協(xié)商并確定分片總數(shù)做準(zhǔn)備。接著,在S120的過程中,網(wǎng)關(guān)向傳感器發(fā)送攜帯第一分片選項(xiàng)的請(qǐng)求消息,其中所述第一分片選項(xiàng)包括推薦的分片容量。傳感器在收到S120中發(fā)送的請(qǐng)求消息之后,根據(jù)自身能力,確定本次數(shù)據(jù)資源傳輸過程中所使用的分片容量,并且傳感器確定的分片容量小于等于網(wǎng)關(guān)推薦的分片容量。 在S130,網(wǎng)關(guān)接收攜帶第二分片選項(xiàng)的響應(yīng)消息,其中所述第二分片選項(xiàng)包括確定的分片容量,所述確定的分片容量小于等于所述推薦的分片容量。網(wǎng)關(guān)在接到確定的分片容量之后,根據(jù)掌握的節(jié)點(diǎn)的數(shù)據(jù)資源容量信息,確定將要傳輸?shù)墓?jié)點(diǎn)的數(shù)據(jù)資源的分片總數(shù)。然后,在S140,根據(jù)所述確定的分片容量以及所述節(jié)點(diǎn)的數(shù)據(jù)資源容量信息,分片傳輸所述數(shù)據(jù)資源。根據(jù)本發(fā)明實(shí)施例,可以獲知需要傳輸?shù)臄?shù)據(jù)資源的容量信息,并通過分片容量協(xié)商確定傳輸數(shù)據(jù)時(shí)使用的分片容量,由此可以實(shí)現(xiàn)傳輸過程中錯(cuò)誤率降低,并且可以并發(fā)地傳輸數(shù)據(jù)。以下結(jié)合圖2說明如圖I所示實(shí)施例的具體實(shí)現(xiàn)過程。圖2表示的是網(wǎng)關(guān)從傳感器獲取數(shù)據(jù)的說明性示例,僅為說明本發(fā)明的構(gòu)思,而不作為對(duì)本發(fā)明的限制。圖2所示數(shù)據(jù)資源獲取過程具體描述如下ES210 :網(wǎng)關(guān)向傳感器發(fā)送資源發(fā)現(xiàn)請(qǐng)求,即通過Get. /wellknown/core來獲取傳感器上的資源列表。ES220 :傳感器向網(wǎng)關(guān)返回資源列表,以及資源指示信息;資源指示信息主要包括資源的尋址信息(即URI)、資源名稱、資源描述信息、內(nèi)容類型等。本發(fā)明對(duì)資源指示信息進(jìn)行擴(kuò)展,擴(kuò)展的資源指示信息包括資源是動(dòng)態(tài)資源還是靜態(tài)資源的指示信息。ES230:網(wǎng)關(guān)根據(jù)傳感器返回的資源列表,根據(jù)資源的指示信息,從中選擇目標(biāo)資源,井根據(jù)識(shí)別標(biāo)識(shí)(能唯一識(shí)別資源的信息,比如資源名稱、URI等),獲取目標(biāo)資源。ES240:傳感器對(duì)目標(biāo)資源容量進(jìn)行判斷,如果資源容量小于ー個(gè)傳輸層消息包的容量,則直接返回資源內(nèi)容給網(wǎng)關(guān);如果資源容量超過ー個(gè)傳輸層消息包的容量,則返回資源容量信息。可選地,傳感器可使用分片選項(xiàng),根據(jù)自身確定的分片容量,直接返回第一個(gè)分片。后續(xù)客戶端和傳感器根據(jù)此確定的分片容量,使用分片選項(xiàng)傳輸如下的分片。在本發(fā)明ー種替代實(shí)施例中,如果目標(biāo)數(shù)據(jù)資源為動(dòng)態(tài)數(shù)據(jù)資源,同時(shí)返回動(dòng)態(tài)數(shù)據(jù)資源指示給網(wǎng)關(guān),并用413 “請(qǐng)求資源太大”的狀態(tài)碼指示網(wǎng)關(guān)使用Block選項(xiàng)來獲取資源。如果數(shù)據(jù)資源為動(dòng)態(tài)資源,則指示信息中的資源容量表示的是當(dāng)前的資源快照(Snapshot)的容量信息,傳感器需要緩存此快照數(shù)據(jù);如果是靜態(tài)資源,則指示信息中的資源容量信息是精確的容量信息。本領(lǐng)域技術(shù)人員應(yīng)該理解,如果數(shù)據(jù)資源為動(dòng)態(tài)資源,則傳感器可以發(fā)送資源快照的校驗(yàn)碼,網(wǎng)關(guān)如果需要更新鮮的數(shù)據(jù),可以后續(xù)再發(fā)送新的資源獲取請(qǐng)求。ES250:網(wǎng)關(guān)根據(jù)數(shù)據(jù)資源容量信息,判斷需要使用分片選項(xiàng),并發(fā)送攜帯分片選項(xiàng)的請(qǐng)求消息,與傳感器器進(jìn)行分片容量協(xié)商,指示推薦的分片容量。ES260 :傳感器根據(jù)自身能力,確定分片容量,并將其返回給網(wǎng)關(guān)??蛇x地,傳感器同時(shí)返回分片總數(shù)。當(dāng)然,由于網(wǎng)關(guān)已經(jīng)獲取了數(shù)據(jù)資源容量信息,分片總數(shù)也可以由網(wǎng)關(guān)確定。需要說明的是,傳感器確定的分片容量只能小于或等于網(wǎng)關(guān)推薦的分片容量。ES270 :網(wǎng)關(guān)從I 一直到分片總數(shù) ,依次向傳感器發(fā)送請(qǐng)求,請(qǐng)求獲取與分片序號(hào)對(duì)應(yīng)的數(shù)據(jù)資源的分片數(shù)據(jù)。ES280 :傳感器根據(jù)確定的分片容量,返回該分片序號(hào)及與該分片序號(hào)對(duì)應(yīng)的數(shù)據(jù)資源的分片數(shù)據(jù),直到完全傳輸完畢。根據(jù)本發(fā)明的ー種優(yōu)選實(shí)施例,ES270中可以實(shí)現(xiàn)并行處理,即網(wǎng)關(guān)可以同時(shí)請(qǐng)求獲取多個(gè)分片消息,而不需要等待傳感器返回對(duì)前ー個(gè)分片請(qǐng)求消息的響應(yīng)消息。ES210至ES240的代碼例如為REQ GET/. well-known/core---發(fā)送請(qǐng)求到默認(rèn)的URI,即根目錄獲取資源列表;RES 2000K —響應(yīng)標(biāo)識(shí)獲取成功,并攜帶了 2組資源指示信息;</sensors/temp> ;ct = 41 ;n =" TemperatureC",—溫度資源,內(nèi)容類型 41,名稱為 TemperatureC ;</sensors/light> ;ct = 41 ;n = " LightLux"'—燈光資源,內(nèi)容類型 41,名矛爾カLightLux ;</sensors/firmware> ;ct = 52 ;n = " firmware" ;snapshot = 0__ 固件資源,內(nèi)容類型52,名稱為firmware,非動(dòng)態(tài)資源;</sensors/log> ;ct = 52 ;n = " log" ;snapshot = I—固件資源,內(nèi)容類型 52,名稱為log,動(dòng)態(tài)資源,當(dāng)前數(shù)據(jù)為快照snapshot ;REQ :GET/sensors/f irmware-請(qǐng)求固件資源RES 413 “Request Entity Too Large” Size :88000. 413 狀態(tài)碼表明請(qǐng)求的資源太大,其精確容量為88000字節(jié)。如果數(shù)據(jù)資源為動(dòng)態(tài)資源,即數(shù)據(jù)資源在傳輸?shù)倪^程會(huì)動(dòng)態(tài)變化,例如可以采用以下兩種方案實(shí)施處理(I)在開始傳送數(shù)據(jù)資源吋,對(duì)該資源建立快照(Snapshot),即緩存此刻該數(shù)據(jù)資源的容量信息,并傳輸這個(gè)容量信息,不管后續(xù)的變化;對(duì)應(yīng)上述方案。(2)如果數(shù)據(jù)資源在傳輸過程中被修改,傳感器可以在任意一個(gè)獲取數(shù)據(jù)資源的請(qǐng)求消息的響應(yīng)消息中,返回錯(cuò)誤碼,指示數(shù)據(jù)資源已更改,網(wǎng)關(guān)需要重新獲取??蛇x地,網(wǎng)關(guān)和傳感器在消息交互中,増加認(rèn)證信息。認(rèn)證信息中可包含身份標(biāo)識(shí)(ID)、基于身份標(biāo)識(shí)和密碼(Password)算出來的密鑰信息(Digest)。身份標(biāo)識(shí)和密碼可以是預(yù)先配置給網(wǎng)關(guān)和傳感器雙方。配置過程例如,密鑰的算法可以為Digest = MD5 (ID :Password),即對(duì)ID和Password組成的字符串使用MD5算法進(jìn)行哈希(Hash),Hash的值為Digest。發(fā)送方發(fā)送ID和Digest,接收方根據(jù)接收到ID和預(yù)先存儲(chǔ)的Password,根據(jù)同樣的算法得出Digest,與發(fā)送方發(fā)送的Digest進(jìn)行比較,如果一致,貝U認(rèn)證通過。網(wǎng)關(guān)從傳感器獲取數(shù)據(jù)資源吋,如圖2所示,需要知道數(shù)據(jù)資源容量信息。根據(jù)本發(fā)明ー種實(shí)施例,網(wǎng)關(guān)可以采用如下方案來獲取存儲(chǔ)于傳感器的數(shù)據(jù)資源容量信息。
(I)擴(kuò)展鏈接格式(Link-format)關(guān)鍵字在Link-format中,擴(kuò)展ー個(gè)關(guān)鍵字,_sn,或-snapshot,用于在獲取數(shù)據(jù)資源請(qǐng)求的響應(yīng)中,表明資源數(shù)據(jù)是否是快照數(shù)據(jù)。如果此參數(shù)不存在,或其值為0,表明是靜態(tài)資源,如果此參數(shù)的值為1,則表明是當(dāng)前數(shù)據(jù)是動(dòng)態(tài)資源,獲取的數(shù)據(jù)是當(dāng)前的快照。靜態(tài)資源是指一段時(shí)間內(nèi)相對(duì)穩(wěn)定的資源,即資源內(nèi)容不會(huì)頻繁更改。具體含義可以在標(biāo)準(zhǔn)中進(jìn)行定義。在本發(fā)明中,主要指資源的值不改變的情況。
還擴(kuò)展關(guān)鍵字-asz,表明資源的準(zhǔn)確容量的信息。消息實(shí)例網(wǎng)關(guān)向傳感器發(fā)送資源發(fā)現(xiàn)的請(qǐng)求REQ GET/. well-known/core---發(fā)送請(qǐng)求到默認(rèn)的URI,即根目錄獲取資源列表傳感器向網(wǎng)關(guān)發(fā)送資源的響應(yīng)RES 2000K —響應(yīng)標(biāo)識(shí)獲取成功,并攜帶了 2組資源指示信息</sensors/temp> ;ct = 41 ;n =" TemperatureC",—溫度資源,內(nèi)容類型 41,名稱為 TemperatureC</sensors/light> ;ct = 41 ;n = " LightLux"'—燈光資源,內(nèi)容類型 41,名矛爾カLightLux</sensors/firmwareク;ct = 52 ;n = " firmware " ;asz = 65000 ;snapshot =0—固件資源,內(nèi)容類型52,名稱為firmware,非動(dòng)態(tài)資源,精確容量為65000字節(jié);</sensors/log> ;ct = 52 ;n = " log " ;asz = 88000 ;snapshot = I—固件資源,內(nèi)容類型52,名稱為log,動(dòng)態(tài)資源,當(dāng)前數(shù)據(jù)為快照snapshot,其精確容量為88000字節(jié);此響應(yīng)消息是封裝在CoAP消息的消息體中的,接收方(即網(wǎng)關(guān))根據(jù)Link-format標(biāo)準(zhǔn)中的規(guī)定進(jìn)行解析。(2)增加狀態(tài)碼在收到網(wǎng)關(guān)的數(shù)據(jù)資源獲取請(qǐng)求時(shí),如果資源太大,ー個(gè)包傳送不下,傳感器用狀態(tài)碼來通知網(wǎng)關(guān),用于表明,資源太大,需要用Block Option來請(qǐng)求。比如,可以規(guī)定狀態(tài)碼413,用于表明當(dāng)前數(shù)據(jù)資源容量過大,指示網(wǎng)關(guān)在請(qǐng)求中用Block選項(xiàng)。可以根據(jù)需要規(guī)定其他的狀態(tài)碼,以用于表示其他含義,用于其它目的。消息實(shí)例網(wǎng)關(guān)向傳感器發(fā)送資源獲取的請(qǐng)求GET/sensordata傳感器向網(wǎng)關(guān)發(fā)送帯狀態(tài)碼的響應(yīng)ACK 413 (狀態(tài)碼,表明數(shù)據(jù)資源容量太大)(3)在CoAP的頭字段(Header)中增加ー個(gè)表明容量(Size)的選項(xiàng)(Option)網(wǎng)關(guān)在請(qǐng)求中,可以用容量選項(xiàng)(Size Option)來指示傳感器,讓傳感器返回?cái)?shù)據(jù)資源的容量;傳感器在響應(yīng)中,用Size Option來指明數(shù)據(jù)資源的容量?;蛘呤牵词咕W(wǎng)關(guān)沒有Size Option的指示,傳感器也在響應(yīng)中用Size Option指明資源容量,尤其是資源比較大的情況下,傳感器應(yīng)該指示。如果資源較小,傳感器直接在消息體(Body)中返回資源數(shù)據(jù),則網(wǎng)關(guān)應(yīng)該以資源數(shù)據(jù)的實(shí)際容量為準(zhǔn),Size Option中表明的資源容量可以用于核對(duì)。如果資源較大,傳感器不返回資源數(shù)據(jù),只用Size Option返回?cái)?shù)據(jù)的容量,同時(shí)用狀態(tài)碼指示給網(wǎng)關(guān),讓網(wǎng)關(guān)發(fā)起新的請(qǐng)求,用Block Option來請(qǐng)求。 Size Option的代碼可以為16,數(shù)據(jù)類型為整型,數(shù)據(jù)長(zhǎng)度為I 4個(gè)字節(jié),數(shù)據(jù)單位為字節(jié)。Size Option主要用于〈Get〉方法的響應(yīng)中,<Put>/〈Post>方法的請(qǐng)求中,用于表示資源的容量;如果是在〈Get〉方法的請(qǐng)求中,其值沒有實(shí)際的意義,推薦置為O。消息實(shí)例網(wǎng)關(guān)向傳感器發(fā)送資源獲取的請(qǐng)求GET/sensordata傳感器向網(wǎng)關(guān)發(fā)送帯狀態(tài)碼的響應(yīng)ACK+413+Size 51200 (50K 字節(jié))以下結(jié)合圖3說明如圖I所示實(shí)施例的具體實(shí)現(xiàn)過程。圖3表示的是網(wǎng)關(guān)向傳感器發(fā)送數(shù)據(jù)的說明性示例,僅為說明本發(fā)明的構(gòu)思,而不作為對(duì)本發(fā)明的限制。當(dāng)網(wǎng)關(guān)使用〈Get〉方法獲取第一個(gè)分片(Block)數(shù)據(jù)時(shí),NUM字段被設(shè)置為0,并攜帯推薦的分片容量(即SZX),傳感器可以選擇同意推薦的分片容量,或是選擇一個(gè)小于等于推薦的分片容量的分片容量,并在響應(yīng)中返回,同時(shí),在響應(yīng)中返回第一個(gè)分片的分片數(shù)據(jù)。因此,在NUM字段為O吋,〈Get〉請(qǐng)求有雙重語義,一是獲取第一個(gè)分片數(shù)據(jù),ニ是進(jìn)行分片容量的協(xié)商。這樣帶來協(xié)議在處理上的ニ義性,而且無法攜帯數(shù)據(jù)容量等信息。本發(fā)明實(shí)施例對(duì)此進(jìn)行了改進(jìn),在本發(fā)明的一種實(shí)施例中,網(wǎng)關(guān)在〈Get〉方法的請(qǐng)求中使用Block Option時(shí),如果NUM字段被設(shè)置為0,表示雙方只進(jìn)行分片容量的協(xié)商,以及分片總數(shù)的協(xié)商。即傳感器在響應(yīng)中,使用NUM字段返回分片總數(shù),使用SZX字段返回傳感器確定的分片容量。M字段可以去掉,節(jié)省ー個(gè)BH,用于NUM字段。因?yàn)檎?qǐng)求方,例如網(wǎng)關(guān)知道分片總數(shù),所以從分片的NUM字段就可以知道該分片是否是最后ー個(gè)分片,因此就不需要再使用M字段。在這種情況下,如果請(qǐng)求獲取第一個(gè)分片的分片數(shù)據(jù),則將NUM設(shè)置為I,依次類推。需要說明的是,如果網(wǎng)關(guān)發(fā)送第一個(gè)請(qǐng)求時(shí),不知道數(shù)據(jù)資源的容量,所以BlockOption可以使用一個(gè)字節(jié),如果傳感器的數(shù)據(jù)資源較大,分片數(shù)目較大,則傳感器可以在響應(yīng)中使用ニ個(gè)字節(jié)或者三個(gè)字節(jié)來返回分片總數(shù)。當(dāng)Block Option為2個(gè)字節(jié)時(shí),其設(shè)計(jì)成SZX字段占用第二個(gè)字節(jié)的最后三位,表示分片容量;NUM字段占用第一個(gè)字節(jié)加上第二個(gè)字節(jié)的前5位,表示當(dāng)前分片序號(hào);如果是在NUM為O的請(qǐng)求對(duì)應(yīng)的響應(yīng)消息中,則表示分片總數(shù)。本領(lǐng)域技術(shù)人員理解,可以用消息標(biāo)識(shí)(Message ID)來關(guān)聯(lián)請(qǐng)求與響應(yīng),即請(qǐng)求和響應(yīng)中都攜帶卩隹ー的事務(wù)標(biāo)識(shí),這樣傳感器就能理解此響應(yīng)消息是用于返回分片總數(shù)。以下舉例說明分片容量協(xié)商過程,消息實(shí)例為網(wǎng)關(guān)向傳感器發(fā)送資源獲取的請(qǐng)求GET 00000 101 (NUM為0,SZX為101,即5,表示分片容量為2的9次方,即512)傳感器向網(wǎng)關(guān)發(fā)送的響應(yīng)ACK 10000 100 (NUM為10000,即總分片數(shù)為32,SZX為100,即4,表示分片容量為2的8次方,即256)
此設(shè)計(jì)省掉了ー個(gè)比特位(BH),即把M位給省掉了,技術(shù)優(yōu)勢(shì)是節(jié)省了數(shù)據(jù)流量并且對(duì)現(xiàn)有設(shè)計(jì)的改動(dòng)不大。在這種實(shí)施方式中,分片容量(SZX)字段每次仍然要發(fā)送。在現(xiàn)有技術(shù)中,分片容量(即SZX字段)毎次都要發(fā)送,不管是在請(qǐng)求消息中還是響應(yīng)消息中,除了第一個(gè)分片和最后ー個(gè)分片中使用的分片容量可能不一樣之外,其他的分片容量全部都是ー樣的。重復(fù)互相傳輸相同的NUM字段浪費(fèi)了傳輸資源。 在本發(fā)明實(shí)施例中,網(wǎng)關(guān)在〈Get〉方法的請(qǐng)求中使用Block Option時(shí),如果NUM被設(shè)置為0,表示雙方只進(jìn)行分片容量的協(xié)商,以及分片總數(shù)的協(xié)商。即傳感器在響應(yīng)中,使用NUM字段返回總的分片數(shù),使用SZX字段返回傳感器確定的分片容量。并且網(wǎng)關(guān)和傳感器雙方存儲(chǔ)所確定的分片容量,用于之后的分片數(shù)據(jù)傳輸消息。除了最后ー個(gè)分片數(shù)據(jù)之夕卜。網(wǎng)關(guān)在后續(xù)〈Get〉方法的請(qǐng)求中,只發(fā)送所請(qǐng)求的當(dāng)前分片序號(hào),而不發(fā)送已經(jīng)確定并保持不變的分片容量,而且傳感器在響應(yīng)消息中,也只發(fā)送當(dāng)前的分片序號(hào)和與該分片序號(hào)對(duì)應(yīng)的分片數(shù)據(jù),不再發(fā)送分片容量。在這種情況下,NUM為I時(shí),表示請(qǐng)求第一個(gè)分片的分片數(shù)據(jù),依次類推。以采用〈GET〉命令從傳感器獲取數(shù)據(jù)資源為例,說明上述實(shí)施例,如圖3所示,新的Block Option的設(shè)計(jì)如下其中結(jié)構(gòu)(I)用于NUM為O的情況在〈Get〉請(qǐng)求中,NUM為0,SZX是第二個(gè)字節(jié),表示分片容量,Total Number表示分片總數(shù),在請(qǐng)求時(shí)不使用,不需要攜??;在〈Get〉響應(yīng)中,NUM為0,SZX表示傳感器確定的分片容量,Total Number表示分片總數(shù)。在現(xiàn)有技術(shù)中,分片容量的間隔比較大,比如2048、1024、512,不夠靈活。而實(shí)際上,512對(duì)于ー個(gè)Block來說,比較小,最好是剛好能夠放到ー個(gè)UDP包里,即1472個(gè)字節(jié)。本發(fā)明對(duì)此進(jìn)行了改進(jìn),在一種實(shí)施例中,對(duì)于SZX,可以采取新的公式,比如(SZX+1)*8,則其范圍可以為8 2048,但是遞減間隔為8。圖3中的結(jié)構(gòu)⑵和結(jié)構(gòu)(3)用于〈Get〉請(qǐng)求中NUM不為O的情況,即獲取分片數(shù)據(jù)時(shí)的情況當(dāng)NUM小于256時(shí),用一個(gè)字節(jié)來表示分片序號(hào),即結(jié)構(gòu)⑵;當(dāng)NUM大于2的8次方(即256),小于2的16次方(即65536)時(shí),使用兩個(gè)字節(jié)來表示分片序號(hào),即結(jié)構(gòu)(3)。由于結(jié)構(gòu)(2)中的NUM必須大于0,結(jié)構(gòu)(3)中的NUM字段的前一個(gè)字節(jié)也大于0,因此可以與結(jié)構(gòu)(I)區(qū)分開,對(duì)于〈Get〉響應(yīng),NUM字段的值與請(qǐng)求中一祥,也可以區(qū)分開。以下舉例說明,消息實(shí)例為網(wǎng)關(guān)向傳感器發(fā)送資源獲取的請(qǐng)求GET 00000000 00000101 (NUM 為 0,SZX 為 101,即 5,表示分片容量為 2 的 9 次方,即 512)傳感器向網(wǎng)關(guān)發(fā)送的響應(yīng)ACK 00000000 00000100 00000000 00010000(NUM 為 0, Total Number 為 10000,即分片總數(shù)為32,SZX為100,即4,表示分片容量為2的8次方,即256)。通過對(duì)Block Option重新設(shè)計(jì),可以在姆個(gè)請(qǐng)求或響應(yīng)中至少減少發(fā)送4個(gè)比特位,在分片較多的情況下,可以極大地提高傳輸效率,節(jié)省傳輸資源,同時(shí)也提高了網(wǎng)關(guān)和傳感器雙方的處理效率。
圖4示出了本發(fā)明的ー種替代實(shí)施例。在圖4所示實(shí)施例中,ES410至ES420與圖2所示實(shí)施例的ES210至ES240相同,不再重復(fù)描述。在圖4所示實(shí)施例中,在ES450,網(wǎng)關(guān)向傳感器發(fā)送〈GET〉請(qǐng)求,使用分片選項(xiàng)進(jìn)行分片容量協(xié)商,指示網(wǎng)關(guān)推薦的分片容量。在ES460中,傳感器選擇并確定合適的分片容量,用于將資源進(jìn)行分片,并將所有分片數(shù)據(jù)主動(dòng)推送給網(wǎng)關(guān),而不需要網(wǎng)關(guān)再發(fā)〈GET〉請(qǐng)求。在圖4實(shí)施例獲取數(shù)據(jù)資源過程中,分片選項(xiàng)的設(shè)計(jì)如圖5所示,其中結(jié)構(gòu)(I)用于網(wǎng)關(guān)向傳感器發(fā)送〈GET〉請(qǐng)求,SZX字段表示網(wǎng)關(guān)推薦的分片容量,傳感器最終選擇并確定的分片容量小于等于網(wǎng)關(guān)推薦的分片容量,NUM為O表示網(wǎng)關(guān)請(qǐng)求完整資源,NUM不為O表示網(wǎng)關(guān)請(qǐng)求具體第NUM個(gè)分片數(shù)據(jù),NUM不為O時(shí)傳感器只能使用SZX字段所指示的分片容量。
結(jié)構(gòu)(2)和結(jié)構(gòu)(3)用于傳感器向網(wǎng)關(guān)返回完整資源的分片響應(yīng)消息,如果針對(duì)某個(gè)具體分片數(shù)據(jù)請(qǐng)求的應(yīng)答,不需要攜帯分片選項(xiàng),結(jié)構(gòu)(2)和(3)中的M字段表示是否為最后一個(gè)分片,如果是M字段為O則表示最后ー個(gè)分片,為I表示不是最后一個(gè)分片,NUM字段表示傳感器所返回的是第幾個(gè)分片。以下舉例說明。消息實(shí)例為網(wǎng)關(guān)向傳感器發(fā)送數(shù)據(jù)資源獲取的請(qǐng)求CON GET 00000000 00000101 (NUM 為 0,SZX 為 101,即 5,表示分片容量為 2 的 9 次方,即512)傳感器向網(wǎng)關(guān)發(fā)送的響應(yīng)ACK 200 00000011 (NUM為1,M為1,表示發(fā)送的第一個(gè)分片,并且不是最后ー個(gè)分
片,分片容量為SZX字段指定的容量);傳感器繼續(xù)向網(wǎng)關(guān)發(fā)送CoAP響應(yīng)CON 200 00000101 (NUM為2,M為1,表示發(fā)送的第二個(gè)分片,并且不是最后ー個(gè)分片,分片容量為SZX字段指定的容量);網(wǎng)關(guān)返回對(duì)CON的ACK響應(yīng);傳感器向網(wǎng)關(guān)發(fā)送最后ー個(gè)分片CON 200 00000110 (NUM為3,M為0,表示發(fā)送的第三個(gè)分片,并且是最后ー個(gè)分
片,具體分片容量由實(shí)際讀出數(shù)據(jù)算出)。根據(jù)圖4所示的實(shí)施例,在網(wǎng)關(guān)從傳感器獲取完整的數(shù)據(jù)資源時(shí),僅需完成分片容量的協(xié)商,而不用發(fā)送大量的分片數(shù)據(jù)獲取請(qǐng)求,大大節(jié)省了數(shù)據(jù)傳輸流量。圖6示出了本發(fā)明的另ー種替代實(shí)施例。在圖6所示實(shí)施例中,ES610至ES640與圖2所示實(shí)施例的ES210至ES240相同,因此不再重復(fù)描述。圖6與圖2所示實(shí)施例不同之處在于,在ES650,網(wǎng)關(guān)向傳感器發(fā)送〈GET〉請(qǐng)求,請(qǐng)求獲取資源,使用分片選項(xiàng),指示網(wǎng)關(guān)推薦的分片容量,此時(shí)NUM字段填充的值為0,表示請(qǐng)求獲取最后一個(gè)分片;在ES660,傳感器響應(yīng)網(wǎng)關(guān)請(qǐng)求,返回確定的分片容量以及最后ー個(gè)分片的序號(hào)及與之對(duì)應(yīng)的分片數(shù)據(jù)。由于最后一個(gè)分片序號(hào)對(duì)應(yīng)分片總數(shù),所以在ES670,網(wǎng)關(guān)就可以依次或者并發(fā)獲取其他分片數(shù)據(jù)的請(qǐng)求。在ES680,傳感器根據(jù)確定的分片容量,返回該分片的序號(hào)及對(duì)應(yīng)的分片數(shù)據(jù)。ES670和ES680可以多次進(jìn)行交互,直至分片數(shù)據(jù)傳輸完畢。圖6實(shí)施例中采用的分片選項(xiàng)如圖7所示,例如采用兩個(gè)字節(jié)的分片選項(xiàng),僅包括NUM字段和SZX字段。以下結(jié)合圖6和圖7舉 例說明,消息實(shí)例為網(wǎng)關(guān)向傳感器發(fā)送資源獲取的請(qǐng)求CON GET 00000000 00000101 (NUM 為 0,表示要求獲取最后ー個(gè)分片,SZX 為 101,
即5,表示推薦的分片容量為2的9次方,即512)。傳感器向網(wǎng)關(guān)發(fā)送的響應(yīng)ACK 00000000 01000101 (NUM 為 1000 即為 8,表示返回的是第 8 個(gè)分片,SZX 為 101
即5,表示確定的分片容量為2的9次方,即512);根據(jù)第一次的返回信息,網(wǎng)關(guān)已經(jīng)知道了一共有8個(gè)分片,并且得到了第8個(gè)分片的數(shù)據(jù),網(wǎng)關(guān)繼續(xù)向傳感器發(fā)送CoAP請(qǐng)求,可以依次獲取也可以并發(fā)獲取剩下的分片數(shù)據(jù)。以下消息實(shí)例為請(qǐng)求獲取第一個(gè)分片的分片數(shù)據(jù)CON GET 00000000 00001101 (NUM 為 I,表示要求獲取第一個(gè)分片,SZX 為 101,即5,表示分片容量為2的9次方,即512);傳感器返回對(duì)CON的ACK響應(yīng),即第一個(gè)分片的數(shù)據(jù);網(wǎng)關(guān)可以依次或并發(fā)請(qǐng)求所有剰余分片,直到獲取完所有的數(shù)據(jù)。根據(jù)圖6所示的實(shí)施例,可以在分片容量協(xié)商的同吋,獲取最后一個(gè)分片的分片數(shù)據(jù),在后續(xù)分片數(shù)據(jù)獲取過程中,所使用的分片容量均相同,因此可以結(jié)合前述優(yōu)選實(shí)施例的描述,網(wǎng)關(guān)可以在發(fā)送獲取分片數(shù)據(jù)的請(qǐng)求時(shí),不再發(fā)送SZX字段,而僅發(fā)送NUM字段,由此可以節(jié)省數(shù)據(jù)流量,提高傳輸效率。圖8示出了使用分片選項(xiàng)向傳感器發(fā)送數(shù)據(jù),例如使用資源創(chuàng)建(Post)或更新(Put)請(qǐng)求時(shí)的實(shí)施例。以下結(jié)合圖8進(jìn)行具體描述。圖8所示詳細(xì)的流程說明如下ES810 :網(wǎng)關(guān)向傳感器發(fā)送資源創(chuàng)建(Post)或更新(Put)請(qǐng)求消息,利用Size選項(xiàng)發(fā)送資源的容量信息,利用分片選項(xiàng)指示推薦的分片容量及分片總數(shù),此處所述的分片總數(shù)是基于推薦的分片容量和待發(fā)送的數(shù)據(jù)資源的容量計(jì)算出的,請(qǐng)求消息體中不攜帶具體的資源數(shù)據(jù)。ES820 :傳感器如果愿意接收此數(shù)據(jù),則返回狀態(tài)碼例如為100 (即指示客戶端繼續(xù)發(fā)送),同時(shí)向網(wǎng)關(guān)返回確定的分片容量,所述確定的分片容量只能小于或等于網(wǎng)關(guān)推薦的分片容量;如果傳感器不愿意接收此數(shù)據(jù),則返回錯(cuò)誤碼指示客戶端不要繼續(xù)發(fā)送數(shù)據(jù)。比如,傳感器的存儲(chǔ)容量不足以存儲(chǔ)所指示的資源容量的數(shù)據(jù),則返回413 “RequestEntity Too Large” 的返回碼。ES830:網(wǎng)關(guān)根據(jù)傳感器返回的確定的分片容量,判斷是否與推薦的分片容量相同,如果相同,則跳轉(zhuǎn)到ES360;如果不相同,則根據(jù)傳感器返回的確定的分片容量信息,并根據(jù)數(shù)據(jù)資源容量,重新計(jì)算分片總數(shù)。ES840 :網(wǎng)關(guān)重新向傳感器發(fā)送確定的分片容量和重新計(jì)算的分片總數(shù)。ES850 :傳感器返回確定的分片容量。ES860 :網(wǎng)關(guān)從根據(jù)分片序號(hào)從I 一直到分片總數(shù),依次向傳感器發(fā)送與分片序號(hào)對(duì)應(yīng)的數(shù)據(jù)資源的分片數(shù)據(jù),直到完全傳輸完畢。ES870 :傳感器返回確定接收的消息,其中包含接收到的分片序號(hào)。根據(jù)本發(fā)明的一種優(yōu)選實(shí)施例,ES860中可以進(jìn)行并行處理,即網(wǎng)關(guān)可以同時(shí)向傳感器發(fā)送多個(gè)分片數(shù)據(jù),而不需要等待傳感器返回對(duì)前ー個(gè)分片消息的響應(yīng)消息??蛇x地,根據(jù)本發(fā)明的ー種優(yōu)選實(shí)施例,網(wǎng)關(guān)和傳感器在消息交互中,増加認(rèn)證信息。認(rèn)證消息的配置和交互方式可以采用參照?qǐng)D2所述的相同方式。為了提高傳輸效率,節(jié)省數(shù)據(jù)流量,根據(jù)本發(fā)明另ー種優(yōu)選實(shí)施例,如前面針對(duì)〈GET〉方法所述地那樣,在使用<Put>/〈P0st>方法的請(qǐng)求中,當(dāng)NUM為O是,不再是發(fā)送第ー個(gè)分片數(shù)據(jù),而是告知傳感器推薦的分片的容量和分片總數(shù)。傳感器可以返回響應(yīng)告知網(wǎng)關(guān)是否繼續(xù)發(fā)送數(shù)據(jù)。傳感器在響應(yīng)中,使用NUM字段返回總的分片數(shù),使用SZX字段返回傳感器確定的分片容量。并且網(wǎng)關(guān)和傳感器雙方存儲(chǔ)所確定的分片容量,用于之后的分片數(shù)據(jù)傳輸消息。除了最后ー個(gè)分片數(shù)據(jù)之外。網(wǎng)關(guān)在后續(xù)〈Put>/〈P0st>方法的請(qǐng)求中,只發(fā)送所請(qǐng)求的當(dāng)前分片序號(hào), 而不發(fā)送已經(jīng)確定并保持不變的分片容量,而且傳感器在響應(yīng)消息中,也只發(fā)送當(dāng)前的分片序號(hào)和與該分片序號(hào)對(duì)應(yīng)的分片數(shù)據(jù),不再發(fā)送分片容量。在這種情況下,NUM為I時(shí),表示請(qǐng)求第一個(gè)分片的分片數(shù)據(jù),依次類推。在此情況下,分片選項(xiàng)的設(shè)計(jì)以及使用方式均類似于圖3所示,以下參照?qǐng)D3來說明。在<Put>/〈P0st>請(qǐng)求中,NUM字段為0,SZX字段是第二個(gè)字節(jié),表示推薦的分片容量,Total Number表示待發(fā)送的分片總數(shù)數(shù);在<Put>/〈Post>響應(yīng)中,NUM字段為0,SZX字段表示傳感器確定的分片容量,Total Number沒用,不需要攜??;如果網(wǎng)關(guān)接收到的SZX字段與發(fā)送的不一致,需要用新的SZX再次發(fā)送〈Put〉/〈Post〉請(qǐng)求,并攜帶重新計(jì)算的分片總數(shù),傳感器再發(fā)回響應(yīng)。以后〈Put>/〈P0St>請(qǐng)求和響應(yīng)中,不再攜帯SZX字段。通過對(duì)分片選項(xiàng)重新設(shè)計(jì),可以在每個(gè)請(qǐng)求或響應(yīng)中至少減少發(fā)送4個(gè)比特位,在分片較多的情況下,可以極大地提高傳輸效率,節(jié)省傳輸資源,同時(shí)也提高了網(wǎng)關(guān)和傳感器雙方的處理效率。另外,現(xiàn)有技術(shù)在每次分片傳輸?shù)恼?qǐng)求中,都需要攜帯所請(qǐng)求資源的統(tǒng)ー資源標(biāo)識(shí)(URI,Unified Resource Identifier),通常URI都要占十幾到幾十個(gè)字節(jié),重復(fù)的傳輸會(huì)浪費(fèi)傳輸資源,本發(fā)明設(shè)計(jì)使用Token (令牌)來關(guān)聯(lián)分片傳輸?shù)亩鄠€(gè)請(qǐng)求,只在第一個(gè)分片消息中傳送URI,在后續(xù)的分片傳輸請(qǐng)求中,只需要攜帯Token即可,由于Token通常是I 8個(gè)字節(jié),因此可以節(jié)省一定的流量。圖9是本發(fā)明一種通過分片傳輸數(shù)據(jù)資源的客戶端設(shè)備的實(shí)施例。圖9所示客戶端設(shè)備900包括獲取單元910,用于獲取數(shù)據(jù)資源容量信息;發(fā)送單元920,用于發(fā)送攜帯分片選項(xiàng)的請(qǐng)求消息,其中所述分片選項(xiàng)包括推薦的分片容量,接收單元930,接收攜帶分片選項(xiàng)的響應(yīng)消息,其中所述分片選項(xiàng)包括確定的分片容量;和傳輸單元940,用于根據(jù)所述確定的分片容量以及所述數(shù)據(jù)資源容量信息,分片傳輸所述數(shù)據(jù)資源。根據(jù)本發(fā)明的一種優(yōu)選實(shí)施例,所述客戶端設(shè)備可以進(jìn)一歩包括存儲(chǔ)單元950,用于保存所述確定的分片容量。以便在數(shù)據(jù)資源傳輸過程中,不需要?dú)按尉l(fā)送SZX字段。根據(jù)本發(fā)明的另ー種優(yōu)選實(shí)施例,所述客戶端設(shè)備可以進(jìn)一歩包括認(rèn)證單元960,用于發(fā)送和接收認(rèn)證信息。圖10是本發(fā)明一種通過分片傳輸數(shù)據(jù)資源的服務(wù)器設(shè)備的實(shí)施例。圖10所示服務(wù)器設(shè)備1000包括接收單元1010,用于接收攜帯分片選項(xiàng)的請(qǐng)求消息,其中所述分片選項(xiàng)包括推薦的分片容量;發(fā)送單元1020,用于發(fā)送攜帯分片選項(xiàng)的響應(yīng)消息,其中所述分片選項(xiàng)包括確定的分片容量;和傳輸單元1030,用于根據(jù)所述確定的分片容量,分片傳輸所述數(shù)據(jù)資源。根據(jù)本發(fā)明一種實(shí)施例,發(fā)送單元1020還用于發(fā)送攜帯數(shù)據(jù)資源容量信息的消息,以便于傳輸單元1030根據(jù)所述確定的分片容量和所述數(shù)據(jù)資源容量信息,分片傳輸所述數(shù)據(jù)資源。根據(jù)本發(fā)明一種實(shí)施例,在接 收到一次請(qǐng)求時(shí),傳輸單元1030可以主動(dòng)地分片傳輸數(shù)據(jù),而不需要客戶端設(shè)備針對(duì)每個(gè)分片數(shù)據(jù)進(jìn)行請(qǐng)求。根據(jù)本發(fā)明ー種優(yōu)選實(shí)施例,所述服務(wù)器設(shè)備可以進(jìn)一歩包括存儲(chǔ)單元1040,用于保存所述確定的分片容量。以便在數(shù)據(jù)資源傳輸過程中,不需要?dú)按尉l(fā)送SZX字段。根據(jù)本發(fā)明的另ー種優(yōu)選實(shí)施例,所述服務(wù)器設(shè)備可以進(jìn)一歩包括認(rèn)證單元1050,用于發(fā)送和接收認(rèn)證信息。根據(jù)本發(fā)明實(shí)施例,網(wǎng)關(guān)可以獲知目標(biāo)資源的容量信息,用于決策是否用分片的方式來獲取資源,這樣避免了出錯(cuò)的可能性,也可以實(shí)現(xiàn)并發(fā)地請(qǐng)求分片,提高數(shù)據(jù)請(qǐng)求的效率,而且得知資源的容量也便于分配存儲(chǔ)空間,計(jì)算分片的數(shù)量。通過對(duì)分片選項(xiàng)重新設(shè)計(jì),可以在每個(gè)請(qǐng)求或響應(yīng)中至少少發(fā)送4個(gè)比特位,在分片較多的情況下,可以極大地提高傳輸效率,節(jié)省傳輸資源,同時(shí)也提高了雙方的處理效率。在現(xiàn)有技術(shù)中,在收到來自于客戶端的請(qǐng)求后,服務(wù)器可以立即發(fā)回響應(yīng),也可以先發(fā)回ー個(gè)Ack(Acknowledgement)響應(yīng)消息,表明接收到了請(qǐng)求消息,正在處理中,后續(xù)等處理完后,再發(fā)送響應(yīng)消息,即推遲的響應(yīng)。另外,客戶端可以訂閱一個(gè)資源的改變,服務(wù)器在接受客戶端對(duì)某個(gè)資源的訂閱后,一旦資源信息發(fā)生變化,就向客戶端發(fā)回通知消息。現(xiàn)有技術(shù)不能滿足如下的需求I、客戶端在請(qǐng)求中指示服務(wù)器,自己需要哪種方式的響應(yīng);2、客戶端要求服務(wù)器在某個(gè)規(guī)定的時(shí)間內(nèi)發(fā)回響應(yīng);3、在通知消息的傳送過程中,由于網(wǎng)絡(luò)傳輸能力不穩(wěn)定,可能服務(wù)器先發(fā)出的通知消息,比服務(wù)器后發(fā)出的消息,到達(dá)客戶端的時(shí)間要晩。這樣,客戶端后收到的資源信息實(shí)際上是陳舊的信息,客戶端需要有一種機(jī)制能夠探測(cè)多個(gè)通知消息的順序。圖11是本發(fā)明一種實(shí)施例的流程圖。在圖11所示實(shí)施例中,在S1110,客戶端向服務(wù)器發(fā)送請(qǐng)求消息,該請(qǐng)求消息攜帯響應(yīng)方式選項(xiàng),所述響應(yīng)方式選項(xiàng)可以是推遲響應(yīng)(Deferred Response)選項(xiàng)或者是令牌(Token)選項(xiàng),用來指示服務(wù)器,客戶端是否接收推遲的響應(yīng)。例如,所述響應(yīng)方式選項(xiàng)表示一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng)。如果響應(yīng)方式選項(xiàng)不攜帯,默認(rèn)為一次性響應(yīng),服務(wù)器可以確定是采用一次性的立即響應(yīng)或是推遲的一次性響應(yīng)。然后,在S1120,客戶端可以接收服務(wù)器發(fā)送的根據(jù)響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。在現(xiàn)有技術(shù)中,在收到來自于客戶端的請(qǐng)求后,服務(wù)器可以立即發(fā)回響應(yīng),也可以先發(fā)回ー個(gè)Ack,表明接收到了請(qǐng)求消息,正在處理中,后續(xù)等處理完后,再發(fā)送響應(yīng)消息,即推遲的響應(yīng)。另外,客戶端可以訂閱一個(gè)資源的改變,服務(wù)器在接受客戶端對(duì)某個(gè)資源的訂閱后,一旦資源信息發(fā)生變化,就向客戶端發(fā)回通知消息。在本發(fā)明的一種實(shí)施例中,例如可以采用一個(gè)字節(jié)的延遲(Deferred)選項(xiàng)來指示響應(yīng)方式,其中,可以使用前兩個(gè)比特位(Bit)來表示,用C來表示C = 00 :表示一次性的立即響應(yīng);C = 01 :表示推遲的一次性的響應(yīng);C = 10 :表示推遲的多個(gè) 響應(yīng),即訂閱;C= 11 :表示取消推遲的多個(gè)響應(yīng),即取消訂閱。對(duì)于客戶端發(fā)起的關(guān)于某個(gè)資源的訂閱,可以由客戶端取消訂閱,也可以服務(wù)器取消訂閱,比如服務(wù)器發(fā)回給客戶端ー個(gè)需要確認(rèn)的響應(yīng)消息,客戶端在預(yù)定的時(shí)間內(nèi)未能確認(rèn),則服務(wù)器可以認(rèn)為客戶端失去連接,從而取消訂閱。由于ー個(gè)字節(jié)是8個(gè)比特位,多余的后6個(gè)比特位(假設(shè)其值為T)可以用于表示推遲的一次性的響應(yīng)的推遲時(shí)間或者推遲的多個(gè)響應(yīng)的截止時(shí)間,即超過此時(shí)間后,自動(dòng)取消訂閱。當(dāng)C為01吋,T表示推遲的一次性響應(yīng)的推遲時(shí)間;當(dāng)C為10時(shí),T表示推遲的多個(gè)響應(yīng)的截止時(shí)間;當(dāng)T為00或11吋,T沒有意義,置為O。 對(duì)于這6個(gè)比特位,可以表示O 63之間的數(shù)值,假設(shè)為T,可以用2的T次方,來表明這個(gè)時(shí)間長(zhǎng)度,以秒為単位,即可以表示I 2~63秒。比如O 2'0 = I 秒;1:2~1 = 2秒;2:2~2 = 4秒;3 2'3 = 8 秒4 2'4 = 16 秒;...63:2~63 秒。在現(xiàn)有技術(shù)中,Max_Age字段用于表明某個(gè)響應(yīng)可以被緩存的最大時(shí)間,即表明響應(yīng)的新鮮度。本發(fā)明擴(kuò)展這一字段的含義,可以在請(qǐng)求中用Max_Age字段表示多個(gè)響應(yīng)之間的時(shí)間間隔的限制,比如多個(gè)通知消息不得高于此時(shí)間間隔,或者是不得低于此時(shí)間間隔。對(duì)于多個(gè)響應(yīng)的順序,可以用消息標(biāo)識(shí)(Message ID)來區(qū)分。tヒ如,規(guī)定消息標(biāo)識(shí)必須根據(jù)通響應(yīng)的順序來遞增地生成,接收方根據(jù)消息標(biāo)識(shí)的大小來判斷響應(yīng)的先后順序。根據(jù)本發(fā)明的另ー種實(shí)施例,可以使用Token(令牌)選項(xiàng)來指示響應(yīng)方式,如果Token值為0,來表示立即的響應(yīng),如果Token值不為0,則表示可以接受推遲的響應(yīng)。根據(jù)本發(fā)明的另ー種實(shí)施例,可以替代地或另外增加時(shí)間戳(Timestamp)選項(xiàng),與延遲選項(xiàng)單獨(dú)或者相結(jié)合地來指示響應(yīng)方式。具體來說,客戶端可以在請(qǐng)求中攜帶時(shí)間戳選項(xiàng),所述時(shí)間戳選項(xiàng)包括ー個(gè)截止時(shí)間的值,要求服務(wù)器在指定的時(shí)間內(nèi)返回響應(yīng);月艮務(wù)器在響應(yīng)消息中,攜帯時(shí)間戳選項(xiàng),表明響應(yīng)消息生成的時(shí)間,這樣,客戶端可以基于時(shí)間戳選項(xiàng)來判斷響應(yīng)消息的順序。在本發(fā)明ー種實(shí)施例中,所述時(shí)間戳選項(xiàng)的設(shè)計(jì)方案可以用I 6個(gè)字節(jié)來表示,如果表示的時(shí)間短,則用ー個(gè)字節(jié),如果時(shí)間長(zhǎng),則用3個(gè)字節(jié)或6個(gè)字節(jié)。具體表示方法例如以下兩種(I)用年、月、日、時(shí)、分、秒來表示,第一個(gè)字節(jié)表示年、第二個(gè)字節(jié)表示月,第三個(gè)字節(jié)表示日,第四個(gè)字節(jié)表示小吋,第五個(gè)字節(jié)表示分鐘,第六個(gè)字節(jié)表示秒,對(duì)于年份,例如可以以2000年為基礎(chǔ),其值表明2000年 之后的第幾年,比如為O時(shí),表明是2000年,為I時(shí),表明是2001年,最多可以表示2063年。(2)三個(gè)字節(jié)全部用秒來表示,最大可表示2~24_1秒,大約是136年。由此,客戶端可以知道返回的響應(yīng)消息的順序,避免數(shù)據(jù)傳輸延遲導(dǎo)致的錯(cuò)誤。與圖11所示的實(shí)施例對(duì)應(yīng),圖12是從服務(wù)器側(cè)來看,本發(fā)明實(shí)施例的方法的流程圖。本發(fā)明實(shí)施例的方法包括S1210 :接收客戶端發(fā)送的攜帶響應(yīng)方式選項(xiàng)的請(qǐng)求消息;S1220 :向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。下面結(jié)合具體的實(shí)施例進(jìn)ー步闡述本發(fā)明實(shí)施例的方案。實(shí)施例I :在步驟SlllO中發(fā)送的所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或者一次性的立即響應(yīng),并且所述請(qǐng)求消息還攜帶消息類型指示信息和延遲時(shí)間選項(xiàng)。這里的消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求,并且延遲時(shí)間選項(xiàng)用于指示多個(gè)服務(wù)器在所述延遲時(shí)間選項(xiàng)所指示的時(shí)間內(nèi),任意選擇ー個(gè)時(shí)間向客戶端發(fā)送響應(yīng)消息,以避免多個(gè)服務(wù)器同時(shí)發(fā)回響應(yīng)給客戶端,造成網(wǎng)絡(luò)擁塞,而且客戶端也來不及處理。例如,在所述延遲時(shí)間選項(xiàng)所指示的時(shí)間內(nèi),多個(gè)服務(wù)器各自經(jīng)過隨機(jī)延時(shí)后,再向客戶端發(fā)送響應(yīng)消息。例如,某個(gè)大樓管理員利用控制臺(tái)(多播網(wǎng)關(guān))發(fā)送向整個(gè)大樓的多個(gè)電燈控制器(服務(wù)器)發(fā)送開燈的指令(多播請(qǐng)求),要求各個(gè)電燈控制器在5秒鐘內(nèi)發(fā)回響應(yīng)以表明是否已經(jīng)開燈,則各個(gè)電燈控制器在5秒鐘內(nèi)分別經(jīng)過隨機(jī)延時(shí)后,向控制臺(tái)發(fā)回響應(yīng),表明是否已經(jīng)開燈。為了通知服務(wù)器所述請(qǐng)求消息為多播請(qǐng)求,這里所述的消息類型指示信息例如可以是預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的套接字端ロ ;或者預(yù)設(shè)的用于發(fā)送所述多播請(qǐng)求的網(wǎng)絡(luò)協(xié)議IP地址;或者預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的端口號(hào);或者所述請(qǐng)求消息中的消息類型指示選項(xiàng)。例如,I)服務(wù)器打開ー個(gè)特定的套接字(Socket)端ロ,并設(shè)置為網(wǎng)絡(luò)協(xié)議(InternetProtocol,簡(jiǎn)稱IP)多播接收,貝U客戶端通過該特定的Socket端ロ向服務(wù)器發(fā)送所述請(qǐng)求消息,以表示所述請(qǐng)求消息為多播請(qǐng)求;2)客戶端在所述請(qǐng)求消息中攜帶預(yù)設(shè)的IP地址,例如FF00: :/8的IPv6的前綴,服務(wù)器接收到請(qǐng)求消息后,檢查接收包的IP地址,如果該IP地址為預(yù)設(shè)的IP地址,則表示該請(qǐng)求消息是多播請(qǐng)求,否則是單播請(qǐng)求;3)客戶端通過預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的端口號(hào)來發(fā)送所述請(qǐng)求消息,例如coap://用于單播請(qǐng)求,coapm://用于多播請(qǐng)求,則服務(wù)器可以根據(jù)接收的請(qǐng)求消息的端口號(hào)來確定所述請(qǐng)求消息是單播請(qǐng)求還是多播請(qǐng)求。4)客戶端在請(qǐng)求消息中用消息類型指示選項(xiàng)字段來表明此請(qǐng)求是單播請(qǐng)求還是多播請(qǐng)求,服務(wù)器根據(jù)此字段來判斷。
根據(jù)本發(fā)明實(shí)施例,上述過程也適用于所述請(qǐng)求消息為單播請(qǐng)求的場(chǎng)景。服務(wù)器的行為在單播和多播場(chǎng)景下有所不同,主要區(qū)別是,對(duì)于單播請(qǐng)求,超時(shí)后,服務(wù)器放棄發(fā)回響應(yīng)給客戶端;對(duì)于多播請(qǐng)求,超時(shí)后,服務(wù)器還是會(huì)發(fā)回響應(yīng)給客戶端,雖然響應(yīng)超時(shí)了,但由于不是所有的服務(wù)器都超時(shí),所以不會(huì)造成擁塞問題。根據(jù)本發(fā)明實(shí)施例,所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng),以指示服務(wù)器在該截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)返回響應(yīng)消息。由此,客戶端可以在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,接收服務(wù)器發(fā)送的響應(yīng)消息。
實(shí)施例2 在步驟SlllO中發(fā)送的請(qǐng)求消息中,響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),即表示客戶端訂閱(Observe)服務(wù)器的數(shù)據(jù)。在這種情況下,服務(wù)器向客戶端發(fā)送通知響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,通知響應(yīng)消息攜帶最長(zhǎng)存續(xù)時(shí)間(Max-Age)選項(xiàng)和留候時(shí)間(Patience)選項(xiàng),其中Max-Age選項(xiàng)用于表明資源的值的最長(zhǎng)有效時(shí)間;所述Patience選項(xiàng)用于指示服務(wù)器將在Max-Age過期后,在所述Patience選項(xiàng)所指示的時(shí)間內(nèi)作出響應(yīng)。在資源的值沒有改變的情況下,服務(wù)器可以用此Patience選項(xiàng),來延遲響應(yīng)消息的發(fā)送。在這種情況下,客戶端可以用此來判斷,在Max-Age過期后,服務(wù)器將盡量在Patience時(shí)間到期前,發(fā)送通知響應(yīng)給客戶端。因此,客戶端可以在Max-Age過期后,繼續(xù)保持與所述服務(wù)器的訂閱關(guān)系,保持時(shí)間為所述Patience選項(xiàng)所指示的時(shí)間。這樣可以避免客戶端在Max-Age過期后,重新向服務(wù)器發(fā)送請(qǐng)求消息。實(shí)施例3 在步驟SlllO中發(fā)送的所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),表示客戶端訂閱(Observe)服務(wù)器的數(shù)據(jù)。在這種情況下,客戶端向服務(wù)器發(fā)送的所述請(qǐng)求消息中包括保持時(shí)間(Keep Alive)選項(xiàng)??蛻舳丝梢愿鶕?jù)情況設(shè)置Keep Alive選項(xiàng)的取值,比如在本例中可以設(shè)置為1000秒。服務(wù)器收到該請(qǐng)求消息后,向客戶端回復(fù)確認(rèn)(Acknowledgement,簡(jiǎn)稱ACK)消息,其中攜帶當(dāng)前訂閱資源的最新取值,同時(shí)獲取KeepAlive選項(xiàng),并在此時(shí)開啟ー個(gè)定時(shí)器,其值為KeepAlive設(shè)置的取值。在Keep Alive選項(xiàng)所述指示的時(shí)間內(nèi),如果客戶端訂閱的資源在服務(wù)器上發(fā)生變化,則服務(wù)器向客戶端發(fā)送第三通知響應(yīng),即客戶端接收服務(wù)器發(fā)送的第三通知響應(yīng),該所述第二通知響應(yīng)為不需要確認(rèn)型消息。當(dāng)按Ke印-Alive指示的時(shí)間超時(shí)之后,服務(wù)器向客戶端發(fā)送第四通知響應(yīng),即客戶端接收服務(wù)器發(fā)送的第四通知響應(yīng),其中所述第四通知響應(yīng)為需要確認(rèn)型消息。然后服務(wù)器等待客戶端返回ACK消息。當(dāng)服務(wù)器收到來自客戶端的ACK消息后,則說明客戶端運(yùn)行正常。然后可以重復(fù)上面的過程,服務(wù)器重新開啟定時(shí)器,通過不需要確認(rèn)型消息向客戶端發(fā)送響應(yīng)消息。如果在一定時(shí)間內(nèi)服務(wù)器沒有收到客戶端的ACK消息,則服務(wù)器將重新發(fā)送上述第四通知響應(yīng)。如果重發(fā)次數(shù)到達(dá)預(yù)設(shè)的次數(shù)閾值時(shí),服務(wù)器還是沒有收到客戶端的返回的ACK消息,則服務(wù)器停止重發(fā),同時(shí)也停止同客戶端的訂閱關(guān)系。圖13是實(shí)施例3的實(shí)現(xiàn)過程的消息交互圖。圖13中的各個(gè)消息如下ES1310 :客戶端向服務(wù)器發(fā)送訂閱請(qǐng)求,其中攜帶KeepAlive選項(xiàng);ES1320 :服務(wù)器向客戶端回復(fù)ACK消息,其中攜帯當(dāng)前訂閱資源的最新取值,開啟定時(shí)器;ES1330:當(dāng)服務(wù)器 上訂閱的資源發(fā)生變化時(shí),該服務(wù)器向客戶端發(fā)送通知響應(yīng),該通知響應(yīng)為不需要確認(rèn)型消息;ES1340:當(dāng)定時(shí)器超時(shí)后,服務(wù)器采用需要確認(rèn)型消息發(fā)送通知響應(yīng),并等待客戶端返回的ACK消息;ES 1350 :客戶端服務(wù)器返回ー個(gè)ACK消息;ES1360 :服務(wù)器收到來自客戶端的ACK消息,重新開啟定時(shí)器;ES1370:當(dāng)服務(wù)器上訂閱的資源發(fā)生變化時(shí),該服務(wù)器向客戶端發(fā)送通知響應(yīng),該通知響應(yīng)為不需要確認(rèn)型消息;ES1380:當(dāng)定時(shí)器超時(shí)后,服務(wù)器采用需要確認(rèn)型消息發(fā)送通知響應(yīng),并等待客戶端返回的ACK消息;ES1390 :服務(wù)器在一定時(shí)間內(nèi)沒有收到客戶端的ACK消息,服務(wù)器將重新發(fā)送上述通知響應(yīng),當(dāng)重發(fā)次數(shù)到達(dá)最大,服務(wù)器還是沒有收到客戶端的ACK消息,則服務(wù)器停止重發(fā),同時(shí)也停止同客戶端的訂閱關(guān)系。ES1310至ES1390的代碼例如為REQ GET/resource-URI/observe = 0/keep-alive = 1000---發(fā)送請(qǐng)求到需要訂
閱的資源的URI,攜帶訂閱標(biāo)示observe選項(xiàng)和Keep Alive選項(xiàng);RES :ACK/payload ---先回復(fù)ACK響應(yīng),在payload里攜帶資源最新的數(shù)據(jù);RES :N0N/payload ---當(dāng)資源有更新時(shí),服務(wù)器采用非確認(rèn)的消息回復(fù)通知響
應(yīng);RES C0N/payload ---過了 Keep Alive選項(xiàng)設(shè)置的定時(shí)器后,服務(wù)器采用需
要確認(rèn)型消息回復(fù)通知響應(yīng);REQ : ACK/客戶端回復(fù)ACK消息RES N0N/payload ---當(dāng)資源有更新時(shí),服務(wù)器采用非確認(rèn)的消息回復(fù)通知響
應(yīng);RES C0N/payload ---過了 Keep Alive選項(xiàng)設(shè)置的定時(shí)器后,服務(wù)器采用確
認(rèn)的消息回復(fù)通知響應(yīng);RES :C0N/payload在一定時(shí)間內(nèi)沒有收到客戶端的ACK消息,重新發(fā)送上述消息;根據(jù)本發(fā)明實(shí)施例,KeepAlive選項(xiàng)可以定義為可選選項(xiàng),即如果CoAP服務(wù)器不支持該選項(xiàng),可以無視該選項(xiàng),按沒有該選項(xiàng)處理收到的請(qǐng)求。根據(jù)本發(fā)明實(shí)施例,該Keep Alive選項(xiàng)的取值是整數(shù)型的,大小可以是變長(zhǎng)的。根據(jù)具體需要,其大小可以是4bit (比持),或8個(gè)bit,或12bit,甚至更大,本發(fā)明實(shí)施例并不限制其具體的取值范圍。實(shí)施例4 在實(shí)際應(yīng)用中,服務(wù)器因?yàn)閾砣仍蚨鴮?dǎo)致高負(fù)荷時(shí),根據(jù)服務(wù)器設(shè)備的配置策略,為了防止后續(xù)信令處理等操作導(dǎo)致服務(wù)器設(shè)備徹底癱瘓,服務(wù)器設(shè)備在此時(shí)間點(diǎn)上開啟擁塞控制,即在接下來的一定時(shí)間內(nèi),不再處理收到的任何新的請(qǐng)求消息。考慮本發(fā)明實(shí)施例在這種場(chǎng)景中的應(yīng)用。例如,在步驟SlllO中,客戶端向服務(wù)器發(fā)送請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),且所述請(qǐng)求消息還包括消息類型指示信息和截止時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為單播請(qǐng)求,所述請(qǐng)求消息為需要確認(rèn)型消息。本領(lǐng)域技術(shù)人員可以理解,如果服務(wù)器收到的是不需要確認(rèn)型請(qǐng)求消 息,則直接將消息忽略,不回復(fù)任何響應(yīng)。如果此時(shí)服務(wù)器發(fā)生擁塞并開啟了擁塞控制,則在步驟S1120中,服務(wù)器向所述客戶端發(fā)送特定ACK消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼例如為5.03 “service unavailable”(服務(wù)不可用)響應(yīng)代碼,用于表示服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)?;蛘叻?wù)器可以先向所述客戶端發(fā)送ACK消息,接著向所述客戶端發(fā)送響應(yīng)消息,其中所述響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)。延遲接入時(shí)間選項(xiàng)的值代表了延遲接入的具體時(shí)間,單位例如是秒,最大值例如為2N秒,超過該最大值的值例如被服務(wù)器按照默認(rèn)值2M秒來處理。如果此選項(xiàng)值為零時(shí)或者此選項(xiàng)沒有出現(xiàn)在響應(yīng)消息中吋,則客戶端無需執(zhí)行額外操作,可在任意時(shí)間嘗試向服務(wù)器再次發(fā)出請(qǐng)求。根據(jù)本發(fā)明實(shí)施例,延遲接入時(shí)間選項(xiàng)為可選類型,即無法被CoAP客戶端識(shí)別時(shí)會(huì)直接被忽略。圖14是實(shí)施例4的消息交互圖。如圖所示,E1400 :服務(wù)器開啟擁塞控制;E1402 :客戶端向所述服務(wù)器發(fā)送需要確認(rèn)型請(qǐng)求消息;E1404 :服務(wù)器向客戶端發(fā)送ACK消息,該ACK消息包含延遲接入選項(xiàng)(新)、響應(yīng)代碼以及空的負(fù)載E1404:客戶端立即清除緩存的等待向所述服務(wù)器發(fā)送的其他請(qǐng)求消息。E1406 :在延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi),向服務(wù)器發(fā)送請(qǐng)求消息;E1408 :服務(wù)器將該請(qǐng)求消息忽略;E1410 :等待延遲接入時(shí)間選項(xiàng)所指示的時(shí)間;E1412 :服務(wù)器負(fù)荷恢復(fù)正常;E1414 :客戶端向服務(wù)器重新發(fā)送所述請(qǐng)求消息;E1416 :服務(wù)器返回正常ACK消息。由于CoAP協(xié)議的版本不同,實(shí)際投入使用的CoAP客戶端可能沒有及時(shí)升級(jí),以至于無法識(shí)別所述延遲接入選項(xiàng)。因此即使在E1404,帶有延遲接入時(shí)間選項(xiàng)的ACK發(fā)送到了客戶端,由于客戶端版本較老無法識(shí)別延遲接入時(shí)間選項(xiàng),該客戶端設(shè)備將會(huì)忽略該選項(xiàng)(也有可能是其他異常情況導(dǎo)致),并且可能在接下來的任意時(shí)間,在E1406再次嘗試發(fā)送請(qǐng)求消息至已經(jīng)遭遇擁塞的服務(wù)器設(shè)備。服務(wù)器設(shè)備可以根據(jù)配置的策略,忽略該請(qǐng)求消息,或再次發(fā)送帶有新的延遲接入時(shí)間選項(xiàng)的響應(yīng)消息,該新的延遲接入時(shí)間選項(xiàng)的取值可以小于先前已經(jīng)發(fā)送的延遲接入時(shí)間選項(xiàng)的取值。需要說明的是,本實(shí)施例中為了方便解釋,都使用了 Piggy-backed(附帶式)的響應(yīng)消息,即各選項(xiàng)夾帶在ACK消息中直接傳輸。根據(jù)本發(fā)明實(shí)施例,也可以使用分離式的響應(yīng),即確認(rèn)消息和響應(yīng)消息分兩次發(fā)送,延遲接入選項(xiàng)總是屬于響應(yīng)消息的一部分。實(shí)施例5
與服務(wù)器側(cè)發(fā)生擁塞類似,客戶端也可能因?yàn)槟撤N原因發(fā)生擁塞而導(dǎo)致高負(fù)荷。當(dāng)客戶端由于擁塞等原因而導(dǎo)致高負(fù)荷時(shí),根據(jù)客戶端的配置策略,為了防止后續(xù)信令處理等操作導(dǎo)致客戶端徹底癱瘓,客戶端在此時(shí)間點(diǎn)上開啟擁塞控制,即在接下來的一定時(shí)間內(nèi),不再處理收到的任何新的請(qǐng)求消息??紤]本發(fā)明實(shí)施例在這種場(chǎng)景中的應(yīng)用。例如,在步驟SlllO中,客戶端向服務(wù)器發(fā)送所述請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),即客戶端訂閱服務(wù)器上的資源信息。然后,在步驟S1120中,客戶端收到服務(wù)器發(fā)送的響應(yīng)消息,例如在所訂閱的資源在服務(wù)器上發(fā)生了變化的情況下,服務(wù)器向客戶端發(fā)送需要確認(rèn)型響應(yīng)消息,其中攜帯最新的資源信息。如果此時(shí)客戶端開啟了擁塞控制,則會(huì)向服務(wù)器發(fā)送特定的ACK消息,所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí) 間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn)。或者客戶端可以先向所述服務(wù)器發(fā)送ACK消息,接著向所述客戶端發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述需要確認(rèn)型響應(yīng)消息的確認(rèn)。在客戶端開啟擁塞控制的情況下,如果在步驟S1120中客戶端接收到的是不需要確認(rèn)型響應(yīng)消息,則客戶端將該消息直接忽略,不回復(fù)任何確認(rèn)消息。如上所述,延遲接入時(shí)間選項(xiàng)的值代表了延遲接入的具體時(shí)間,単位例如是秒,最大值例如為2N秒,超過該最大值的值例如被客戶端按照默認(rèn)值2M秒來處理。如果此選項(xiàng)值為零時(shí)或者此選項(xiàng)沒有出現(xiàn)在響應(yīng)消息中時(shí),則服務(wù)器無需執(zhí)行額外操作,可在任意時(shí)間嘗試向客戶端再次發(fā)出需要確認(rèn)形響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,延遲接入時(shí)間選項(xiàng)為可選類型,即無法被CoAP服務(wù)器識(shí)別時(shí)會(huì)直接被忽略。服務(wù)器收到上述特定的ACK消息后,如果能夠識(shí)別消息中的延遲接入時(shí)間選項(xiàng),則暫停所有的與所述客戶端之間的訂閱推送,開始等待,即等待所述客戶端恢復(fù)正常。在延遲接入時(shí)間選項(xiàng)所指示的時(shí)間經(jīng)過之后,客戶端恢復(fù)正常,服務(wù)器的等待計(jì)時(shí)也已結(jié)束,因此服務(wù)器向客戶端設(shè)備重發(fā)需要確認(rèn)的響應(yīng)消息,負(fù)載恢復(fù)正常的客戶端此時(shí)會(huì)回復(fù)ー個(gè)正常的確認(rèn)消息。圖15是實(shí)施例5中的消息交互圖。如圖16所示,ES1500 :客戶端向服務(wù)器發(fā)送訂閱請(qǐng)求;ES1502 :服務(wù)器向客戶端發(fā)送需要確認(rèn)的響應(yīng)消息;ES1504 :客戶端向服務(wù)器發(fā)送ACK消息;ES1506 :客戶端開啟擁塞控制;ES1508 :服務(wù)器向客戶端發(fā)送需要確認(rèn)的響應(yīng)消息;ES1510 :客戶端向服務(wù)器發(fā)送攜帯相應(yīng)代碼和延遲接入時(shí)間選項(xiàng)的特定的ACK消息;ES1512 :服務(wù)器暫停向服務(wù)器推送訂閱的資源;ES1514 :服務(wù)器等待延遲接入時(shí)間選項(xiàng)所指示的時(shí)間;ES1516 :客戶端負(fù)荷恢復(fù)正常;ES1518 :服務(wù)器向客戶端重新發(fā)送需要確認(rèn)的響應(yīng)消息;ES 1520 :客戶端向服務(wù)器發(fā)送ACK消息。
值得說明的是,正常情況下,客戶端設(shè)備收到服務(wù)器設(shè)備推送的需要確認(rèn)的請(qǐng)求消息后,都回復(fù)的是ACK確認(rèn)消息,只有當(dāng)客戶端需要向服務(wù)器通知延遲接入時(shí)才會(huì)用piggybacked的方式攜帶具體響應(yīng)內(nèi)容或者分開傳送ACK和響應(yīng)。根據(jù)本發(fā)明實(shí)施例,通過在消息交互過程中指定響應(yīng)方式選項(xiàng),客戶端可以指定所需的響應(yīng),提高了 CoAP的消息交互效率。實(shí)施例6 本實(shí)施例描述了服務(wù)器和客戶端進(jìn)行交互的流程I、客戶端向服務(wù)器發(fā)送請(qǐng)求,其中攜帯超時(shí)選項(xiàng),并指示此請(qǐng)求是單播請(qǐng)求或是多播請(qǐng)求,是資源訂閱請(qǐng)求或是一次性請(qǐng)求;2、服務(wù)器根據(jù)接收到的請(qǐng)求進(jìn)行判斷,如果該請(qǐng)求是一次性請(qǐng)求,則服務(wù)器繼續(xù)判斷是單播請(qǐng)求還是多播請(qǐng)求 A.如果該請(qǐng)求是單播一次性請(qǐng)求,服務(wù)器預(yù)先判斷自己是否能夠在超時(shí)選項(xiàng)指定的時(shí)間內(nèi)完成客戶端的請(qǐng)求,如果預(yù)測(cè)不能完成,則發(fā)回ー個(gè)狀態(tài)碼(比如5. 04,Timeout,超吋)給客戶端,表明不能在預(yù)定時(shí)間內(nèi)完成客戶端的請(qǐng)求;可選地,服務(wù)器預(yù)測(cè)自身空閑的時(shí)間,或是自身可以完成客戶端的請(qǐng)求的時(shí)間,并把這個(gè)預(yù)測(cè)時(shí)間在響應(yīng)中發(fā)回給客戶端,指示客戶端在指定的預(yù)測(cè)時(shí)間之后,再次發(fā)送請(qǐng)求;如果服務(wù)器能夠在指定的超時(shí)時(shí)間內(nèi)完成請(qǐng)求,則在超時(shí)時(shí)間過期前,發(fā)回響應(yīng)。B.如果該請(qǐng)求是多播一次性請(qǐng)求,服務(wù)器在指定的時(shí)間內(nèi)任意選擇ー個(gè)時(shí)間,返回響應(yīng)給客戶端。3、如果服務(wù)器判斷客戶端的請(qǐng)求是訂閱請(qǐng)求,服務(wù)器繼續(xù)判斷該請(qǐng)求中攜帯的超時(shí)時(shí)間是Patience選項(xiàng),還是Keep-alive選項(xiàng)A.如果請(qǐng)求中攜帯的是Patience選項(xiàng),則表明服務(wù)器需要在指定時(shí)間內(nèi)發(fā)回第ー個(gè)通知消息;服務(wù)器在通知消息中攜帶資源的信息,以及Max-Age選項(xiàng)和Patience時(shí)間選項(xiàng),要求客戶端在指定時(shí)間內(nèi)保持與服務(wù)器資源的訂閱狀態(tài)。B.如果請(qǐng)求中攜帶的是Keep-alive時(shí)間選項(xiàng),服務(wù)器在Keep-alive時(shí)間內(nèi),使用Non-conf irmabIe消息的方式,給客戶端發(fā)送通知消息;在Keep-alive時(shí)間過期后,使用Conf irmab I e消息的方式,給客戶端發(fā)送通知消息。圖16是根據(jù)本發(fā)明的一種傳輸數(shù)據(jù)資源的客戶端設(shè)備的實(shí)施例的框圖,其中所述客戶端設(shè)備1600包括發(fā)送模塊1610,用于發(fā)送攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息;和接收模塊1620,用于接收根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。參照?qǐng)D11所述的本發(fā)明的實(shí)施例所描述的過程和特征均適用于圖16所示的客戶端設(shè)備。具體來說,例如,發(fā)送模塊1610發(fā)送的請(qǐng)求消息中攜帯的響應(yīng)方式選項(xiàng)可以是推遲選項(xiàng),例如可以為一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng)。根據(jù)ー種實(shí)施例,發(fā)送模塊1610發(fā)送的請(qǐng)求消息中攜帯的響應(yīng)方式選項(xiàng)可以表示推遲的一次性的響應(yīng)的推遲時(shí)間或者推遲的多個(gè)響應(yīng)的截止時(shí)間。根據(jù)ー種實(shí)施例,發(fā)送模塊1610發(fā)送攜帶時(shí)間戳選項(xiàng)的請(qǐng)求消息,該時(shí)間戳表示接收響應(yīng)的截止時(shí)間;接收模塊1620接收攜帶時(shí)間戳選項(xiàng)的響應(yīng)消息,該時(shí)間戳表示響應(yīng)消息的生成時(shí)間。接收模塊1620根據(jù)接收到的響應(yīng)消息中的時(shí)間戳所表示的時(shí)間確定響應(yīng)消息的順序。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還攜帶消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或單播請(qǐng)求;所述接收模塊1620用于在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),接收服務(wù)器發(fā)送的響應(yīng)消息。
根據(jù)本發(fā)明實(shí)施例,所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng),所述接收模塊1620用于在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,接收服務(wù)器發(fā)送的響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),所述接收模塊1620用于接收所述服務(wù)器發(fā)送的通知響應(yīng)消息,其中所述通知響應(yīng)消息攜帯最長(zhǎng)存續(xù)時(shí)間選項(xiàng)和留候時(shí)間選項(xiàng),其中所述留候時(shí)間選項(xiàng)用于指示,在所述最長(zhǎng)存續(xù)時(shí)間選項(xiàng)所指示時(shí)間超時(shí)之后,所述客戶端保持與所述服務(wù)器的訂閱關(guān)系,保持時(shí)間為所述留候選項(xiàng)所指示的時(shí)間。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),所述請(qǐng)求消息還包括保持時(shí)間選項(xiàng),所述接收模塊1620用于在所述保持時(shí)間選項(xiàng)指示的時(shí)間內(nèi),接收服務(wù)器發(fā)送的第一通知響應(yīng),其中所述第一通知響應(yīng)為不需要確認(rèn)型消息;在所述保持時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之后,所述接收模塊1620用于接收所述服務(wù)器發(fā)送的第二通知響應(yīng),其中所述第二通知響應(yīng)為需要確認(rèn)型消息,所述發(fā)送模塊1610用于向所述服務(wù)器發(fā)送確認(rèn)ACK消息。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和截止時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為單播請(qǐng)求,所述請(qǐng)求消息為需要確認(rèn)型消息;所述接收模塊1620用于接收所述服務(wù)器發(fā)送的特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng);或者所述接收模塊1620用于接收所述服務(wù)器發(fā)送的確認(rèn)消息;并用于接收所述服務(wù)器發(fā)送的特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)。根據(jù)本發(fā)明實(shí)施例,所述接收模塊1620還用于清除緩存的等待向所述服務(wù)器發(fā)送的其他請(qǐng)求消息。根據(jù)本發(fā)明實(shí)施例,在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間之后,所述發(fā)送模塊1610還用于重新向所述服務(wù)器發(fā)送所述請(qǐng)求消息。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),所述接收服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息是需要確認(rèn)型消息,所述發(fā)送模塊1610還用于向所述服務(wù)器發(fā)送特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn);或者所述發(fā)送模塊1610用于向所述服務(wù)器發(fā)送確認(rèn)消息;并用于向所述服務(wù)器發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帯響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn)。根據(jù)本發(fā)明實(shí)施例,所述響應(yīng)消息包括響應(yīng)消息生成時(shí)間,所述接收模塊1220還用于根據(jù)所述響應(yīng)消息生成時(shí)間確定響應(yīng)消息的順序。圖17是根據(jù)本發(fā)明的一種傳輸數(shù)據(jù)資源的服務(wù)器設(shè)備的實(shí)施例,其中所述服務(wù)器設(shè)備1700包括接收模塊1710,用于接收客戶端發(fā)送的攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息;和發(fā)送模塊1720,向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。參照?qǐng)D12所述的本發(fā)明的實(shí)施例所描述的過程和特征均適用于圖17所示的服務(wù)器設(shè)備。具體來說,例如,接收模塊1710接收的請(qǐng)求消息中攜帯的響應(yīng)方式選項(xiàng)可以是推遲選項(xiàng),例如可以為一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng)。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或單播請(qǐng)求;所述發(fā)送模塊1720用于在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),經(jīng)過隨機(jī)延時(shí)之后,向所述客戶端發(fā)送響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng),所述發(fā)送模塊1720用于在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,向所述客戶端發(fā)送響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),
所述發(fā)送模塊1720用于向所述客戶端發(fā)送通知響應(yīng),其中所述通知響應(yīng)攜帶最長(zhǎng)存續(xù)時(shí)間選項(xiàng)和留候時(shí)間選項(xiàng),其中所述留候時(shí)間選項(xiàng)用于指示,在所述最長(zhǎng)存續(xù)時(shí)間選項(xiàng)所指示的時(shí)間超時(shí)之后,所述服務(wù)器將在所述留候時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)作出響應(yīng)。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),所述請(qǐng)求消息還包括保持時(shí)間選項(xiàng),所述發(fā)送模塊1720用于在所述保持時(shí)間選項(xiàng)指示的時(shí)間內(nèi),向所述客戶端發(fā)送第三通知響應(yīng),其中所述第三通知響應(yīng)為不需要確認(rèn)型消息;所述發(fā)送模塊1720還用于在所述保持時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之后,向所述客戶端發(fā)送第四通知響應(yīng),其中所述第四通知響應(yīng)為需要確認(rèn)型消息;所述接收模塊1710用于接收所述客戶端發(fā)送的ACK消息。根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和截止時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為單播請(qǐng)求,所述請(qǐng)求消息為需要確認(rèn)型消息;所述發(fā)送模塊1720用于向客戶端發(fā)送特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng);
或者所述發(fā)送模塊1720用于向客戶端發(fā)送確認(rèn)消息;并用于向客戶端發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)。根據(jù)本發(fā)明實(shí)施例,在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間之后,所述接收模塊1710用于接收所述客戶端重新發(fā)送的所述請(qǐng)求消息。
根據(jù)本發(fā)明實(shí)施例,在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng),所述向客戶端發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息是需要確認(rèn)型消息,所述接收模塊1710用于接收所述客戶端發(fā)送的特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帯響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn);或者所述接收模塊1710用于接收所述客戶端發(fā)送的確認(rèn)消息;并用于接收所述客戶端發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帯響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn)。根據(jù)本發(fā)明實(shí)施例,在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間超時(shí)后,所述發(fā)送模塊1720用于向所述客戶端重新發(fā)送所述需要確認(rèn)型響應(yīng)消息。根據(jù)本發(fā)明的另ー種實(shí)施例,接收模塊1710接收的請(qǐng)求消息中可以攜帶時(shí)間戳選項(xiàng),該時(shí)間戳選項(xiàng)表示接收響應(yīng)的截止時(shí)間,而發(fā)送模塊1320發(fā)送的響應(yīng)消息中也可以攜帯時(shí)間戳選項(xiàng),所述時(shí)間戳選項(xiàng)表示響應(yīng)消息的生成時(shí)間。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。盡管已示出和描述了本發(fā)明的一些實(shí)施例,但本領(lǐng)域技術(shù)人員應(yīng)理解,在不脫離本發(fā)明的原理和精神的情況下,可對(duì)這些實(shí)施例進(jìn)行各種修改,這樣的修改應(yīng)落入本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議的節(jié)點(diǎn)的數(shù)據(jù)資源傳輸方法,其特征在于, 向服務(wù)器發(fā)送攜帶響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中一項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng); 接收所述服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。
2.如權(quán)利要求I所述的方法,其特征在于, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還攜帶消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或者單播請(qǐng)求; 接收根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),接收服務(wù)器發(fā)送的響應(yīng)消息。
3.如權(quán)利要求2所述的方法,其特征在于, 所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng), 接收根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,接收服務(wù)器發(fā)送的響應(yīng)消息。
4.如權(quán)利要求2或3所述的方法,其特征在于, 所述消息類型指示信息為以下其中一項(xiàng) 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的套接字端口; 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的網(wǎng)絡(luò)協(xié)議IP地址; 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的端口號(hào); 所述請(qǐng)求消息中的消息類型指示選項(xiàng)。
5.如權(quán)利要求I所述的方法,其特征在于, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述接收服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 接收所述服務(wù)器發(fā)送的通知響應(yīng)消息,其中所述通知響應(yīng)消息攜帶最長(zhǎng)存續(xù)時(shí)間選項(xiàng)和留候時(shí)間選項(xiàng),其中所述留候時(shí)間選項(xiàng)用于指示,在所述最長(zhǎng)存續(xù)時(shí)間選項(xiàng)所指示時(shí)間超時(shí)之后,客戶端保持與所述服務(wù)器的訂閱關(guān)系,保持時(shí)間為所述留候選項(xiàng)所指示的時(shí)間。
6.如權(quán)利要求I所述的方法,其特征在于, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述請(qǐng)求消息還包括保持時(shí)間選項(xiàng), 所述接收服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述保持時(shí)間選項(xiàng)指示的時(shí)間內(nèi),接收服務(wù)器發(fā)送的第一通知響應(yīng),其中所述第一通知響應(yīng)為不需要確認(rèn)型消息; 在所述保持時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之后,接收所述服務(wù)器發(fā)送的第二通知響應(yīng),其中所述第二通知響應(yīng)為需要確認(rèn)型消息。
向所述服務(wù)器發(fā)送確認(rèn)ACK消息。
7.如權(quán)利要求I所述的方法,其特征在于, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和截止時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為單播請(qǐng)求,所述請(qǐng)求消息為需要確認(rèn)型消息; 接收服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 接收所述服務(wù)器發(fā)送的特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帯響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng); 或者 接收所述服務(wù)器發(fā)送的確認(rèn)消息; 接收所述服務(wù)器發(fā)送的特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帯響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)。
8.如權(quán)利要求7所述的方法,其特征在干, 清除緩存的等待向所述服務(wù)器發(fā)送的其他請(qǐng)求消息。
9.如權(quán)利要求7所述的方法,其特征在干, 在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間之后,重新向所述服務(wù)器發(fā)送所述請(qǐng)求消息。
10.如權(quán)利要求I所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述接收服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息是需要確認(rèn)型消息, 所述方法進(jìn)ー步包括 向所述服務(wù)器發(fā)送特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn); 或者 向所述服務(wù)器發(fā)送確認(rèn)消息; 向所述服務(wù)器發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn)。
11.如權(quán)利要求I所述的方法,其特征在干, 所述響應(yīng)消息包括響應(yīng)消息生成時(shí)間, 所述方法還包括 根據(jù)所述響應(yīng)消息生成時(shí)間確定響應(yīng)消息的順序。
12.—種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議的節(jié)點(diǎn)的數(shù)據(jù)資源傳輸方法,其特征在于, 接收客戶端發(fā)送的攜帶響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng); 向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。
13.如權(quán)利要求12所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或單播請(qǐng)求; 所述向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),經(jīng)過隨機(jī)延時(shí)之后,向所述客戶端發(fā)送響應(yīng)消息。
14.如權(quán)利要求13所述的方法,其特征在干, 所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng), 所述向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,向所述客戶端發(fā)送響應(yīng)消息。
15.如權(quán)利要求13或14所述的方法,其特征在于, 所述消息類型指示信息為以下其中ー項(xiàng) 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的套接字端ロ; 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的網(wǎng)絡(luò)協(xié)議IP地址; 預(yù)設(shè)的用于發(fā)送多播請(qǐng)求的端口號(hào); 所述請(qǐng)求消息中的消息類型指示選項(xiàng)。
16.如權(quán)利要求12所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 向所述客戶端發(fā)送通知響應(yīng),其中所述第一通知響應(yīng)攜帶最長(zhǎng)存續(xù)時(shí)間選項(xiàng)和留候時(shí)間選項(xiàng),其中所述留候時(shí)間選項(xiàng)用于指示,在所述最長(zhǎng)存續(xù)時(shí)間選項(xiàng)所指示的時(shí)間超時(shí)之后,服務(wù)器將在所述留候時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)作出響應(yīng)。
17.如權(quán)利要求12所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述請(qǐng)求消息還包括保持時(shí)間選項(xiàng), 所述向客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 在所述保持時(shí)間選項(xiàng)指示的時(shí)間內(nèi),向所述客戶端發(fā)送第三通知響應(yīng),其中所述第三通知響應(yīng)為不需要確認(rèn)型消息; 在所述保持時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之后,向所述客戶端發(fā)送第四通知響應(yīng),其中所述第四通知響應(yīng)為需要確認(rèn)型消息; 接收所述客戶端發(fā)送的確認(rèn)ACK消息。
18.如權(quán)利要求12所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和截止時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為單播請(qǐng)求,所述請(qǐng)求消息為需要確認(rèn)型消息; 所述向客戶端發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息,包括 向客戶端發(fā)送特定的確認(rèn)消息,其中所述特定確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng); 或者 向客戶端發(fā)送確認(rèn)消息;向客戶端發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述服務(wù)器在所述截止時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述請(qǐng)求消息的響應(yīng)。
19.如權(quán)利要求18所述的方法,其特征在干, 在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間之后,接收所述客戶端重新發(fā)送的所述請(qǐng)求消O
20.如權(quán)利要求12所述的方法,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的多個(gè)響應(yīng), 所述向客戶端發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息是需要確認(rèn)型消息, 所述方法進(jìn)ー步包括 接收所述客戶端發(fā)送的特定的確認(rèn)消息,其中所述特定的確認(rèn)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn); 或者 接收所述客戶端發(fā)送的確認(rèn)消息; 接收所述客戶端發(fā)送特定的響應(yīng)消息,其中所述特定的響應(yīng)消息攜帶響應(yīng)代碼和延遲接入時(shí)間選項(xiàng),其中所述響應(yīng)代碼表示所述客戶端在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間內(nèi)無法返回針對(duì)所述響應(yīng)消息的確認(rèn)。
21.如權(quán)利要求20所述的方法,其特征在干, 在所述延遲接入時(shí)間選項(xiàng)所指示的時(shí)間超時(shí)后,向所述客戶端重新發(fā)送的所述需要確認(rèn)型響應(yīng)消息; 接收所述客戶端發(fā)送的確認(rèn)消息。
22.如權(quán)利要求12所述的方法,其特征在干, 所述響應(yīng)消息包括響應(yīng)消息生成時(shí)間。
23.一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議傳輸節(jié)點(diǎn)的數(shù)據(jù)資源的客戶端,其特征在于,包括 發(fā)送模塊,用于向服務(wù)器發(fā)送攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng); 接收模塊,用于接收所述服務(wù)器根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。
24.如權(quán)利要求23所述的客戶端,其特征在于, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng), 所述請(qǐng)求消息還攜帶消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或單播請(qǐng)求; 所述接收模塊用于在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),接收服務(wù)器發(fā)送的響應(yīng)消息。
所述請(qǐng)求消息還包括截止時(shí)間選項(xiàng), 所述接收模塊用于在所述截止時(shí)間選項(xiàng)指示的時(shí)間超時(shí)之前,接收服務(wù)器發(fā)送的響應(yīng)消息。
25.一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議傳輸節(jié)點(diǎn)的數(shù)據(jù)資源的服務(wù)器,其特征在于,包括 接收模塊,用于接收客戶端發(fā)送的攜帯響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中ー項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng); 發(fā)送模塊,向所述客戶端發(fā)送根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。
26.如權(quán)利要求25所述的服務(wù)器,其特征在干, 在所述請(qǐng)求消息中,所述響應(yīng)方式選項(xiàng)為推遲的一次性的響應(yīng)或一次性的立即響應(yīng),所述請(qǐng)求消息還包括消息類型指示信息和延遲時(shí)間選項(xiàng),其中所述消息類型指示信息指示所述請(qǐng)求消息為多播請(qǐng)求或單播請(qǐng)求; 所述發(fā)送模塊用于在所述延遲時(shí)間選項(xiàng)指示的時(shí)間內(nèi),經(jīng)過隨機(jī)延時(shí)之后,向所述客戶端發(fā)送響應(yīng)消息。
全文摘要
本發(fā)明實(shí)施例涉及數(shù)據(jù)資源傳輸?shù)姆椒ê驮O(shè)備。一種在物聯(lián)網(wǎng)系統(tǒng)中基于輕量級(jí)應(yīng)用層協(xié)議的節(jié)點(diǎn)的數(shù)據(jù)資源傳輸方法,包括向服務(wù)器發(fā)送攜帶響應(yīng)方式選項(xiàng)的請(qǐng)求消息,其中所述響應(yīng)方式選項(xiàng)表示以下響應(yīng)方式其中一項(xiàng)一次性的立即響應(yīng)、推遲的一次性的響應(yīng)、推遲的多個(gè)響應(yīng)和取消推遲的多個(gè)響應(yīng);接收所述服務(wù)器發(fā)送的根據(jù)所述響應(yīng)方式選項(xiàng)生成的響應(yīng)消息。根據(jù)本發(fā)明實(shí)施例,通過在消息交互過程中指定響應(yīng)方式選項(xiàng),客戶端可以指定所需的響應(yīng),提高了CoAP的消息交互效率。
文檔編號(hào)H04L29/06GK102685204SQ20121005645
公開日2012年9月19日 申請(qǐng)日期2012年3月6日 優(yōu)先權(quán)日2011年3月17日
發(fā)明者卞永剛, 李克鵬, 田林一, 陳顯鋒 申請(qǐng)人:華為技術(shù)有限公司