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:
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.