You are on page 1of 6

Instituto de Cincias Exatas e Naturais

Faculdade de Computao
Bacharelado em Cincia da Computao

Motivao
Estender a noo da chamada de procedimento local para
a remota;

Aula de Laboratrio:
Remote Procedure Calls (RPC)

Desenvolver aplicaes clientes-servidor e aplicaes


distribudas atravs da poderosa tcnica de chamada de
procedimento remota;

Professor: Josivaldo Arajo


josivaldo@ufpa.br

Introduo
Em uma chamada local, um processo faz uma requisio
para um outro processo e envia argumentos definidos;
O processo que recebeu a chamada ir executar alguma
operao e devolver o resultado para o processo que o
chamou;
A chamada de procedimento remota similar, mas os
processos podem estar no mesmo sistema ou em diferentes
sistemas conectados em uma rede;

Para o protocolo RPC no importante como a mensagem


enviada de um processo ao outro, mas sim com a
especificao e interpretao das mensagens.

Introduo

Introduo
Por causa da sua independncia quanto ao mtodo de
transporte das mensagens, o protocolo RPC no possui
qualquer garantia de entrega;
Isso ser tarefa do protocolo de transporte ou da aplicao;
Se utilizar o TCP: A comunicao ser confivel e nenhum
trabalho adicional precisar ser feito pela aplicao;
Se utilizar o UDP: A aplicao provavelmente ter de
implementar algum tratamento para garantir a entrega da
mensagem, como:
Controle interno de tempo de espera;
Retransmisso;
Deteco de pacotes duplicados;

O Funcionamento do RPC

importante que a aplicao esteja consciente do tipo de


protocolo de transporte que o RPC est utilizando;

Uma chamada de procedimento funciona como uma


chamada de funo dentro de um programa;

Via de regra, os programadores no precisam lidar com os


detalhes da interface e do subsistema de rede;

Ela tem um objetivo especfico a ser cumprido com uma


srie de instrues:

O protocolo permite o transporte de mensagens de forma


independente, isolando a aplicao dos elementos lgicos e
fsicos envolvidos nos mecanismos de comunicao;

Para ser executada, precisa receber alguns argumentos


definidos e devolver o resultado do processamento funo
que a chamou;

Esses sistema podem no ter um servidor ou cliente


dedicado, mas a figura de um solicitante de servios e um
receptor que ir prover a solicitao;

A chamada de procedimento remota


funciona quase da mesma maneira;

O Funcionamento do RPC
Um processo faz uma chamada a uma funo ou
procedimento remoto, envia argumentos na mensagem e
aguarda a resposta;
A funo remota recebe os argumentos, processa
instrues e devolve uma resposta para o processo
solicitante;
O detalhe especial que entre as aplicaes existe uma rede;

O Funcionamento do RPC
Cada procedimento remoto identificado de forma nica
pelo nmero do programa, nmero de verso e nmero de
procedimento;
Um nmero de programa identifica o conjunto de
procedimentos remotos correlacionados;
Cada nmero de programa pode ter um nmero de verso
que tambm pode conter um ou mais procedimentos
remotos, cada qual com um nmero exclusivo;

Para que um programa cliente possa fazer uma RPC, ele


precisa achar a porta do programa servidor em que ele
pretende se conectar;
Os protocolos de transporte no proveem este tipo de servio,
pois transportam a mensagem de um processo a outro.

O Funcionamento do RPC
Cada sistema tem o seu mtodo de escolha de qual
nmero de porta utilizar para cada processo;

Desenvolvendo Aplicao Cliente Servidor


gcc calculadora.c o calculadora
./calculadora 15 8

preciso estabelecer um protocolo para mapear as portas e


os servios oferecidos independente das convenes
particulares do sistema;
Esse protocolo chamado de mapeador de portas
portmapper poder ser implementado em qualquer
protocolo de transporte que utilize o conceito de portas;

Um programa que implemente o portmapper ser


responsvel por mapear as RPC, as verses das chamadas e
as portas especficas utilizadas;
Um benefcio deste protocolo fazer o mapeamento
dinmico das portas, uma vez que o n de chamadas pode ser
grande e o n de portas disponveis, pequeno;

Desenvolvendo Aplicao Cliente Servidor


com RPC
Para desenvolver uma aplicao cliente-servidor utilizando
RPC, os seguintes passos so necessrios:

Desenvolvendo Aplicao Cliente Servidor


com RPC
1. Definindo o Protocolo

1. Especificar o protocolo utilizado para a comunicao


entre o cliente e o servidor;

O protocolo de comunicao do RPC usado para definir


como ser a mensagem entre as aplicaes servidor e
cliente;

2. Desenvolver a aplicao Servidor;

Basicamente ele dever constar de:

3. Desenvolver a aplicao Cliente;


4. Gerar os arquivos necessrios compilao (Stubs);
5. Compilar separadamente o Servidor e o Cliente;

A identificao do programa chamado;


A identificao do procedimento dentro do programa que
ser chamado;
A verso do procedimento chamado;
Os tipos de dados que sero enviados como argumentos para
a chamada;
Os tipos de dados que sero retornados pelo procedimento;

Desenvolvendo Aplicao Cliente Servidor


com RPC
1. Definindo o Protocolo

Desenvolvendo Aplicao Cliente Servidor


com RPC
1. Definindo o Protocolo
um nmero inteiro que identifica o nmero
de um procedimento.

Este protocolo utiliza a linguagem XDR (External Data


Representation Standard);
O padro da linguagem XDR definido pelo RFC 1832;
Facilita e padroniza a descrio intricada dos formatos dos
dados de maneira concisa;
O XDR assume que os dados so portveis entre diversas
arquiteturas desde que 1 byte sejam 8 bits de dados;
Independente de como eles estejam codificados;

um nmero inteiro positivo que identifica o nmero da


verso do conjunto de procedimentos.
Define o nmero do programa.
O nome da verso de um ou mais procedimentos. possvel que um programa tenha diferentes
verses de procedimentos, permitindo a implementao dos sistemas em etapas sem interferir no
funcionamento da verso anterior.
Dever constar o nome do programa que ir agrupar uma ou mais verses de um ou mais
procedimentos.

Desenvolvendo Aplicao Cliente Servidor


com RPC
1. Definindo o Protocolo
OBSERVAES:

Desenvolvendo Aplicao Cliente Servidor


com RPC
1. Definindo o Protocolo

Salvar: calculadora.x
Verso do programa.

O nome de uma verso no pode ocorrer mais de uma vez no


mesmo escopo de definio de um programa;
O nmero da verso do programa no pode ocorrer mais de uma vez
no mesmo escopo de definio de um programa;

Nome da Aplicao RPC.

O nome de um procedimento no pode ocorrer mais de uma vez em


um escopo de uma verso;
Os identificadores dos programas ficam no mesmo espao de
endereamento das definies dos tipos de dados e constantes
utilizados;
Por conveno os nomes de programa, verso e procedimentos
devero ser escritos em letras maisculas;

Desenvolvendo Aplicao Cliente Servidor


com RPC
Para desenvolver uma aplicao cliente-servidor utilizando
RPC, os seguintes passos so necessrios:

Identificao

Uma estrutura chamada operando dever ser definida para receber os


parmetros que os procedimentos somar() e subtrair() iro receber da
aplicao cliente. Essa estrutura possui dois membros x e y do tipo inteiro.

Desenvolvendo Aplicao Cliente Servidor


com RPC
2. Desenvolver a Aplicao Servidor
um ponteiro para a estrutura operando que foi
definida no protocolo calculadora.x;.

1. Especificar o protocolo utilizado para a comunicao


entre o cliente e o servidor;
2. Desenvolver a aplicao Servidor;
3. Desenvolver a aplicao Cliente;
4. Gerar os arquivos necessrios compilao (Stubs);

um ponteiro para a estrutura svc_req do RPC


(poder ser utilizado pelo servidor para receber
informaes como: nome do programa, n do
procedimento, credenciais e informaes sobre o
protocolo de transporte;

5. Compilar separadamente o Servidor e o Cliente;

Salvar: calculadora_servidor.c

Desenvolvendo Aplicao Cliente Servidor


com RPC
Para desenvolver uma aplicao cliente-servidor utilizando
RPC, os seguintes passos so necessrios:

Desenvolvendo Aplicao Cliente Servidor


com RPC
3. Desenvolver a Aplicao Cliente

1. Especificar o protocolo utilizado para a comunicao


entre o cliente e o servidor;

Informa o nmero de parmetros que deve ser


informado; Se for diferente de 4, ser exibida uma ajuda.

2. Desenvolver a aplicao Servidor;


3. Desenvolver a aplicao Cliente;

Conexo com o programa remoto: endereo de rede


remoto, identificador nico, verso e o protocolo.

4. Gerar os arquivos necessrios compilao (Stubs);


Um ponteiro apontando para a estrutura operando
definida na biblioteca calculadora.h

5. Compilar separadamente o Servidor e o Cliente;

Salvar: calculadora_cliente.c

Desenvolvendo Aplicao Cliente Servidor


com RPC
Para desenvolver uma aplicao cliente-servidor utilizando
RPC, os seguintes passos so necessrios:
1. Especificar o protocolo utilizado para a comunicao
entre o cliente e o servidor;
2. Desenvolver a aplicao Servidor;

Desenvolvendo Aplicao Cliente Servidor


com RPC
sudo apt-get install rpcbind
4. Gerar os arquivos necessrios Compilao
De posse do arquivo: calculadora.x
Executar o seguinte comando: rpcgen calculadora.x
O cdigo da biblioteca: calculadora.h
Define a biblioteca comum entre a aplicao cliente e servidor;

3. Desenvolver a aplicao Cliente;

Interface Cliente: calculadora_clnt.c

4. Gerar os arquivos necessrios compilao (Stubs);

Define a interface RPC cliente;

5. Compilar separadamente o Servidor e o Cliente;

Interface Servidor: calculadora_svc.c


Define a interface RPC servidor;

Definies de Dados: calculadora_xdr.c


Define a definio de dados entre aplicao cliente e servidor;

Desenvolvendo Aplicao Cliente Servidor


com RPC
a) Biblioteca: calculadora.h

Desenvolvendo Aplicao Cliente Servidor


com RPC
b) Biblioteca: calculadora_clnt.c

Definies das Interfaces RPC.

Define a estrutura operando definida


no protocolo calculadora.x.
Define a verso e o identificador
da aplicao.

Define como as funes


somar e subtrair devero ser
chamadas.

A funo clnt_call
utilizada para fazer uma
chamada de procedimento
remoto
para
os
procedimentos somar e
subtrair
definidos
no
protocolo calculadora.x;

Desenvolvendo Aplicao Cliente Servidor


com RPC
c) Biblioteca: calculadora_svc.c
As funes: svcudp_create, svctcp_create e svc_register so
utilizadas para criar um servio RPC para aplicao e lidar com os
protocolos de transporte UDP e TCP;

Desenvolvendo Aplicao Cliente Servidor


com RPC
Para desenvolver uma aplicao cliente-servidor utilizando
RPC, os seguintes passos so necessrios:
1. Especificar o protocolo utilizado para a comunicao
entre o cliente e o servidor;
2. Desenvolver a aplicao Servidor;
3. Desenvolver a aplicao Cliente;
4. Gerar os arquivos necessrios compilao (Stubs);
5. Compilar separadamente o Servidor e o Cliente;

Desenvolvendo Aplicao Cliente Servidor


com RPC
5. Compilar o Servidor e o Cliente
Os arquivos do SERVIDOR:
calculadora_servidor.c (Aplicao Servidor)
calculadora_svc.c
(Interface Servidor)
calculadora_xdr.c
(Definies de Dados)
Compilar:
gcc calculadora_servidor.c calculadora_svc.c calculadora_xdr.c o servidor -lnsl

Desenvolvendo Aplicao Cliente Servidor


com RPC
5. Compilar o Servidor e o Cliente
Os arquivos do CLIENTE:
calculadora_cliente.c
calculadora_clnt.c
calculadora_xdr.c

Compilar:
gcc calculadora_cliente.c calculadora_clnt.c calculadora_xdr.c o
cliente-calculadora -lnsl

Prover a interface para o transporte de servios de rede


para as aplicaes, como a representao de dados XDR e
os mecanismos necessrios ao RPC.

Desenvolvendo Aplicao Cliente Servidor


com RPC
5. Compilar o Servidor e o Cliente

(Aplicao Cliente)
(Interface Cliente)
(Definies de Dados)

Prover a interface para o transporte de servios de rede


para as aplicaes, como a representao de dados XDR e
os mecanismos necessrios ao RPC.

Desenvolvendo Aplicao Cliente Servidor


com RPC
5. Compilar o Servidor e o Cliente

Para executar estes programas RPC necessrio que o


mapeador de portas RPC portmap esteja em execuo;

Uma vez em execuo, o programa servidor poder ser


executado em segundo plano:

Executar:
ps aux | grep portmap

Executar:
./servidor &

netstat na | grep 111

Se o portmap no estiver em execuo, ele dever ser


carregado.
Executar:
/sbin/portmap

Agora, execute a aplicao cliente:


Executar:
./cliente-calculadora localhost 100 40

Concluso
As possibilidades que a programao de aplicaes
distribudas usando o RPC abre muito grande;
Os programas no precisam lidar com as interfaces de baixo
nvel de rede;
Nem com as preocupaes de como a mensagem dever ser
enviada ou recebida entre as aplicaes;

Trabalho Final
Disponibilizar um servio que seja implementado utilizando RPC;
No pode ser implementado o servio Calculadora (ou similar);

Dever ser desenvolvida, duas verses do servio e isso dever


constar no cdigo RPC;
Dever ser utilizado software de apresentao para apresentar o
trabalho;

Mquinas rodando Linux podero requisitar e oferecer


servios para mquinas Unix, como tambm para o ambiente
Microsoft;

A apresentao dever ter durao mxima de 10 min;


Os grupos tero que se apresentar na ordem estipulada
No ser necessrio apresentar todo o cdigo fonte, apenas o
arquivo.x;
Na apresentao dever constar as telas de execuo (os cdigos
fontes devero ser enviado via e-mail);
NO podero ter servios repetidos;

uma excelente sada para interligar diversos sistemas de


maneira inteligente, rpida e eficaz.

Antes da apresentao, o grupo dever entregar um artigo


(mximo de 5 folhas formato SBC);

A interoperabilidade entre as plataformas diferentes uma


facilidade fabulosa que o RPC proporciona;

Trabalho Final
Pontuao:
Artigo: 5.0 pts.
Slides: 3.0 pts.
Tempo e Ordem: 2.0 pts.
Apresentao: 5.0 pts.
Servios Implementados: 5.0 pts.

Entrega:
Data: 29/04/2016.

You might also like