Você está na página 1de 33

Hypertext Transfer Protocol (HTTP)

Message Queuing Telemetry Transport (MQTT)

Alunos: Henrique Borges Fernandes


Hithallo Nicson Silva Guerra
Mateus Borges Araújo
Introdução ao Protocolo HTTP

HTTP é um protocolo (protocol) que permite a obtenção de recursos, como


documentos HTML. É a base de qualquer troca de dados na Web, e um
protocolo cliente-servidor, o que significa que as requisições são iniciadas
pelo destinatário, geralmente um navegador da Web. Um documento
completo é reconstruído a partir dos diferentes sub-documentos obtidos,
como por exemplo texto, descrição do layout, imagens, vídeos, scripts e
muito mais.
Introdução ao Protocolo HTTP
Introdução ao Protocolo HTTP
A primeira versão, proposta por Tim Berners-Lee, tinha a simplicidade
como ponto focal.
Introdução ao Protocolo HTTP
HTTP/0.9
A ideia era transferir dados no formato de texto ASCII. Na época, o
único método de requisição era o GET.
HTTP/1.0
Ele foi uma resposta a ineficiência da primeira versão frente ao rápido
crescimento da web.
HTTP/1.1
O lançamento dela é considerado um marco e define o padrão da
Internet.
HTTP/2
O HTTP/2 é uma resposta ao novo cenário em que tudo está cada vez
mais conectado.
Funcionamento

Modelo Cliente-Servidor
Requisição
• URI;
• Versão HTTP;
• Mensagem MIME;
• Corpo da Mensagem.

Mensagem de Requisição HTTP


Métodos
• POST;
• GET;
• PUT;
• PATCH;
• DELETE

Métodos HTTP
Resposta
• Linha de status: Versão HTTP, Status-Code e Reason-Phrase;
• Linha de cabeçalho;
• Corpo da Mensagem.

Mensagem de Resposta do servidor HTTP


Status-Code
• 1xx: Informação – utilizado para enviar informações de que sua
requisição foi recebida e está sendo processada;
• * 2xx: Sucesso – indica que a requisição do cliente foi bem
sucedida;
• * 3xx: Redirecionamento – informa a ação adicional que deve
ser tomada para completar a requisição;
• * 4xx: Erro no cliente – avisa que o cliente fez uma requisição
que não pode ser atendida;
• * 5xx: Erro no servidor – ocorreu um erro no servidor ao
cumprir uma requisição válida.
Cabeçalhos
• General-Header;
• Requestheader;
• Response-Header;
• Entity-Header.
Introdução ao Protocolo MQTT
• Criado pela IBM juntamente com a Eurotech;
• Desenvolvido com base na pilha TCP/IP.
• Padrão OASIS em 2014;
• Situado na camada de Aplicação;

Características:
• Ausência de overhead;
• Codificação simples; Modelo TCP/IP
• Funcionamento em hardwares limitados;
• Protocolo de domínio público;
Funcionamento
• Possui duas entidades: Broker (Servidor) e Cliente;
• Utiliza o padrão Publisher/Subscriber;
• Cliente se conecta ao Broker e define se quer publicar (Publisher) ou receber (Subscriber) alguma
mensagem;
• Cliente atuando como Publisher, as suas mensagens são enviadas para o Broker em tópicos;
• O Broker então encaminha as mensagens a todos os clientes que assinaram tal tópico (Subscriber).

Exemplo funcionamento MQTT


Funcionamento
• Há casos em que os clientes atuam tanto de Publisher quanto de Subscriber;
• Todos clientes devem ter um nome ou ID;
• Ao conectar um novo cliente a um Broker com um mesmo ID de um outro cliente já existente, a
conexão do cliente existente será eliminada;
• Não há restrições quanto ao tipo de tópico ou carga útil da mensagem.

Exemplo funcionamento MQTT


Funcionamento
Tópicos:

• As informações recebidas e repassadas pelo Broker são organizadas em um formato hierárquico,


de acordo com seus tópicos;
• Na criação de um tópico, cada nível é separado por uma barra. Ex.: myhome / andar térreo / sala
de estar / temperatura;
• Nos tópicos há uma diferença entre letras maiúsculas e minúsculas. Por exemplo, myhome /
temperature e MyHome / Temperature são dois tópicos diferentes;
• Para o cliente se inscrever em vários tópicos simultaneamente, é utilizado os curingas (+, # e $).
Ex.: myhome / groundfloor / + / temperature;
myhome / groundfloor / #;
$ SYS / corretor / clientes / conectado.
Mensagens MQTT
CONNECT - 1 (Cliente para Servidor)
Parte fixa do cabeçalho:
Mensagens MQTT
CONNECT - 1 (Cliente para Servidor)
Parte variável do cabeçalho:
Mensagens MQTT
CONNACK - 2 (Servidor para Cliente)
Cabeçalho fixo:
Mensagens MQTT
CONNACK - 2 (Servidor para Cliente)
Cabeçalho variável:
Mensagens MQTT
CONNACK - 2 (Servidor para Cliente)
Códigos de retorno:
Mensagens MQTT
DISCONNECT - 14 (Cliente para Servidor)
Cabeçalho fixo:
Mensagens MQTT
SUBSCRIBE - 8 (Cliente para Servidor)
Cabeçalho fixo:
Mensagens MQTT
SUBSCRIBE - 8 (Cliente para Servidor)
Cabeçalho variável:
Mensagens MQTT
SUBSCRIBE - 8 (Cliente para Servidor)
Cabeçalho variável (payload):
Mensagens MQTT
PUBLISH - 3 (Cliente para Servidor ou Servidor para
cliente)
Cabeçalho fixo:
Mensagens MQTT
PUBLISH - 3 (Cliente para Servidor ou Servidor para cliente)
Cabeçalho variável:

O tamanho do payload, que vem


a seguir do cabeçalho variável,
pode ser calculado subtraindo o
tamanho do cabeçalho variável do
Remaining Length (byte 2) no
cabeçalho fixo.
Servidores:

Exemplo Servidor MQTT


Comparações:

MQTT:

• Protocolo assíncrono;
• Muito utilizado para a obtenção de dados em tempo real e serviços IoT;
• Protocolo leve e flexível;
• Não há comunicação entre Publisher e Subscriber;
• Broker mantém a comunicação com o Subscriber de acordo com o Keep Alive;
• Baixo consumo de: memória e de banda;
• Baixa necessidade de processamento para o envio de mensagem.
Comparações:

HTTP:

• Protocolo síncrono, não sendo recomendado em serviços IoT;


• Unilateral;
• Protocolo 1-1, onde o cliente faz uma solicitação e o servidor responde;
• Padrão Request-Response, no qual o servidor encerra a comunicação com o cliente logo após
enviar as respostas das requisições;
• Protocolo pesado, com muitos cabeçalhos e regras;
• Payload maior, inviabilizando o seu uso em conexões de baixa qualidade.
Referências Bibliográficas
[1] YUAN, M. Conhecendo o MQTT. Disponível em:
<https://www.embarcados.com.br/mqtt-protocolos-para-iot/>. Acesso em: 02 jun.
2021.
[2] BARROS, M. MQTT – Protocolos para IoT. Disponível em:
<https://www.embarcados.com.br/mqtt-protocolos-para-iot/>. Acesso em: 05 jun.
2021.
[3] ENGPROCESS. O que é MQTT broker e quais as suas principais
vantagens? Disponível em: <https://engprocess.com.br/mqtt-broker/>. Acesso em:
08 jun. 2021.
[4] MDN WEB DOCS. Uma visão geral do HTTP Disponível em:
<https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Overview>. Acesso em: 09
jun. 2021.
[5] BECKENKAMP, M. API Rest e os verbos HTTP. Disponível em:
<https://blog.mbeck.com.br/api-rest-e-os-verbos-http-46e189085e21>. Acesso
em: 08 jun. 2021.
Referências Bibliográficas
[6] HiveMQ. Bem-vindo ao HiveMQ Cloud. Disponível em:
<https://www.hivemq.com/mqtt-cloud-broker/>. Acesso em: 07 jun. 2021.
[7] HiveMQ. MQTT Topics & Best Practices – MQTT Essentials: Parte 5.
Disponível em <https://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-
best-practices/>. Acesso em: 07 jun. 2021.
[8] MQTT. MQTT: o padrão para mensagens IoT. Disponível em:
<https://mqtt.org/>. Acesso em: 07 jun. 2021.
[9] MQTT. O protocolo MQTT. Disponível em:
<https://www.gta.ufrj.br/ensino/eel878/redes1-2018-1/trabalhos-vf/mqtt/#Prot>.
Acesso em: 07 jun. 2021.
[10] NERI, R.; LOMBA, M.; BULHÕES, G. MQTT. Disponível em:
<https://developer.ibm.com/articles/iot-mqtt-why-good-for-iot/>. Acesso em: 07
jun. 2021.
[11] STEVE. Como funciona o MQTT – Guia para iniciantes. Disponível em:
<http://www.steves-internet-guide.com/mqtt-works/>. Acesso em: 07 jun. 2021.
Referências Bibliográficas
[12] YUAN, M. Conhecendo o MQTT. Disponível em:
<https://developer.ibm.com/articles/iot-mqtt-why-good-for-iot/>. Acesso em: 07
jun. 2021.
[13] YUAN, M. Conhecendo o MQTT. Disponível em: <
https://developer.ibm.com/br/articles/iot-mqtt-why-good-for-iot/#o-modelo-de-
publica%C3%A7%C3%A3o-e-assinatura-do-mqtt-para-sensores-de-iot>. Acesso
em: 07 jun. 2021.
Obrigado!

Você também pode gostar