Procurando mais livros de programação?
Conheça a editora Casa do Código.

Pronto para fazer uma viagem por cada tecnologia que faz uma aplicação entregar conteúdo para um usuário na internet?

Desconstruindo a web

As tecnologias por trás de uma requisição

Capa do livro

Sobre o livro

Tudo começou com um estudo despretensioso sobre como uma requisição para um site funciona. A ideia era mostrar o máximo possível do que acontecia em uma requisição web, durante uma palestra de 50 minutos. Depois de 40 horas de estudo e dedicação, os slides da apresentação estavam prontos, mas havia muito mais detalhes nesse conteúdo do que era possível demonstrar nessa mídia e com esse tempo.

Durante a construção do material, foi possível perceber que há vários estudos isolados e documentos de arquitetura que mostram separadamente cada uma das peças de uma requisição web. É possível encontrar material sobre como as redes funcionam para entregar o conteúdo de um ponto ao outro, como os protocolos trabalham para encapsular os dados, como é a arquitetura de um framework de desenvolvimento web, como o servidor de aplicação se integra com o framework etc. Apesar disso, não há nada que mostre, do começo ao fim, o que acontece desde o momento que o usuário aperta a tecla Enter do teclado até a página estar completamente carregada na tela.

Este livro vem cobrir esse espaço, trazendo um estudo unificado e focado no entendimento de como a internet funciona, utilizando uma requisição de uma página HTML como exemplo. Durante este estudo, vamos passar por diversas áreas de conhecimento distintas. Passaremos pela criação visual da interface no navegador, pela montagem dos pacotes dentro do kernel do sistema operacional, pelos dispositivos de rede da internet, e até mesmo pela integração do código da aplicação com o servidor web.

Para quem é

Desenvolvedores de aplicações para a internet, programadores curiosos com a web, administradores de sistema, engenheiros de rede, ou qualquer outra pessoa que crie conteúdo para a internet e esteja disposta ir fundo na tecnologia para entender o exato papel do seu trabalho no todo.

O estudo assume um conhecimento básico de como funciona o ambiente de desenvolvimento para a internet. Esse conhecimento básico significa saber que um desenvolvedor programou o site, possivelmente usou algum framework, colocou em um servidor de alguma empresa de hospedagem que possui Apache ou NGINX, e registrou o domínio para que seja fácil de acessar via internet.

Apesar do livro explicar muitos dos termos, ele assume que quem está lendo já sabe o que significa sistema operacional, processo e thread, por exemplo. Esses e mais alguns outros termos básicos não serão detalhados para deixar a explicação mais direta, mas uma busca rápida na internet resolve o problema para continuar o entendimento. Familiaridade com alguma linguagem de programação também será útil em alguns pontos do estudo, em que vamos mais a fundo no desenvolvimento do software estudado.

Há informações úteis tanto para quem é menos experiente na área de internet como para quem já trabalha com isso há algum tempo. Um especialista em desenvolvimento de aplicações, por exemplo, encontrará algumas informações redundantes para a sua área de conhecimento. Apesar disso, ele conhecerá mais sobre todas as tecnologias que envolvem a entrega de conteúdo para o usuário.

O conteúdo deste livro foi pensado para que os especialistas possam passar rapidamente pelo conteúdo de sua especialidade, focando em todos os outros componentes da infraestrutura da requisição.

Conteúdo

  1. Capítulo 1 – E no começo, havia o navegador
    1. O navegador de estudo
    2. Entendendo o conteúdo da barra de endereços
    3. Escolhendo o protocolo
    4. O caminho até a rede
    5. O cache da URL
    6. O navegador e a resolução de nomes
  2. Capítulo 2 – O sistema operacional e a resolução de nomes
    1. Definindo o sistema operacional
    2. A glibc e as chamadas de sistema
    3. A função que resolve nomes
    4. O protocolo IP e suas versões
    5. Happy eyeballs
  3. Capítulo 3 – Resolução de nomes na rede
    1. O modelo Ozzy
    2. O protocolo DNS
    3. DNS e o UDP/IP
    4. Os sockets
    5. O que o DNS faz para obter o que precisa
  4. Capítulo 4 – Transferindo hypertexto
    1. O básico do HTTP
    2. O HTTP e o TCP
    3. O three-way handshake do TCP
    4. A requisição HTTP do navegador
    5. O HTTP/2
  5. Capítulo 5 – HTTPS e sua segurança
    1. O HTTPS
    2. O que é o TLS
    3. O handshake do TLS
      1. Client Hello
      2. Server Hello
      3. O certificado e a chave pública
      4. Garantindo a confiança do certificado
      5. Validando o certificado
      6. Entendendo o cipher
      7. A troca de chaves
      8. Fazendo a criptografia acontecer
    4. Testando uma conexão HTTPS manualmente
    5. O que fica seguro?
  6. Capítulo 6 – Para a internet e além
    1. Ethernet ou Wi-Fi
    2. Saindo do sistema operacional
    3. O caminho para o roteador
    4. A segurança do Wi-Fi
    5. Saindo para a internet
  7. Capítulo 7 – Servidor web
    1. O servidor físico
    2. O software
    3. NGINX
      1. A arquitetura do NGINX
      2. O event loop
      3. Recebendo a requisição do cliente
    4. Phusion Passenger, o servidor de aplicação
      1. Configuração
      2. Arquitetura
      3. Recebendo a requisição do NGINX
  8. Capítulo 8 – O framework e a aplicação
    1. Conhecendo o Rack
    2. Do Passenger ao Rack
    3. O Ruby on Rails
      1. A conexão do Rails com o Rack
      2. Os middlewares
      3. Chegando nas rotas
      4. Chegando ao controller
      5. A renderização da view
    4. A aplicação
    5. O retorno para o navegador
  9. Capítulo 9 – De volta ao navegador
    1. O recebimento dos dados
    2. A rendering engine
    3. Parse de HTML
    4. Parse de CSS
    5. Carregando arquivos externos
    6. Construção da Render Tree
    7. Layout da Render Tree
    8. Painting
    9. Tudo pronto, em menos de um segundo!
  10. Capítulo 10 – Além dessa requisição web
    1. Outras tecnologias
    2. Discussão e aprendizado
    3. Considerações finais
Comprar o livro

Continue a discussão sobre o livro no fórum da casa do código

Sobre o Autor

Willian Molinari
PotHix

Foto de Willian Molinari, também conhecido como PotHix

Willian Molinari, mais conhecido como PotHix, é formado em Sistemas de informação e trabalha com desenvolvimento de software há mais de 10 anos. É um dos fundadores do Guru-SP, ajudando na organização do grupo desde 2008. No seu tempo livre, ele desenvolveu alguns jogos com HTML5 e Javascript, sendo o Skeleton Jigsaw o último deles. Já fez dezenas de palestras, passando por mais de 7 estados brasileiros e foi revisor técnico de dois livros. Mais informações podem ser encontradas no seu blog pessoal.

Fale com o autor: pothix@pothix.com