Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desbravando HTTP com http.server

Desbravando HTTP com http.server

Essa palestra tem como objetivo a introdução do protocolo de aplicação HTTP com um exemplo prático de um servidor de mensagens utilizando a lib do Python, http.server.

Ana Paula Mendes

March 04, 2023
Tweet

More Decks by Ana Paula Mendes

Other Decks in Programming

Transcript

  1. Ana Paula Mendes • Senior Software Engineer - Jusbrasil •

    Mestranda em Computação Inteligente - UFPI • Bacharela em Ciência da Computação - UFPI • Técnica em Desenvolvimento de Software - IFPI whoami 2 anapaulamendes anapauladsmendes ananoterminal https://anapaulamendes.github.io/
  2. Essa palestra tem como objetivo a introdução do protocolo de

    aplicação HTTP com um exemplo prático de um servidor de mensagens utilizando a lib do Python, http.server. O que vamos abordar? Sumário: • Introdução …………………………………………… 04 • Protocolo HTTP …………………………………… 07 • http.server …………………………………………… 11 • Perguntas ……………………………………………. 13 3
  3. 5 Componentes da WWW: • HTML (HyperText Markup Language) •

    HTTP (HyperText Transfer Protocol) • URLs (Uniform Resource Locators) • Web browser • Web server Construída por Tim Berners-Lee em 1989, foi inicialmente chamada Mesh e depois recebeu o nome atual, World Wide Web. HTTP é o protocolo base da World Wide Web (Rede Mundial de Computadores). É um protocolo da camada de aplicação sobre o TCP/IP com ou sem criptografia por TLS. Visão Geral
  4. HTTP/0.9 Conhecido como protocolo de uma linha, não possuía versão

    e puseram 0.9 para diferenciá-lo. • Requisição de uma única linha. • Único método: GET • Não era necessário especificar o protocolo, o servidor e a porta quando estivesse conectado ao servidor. • A resposta era o próprio arquivo. • Não possuía cabeçalhos HTTP, só era possível transferir arquivos HTML. • Não havia status code, a mensagem de erro era gerada no próprio HTML. 6 HTTP/1.1 Essa versão resolveu ambiguidades da versão 1.0 e teve melhorias. • As conexões passam a poder ser reutilizadas. • Adição de pipeline, reduzindo a latência de comunicação. • Suporte a respostas fragmentadas. • Mecanismos de controle de cache. • Negociação de conteúdo: linguagem, codificação e tipo. • O cabeçalho “host”, possibilita hospedar domínios diferentes do mesmo IP permitindo a colocação do servidor. HTTP/2 O Google implementou um protocolo experimental SPDY no início de 2010 que definiu um aumento na capacidade de resposta e resolveu o problema de transmissão de dados duplicados, servindo de base para o protocolo HTTP/2. • Protocolo binário, não pode ser lido ou criado manualmente. • Multiplexado, requisições paralelas podem ser feitas na mesma conexão. • Comprime cabeçalhos, evitando sobrecarga e duplicação de dados. Evolução HTTP/1.0 Com a evolução dos navegadores e servidores, o protocolo HTTP passou a ser mais extensível. • A versão era enviada a cada requisição: HTTP/1.0, sendo adicionado à linha do GET. • Existência de status code e cabeçalhos. • Documentos diferentes de arquivos HTML poderiam ser transmitidos graças ao cabeçalho Content-Type.
  5. Fluxo do HTTP 1. O cliente abre uma conexão TCP

    utilizada para enviar uma requisição, ou várias, e receber uma resposta. Essa conexão pode ser já uma(s) existente(s) ou nova(s). 2. Envia-se uma mensagem HTTP. 3. Lê-se a resposta enviada pelo servidor. 8
  6. Requisição (Request) O HTTP define um conjunto de métodos de

    solicitação para indicar a ação desejada a ser executada para um determinado recurso. Um método de solicitação pode ser seguro, idempotente ou armazenável em cache. • GET • POST • PUT • PATCH • DELETE 9
  7. Resposta (Response) Os códigos de status de resposta HTTP indicam

    se uma requisição específica foi concluída com êxito. As respostas são agrupadas em cinco classes: • Respostas de informação (100-199) • Respostas de sucesso (200-299) • Mensagens de redirecionamento (300-399) • Respostas de erro do cliente (400-499) • Respostas de erro do servidor (500-599) 10