Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior |
espec:introducao [2008/07/04 10:59] – maziero | espec:introducao [2008/11/21 22:45] (atual) – maziero |
---|
| ====== 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) |
| |
| {{ :espec:arq-two-tier.png |Arquitetura two-tier}} |
| |
| * //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. |
| |
| {{ :espec:arq-three-tier.png |Arquitetura three-tier}} |
| |
| * //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. |
| |
| {{ :espec:arq-p2p.png |Arquitetura peer-to-peer}} |
| |
| |
| 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. |
| |