Redes: o Mínimo que Dev Precisa Saber
3 min de leitura
Quase todo software hoje é distribuído. "Funciona localmente" não
basta - seu app precisa falar com banco, com outras APIs, com
browsers em outras máquinas. Entender o básico de redes é o que
explica por que fetch demora, por que HTTPS importa, e por que
"ping" às vezes resolve bugs misteriosos.
O essencial 🟢
Vamos seguir o que acontece quando você digita
https://exemplo.com/artigo/42 no navegador e aperta Enter.
Simplificado, é isto:
Três peças-chave:
- DNS (Domain Name System) - o "lista telefônica" da internet.
Traduz
exemplo.comem93.184.216.34(o IP do servidor). Sem DNS, você teria que decorar IPs. - TCP (Transmission Control Protocol) - conexão confiável entre duas máquinas. Garante que os pacotes chegam em ordem, sem duplicar, sem perder. Usa o famoso 3-way handshake (SYN → SYN-ACK → ACK) pra estabelecer. É o "andar com contrato" da internet.
- HTTP (HyperText Transfer Protocol) - a linguagem que
cliente e servidor usam uma vez conectados. Você manda um
GET /artigo/42, o servidor responde com200 OKe o conteúdo. Status codes (200, 404, 500) viraram vocabulário comum.
UDP é o outro protocolo de transporte importante - mas sem garantia. Manda os pacotes e torce. É usado quando velocidade importa mais que confiabilidade: videochamada, streaming ao vivo, DNS (consultas são curtas e podem ser reenviadas), jogos online. Cada pacote é independente.
Dica: o tempo de resposta de uma request tem quatro vilões principais - latência (ida e volta do pacote), banda (tamanho do canal), servidor (tempo de processamento) e serialização (transformar objeto em bytes e vice-versa). "Está lento" quase sempre é um desses.
Aprofundamento 🟡
TLS (Transport Layer Security) - o "S" do HTTPS. É o que faz a conexão ser privada e autenticada. Estabelecer TLS custa tempo (handshake com troca de chaves), mas permite que dados sensíveis (senha, cartão) viagem sem serem lidos por intermediários. A performance do HTTPS hoje é praticamente equivalente à do HTTP, graças a TLS 1.3 e técnicas como session resumption (não re-negociar chaves a cada conexão).
Latência vs largura de banda - são coisas diferentes. Largura de banda é "quanto cabe" (Mbps). Latência é "quanto demora pra um pacote chegar" (ms). Uma conexão de fibra com 1 Gbps de banda mas 200ms de latência (tipo卫星) é pior pra navegar que uma de 10 Mbps com 10ms (fibra urbana). É por isso que o "first byte time" importa mais que tamanho da página em conexões rápidas.
Headers, cookies, e state - HTTP é stateless (cada request
é independente). Pra manter "usuário logado", o servidor manda um
Set-Cookie na primeira response, e o navegador manda de volta em
toda request subsequente. É o jeito padrão de "lembrar" entre
requests.
Pra quem quer ir além 🔴
O modelo OSI (Open Systems Interconnection) divide a rede em 7 camadas: Física, Enlace, Rede, Transporte, Sessão, Apresentação, Aplicação. É um modelo conceitual útil pra classificar protocolos (IP = camada 3, TCP = camada 4, HTTP = camada 7), mas na prática a internet usa o modelo TCP/IP (4 camadas). Saber a diferença entre os dois e quando citar cada um é conhecimento cultural de TI.
TCP em detalhe: janela deslizante, controle de congestionamento (CUBIC, BBR), retransmissão, slow start. O livro TCP/IP Illustrated (W. Richard Stevens) é o clássico. Volume 1 cobre tudo.
No próximo nó, vamos fechar a trilha com pensando em sistemas - as habilidades mentais que separam quem escreve código que funciona de quem projeta software que dura.