Aula 7: Arquitetura Cliente-Servidor
Descubra como a arquitetura cliente-servidor forma a base de praticamente todos os serviços digitais que utilizamos diariamente, desde websites até aplicações empresariais complexas.
Atividades Práticas
Exercício 1 — LAN básica: cliente acessa servidor web (mesma rede)
Objetivo: configurar um servidor HTTP e clientes na mesma LAN e validar o acesso via navegador.
Topologia (arraste e conecte):
  • 1× Switch 2960
  • 2× PCs (PC1, PC2)
  • Server (ServidorWeb)
Endereçamento:
  • ServidorWeb: 192.168.10.10/24 (GW em branco)
  • PC1: 192.168.10.101/24
  • PC2: 192.168.10.102/24
  • Cabos: Copper Straight-Through entre PCs/Server Switch.
Passo a passo (resolvido):
  1. IP dos hosts
  • Em cada PC: Desktop → IP Configuration > preencha IP e máscara.
  • No Server: Desktop → IP Configuration > IP 192.168.10.10 / máscara 255.255.255.0.
  1. Serviço HTTP
  • No Server: Services → HTTP > On. (Opcional: edite index.html com uma mensagem de teste.)
  1. Teste
  • Em PC1: Desktop → Web Browser > acesse http://192.168.10.10.
  • Deve abrir a página do servidor.
Verificações:
  • PC1 → Command Prompt: ping 192.168.10.10 deve responder.
  • Modo Simulation: envie Simple PDU do PC ao Server e observe a troca ARP/HTTP.
Erros comuns & correções:
  • Sem conexão? → Verifique cabos (use Auto), portas do switch ativas (LEDs verdes).
  • Página não abre? → Confirme HTTP: On no servidor.
Exercício 2 — Cliente-servidor com DHCP + DNS (mesma LAN com gateway)
Objetivo: entregar IPs via DHCP e resolver nome do site via DNS.
Topologia:
  • 1× Router 2911 (ou 1941)
  • 1× Switch 2960
  • Server (DHCP+DNS+HTTP)
  • PC (Cliente)
Endereçamento:
  • Roteador G0/0 Switch: 192.168.20.1/24
  • Servidor: 192.168.20.10/24, GW 192.168.20.1
  • PC: DHCP
  • Cabos: PC/Server Switch (Straight), Switch Router G0/0 (Straight).
Passo a passo (resolvido):
  1. Roteador
  • Sem CLI necessária além do IP da interface (opcional). Para esta LAN, basta conectar.
  1. Servidor
  • Desktop → IP Configuration: 192.168.20.10, máscara /24, Gateway 192.168.20.1.
  • Services → HTTP: On (edite página se desejar).
  • Services → DHCP:
  • Add Pool:
  • Pool Name: LAN20
  • Default Gateway: 192.168.20.1
  • DNS Server: 192.168.20.10
  • Start IP Address: 192.168.20.100
  • Subnet Mask: 255.255.255.0
  • Maximum Users: 51 (gera faixa .100-.150)
  • Save e On.
  • Services → DNS:
  • Add:
  • Name: www.empresa.local
  • Type: A
  • Address: 192.168.20.10
  • Add.
  1. Cliente
  • Desktop → IP Configuration > DHCP.
  • Deve obter IP 192.168.20.x, GW 192.168.20.1, DNS 192.168.20.10.
Teste:
  • ping 192.168.20.10 e ping 192.168.20.1.
  • Navegador: http://www.empresa.local → deve abrir a página do servidor.
Erros comuns:
  • Cliente sem IP → Confirme DHCP: On e Pool salvo no servidor.
  • Nome não resolve → Verifique entrada no DNS e se o PC recebeu o DNS certo.
Exercício 3 — Inter-VLAN routing (Router-on-a-Stick) com servidor central
Objetivo: separar clientes em VLANs diferentes e permitir acesso a um servidor em outra VLAN.
Topologia:
  • 1× Router 2911
  • 1× Switch 2960
  • 2× PCs em VLAN 10 (Clientes10)
  • 2× PCs em VLAN 20 (Clientes20)
  • Server em VLAN 30 (ServidorWeb)
Endereçamento:
  • VLAN 10: 192.168.10.0/24 (GW 192.168.10.1)
  • VLAN 20: 192.168.20.0/24 (GW 192.168.20.1)
  • VLAN 30: 192.168.30.0/24 (GW 192.168.30.1)
  • Server: 192.168.30.10/24, GW 192.168.30.1
  • Trunk: Switch Fa0/24 Router G0/0
Configuração (resolvida):
No Switch 2960 (CLI):
enable configure terminal vlan 10 name CLIENTES10 vlan 20 name CLIENTES20 vlan 30 name SERVIDORES ! interface range fa0/1-2 switchport mode access switchport access vlan 10 interface range fa0/3-4 switchport mode access switchport access vlan 20 interface fa0/5 switchport mode access switchport access vlan 30 ! interface fa0/24 switchport mode trunk exit wr
No Router 2911 (CLI):
enable configure terminal interface g0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 interface g0/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0 interface g0/0.30 encapsulation dot1Q 30 ip address 192.168.30.1 255.255.255.0 ! interface g0/0 no shutdown exit wr
Hosts:
  • PCs da VLAN 10: 192.168.10.101/102 (GW 192.168.10.1)
  • PCs da VLAN 20: 192.168.20.101/102 (GW 192.168.20.1)
  • Server: 192.168.30.10 (GW 192.168.30.1), Services → HTTP: On.
Testes:
  • De PC VLAN10: ping 192.168.30.10 e abrir http://192.168.30.10.
  • De PC VLAN20: idem.
Erros comuns:
  • Sem roteamento entre VLANs → confira encapsulation dot1Q nos sub-interfaces e trunk no Fa0/24.
  • Server não responde → verifique VLAN do porta Fa0/5 (VLAN 30) e gateway do servidor.
Exercício 4 — ACL: permitir HTTP do VLAN10 e bloquear HTTP do VLAN20 (demais tráfegos liberados)
Objetivo: aplicar política de acesso ao servidor web com listas de controle de acesso.
Cenário base: Exercício 3 pronto e funcional.
Política desejada:
  • VLAN 10 pode acessar HTTP do servidor 192.168.30.10.
  • VLAN 20 não pode acessar HTTP do servidor.
  • Demais tráfegos (ex.: ping) continuam permitidos.
Configuração (resolvida) — Router 2911 (CLI):
Estratégia simples: aplicar ACL apenas na subinterface da VLAN 20, negando HTTP ao servidor.
enable configure terminal ip access-list extended BLOQUEIO_V20_HTTP deny tcp any host 192.168.30.10 eq 80 permit ip any any ! interface g0/0.20 ip access-group BLOQUEIO_V20_HTTP in exit wr
Testes:
  • PC VLAN10: http://192.168.30.10DEVE abrir. ping 192.168.30.10ok.
  • PC VLAN20: http://192.168.30.10NÃO deve abrir. ping 192.168.30.10ok.
Erros comuns:
  • Aplicar ACL no lugar errado → precisa ser in na g0/0.20 (tráfego entrando do VLAN20).
  • Bloqueou tudo → garanta a linha permit ip any any após a negação específica.
Exercício 5 — NAT/PAT: clientes da LAN acessam servidor público na “Internet”
Objetivo: permitir que clientes internos naveguem para fora usando PAT.
Topologia:
  • R1 (Borda) com 2 interfaces:
  • G0/0 (inside) Switch LAN (192.168.50.1/24)
  • G0/1 (outside) R2 (ISP) (198.51.100.2/30)
  • R2 (ISP):
  • G0/0 198.51.100.1/30 (para R1)
  • G0/1 200.200.200.1/24 (para rede “Internet”)
  • ServerPúblico na “Internet”: 200.200.200.10/24, GW 200.200.200.1
  • PCs LAN: 192.168.50.100/24 (GW 192.168.50.1)
Configuração (resolvida):
R1 — Borda (CLI):
enable configure terminal interface g0/0 ip address 192.168.50.1 255.255.255.0 ip nat inside no shutdown interface g0/1 ip address 198.51.100.2 255.255.255.252 ip nat outside no shutdown ! ip access-list standard LAN_INSIDE permit 192.168.50.0 0.0.0.255 ! ip nat inside source list LAN_INSIDE interface g0/1 overload ! ip route 0.0.0.0 0.0.0.0 198.51.100.1 exit wr
R2 — ISP (CLI):
enable configure terminal interface g0/0 ip address 198.51.100.1 255.255.255.252 no shutdown interface g0/1 ip address 200.200.200.1 255.255.255.0 no shutdown ! ip route 192.168.50.0 255.255.255.0 198.51.100.2 exit wr
ServerPúblico:
  • IP 200.200.200.10/24, GW 200.200.200.1
  • Services → HTTP: On
Testes:
  • Em PC da LAN: ping 200.200.200.10 (deve responder).
  • Navegador do PC: http://200.200.200.10 (deve abrir).
  • R1: show ip nat translations → deve exibir mapeamentos inside localinside global.
Erros comuns:
  • Sem retorno do ISP → confira rota estática no R2 para 192.168.50.0/24.
  • NAT inoperante → verifique ip nat inside/outside nas interfaces corretas e a ACL de origem.
Dicas finais (úteis em todos os exercícios)
  • Use o Simulation Mode para ver ARP, DNS, HTTP, ICMP passo a passo.
  • Se algo “travou”, Power Cycle Devices (botão Physical → Power Cycle).
  • Mantenha nomes dos dispositivos e salve versões numeradas do .pkt (Ex1_v1, Ex1_v2…).
Introdução ao Modelo Cliente-Servidor
A arquitetura cliente-servidor representa um conceito fundamental em redes e sistemas distribuídos, estando presente na grande maioria dos serviços online que utilizamos diariamente.
Este modelo divide claramente as aplicações em dois componentes principais: os clientes, que atuam como consumidores de serviços, e os servidores, que funcionam como provedores desses mesmos serviços, criando um sistema de comunicação bidirecional altamente eficiente.
Histórico e Origem do Modelo
A arquitetura cliente-servidor ganhou popularidade nas décadas de 1980 e 1990, marcando uma evolução significativa nos sistemas informáticos ao superar as limitações dos modelos anteriores baseados em mainframe e terminais "burros".
Esta transição revolucionou a forma como as redes eram estruturadas, estabelecendo os fundamentos para os sistemas de rede modernos que conhecemos hoje e permitindo maior flexibilidade e eficiência na distribuição de recursos computacionais.
Estrutura Básica: Cliente e Servidor
Na base desta arquitetura encontramos dois elementos fundamentais que interagem continuamente:
Cliente
Utilizador ou aplicação que solicita serviços, recursos ou informações através da rede.
Servidor
Sistema responsável por processar pedidos, executar operações e fornecer dados ou serviços solicitados pelos clientes.
Separação de Responsabilidades
Cliente
Responsável pela interface de utilizador, apresentação de dados e interações com o utilizador final.
Servidor
Encarregado do armazenamento de dados, processamento de lógica central e gestão de recursos compartilhados.
Esta clara divisão de responsabilidades simplifica significativamente a manutenção dos sistemas e permite maior modularidade no desenvolvimento de aplicações.
Exemplo Simples: Web na Prática
O funcionamento da web é um exemplo perfeito da arquitetura cliente-servidor em ação:
Cliente Web
O navegador atua como cliente, solicitando páginas e recursos através de protocolos específicos.
Comunicação
Os pedidos são enviados via HTTP/HTTPS através da internet até ao servidor de destino.
Servidor Web
Processa os pedidos, recupera os recursos solicitados e envia-os de volta ao cliente para apresentação.
Como Funciona a Comunicação
A comunicação cliente-servidor ocorre através de trocas de mensagens bem definidas via protocolos específicos como HTTP, FTP ou SMTP, seguindo um fluxo consistente:
Requisição
O cliente formula e envia um pedido específico ao servidor.
Processamento
O servidor recebe, valida e processa o pedido conforme suas regras.
Resposta
O servidor envia os resultados de volta ao cliente que os interpreta e apresenta.
Componentes e Tecnologias Associadas
Clientes
  • Navegadores web (Chrome, Firefox)
  • Aplicações móveis (iOS, Android)
  • Terminais POS e caixas automáticos
Servidores
  • Servidores web (Apache, Nginx)
  • Servidores de email (Exchange, Postfix)
  • Servidores de bases de dados (MySQL, Oracle)
Estas tecnologias são interligadas através de protocolos de comunicação específicos que operam em diferentes camadas da rede, permitindo uma troca eficiente de informações.
Fluxo de Informação
Interação do Utilizador
O utilizador interage com a aplicação cliente, solicitando um recurso (como uma página web).
Envio do Pedido
O cliente formula e envia o pedido através da rede até ao servidor apropriado.
Processamento no Servidor
O servidor interpreta o pedido, executa operações e prepara a resposta.
Resposta ao Cliente
O servidor envia os dados solicitados de volta ao cliente que os processa.
Exemplos de Utilização
Serviços Bancários
Aplicações bancárias onde os clientes acedem a contas e o servidor processa transações com alta segurança.
Redes Sociais
Plataformas onde os utilizadores partilham conteúdo que é armazenado e distribuído por servidores centralizados.
Serviços de Email
Sistemas onde os clientes compõem mensagens e os servidores armazenam e encaminham para os destinatários.
Vantagens da Arquitetura Cliente-Servidor
Escalabilidade
Capacidade de suportar números crescentes de utilizadores através da adição de mais servidores ou recursos, sem alterações nos clientes.
Manutenção Centralizada
Atualizações e melhorias podem ser implementadas centralmente no servidor, sem necessidade de atualizar cada cliente individualmente.
Segurança Reforçada
Centralização de dados sensíveis em servidores protegidos, reduzindo riscos de exposição em dispositivos cliente menos seguros.
Desafios e Limitações
Dependência do Servidor
Se o servidor falhar, todos os clientes ficam sem acesso aos serviços, criando um ponto único de falha crítico.
Congestionamento
Servidores podem tornar-se gargalos durante períodos de alta carga, resultando em degradação de desempenho para todos os utilizadores.
Custos de Infraestrutura
Manter servidores robustos com alta disponibilidade exige investimentos significativos em hardware, software e pessoal especializado.
Comparação com Arquitetura Peer-to-Peer
Cliente-Servidor
  • Estrutura hierárquica centralizada
  • Controlo e administração centralizados
  • Recursos concentrados em servidores
  • Gestão de acesso simplificada
Peer-to-Peer (P2P)
  • Estrutura descentralizada igualitária
  • Cada nó é cliente e servidor simultaneamente
  • Recursos distribuídos entre todos os nós
  • Maior resistência a falhas pontuais
Cada arquitetura oferece vantagens distintas dependendo do caso de uso, com o P2P sendo frequentemente usado em partilha de ficheiros e streaming, enquanto o cliente-servidor domina em aplicações empresariais.
Escalabilidade no Modelo Cliente-Servidor
A escalabilidade é uma das principais vantagens da arquitetura cliente-servidor, permitindo o crescimento dos sistemas para atender demandas crescentes:
Escalabilidade Horizontal
Adição de mais servidores para distribuir a carga, aumentando a capacidade total do sistema.
Escalabilidade Vertical
Aumento de recursos (CPU, memória, armazenamento) nos servidores existentes para melhorar capacidade.
Balanceamento de Carga
Distribuição inteligente de pedidos entre múltiplos servidores para otimizar desempenho e disponibilidade.
Segurança na Arquitetura Cliente-Servidor
A segurança é um aspeto crítico nos sistemas cliente-servidor, especialmente quando lidam com dados sensíveis:
Centralização de Dados
Informações sensíveis permanecem no servidor, reduzindo riscos de exposição em dispositivos cliente menos seguros.
Autenticação Robusta
Implementação de mecanismos de login centralizados com múltiplos fatores para verificar identidades.
Encriptação
Proteção das comunicações através de protocolos seguros como HTTPS, garantindo confidencialidade dos dados.
Tipos de Servidores
Servidores Web
Especializados em responder a pedidos HTTP/HTTPS e fornecer conteúdo web (Apache, Nginx, IIS).
Servidores de Bases de Dados
Focados no armazenamento, gestão e acesso a dados estruturados (MySQL, Oracle, SQL Server).
Servidores de Email
Dedicados ao processamento, armazenamento e transmissão de mensagens de correio eletrónico (Exchange, Postfix).
Servidores de Ficheiros
Responsáveis pelo armazenamento e partilha de ficheiros numa rede (NAS, Samba, FTP).
Tipos de Clientes
Os clientes podem assumir diversas formas, desde aplicações desktop tradicionais até dispositivos IoT, cada um com interfaces e requisitos específicos para comunicação com os servidores correspondentes.
Protocolos Utilizados
Protocolos Comuns
  • HTTP/HTTPS: navegação web
  • SMTP/POP3/IMAP: email
  • FTP/SFTP: transferência de ficheiros
  • LDAP: diretórios de rede
  • SQL: comunicação com bases de dados
Características
Cada protocolo é otimizado para um tipo específico de comunicação, definindo regras para:
  • Formato das mensagens
  • Sequência de comunicação
  • Tratamento de erros
  • Segurança e autenticação
Estudo de Caso: Sistema de Gestão Académica
Utilizadores
Alunos, professores e funcionários acedem através de navegadores ou aplicações móveis (clientes).
Servidor Central
Processa inscrições, armazena notas, gere calendários e documentos oficiais.
Base de Dados
Armazena registos académicos, dados pessoais e histórico de forma segura e centralizada.
Este sistema demonstra perfeitamente a separação de responsabilidades, com controlo granular de permissões baseado em perfis de utilizador.
Estudo de Caso: Serviços de Streaming
Os serviços de streaming como Netflix e Spotify exemplificam arquiteturas cliente-servidor altamente otimizadas:
Pedido de Conteúdo
O cliente seleciona um vídeo/música e envia requisição ao servidor.
Processamento
O servidor identifica a melhor fonte e formato para o dispositivo específico.
Streaming Adaptativo
Conteúdo é enviado em segmentos, ajustando a qualidade conforme a conexão.
Reprodução
Cliente apresenta o conteúdo enquanto continua a receber segmentos adicionais.
Arquitetura Multicamadas
Os sistemas modernos frequentemente expandem o modelo básico cliente-servidor para uma arquitetura multicamadas:
Camada de Apresentação
Interface do utilizador e visualização de dados (frontend). Executa no cliente.
Camada de Lógica
Processamento, regras de negócio e coordenação (backend). Executa no servidor de aplicação.
3
Camada de Dados
Armazenamento e recuperação de informações. Executa no servidor de base de dados.
Balanceamento de Carga
O balanceamento de carga é essencial para sistemas de alta disponibilidade, distribuindo pedidos entre múltiplos servidores:
Round-Robin
Distribui pedidos sequencialmente entre servidores, garantindo uso equilibrado.
Baseado em Carga
Direciona pedidos para servidores com menor utilização de recursos no momento.
Geográfico
Encaminha utilizadores para servidores fisicamente mais próximos, reduzindo latência.
Persistência de Sessão
Mantém pedidos do mesmo utilizador no mesmo servidor durante uma sessão.
Disponibilidade e Redundância
Para garantir serviços ininterruptos, sistemas cliente-servidor modernos implementam estratégias de alta disponibilidade:
Servidores Redundantes
Múltiplas instâncias do mesmo servidor prontas para assumir em caso de falha do servidor principal.
Failover Automático
Sistemas que detetam falhas e redirecionam tráfego para servidores de backup sem intervenção manual.
Replicação de Dados
Cópias sincronizadas dos dados em múltiplos servidores, garantindo consistência mesmo em caso de falha.
Monitorização Contínua
Sistemas que verificam constantemente a saúde dos servidores e alertam administradores sobre problemas.
Ferramentas e Soluções de Mercado
Servidores Web
  • Apache HTTP Server
  • Nginx
  • Microsoft IIS
  • LiteSpeed
Bases de Dados
  • MySQL/MariaDB
  • PostgreSQL
  • Microsoft SQL Server
  • Oracle Database
  • MongoDB (NoSQL)
Além destas soluções tradicionais, plataformas cloud como AWS, Microsoft Azure e Google Cloud oferecem serviços geridos que simplificam significativamente a implementação e manutenção de infraestruturas cliente-servidor.
Tendências Atuais em Cliente-Servidor
Microserviços
Decomposição de aplicações em pequenos serviços especializados e independentes que comunicam via APIs.
Serverless
Modelo onde desenvolvedores escrevem funções que são executadas em resposta a eventos, sem gestão de servidores.
Contentorização
Utilização de contentores (Docker) e orquestração (Kubernetes) para desenvolvimento e implantação consistentes.
Futuro da Arquitetura Cliente-Servidor
IoT Expansiva
Bilhões de dispositivos conectados atuando como clientes especializados em sistemas distribuídos.
Integração com IA
Sistemas inteligentes que adaptam serviços com base em padrões de uso e preferências.
Edge Computing
Processamento mais próximo dos utilizadores finais, reduzindo latência para aplicações críticas.
Estas tendências estão transformando a arquitetura tradicional, tornando-a mais distribuída, resiliente e adaptativa às necessidades específicas de cada aplicação.
Boas Práticas para Projetar Sistemas Cliente-Servidor
Modularidade
Projete componentes com responsabilidades bem definidas e interfaces claras para facilitar manutenção e evolução.
Segurança por Design
Implemente segurança desde o início, considerando autenticação, autorização e proteção de dados como requisitos fundamentais.
Monitorização Abrangente
Implemente sistemas de logging e alertas para detetar problemas rapidamente e facilitar diagnósticos.
Planeamento para Escalabilidade
Projete desde o início para crescimento, permitindo adicionar recursos sem redesenhar a arquitetura.
Erros Comuns e Como Evitar
Falta de Validação
Nunca confie nos dados enviados pelos clientes. Valide sempre todas as entradas no servidor para prevenir injeções e outros ataques.
Ponto Único de Falha
Evite depender de um único servidor. Implemente redundância e balanceamento de carga para manter disponibilidade.
Segurança Negligenciada
Utilize sempre comunicações encriptadas (HTTPS) e implemente autenticação robusta para proteger dados sensíveis.
Recursos para Aprendizagem
Cursos Online
  • Coursera: "Redes de Computadores"
  • edX: "Princípios de Sistemas Distribuídos"
  • Udemy: "Administração de Servidores Linux"
  • YouTube: Canais técnicos com tutoriais
Documentação e Ferramentas
  • Documentação oficial de plataformas como Apache, Nginx
  • MDN Web Docs para desenvolvimento web
  • Packet Tracer (Cisco) para simulação de redes
  • VirtualBox para criação de ambientes virtuais
Experimente também criar pequenos projetos práticos, como um servidor web simples, para consolidar o conhecimento teórico com experiência prática.
Resumo e Conclusão
A arquitetura cliente-servidor permanece como um dos pilares fundamentais dos sistemas em rede modernos, possibilitando a criação de aplicações distribuídas robustas e escaláveis.
Fundamento Digital
Praticamente todos os serviços online que utilizamos diariamente baseiam-se neste modelo, desde email e navegação web até aplicações empresariais complexas.
Separação Eficiente
A clara divisão de responsabilidades entre clientes e servidores permite flexibilidade no desenvolvimento e otimização específica para cada função.
Evolução Constante
Embora o conceito básico permaneça, novas tendências como microserviços, serverless e edge computing continuam a expandir e refinar este modelo.