Introdução aos Serviços de Rede
A Internet oferece uma grande quantidade de recursos e possibilidades de uso que vão do e-mail e do acesso a páginas Web ao vídeo em tempo real e ao compartilhamento de arquivos em sistemas peer-to-peer. Todas essas possibilidades de uso são construídas a partir de um conceito relativamente simples: o de serviço de rede.
Um serviço de rede pode ser visto como uma aplicação distribuída, que executa em dois ou mais computadores conectados por uma rede. Cada serviço de rede é composto por ao menos quatro elementos:
- Servidor: computador que realiza a parte principal do serviço, usando seus recursos locais e/ou outros serviços.
- Cliente: computador que solicita o serviço através da rede; geralmente o cliente age a pedido de um ser humano, através de uma interface de usuário, mas ele também pode ser o representante de outro sistema computacional.
- Protocolo: é a definição do serviço propriamente dito, ou seja, os passos, o conjunto de mensagens e os formatos de dados que definem o diálogo necessário entre o cliente e o servidor para a realização do serviço.
- Middleware: é o suporte de execução e de comunicação que permite a construção do serviço. Em geral o middleware é composto por sistemas operacionais e protocolos de rede encarregados de encaminhar os pedidos do cliente para o servidor e as respostas de volta ao cliente.
De um ponto de vista arquitetural, os sistemas que constroem serviços de rede podem se organizar de várias formas. As arquiteturas de serviços de rede mais freqüentes na Internet são as seguintes:
- Two-Tier: esta arquitetura tem dois componentes: o servidor, responsável pela execução do serviço, e o cliente, responsável pela apresentação dos resultados e interação com o usuário. Se o cliente se preocupar somente com a apresentação dos dados, é chamado de “cliente magro”; caso tenha responsabilidade por parte da lógica da aplicação, é chamdado “cliente gordo”. Alguns exemplos:
- Clientes gordos: sistemas de e-mail convencionais (não webmail);
- Clientes magros: terminais remotos gráficos (VNC)
- Three-Tier: arquitetura com três componentes: o cliente, responsável pela interface com o usuário, o servidor, responsável pela lógica da aplicação, e os repositórios de dados.
- Peer-to-Peer: nesta arquitetura todos os participantes são ao mesmo tempo servidores (oferecem serviços e recursos) e clientes (usam serviços e recursos) uns dos outros. Muitos serviços de compartilhamento de arquivos e de comunicação entre usuários se estruturam dessa forma.
Existem muitos serviços de rede, para as mais diversas finalidades. Eis alguns exemplos:
- Recuperação de conteúdo
- HTTP: HyperText Transfer Protocol, para busca de páginas Web
- FTP: File Transfer Protocol, para busca de arquivos
- Acesso remoto:
- Telnet: para terminais remotos em modo texto
- SSH: Secure Shell, idem
- VNC: Virtual Network Computer, para terminais gráficos remotos
- Configuração:
- DHCP: Dynamic Host Configuration Protocol, para buscar configurações de rede
- BootP: Boot Protocol, para buscar um sistema operacional na inicialização do computador
- LDAP: Lightweight Directory Access Protocol, para buscar informações sobre usuários (autenticação, contatos, etc)
- DNS: Domain Name System, para converter nomes em endereços IP e vice-versa
- Monitoração e gerência:
- SNMP: Simple Network Management Protocol, para monitoração de dispositivos de rede (roteadores, switches) e hosts
- Compartilhamento de recursos:
- NFS: Network File System, compartilhamento de arquivos em redes UNIX
- SMB: Server Message Block, para compartilhamento de arquivos/impressoras em ambientes Windows
- IPP: Internet Printing Protocol, usado para acesso a impressoras em rede
- Comunicação entre usuários:
- SMTP: Simple Mail Transfer Protocol, para envio e transferência de e-mails entre servidores
- POP3: Post Office Protocol v3, para acesso a caixas de e-mail
- IMAP: Internet Message Access Protocol, idem
- XMPP: Extensible Messaging and Presence Protocol, para mensagens instantâneas (Jabber, GTalk)
- SIP: Session Initiation Protocol, usado para gerenciar sessões de voz sobre IP, vídeo sobre IP, jogos online, etc.
A maioria dos serviços habituais em redes IP usa TCP ou UDP como suporte de comunicação. Esse é o caso de serviços como WWW, E-Mail, sistemas peer-to-peer e de voz sobre IP. Esses serviços são implementados basicamente por um processo no lado servidor, com uma porta aberta, cujo número e protocolo de transporte (TCP ou UDP) depende do serviço a ser oferecido. Embora qualquer serviço possa operar em qualquer porta, foram estabelecidas portas default para a maioria dos serviços convencionais, visando simplificar a conexão entre clientes e servidores. Alguns números de portas e protocolos default são:
Serviço | Porta | Transporte |
---|---|---|
HTTP | 80 | TCP |
DNS | 53 | UDP |
SSH | 22 | TCP |
SMTP | 25 | TCP |
FTP | 21 e 20 | TCP |
SNMP | 161 e 162 | UDP |
VNC | 5900 | TCP |
Alguns serviços de rede podem fazer uso de suportes de comunicação mais sofisticados, construídos como camadas acima do TCP ou UDP. Esse é o caso dos serviços baseados em RPC (Remote Procedure Call), dos Web Services e dos ambientes de objetos distribuídos como Java RMI (Remote Method Invocation) e CORBA. Neste caso, as aplicações cliente e servidor se comunicam através de chamadas de procedimentos ou de métodos remotos, construídos por bibliotecas específicas sobre o TCP/IP. Nesse caso, vários processos podem estar envolvidos na construção do serviço, tanto do lado cliente quanto do lado servidor. Muitas vezes os números de portas usados não são padronizados e podem variar de uma execução para outra, o que pode dificultar a criação de regras de filtragem (firewall) para esses serviços.