Alguns Protocolos Cliente/Servidor

Neste tópico serão abordados três protocolos que proporcionam a arquitetura cliente/servidor e suas características e modos de comunicação: RPC, IPX/SPX e NetBIOS/NetBEUI.

RPC

O protocolo RPC tem como objetivo permitir o desenvolvimento de aplicações cliente/servidor sem haver programação em nível de sessão ou transporte (por exemplo, soquete).

A Sun Microsystems colocou em domínio público [RFC 1057]o seu protocolo Sun RPC e licenciou livremente a sua implementação. Desta forma, este protocolo tornou-se muito popular.

Cliente RPC


O lado cliente do protocolo RPC é muito simples. O cliente simplesmente ativa callrpc, passando-lhe os seguintes parâmetros:

  1. nome do nó remoto (usado pela RPC para consultar o IP do servidor)
  2. nome do programa chamado
  3. número da versão do programa chamado
  4. procedure a ser ativada
  5. tipo de parâmetro de entrada sendo passado à procedure remota
  6. parâmetro de entrada ou uma estrutura contendo esses parâmetros
  7. tipo de parâmetro de saída sendo retornado da procedure
  8. parâmetro de saída ou uma estrutura contendo esses parâmetros

Como máquinas diferentes possuem formatos de dados diferentes, os parâmetros de tipo são necessários para ajudar e interpretar os parâmetros reais da procedure. RPC usa um protocolo, o External Data Representation (XDR) para traduzir os dados de um forma de e para um formato de intercâmbio definido.

Servidor de RPC

O lado servidor também é muito simples O processo servidor utiliza a procedure registerrpc para registrar suas procedures remotas. A rotina registerrpc precisa estes parâmetro:

  1. número do programa a ser registrado
  2. número da versão
  3. número da procedure sendo registrada
  4. nome da procedure a chamar por este número
  5. rotina de serviço XDR a chamar para os parâmetros de entrada
  6. rotina de serviço XDR a chamar para os parâmetros de saída
A RPC utiliza o protocolo UDP por definição, mas pode ser usada com qualquer outro protocolo aceito pela interface de soquete.

Existe uma alternativa ao RPC da Sun que é o DCE RPC, elaborada para operar no grupo de protocolos da Internet.

Difere do RPC da Sun por empregar o conceito de threads oferecendo uma capacidade de thread remoto. Os threads do DCE são subprocessos em nível de usuário que podem ser chamados e programados dentro do mesmo espaço de processo. Em vez de usar o XDR, a DCE RPC usa o formato Network Data Representation (NDR) para o intercâmbio. Na NDR, fica a cargo do receptor fazer todas as traduções que possam ser necessárias.

SPX/IPX

Os protocolos de transporte IPX/SPX (“Internetwork Packet Exchange ”) são uma variante dos protocolos XNS (“Xerox Network Systems”). O protocolo IPX é idêntico ao protocolo Internetwork Datagram Packet da Xerox (IDP) e oferece um serviço de datagrama. O protocolo SPX é idêntico ao Sequenced Packet Protocol (SPP), também da Xerox, e oferece um serviço de fluxo de dados confiável.

A principal diferença entre o IPX e o XNS está no uso de diferentes formatos de encapsulamento Ethernet. A segunda diferença está no uso pelo IPX do “Service Advertisement Protocol”(SAP), protocolo proprietário da Novell.

Um frame IPX pode transportar até 546 bytes de dados, e cada frame SPX pode transportar até 534 bytes de dados.

O endereço IPX completo é composto de 12 bytes:

O ID da rede é definido em zero se o destino estiver na mesma LAN que o emissor. O ID do nó é o mesmo número de seis bytes usado pelos protocolos IEEE MAC para endereçar as placas adaptadoras de rede. O endereço FFFFFFFFFFFF16 indica um broadcast.

As aplicações comunicam-se usando a interface do soquete IPX ou SPX. A implementação também oferece um serviço de determinação do nome , chamado bindery. Os servidores se registram no bindery e os clientes localizam os nomes dos servidores e seus endereços lá.

O protocolo SPX garante uma transmissão confiável a qualquer nó da rede através da troca de mensagem e da utilização de um cálculo de checksum. Caso ocorra um número razoável de transmissões falhadas, o SPX assume que a conexão foi interrompida e avisa ao operador.

NetBEUI/NetBIOS

O protocolo NetBEUI da Microsoft (NetBIOS Extended User Interface) é na realidade uma extensão da camada de link de dados da LAN usada para encapsular comandos do NetBIOS.

Existem dois tipos de frames NetBEUI: os frames de informação numerados (I-Frames) usados para fornecer fluxo de dados em sequência, confiável, e os frames de informação não numerados (UI-Frames), usados para fornecer datagramas.

O NetBIOS define uma interface de camada de sessão para a funcionalidade de transporte e de rede do NetBEUI. O termo NetBIOS muitas vezes é utilizado para referenciar à combinação de NetBIOS e NetBEUI.

O NetBIOS é um protocolo foi implementado dentro de vários ambientes de rede, incluindo MS-Net e LAN Manager da Microsoft, PC Network e LAN Server da IBM e Netware da Novell. Em alguns ambientes de rede, a interface de sessão do NetBIOS é usada para acessar outras camadas de transporte e rede. Por exemplo, no LAN Manager, a interface NetBIOS pode ser usada para acessar qualquer mecanismo de transporte NetBEUI, TCP/IP ou XNS. No Netware, a interface NetBIOS é usada para acessar SPX/IPX ou TCP/IP.

NetBIOS oferece serviços de comunicação baseados em conexão e sem conexão (datagrama). Os serviços IPC do NetBIOS podem ser usados para implementar cliente/servidor, processamento de filtro ou comunicação peer-to-peer.

Todos os serviços NetBIOS são oferecidos como comandos formatados dentro de uma estrutura de dados de controle, chamada NCB (Network Control Block). Através de uma chamada de sistema, a aplicação passa os campos do NCB para o NetBIOS.

O NCB tem 64 bytes de extensão:

Bytes Finalidade
1 Código de comando hexa
1 Código de retorno
1 Número da sessão
1 Número do nome
4 Endereço do buffer de dados
2 Tamanho do buffer de dados
16Nome do processo de chamada
16Nome do processo local
1 Intervalo de timeout da recepção
1 Intervalo de timeout da emissão
4 Endereço de callback
1 Número da placa adaptadora da LAN
1 Status de término
14Reservados