6 pontos por GN⁺ 2024-05-27 | 1 comentários | Compartilhar no WhatsApp

Ciclo de vida de uma requisição HTTP

1. O cliente envia a requisição

  • Criação da requisição HTTP: o cliente (geralmente um navegador web) cria uma requisição HTTP.
  • Método HTTP: GET, POST etc.
  • Recurso solicitado: por exemplo, /index.html.
  • Versão do protocolo: HTTP/1.1 etc.
  • Cabeçalhos e corpo: inclui cabeçalhos no formato key: value e um corpo de mensagem opcional.

2. Consulta DNS

  • Conversão do nome de domínio: converte um nome de domínio legível por humanos (www.example.com) em um endereço IP (93.184.216.34).
  • Consulta ao servidor DNS: o cliente envia uma consulta ao servidor DNS para converter o nome de domínio em endereço IP.

3. Handshake TCP

  • Estabelecimento da conexão TCP: o cliente estabelece uma conexão TCP com o servidor.
  • Handshake de 3 etapas:
    • SYN: o cliente envia uma solicitação de conexão.
    • SYN-ACK: o servidor confirma a solicitação.
    • ACK: o cliente envia a resposta de confirmação.

4. Envio da requisição HTTP

  • Envio da requisição HTTP: quando a conexão TCP é estabelecida, o cliente envia a requisição HTTP propriamente dita.

5. Roteamento de pacotes pela internet

  • Transmissão de pacotes: os pacotes de dados são roteados até o servidor por meio de vários dispositivos de rede.
  • Papel do roteador: o roteador determina o melhor caminho para os pacotes.

6. Resposta do servidor

  • Criação da resposta HTTP: o servidor processa a requisição HTTP e gera uma resposta.
  • Conteúdo da resposta:
    • Protocolo: a versão HTTP utilizada.
    • Informações de status: código de status HTTP (ex.: 200, 404).
    • Cabeçalhos de resposta: semelhantes aos cabeçalhos da requisição.
    • Corpo da resposta: o conteúdo solicitado (ex.: página HTML, dados JSON).

7. Renderização do conteúdo

  • Processamento da resposta HTTP: o cliente recebe e processa a resposta HTTP.
  • Renderização no navegador: o navegador interpreta o HTML e renderiza o conteúdo na tela.
  • Solicitação de recursos adicionais: solicita recursos adicionais, como imagens, CSS e JavaScript.

HTTPS = HTTP + criptografia

Handshake TLS

  • Handshake TLS: o cliente e o servidor trocam chaves de criptografia e autenticação.
  • Comunicação criptografada: após o handshake TLS, cliente e servidor trocam mensagens criptografadas usando HTTP.

Handshake TLS 1.3

  • Processo simplificado: o TLS 1.3 oferece menos opções, sendo mais simples, seguro e rápido.
  • Etapas principais:
    • Client Hello: o cliente envia ao servidor os cipher suites e a versão TLS que suporta.
    • Server Hello: o servidor envia ao cliente o cipher suite e a versão TLS escolhidos.
    • Validação do certificado: o cliente valida o certificado SSL do servidor.
    • Geração do pre-master secret: o cliente gera o pre-master secret e o envia ao servidor.
    • Geração da chave de sessão: cliente e servidor geram a chave de sessão.
    • Comunicação segura: usam a chave de sessão para se comunicar com criptografia simétrica segura.

Opinião do GN⁺

  • Entendimento da comunicação na internet: compreender os conceitos básicos de HTTP e HTTPS ajuda a consolidar bem os fundamentos da comunicação em rede.
  • Importância da segurança: é importante aumentar a segurança da transmissão de dados por meio de HTTPS.
  • Vantagens do TLS 1.3: recomenda-se usar TLS 1.3, que é mais simples, rápido e seguro.
  • Aplicação prática: em projetos reais, é necessário aplicar HTTPS para reforçar a segurança.
  • Aprendizado adicional: estudar mais sobre camadas de rede e protocolos pode proporcionar uma compreensão mais profunda.

1 comentários

 
GN⁺ 2024-05-27
Comentários do Hacker News
  • Uma pergunta sobre por que, quando ocorre um problema de rede, é difícil saber onde o problema aconteceu. A opinião é que a explicação de que o caminho da rede é não determinístico não parece convincente.
  • Uma opinião recomendando exemplos detalhados e interativos sobre TLSv1.2 e TLSv1.3. Link fornecido.
  • Uma opinião de que explicações no estilo "ELI(um engenheiro mediano)" são úteis. A pessoa quer encontrar mais exemplos.
  • Um pedido de alguém que está procurando um exemplo de código para verificação de assinatura SHA256. Conhece a teoria, mas está tendo dificuldades com a implementação.
  • Uma opinião de que a melhor parte do artigo foi a menção de ganhar US$ 300 mil por ano em São Francisco escrevendo requisições HTTP.
  • Uma opinião de que a parte sobre o cliente criptografar e enviar o pre-master secret com a chave pública do servidor é informação antiga.
  • Uma dúvida sobre a explicação de que um certificado SSL inclui a chave privada. A opinião é que é uma explicação condizente com o título "Mediocre Engineer".
  • Uma piada dizendo que gostaria de trabalhar por US$ 50 mil a menos do que um salário de US$ 300 mil. Também aponta que a explicação sobre TLS <1.3 está errada.
  • Uma opinião de que o conteúdo do artigo está desatualizado e que, atualmente, 30% das requisições web usam HTTP3 e CORS. Também aponta que não há data de publicação.
  • Uma opinião de que a explicação sobre HTTPS parece um resumo feito por IA. Faltam explicações de termos e o texto assume que o leitor já conhece criptografia de chave pública. Também aponta que a explicação das camadas OSI está incompleta.