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:

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:

Arquitetura two-tier

Arquitetura three-tier

Arquitetura peer-to-peer

Existem muitos serviços de rede, para as mais diversas finalidades. Eis alguns exemplos:

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.