Introdução a Redes para Programadores Web

Toda pessoa que desenvolve software para a web utiliza conceitos de redes o tempo todo, mas pouca gente realmente entende o que acontece entre o navegador e o servidor. O propósito desse livro é justamente preencher essa lacuna: explicar o básico de redes de um jeito claro, prático e voltado a quem escreve código.

A ideia não é formar administradores de redes, SREs, sysadmins, nem cobrir conceitos que aparecem em provas de certificação. Aqui o foco é outro: mostrar o que realmente importa para quem desenvolve aplicações web e precisa entender como certas coisas funcionam (ou deixam de funcionar) quando entram em jogo IP, DNS, TCP, HTTP e outros componentes que fazem a web existir.

Motivação para esse livro existir

Minha primeira formação superior foi na faculdade de Tecnologia da Informação e Comunicação, onde entrei já sabendo o que eu queria me tornar: programador. Embora eu não conhecesse conceitos a fundo, eu já escrevia alguns códigos e fazia sistemas para trabalhos de freelance. Sendo assim, qual faculdade cursar foi uma escolha fácil para mim.

Nesse curso, além das matérias que eu “queria”, como as de programação e bancos de dados, haviam matérias muito importantes, mas que eu, um jovem irresponsável, não dava o devido valor.

Eu tive disciplinas como Princípio de Comunicação de Dados e Tecnologia de Comunicação de Dados que ensinavam como dados são trafegados, como processos se comunicam e muitos outros conceitos que nós usamos de forma cotidiana.

Matérias como Rede de Computadores (1 e 2) explicavam os conceitos, com teoria e prática, de como podemos conectar diferentes dispositivos para realizar incontáveis tarefas também presentes no nosso dia a dia.

Eu entrei na faculdade com 17 anos, ainda imaturo. Além disso, faculdades públicas podem ter seus desafios. Falta de professores e greves tornaram a minha jornada um pouco mais árdua do que eu planejava. Com isso, negligenciei essa parte dos estudos que, erroneamente, considerava “secundária”.

Toda matéria que envolvia escrever código recebia minha atenção, enquanto as demais, independente de quão importantes fossem, eu estudava o suficiente para ser aprovado. E isso obviamente gera lacunas no conhecimento. Felizmente, por mais que eu não tenha me esforçado como deveria, o ensino formal tende a trazer boas bases de conhecimento. Mesmo sem me aprofundar tanto, aprendi o suficiente para “me virar” e, mais tarde, entender conceitos de forma mais profunda quando eu julgasse necessário.

Conforme essas necessidades de conhecer mais conceitos foram surgindo, o que é natural com nossa evolução na carreira, eu fui me deparando com materiais que se enquadravam em uma dessas categorias:

Muito simples
Conceitos iniciais e teóricos, principalmente focados em quem está iniciando na área e quer entender como uma coisa ou outra funciona por baixo dos panos, mas sem profundidade ou exemplos práticos.
Muito complexos
Materiais muito densos e focados em profissionais da área de operações, redes ou administração de sistemas. Esses conteúdos entravam em conceitos com os quais eu, como desenvolvedor web, nunca precisaria ter contato, o que tornava esse aprendizado mais custoso.

Caso você não saiba, além de atuar como programador há mais de 10 anos, eu também leciono. Sou autor de diversos cursos online na Alura e tenho um canal no YouTube. Eu sempre foquei em ensinar conteúdos que eu domino com profundidade, ou seja, programação, bancos de dados, ambientes de nuvem e tudo que envolve o dia a dia de um programador web. Porém, em conteúdos que nós precisamos saber, mas eu só sei o suficiente para minha área de atuação, eu sempre evitei tocar. Por não ser um especialista em Linux, por exemplo, apesar de usar o sistema também há mais de uma década, eu prefiro não ensinar sobre ele. E o mesmo vale para redes.

Contudo, ao refletir por um tempo, cheguei à conclusão de que eu não precisaria ensinar sobre redes para pessoas que querem se tornar profissionais dessa área, pois vários outros profissionais também precisam de certo conhecimento nesse assunto. Sendo assim, decidi compartilhar meu conhecimento sobre redes pelo ponto de vista de quem trabalha com desenvolvimento web, ou seja, você não vai ver aqui sobre tipos de cabos de rede, comportamentos de cada tipo de equipamento como switches e hubs, etc.

O que será abordado nesse livro

Ao longo dos capítulos você vai entender como uma comunicação simples entre um cliente e um servidor pode passar por diversas camadas e protocolos, como alguns desses protocolos funcionam na prática de forma simplificada, como serviços que utilizamos como programadores web se comportam e como nós interagimos com redes em códigos do dia-a-dia.

Como o conteúdo está organizado

O conteúdo está organizado em seis partes: fundamentos gerais sobre redes, camada de Internet, camada de transporte, camada de aplicação, uma visão detalhada de HTTP e, por fim, alguns aditivos e evoluções do HTTP. O objetivo é construir conhecimento passo a passo, sempre com foco no que realmente faz diferença para um desenvolvedor web moderno.

Se você quer entender de verdade como a web funciona “por baixo dos panos”, este é um bom ponto de partida. Depois disso, tudo passa a fazer mais sentido.