物聯(lián)網(wǎng)環(huán)境那么復(fù)雜,單單一款協(xié)議當(dāng)然不能適應(yīng)所有種類的物聯(lián)網(wǎng)環(huán)境的呀,所以就有除了MQTT之外的另外的幾種協(xié)議,這次小生先帶你們了解一下,COAP協(xié)議!
1、什么是COAP協(xié)議?
COAP,全稱Constrained Application Protocol,中文意思是受限制的應(yīng)用協(xié)議,是IETF組織發(fā)布的互聯(lián)網(wǎng)系列標(biāo)準(zhǔn)之一!是一種目的在于實(shí)現(xiàn)M2M應(yīng)用中的嵌入式消息傳遞,支持多播,異步消息傳輸。
COAP和HTTP協(xié)議類似,也是一種文檔傳輸協(xié)議,但是和HTTP不同的是,HTTP是基于TCP的傳輸,但是COAP是基于UDP協(xié)議運(yùn)行,客戶端和服務(wù)器之間是通過無連接數(shù)據(jù)報(bào)進(jìn)行通信的,支持UDP廣播和多播用于尋址!
2、COAP的結(jié)構(gòu)模型
COAP結(jié)構(gòu)圖
如上圖所示,COAP協(xié)議遵循客戶端/服務(wù)器模型,這樣和我們?nèi)粘J褂玫腍TTP協(xié)議的架構(gòu)很像。但是和HTTP不一樣的是,使用COAP的節(jié)點(diǎn),既可以是客戶端也可以是服務(wù)器!和HTTP很像,COAP也支持REST模型,可以使用GET,PUT,POST,DELETE等方法對(duì)資源進(jìn)行操作!
3、COAP報(bào)文格式
COAP協(xié)議報(bào)文類型可以分為,待確認(rèn)報(bào)文(Confirmable Message)、無需確認(rèn)報(bào)文(Non-Confirmable Message)、確認(rèn)報(bào)文(Acknowledge Message)和重置報(bào)文(Reset Message),這幾種報(bào)文的只要實(shí)現(xiàn)在于下面報(bào)文格式中T(類型),占2位。
COAP報(bào)文格式
4、COAP報(bào)文傳輸實(shí)現(xiàn)
上文小生說到,COAP是基于UDP實(shí)現(xiàn)的,了解UDP的都知道,UDP是無連接的,是一種不可靠傳輸協(xié)議。所以在報(bào)文傳輸?shù)倪^程中,很容易出現(xiàn)報(bào)文亂序,丟失和重復(fù)等現(xiàn)象。所以COAP為了解決這些問題,實(shí)現(xiàn)了一種可靠傳輸機(jī)制,不像TCP那么復(fù)雜,COAP可靠傳輸具有重傳和重復(fù)檢測的兩個(gè)特點(diǎn):
(1)報(bào)文發(fā)送完CON類型報(bào)文后,會(huì)啟動(dòng)一個(gè)簡單的指數(shù)型避讓stop-and-wait機(jī)制
(2)不管什么類型的報(bào)文,都會(huì)經(jīng)過報(bào)文重復(fù)檢測的步驟!
5、COAP的特點(diǎn)
(1)基于輕量級(jí)的UDP,支持IP多播。
(2)協(xié)議輕量級(jí),最小的數(shù)據(jù)報(bào)只有4字節(jié)。
(3)基于REST結(jié)構(gòu),是目前互聯(lián)網(wǎng)主流架構(gòu)。
(4)提供可靠傳輸機(jī)制。
(5)消息模型,以消息為數(shù)據(jù)通信載體。
(6)等等...