Slide 1

Slide 1 text

1 Ana Paula Mendes Desbravando HTTP com http.server

Slide 2

Slide 2 text

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/

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

4 Introdução

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

7 Protocolo HTTP

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

11 http.server

Slide 12

Slide 12 text

12 "Falar é fácil, me mostre o código." Linus Torvalds Link do Repositório

Slide 13

Slide 13 text

13 Perguntas

Slide 14

Slide 14 text

14 Obrigada! anapaulamendes anapauladsmendes ananoterminal https://anapaulamendes.github.io/