Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

03 - Modelo Cliente-Servidor

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Modelo Cliente-Servidor

O Modelo Cliente-Servidor é a arquitetura dominante na Camada de Aplicação da internet moderna. Baseia-se na assimetria de papéis: um fornecedor de serviço (Servidor) aguarda passivamente em um soquete de escuta, enquanto um consumidor (Cliente) toma a iniciativa ativa de requisitar recursos. Esta arquitetura sustenta a maioria dos protocolos que usamos diariamente — HTTP, SMTP, DNS, FTP, SSH, IMAP, LDAP e muitos outros.

1. Anatomia da Assimetria

O Servidor (Hospedeiro Central)

  • Posicionado em endereço IP fixo e conhecido (ou nome DNS).
  • Escuta passivamente em uma porta bem conhecida (ex: 80 para HTTP, 22 para SSH).
  • Possui alta disponibilidade (24/7), armazenamento persistente e capacidade de processamento.
  • Atende múltiplas requisições simultâneas através de processos, threads ou I/O assíncrono.

O Cliente (Hospedeiro Periférico)

  • Pode ter IP dinâmico (DHCP), estar atrás de NAT ou firewall.
  • Toma a iniciativa de abrir conexão (TCP) ou enviar datagrama (UDP).
  • Não precisa estar sempre online; depende apenas de conhecer o endereço do servidor.
  • Pode ser um navegador, aplicativo mobile, script Python, outro servidor (proxy).

2. Ciclo de Vida de uma Transação

TCP-based (ex: HTTP, SSH)

  1. Resolução DNS: cliente resolve nome do servidor → IP.
  2. TCP Handshake: cliente envia SYN → servidor responde SYN-ACK → cliente ACK.
  3. Aplicação Handshake: cliente e servidor negociam parâmetros (TLS, ALPN, protocolo).
  4. Requisição: cliente envia comando/HTTP request.
  5. Processamento: servidor processa, consulta banco, gera resposta.
  6. Resposta: servidor envia status + cabeçalhos + corpo.
  7. Encerramento: cliente ou servidor envia FIN (ou mantém Keep-Alive).

UDP-based (ex: DNS, SNMP)

  1. Cliente envia datagrama UDP para IP:porta do servidor.
  2. Servidor processa datagrama.
  3. Servidor responde com datagrama UDP para IP:porta de origem (efêmera).
  4. Sem conexão, sem handshake — latência mínima.

3. Escalabilidade: Vertical vs Horizontal

Vertical (Scale-Up)

Adicionar mais CPU, RAM e I/O ao servidor central.

Vantagens Desvantagens
Simples tecnicamente Custo cresce exponencialmente
Sem mudança de arquitetura Teto físico (limite de hardware)
Sem coordenação distribuída Manutenção requer downtime
Latência previsível Single point of failure

Horizontal (Scale-Out)

Adicionar múltiplos servidores idênticos atrás de um Load Balancer.

Vantagens Desvantagens
Escala praticamente ilimitada Complexidade de coordenação
Sem downtime (rolling updates) Custo de balanceador
Tolerância a falhas State sharing (sessões, cache)
Custo linear com demanda Data consistency challenges

Estratégias de Load Balancing

Algoritmo Descrição
Round Robin Distribui em sequência cíclica
Weighted RR Round Robin com pesos por capacidade
Least Connections Envia para servidor com menos conexões ativas
IP Hash Mesmo IP sempre vai para mesmo servidor (sticky)
Least Response Time Combina conexões + latência
URL Hash Mesma URL vai para mesmo servidor (cache hit)

4. Componentes Típicos de uma Arquitetura

[Cliente] → [CDN/Edge] → [Load Balancer] → [Reverse Proxy (Nginx)]
   → [App Server (PHP/Python/Node)] → [Cache (Redis)]
   → [Database Primary (PostgreSQL)] → [Database Replicas (read-only)]

Camadas Comuns

Camada Função Exemplos
Edge/CDN Cache geográfico, TLS termination Cloudflare, Fastly, CloudFront
Load Balancer Distribuição de carga HAProxy, AWS ALB, Nginx
Reverse Proxy SSL/TLS, cache HTTP, rate limiting Nginx, Varnish, Traefik
App Server Lógica de negócio Tomcat, Gunicorn, uWSGI, PM2
Cache Dados quentes em memória Redis, Memcached
Database Persistência ACID PostgreSQL, MySQL, Oracle
Object Storage Arquivos binários S3, MinIO, Ceph
Message Queue Comunicação assíncrona RabbitMQ, Kafka, SQS

5. Padrões de Concorrência no Servidor

Modelo Descrição Exemplos
Multi-process Um processo por conexão (fork) Apache prefork, CGI
Multi-thread Uma thread por conexão Apache worker, Tomcat
Event-driven (single thread) Loop de eventos com epoll/kqueue Nginx, Node.js, Redis
Hybrid Processos com threads internas Apache event MPM
io_uring / async I/O Submissão assíncrona no kernel Node.js 22+, Nginx patches

6. Segurança no Modelo Cliente-Servidor

Vulnerabilidades Típicas

  • DDoS (Distributed Denial of Service): milhares de clientes zumbis inundam o servidor.
  • Slowloris: abre muitas conexões lentas para exaurir slots.
  • SQL Injection / XSS / CSRF: falhas de lógica da aplicação.
  • Session Hijacking: roubo de cookies/tokens.
  • MITM (Man-in-the-Middle): interceptação sem TLS.

Defesas em Camadas

Camada Defesa
Rede ACLs, firewall, BGP blackholing
Transporte TLS 1.3, HSTS, OCSP stapling
Aplicação WAF, validação de input, CSP, rate limiting
Identidade OAuth2, OIDC, MFA, JWT assinado
Disponibilidade CDN, Anycast, failover geo

7. Protocolos Cliente-Servidor Comuns

Protocolo Porta Função RFC
HTTP/HTTPS 80/443 Web 9110, 9114
SSH 22 Acesso remoto 4251-4254
DNS 53 Resolução de nomes 1034, 1035
SMTP 25/587 Envio de email 5321
IMAP 143/993 Leitura de email 3501
POP3 110/995 Download de email 1939
FTP 21/20 Transferência de arquivos 959
LDAP 389/636 Diretório 4511
DHCP 67/68 Atribuição de IP 2131
NTP 123 Sincronização de tempo 5905
SNMP 161/162 Gerência de rede 3411-3418
SIP 5060/5061 VoIP signaling 3261
MQTT 1883/8883 IoT messaging OASIS

8. Auditoria e Diagnóstico

ss -tnp | grep ESTAB                              # conexões TCP estabelecidas
ss -tn -o state established '( sport = :80 or dport = :80 )'   # detalhes do socket
sudo htop -p $(pidof nginx)                       # monitorar processo servidor
ping -c 10 servidor.exemplo.com | grep avg         # latência RTT
ab -n 1000 -c 100 http://servidor.exemplo.com/     # testar throughput
wrk -t4 -c100 -d30s http://servidor.exemplo.com/   # teste de carga moderno
sudo tcpdump -i eth0 -A port 80 | grep -E "GET|POST|Host"  # capturar requisições

9. Métricas Importantes

Métrica Significado Ferramenta
Throughput Requisições por segundo wrk, ab
Latência P50/P95/P99 Tempo de resposta percentis Prometheus, Datadog
Concurrency Conexões simultâneas ss, lsof
Error rate % de respostas 5xx Logs do servidor
Connection time Tempo de handshake TCP+TLS curl -w
Apdex Application Performance Index APM tools
Saturation Quão próximo do limite vmstat, iostat

10. High Availability (HA)

Conceitos Fundamentais

  • Active-Passive: um servidor atende, outro replica (standby). Failover manual ou automático.
  • Active-Active: múltiplos servidores atendem simultaneamente, balanceados.
  • Geo-redundância: servidores em datacenters diferentes (DR site).
  • Health checks: probes (HTTP 200 OK, TCP connect) detectam falha.
  • Failover time: objetivo típico < 30s (TCP), < 5s (com VIP/VRRP).

Ferramentas de HA

Ferramenta Função
Keepalived VRRP para failover de IP
HAProxy Load balancer L4/L7 com health checks
Pacemaker/Corosync Cluster de alta disponibilidade
AWS ALB/NLB Load balancer gerenciado cloud
Kubernetes Orquestração com auto-healing

11. Tendências Modernas

  • Serverless / FaaS: o cliente não enxerga servidores fixos — requisições disparam funções efêmeras (AWS Lambda, Cloudflare Workers).
  • Edge Computing: servidores próximos ao usuário (latência < 50ms).
  • Service Mesh: microserviços com sidecars (Istio, Linkerd) que abstraem comunicação cliente-servidor.
  • gRPC: cliente-servidor moderno baseado em HTTP/2 e Protocol Buffers.
  • GraphQL: substitui múltiplas chamadas REST por uma única consulta flexível.
  • Zero Trust: nenhum cliente é confiável por default — autenticação mútua (mTLS) obrigatória.

12. Conclusão

O modelo Cliente-Servidor é o pilar da internet moderna, sustentando praticamente todos os serviços de aplicação que utilizamos. Apesar das limitações (ponto único de falha, custo de escala), suas vantagens (controle centralizado, simplicidade, governança) o tornam a escolha padrão para aplicações corporativas e comerciais. Com o avanço de tecnologias como load balancing, CDN, edge computing e serverless, as desvantagens clássicas do modelo são mitigadas, permitindo arquiteturas altamente escaláveis, resilientes e seguras mantendo a essência assimétrica do paradigma original.