Sumrio
2
Comunicao Protocolos em camada Modelo OSI RPC Passagem de parmetros Passagem de ponteiros
Comunicao
3
Est no corao de todo sistema distribudo; No tem sentido estudar sistemas distribudos sem examinar cuidadosamente os modos pelos quais processos em mquinas diferentes podem trocar informaes;
Troca de mensagens
4
As mensagens so objetos de dados cuja estrutura e aplicao so definidas pelas prprias aplicaes que a usaro. Sendo a troca de mensagens feita atravs de primitivas explicitas de comunicao:
Send(destino, mensagem) envio da mensagem para o destino receive(origem, mensagem) recebimento da mensagem enviada pela origem
Forma de comunicao
5
Direta
send: h indicao do processo receptor. send(process, msg) receive: h indicao do emissor. receive(process, msg)
send: envio para uma porta ou mailbox sem o conhecimento de qual ser o receptor. send(mailbox, msg) receive: obteno da mensagem guardada no mailbox, possivelmente desconhecendo a identidade do processo emissor. receive(mailbox, msg)
Indireta
Forma de sincronizao
6
Sncrono ou Bloqueante
Send: espera at que a mensagem seja recebida pelo receptor. Receive: aguarda at a mensagem estar disponvel
Assncrona ou No Bloqueante
Send: envia a mensagem mas no espera at que a mensagem seja recebida pelo receptor. Receive: se a mensagem estiver disponvel, recebe a mensagem, caso contrrio continua o processamento retornando uma indicao de que a mensagem no estava disponvel.
Protocolos em camadas
7
Processo B
Protocolos em camadas
8
Processo A
Processo B
Protocolos de comunicao
Modelo OSI
9
Para ficar mais fcil lidar com os vrios nveis e questes envolvidos em comunicao, a ISO (International Organization for Standardization) desenvolveu um modelo de referncia que identifica claramente os vrios nveis envolvidos, d-lhes nomes padronizados e indica qual nvel deve fazer tal servio. Deve-se salientar que os protocolos que foram desenvolvidos como parte do modelo OSI foram amplamente utilizados e, hoje em dia, esto definitivamente mortos e encerrados. Contudo o modelo subjacente em si mostrou ser bastante til para entender redes de computadores.
Apresenta o
Sesso
6
Protocolo de Sesso 5 Protocolo de Transporte 4 Protocolo de Rede 3
Transporte Rede
Protocolo de Enlace
Enlace Protocolo de Fsica Fsica 1 2
Rede
Protocolos de camadas
11
Diviso da comunicao em 7 camadas Processo cria mensagem que ao passar pelas vrias camadas de protocolos partida e tem cabealhos adicionados a ela. Diviso em camadas torna sua implementao mais flexvel, facilitando atualizaes e correes.
Camada fsica
12
ecorrentes
tempos
conectores
Camada de Enlace
13
Organiza sequncias de bits em conjuntos de bits chamados frames Reconhece incio e fim de frames Detecta perdas de frames e requisita retransmisso
Camada de Rede
14
Encaminha informao da origem para o destino (roteamento) Controla fluxo de transmisso entre sub-redes (controle de congesto) Funes de contabilizao
Camada de Transporte
15
Divide e reagrupa a informao binria em pacotes Garante a sequncia dos pacotes Assegura a conexo confivel entre origem e destino da comunicao Primeira camada que estabelece comunicao origem-destino
Camada de Sesso
16
Gerencia sesses de comunicao Sesso uma comunicao que necessita armazenar estados Estados so armazenados para permitir reestabelecimento da comunicao em caso de queda da comunicao
Camada de Apresentao
17
Trata da representao dos dados em alto nvel Adoo de sistema padronizado de representao de caracteres Adoo de cdigos de representao numrica padro Compresso de dados Codificao de dados
Camada de Aplicao
18
Aplicaes que oferecem os servios ao usurio final Unificao de sistemas de arquivos e diretrios Correio eletrnico Login remoto Transferncia de arquivos Execuo remota
19
Muitos sistemas distribudos so baseados em troca explicita de mensagens entre processos. Contudo, os procedimentos send e receive no escondem absolutamente nada da comunicao, o que importante para obter transparncia de acesso em sistemas distribudos. Esse problema conhecido h muito tempo, e s foi feito algo para resolv-lo em 1984, em um artigo de Birrell e Nelson. O artigo props um modo completamente diferente de manipular comunicao.
20
A sugesto de Birrell e Nelson era permitir que programas chamassem procedimentos localizados em outras mquinas.
Mquina A
processo
Mquina B procediment o
Informaes podem ser transportadas do chamador para o procedimento chamado nos parmetros e podem voltar no resultado do procedimento. Absolutamente nada da troca de mensagens visvel para o programador.
RPC
21
Permite ao programador projetar um programa convencional que solucione o problema, e ento dividir o programa em procedimentos que podem ser executadas em vrios computadores. Uma mensagem enviada por um cliente a um servidor corresponde a uma "chamada" de um procedimento remoto, e uma resposta do servidor ao cliente corresponde a um "retorno" de uma chamada de procedimento. Uma operao possui uma assinatura (o nome da operao), seus parmetros de entrada, resultados e excees que podem acontecer
RPC
22
RPC possibilita a comunicao entre mquinas com diferentes SOs e/ou configuraes de hardware, pois a mensagem transferida escrita em uma estrutura de dados padronizada. Mquina com menor capacidade de processamento pode requisitar servios para outra mais rpida . O objetivo da RPC manter a transparncia da execuo, fazendo com que chamadas remotas se paream com chamadas locais.
Problemas no RPC
23
O procedimento chamador e o procedimento chamado rodam em mquinas diferentes e executam em espaos de endereo diferentes. Tambm preciso passar parmetros e resultados, o que pode ser complicado, em especial se as mquinas no forem idnticas. Qualquer uma das duas mquinas pode falhar e cada uma das possveis falhas causa problemas diferentes.
O stub faz com que uma chamada remota do cliente, que executada na mquina servidora, se parea com uma chamada local feita a um procedimento dentro do mesma mquina do cliente.
Essa funo trata da converso dos dados para uma representao externa dos dados, envia uma mensagem de solicitao, recebe a resposta e converte o retorno da representao externa para o tipo de dado especificado.
26
O skeleton faz com que uma requisio de servio de um cliente, que recebido de outra mquina, se parea como uma chamada de requisio local. Para invocar um procedimento, o cliente faz uma solicitao para o client stub, que transporta a mensagem para o servidor, que por sua vez entrega a mensagem ao server stub.
27
Servidor
Chamada de procedimento local E retorno dos resultados Tempo
1. Procedimento cliente chama o stub do cliente (mesmo modo local ou remoto) 2. Stub do cliente monta mensagem e chama SO local
8. SO do servidor envia mensagem para o SO do cliente 9. SO do Cliente entrega mensagem ao stub do cliente
Passagem de parmetros
29
preciso tratar a passagem de parmetros e a converso de dados. Isso feito pela operao de empacotamento de parmetros (parameter marshalling). Essa operao trata problemas de representao distinta de dados (nmeros/caracteres)para mquinas heterogneas. Tanto o cliente quanto o servidor sabem os tipos de parmetros passados (identificador do procedimento + parmetros) e devem conseguir obter a representao correta dos dados.
Passagem de parmetros
30
Opo 1: uso de um padro de representao de dados, como por exemplo o XDR do RPC UNIX. Essa alternativa muito interessante por permitir a comunicao entre mquinas heterogneas.
Opo 2: a mensagem enviada no formato nativo com indicao de qual o formato utilizado. O receptor deve fazer a converso quando for o caso. Essa opo evita custos de converso em ambientes homogneos, entretanto exige que clientes e servidores saibam converter qualquer formato para sua representao nativa.
Passagem de ponteiros
31
Um ponteiro representa um endereo de memria que no tem nenhum significado na mquina remota. Opo 1: proibir a passagem de ponteiros, essa obviamente no uma alternativa desejvel pelo programador; Opo 2: Copiar o valor apontado pela varivel ponteiros. As alteraes so feitas remotamente e no retorno as alteraes so atualizadas no chamador.
Referncias
33