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.

Avatar for Ana Paula Mendes

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