CoAP: mudanças entre as edições
Linha 44: | Linha 44: | ||
Os '''métodos''' utilizados pelo '''CoAP''' são GET, PUT, POST, e DELETE de modo similar ao '''HTTP'''. | Os '''métodos''' utilizados pelo '''CoAP''' são GET, PUT, POST, e DELETE de modo similar ao '''HTTP'''. | ||
Os métodos podem usar mensagens confirmáveis (CON) ou não confirmáveis (NON). A resposta, se tiver disponível, pode ser enviada imediatamente, confirmável ou não confirmável. | Os '''métodos''' podem usar '''mensagens confirmáveis''' (CON) ou '''não confirmáveis''' (NON). A '''resposta''', se tiver disponível, pode ser enviada imediatamente, confirmável ou não confirmável. | ||
Client Server Client Server | Client Server Client Server | ||
Linha 72: | Linha 72: | ||
| "22.5 C" | | | "22.5 C" | | ||
|<-----------------+ | |<-----------------+ | ||
| | | |||
Se a resposta não estiver disponível imediatamente, pode ser enviada posteriormente em mensagem separada. | |||
Client Server | |||
| | | |||
| CON [0x7a10] | | |||
| GET /temperature | | |||
| (Token 0x73) | | |||
+----------------->| | |||
| | | |||
| ACK [0x7a10] | | |||
|<-----------------+ | |||
| | | |||
... Time Passes ... | |||
| | | |||
| CON [0x23bb] | | |||
| 2.05 Content | | |||
| (Token 0x73) | | |||
| "22.5 C" | | |||
|<-----------------+ | |||
| | | |||
| ACK [0x23bb] | | |||
+----------------->| | |||
| | | | | | ||
Edição das 19h14min de 14 de maio de 2020
CoAP
Referências: [1]
O CoAP (Constrained Application Protocol) (RFC7252) é uma alternativa mais leve ao HTTP, com alvo nos dispositivos limitados em termos de energia e comunicação (redes LLN). O CoAP usa UDP, ao invés do TCP usado pelo HTTP, reduzindo o overhead de mensagens ocasionado pela abertura e encerramento de uma conexão TCP.
O CoAP provê um modelo de interação pedido/resposta (request/response) entre aplicações, com comunicação assíncrona por meio de mensagens UDP. Apresenta baixo overhead de cabeçalho, suporta URI e Content-type.
Pode-se visualizar o CoAP em duas camadas, uma camada de mensagens interagindo de forma assíncrona com o UDP e uma camada de interações pedido/resposta usando métodos e códigos de resposta.
+----------------------+ | Application | +----------------------+ \ | Requests/Responses | | |----------------------| | CoAP | Messages | | +----------------------+ / | UDP | +----------------------+
Modelo de mensagens
O CoAP usa mensagens curtas com cabeçalho de tamanho fixo (4 bytes) que podem ser seguidas por opções e dados (payload). Cada mensagem contém um identificador (Message ID) usado para implementar o serviço de entrega garantida de mensagens.
Para a entrega garantida uma mensagem é marcada como confirmável (CON). Uma mensagem confirmável é retransmitida, usando um temporizador, até receber uma confirmação (ACK). Se o receptor não está apto para processar a mensagem recebida ele responde com a mensagem de rejeição (RST).
Client Server | | | CON [0x7d34] | +----------------->| | | | ACK [0x7d34] | |<-----------------+ | |
Uma mensagem que não requer confirmação é marcada como não confirmável (NON).
Client Server | | | NON [0x01a0] | +----------------->| | |
Modelo pedido/resposta
Os pedidos e respostas são carregados por mensagens CoAP, as quais incluem o código do método e da resposta.
Os métodos utilizados pelo CoAP são GET, PUT, POST, e DELETE de modo similar ao HTTP.
Os métodos podem usar mensagens confirmáveis (CON) ou não confirmáveis (NON). A resposta, se tiver disponível, pode ser enviada imediatamente, confirmável ou não confirmável.
Client Server Client Server | | | | | CON [0xbc90] | | CON [0xbc91] | | GET /temperature | | GET /temperature | | (Token 0x71) | | (Token 0x72) | +----------------->| +----------------->| | | | | | ACK [0xbc90] | | ACK [0xbc91] | | 2.05 Content | | 4.04 Not Found | | (Token 0x71) | | (Token 0x72) | | "22.5 C" | | "Not found" | |<-----------------+ |<-----------------+ | | | |
Client Server | | | NON [0x7a11] | | GET /temperature | | (Token 0x74) | +----------------->| | | | NON [0x23bc] | | 2.05 Content | | (Token 0x74) | | "22.5 C" | |<-----------------+ | |
Se a resposta não estiver disponível imediatamente, pode ser enviada posteriormente em mensagem separada.
Client Server | | | CON [0x7a10] | | GET /temperature | | (Token 0x73) | +----------------->| | | | ACK [0x7a10] | |<-----------------+ | | ... Time Passes ... | | | CON [0x23bb] | | 2.05 Content | | (Token 0x73) | | "22.5 C" | |<-----------------+ | | | ACK [0x23bb] | +----------------->| | |
Referências
Evandro.cantu (discussão) 15h22min de 14 de maio de 2020 (-03)