物聯(lián)網(wǎng)協(xié)議CoAP

COAP協(xié)議簡介

Coap(Constrained Application Protocol)是一種在物聯(lián)網(wǎng)世界的類web協(xié)議逢唤,它的詳細(xì)規(guī)范定義在 RFC 7252。COAP名字翻譯來就是“受限應(yīng)用協(xié)議”姆蘸,顧名思義肥缔,使用在資源受限的物聯(lián)網(wǎng)設(shè)備上。物聯(lián)網(wǎng)設(shè)備的ram巩掺,rom都通常非常小偏序,運(yùn)行TCP和HTTP是不可以接受的。

COAP協(xié)議特點(diǎn)

1 COAP協(xié)議網(wǎng)絡(luò)傳輸層由TCP改為UDP胖替。

COAP協(xié)議層

2 它基于REST研儒,server的資源地址和互聯(lián)網(wǎng)一樣也有類似url的格式,客戶端同樣有POST独令,GET,PUT,DELETE方法來訪問server端朵,對(duì)HTTP做了簡化。

3 COAP是二進(jìn)制格式的燃箭,HTTP是文本格式的冲呢,COAP比HTTP更加緊湊。

4 輕量化招狸,COAP最小長度僅僅4B敬拓,一個(gè)HTTP的頭都幾十個(gè)B了。

5 支持可靠傳輸裙戏,數(shù)據(jù)重傳乘凸,塊傳輸。 確保數(shù)據(jù)可靠到達(dá)累榜。

6 支持IP多播, 即可以同時(shí)向多個(gè)設(shè)備發(fā)送請(qǐng)求营勤。

7 非長連接通信,適用于低功耗物聯(lián)網(wǎng)場景壹罚。

COAP協(xié)議消息類型

COAP協(xié)議有4種消息類型

CON—— 需要被確認(rèn)的請(qǐng)求葛作,如果CON請(qǐng)求被發(fā)送,那么對(duì)方必須做出響應(yīng)猖凛。這有點(diǎn)像TCP赂蠢,對(duì)方必須給確認(rèn)收到消息,用以可靠消息傳輸形病。

可靠消息傳輸

NON—— 不需要被確認(rèn)的請(qǐng)求客年,如果NON請(qǐng)求被發(fā)送,那么對(duì)方不必做出回應(yīng)漠吻。這適用于消息會(huì)重復(fù)頻繁的發(fā)送量瓜,丟包不影響正常操作。這個(gè)和UDP很像途乃。用以不可靠消息傳輸绍傲。

不可靠消息傳輸

ACK —— 應(yīng)答消息,對(duì)應(yīng)的是CON消息的應(yīng)答耍共。

RST —— 復(fù)位消息烫饼,可靠傳輸時(shí)候接收的消息不認(rèn)識(shí)或錯(cuò)誤時(shí),不能回ACK消息试读,必須回RST消息杠纵。

COAP消息格式

coap消息格式

消息頭(HEAD)

第一行是消息頭,必須有钩骇,固定4個(gè)byte比藻。

Ver : 2bit, 版本信息倘屹,當(dāng)前是必須寫0x01银亲。

T: 2bit, 消息類型纽匙,包括 CON, NON. ACK, RST這4種务蝠。

TKL: 4bit,token長度烛缔, 當(dāng)前支持0~8B長度馏段,其他長度保留將來擴(kuò)展用。

Code:8bit践瓷,分成前3bit(0~7)和后5bit(0~31)毅弧,前3bit代表類型。 0代表空消息或者請(qǐng)求碼当窗, 2開頭代表響應(yīng)碼够坐,取值如下:

1 0.00 Indicates an Empty message

2 0.01-0.31 Indicates a request.

3 1.00-1.31 Reserved

4 2.00-5.31 Indicates a response.

5 6.00-7.31 Reserved

Message ID:16bit, 代表消息MID崖面,每個(gè)消息都有一個(gè)ID 元咙,重發(fā)的消息MID不變

token(可選)用于將響應(yīng)與請(qǐng)求匹配。 token值為0到8字節(jié)的序列巫员。 ( 每條消息必須帶有一個(gè)標(biāo)記, 即使它的長度為零)庶香。 每個(gè)請(qǐng)求都帶有一個(gè)客戶端生成的token, 服務(wù)器在任何結(jié)果響應(yīng)中都必須對(duì)其進(jìn)行回應(yīng)。token類似消息ID简识,用以標(biāo)記消息的唯一性赶掖。token還是消息安全性的一個(gè)設(shè)置感猛,使用全8字節(jié)的隨機(jī)數(shù),使偽造的報(bào)文無法獲得驗(yàn)證通過奢赂。option(可選陪白,0個(gè)或者多個(gè))

請(qǐng)求消息 與回應(yīng)消息都可以0~多個(gè)options。 主要用于描述請(qǐng)求或者響應(yīng)對(duì)應(yīng)的各個(gè)屬性膳灶,類似參數(shù)或者特征描述咱士,比如是否用到代理服務(wù)器,目的主機(jī)的端口等轧钓。

payload(可選)

實(shí)際攜帶數(shù)據(jù)內(nèi)容序厉, 若有, 前面加payload標(biāo)識(shí)符“0xFF”毕箍,如果沒有payload標(biāo)識(shí)符弛房,那么就代表這是一個(gè)0長度的payload。如果存在payload標(biāo)識(shí)符但其后跟隨的是0長度的payload而柑,那么必須當(dāng)作消息格式錯(cuò)誤處理庭再。

COAP的請(qǐng)求碼(requests)和響應(yīng)碼(responses)

【0.01】GET方法——用于獲得某資源

【0.02】POST方法——用于創(chuàng)建某資源

【0.03】PUT方法——用于更新某資源

【0.04】DELETE方法——用于刪除某資源

CoAP的URL

coap的url和HTTP的有很相似的地方,開頭是“coap”對(duì)應(yīng)“http”或者“coaps”對(duì)應(yīng)“https”牺堰。

HTTP的默認(rèn)端口是tcp 80拄轻,coap的默認(rèn)端口是udp 5683(coaps是5684)。

URL里面的“/”“&”“.”

下面三個(gè)URL的地址是一樣的伟葫。訪問example.com這個(gè)域名恨搓,端口是udp 5683,訪問的資源地址是~sensors/temp.xml筏养。

coap://example.com:5683/~sensors/temp.xml

coap://EXAMPLE.com/%7Esensors/temp.xml

coap://EXAMPLE.com:/%7esensors/temp.xml

COAP的安全性

COAP的安全性是用DTLS加密實(shí)現(xiàn)的斧抱。DTLS的實(shí)現(xiàn)需要的資源和帶寬較多,如果是資源非常少的終端和極有限的帶寬下可能會(huì)跑不起來渐溶。DTLS僅僅在單播情況下適用辉浦。


轉(zhuǎn)載自:https://baijiahao.baidu.com/s?id=1609055547851599818&wfr=spider&for=pc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茎辐,隨后出現(xiàn)的幾起案子宪郊,更是在濱河造成了極大的恐慌,老刑警劉巖拖陆,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弛槐,死亡現(xiàn)場離奇詭異,居然都是意外死亡依啰,警方通過查閱死者的電腦和手機(jī)乎串,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來速警,“玉大人叹誉,你說我怎么就攤上這事鸯两。” “怎么了长豁?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵钧唐,是天一觀的道長。 經(jīng)常有香客問我蕉斜,道長逾柿,這世上最難降的妖魔是什么缀棍? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任宅此,我火速辦了婚禮,結(jié)果婚禮上爬范,老公的妹妹穿的比我還像新娘父腕。我一直安慰自己,他們只是感情好青瀑,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布璧亮。 她就那樣靜靜地躺著,像睡著了一般斥难。 火紅的嫁衣襯著肌膚如雪枝嘶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天哑诊,我揣著相機(jī)與錄音群扶,去河邊找鬼。 笑死镀裤,一個(gè)胖子當(dāng)著我的面吹牛竞阐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播暑劝,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼骆莹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了担猛?” 一聲冷哼從身側(cè)響起幕垦,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傅联,沒想到半個(gè)月后智嚷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺且,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年盏道,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片载碌。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猜嘱,死狀恐怖衅枫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朗伶,我是刑警寧澤弦撩,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站论皆,受9級(jí)特大地震影響益楼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜点晴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一感凤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粒督,春花似錦陪竿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锐墙,卻和暖如春礁哄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溪北。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工桐绒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刻盐。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓掏膏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敦锌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子馒疹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354