Comunicação em Sistemas Distribuídos



Documentos relacionados
Comunicação em Sistemas Distribuídos

Sistemas Distribuídos

Modelos de Sistemas Distribuídos O Modelo Cliente-Servidor

Curso Sistemas Operacionais Distribuídos

Exemplo Cliente-Servidor. Cliente. Servidor 1/ Requisição / Resposta Enlace 2 Físico 1. Kernel. Kernel

Comunicação. Parte II

Modelos de Sistemas Distribuídos O Modelo Cliente-Servidor

Sistemas Distribuídos Modelo Cliente-Servidor

Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas Distribuídos RPC

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

SISTEMAS DISTRIBUÍDOS

Mode los de Siste m as Distribu ídos

3. Comunicação em Sistemas Distribuídos

Sistemas distribuídos:comunicação

Programação Distribuída


UNIVERSIDADE. Sistemas Distribuídos

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Distributed Systems Principles and Paradigms

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

SISTEMAS DISTRIBUÍDOS

MODELO CLIENTE SERVIDOR

ARP. Tabela ARP construída automaticamente. Contém endereço IP, endereço MAC e TTL

Redes de Computadores Aula 3

Sistemas Distribuídos Grupos

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos

... Comunicação nos Sistemas Distribuídos

Sincronização de Processos (5) Troca de Mensagens

Arquitetura TCP/IP. Parte IV Mapeamento de endereços IP em endereços físicos (ARP) Fabrízzio Alphonsus A. M. N. Soares

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Trabalho DESAFIO (OPCIONAL) - ENTREGA 06/05/ IMPRETERIVELMENTE

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Remote Procedure Call

Redes de Computadores II INF-3A

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Comunicação em Sistemas Distribuídos. Bruno M. Carvalho Sala: 3B2 Horário: 35T34

Capítulo 7 CAMADA DE TRANSPORTE

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Ciência de Computadores Sistemas Distribuídos e Móveis

Introdução ao Modelos de Duas Camadas Cliente Servidor

Redes de Computadores I Licenciatura em Eng. Informática e de Computadores 1 o Semestre, 26 de Outubro de o Teste A

Protocolo Request-Reply

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Comunicação entre Processos

Bacharelado em Informática

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Sistemas Distribuídos Arquiteturas Middlewares

OBJETOS DISTRIBUÍDOS E INVOCAÇÃO REMOTA

REDES DE COMPUTADORES

Arquitecturas Tolerantes a faltas em Sistemas Distribuídos

Funcionamento de ARP entre redes (sub-redes) distintas. Mecanismos de entrega. Funcionamento entre redes (sub-redes): default gateway

Introdução ao protocolo SIP*

Passagem de Mensagens

Rede de Computadores II

Redes de Computadores

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Sistemas Distribuídos

Redes de Computadores

Permite o acesso remoto a um computador;

Redes de Computadores. Camada de Transporte

Rede de Computadores. Carlos Eduardo Pereira GCAR GCAR. IMP= Interface Message Processor. hosts. IMPs. Referência: Tanenbaum - Redes de Computadores

Arquitetura TCP/IP. Parte V Inicialização e auto-configuração (RARP, BOOTP e DHCP) Fabrízzio Alphonsus A. M. N. Soares

6 de Julho de Exercício 23 Para que servem portas na camada de transporte?

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Nível de Enlace. Nível de Enlace. Serviços. Serviços. Serviços. Serviços. Serviços oferecidos os nível de rede

Grupo I [6,6v] Responda com os valores que se observam depois da chamada acontecer. 1 Falta na mensagem de resposta. Valor retornado na chamada

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Segundo Bimestre

Redes de Computadores

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Fornecer serviços independentes da tecnologia da subrede; Esconder do nível de transporte o número, tipo e a topologia das subredes existentes;

Redes de computadores são sistemas complexos. Decomposição dos sistemas em elementos realizáveis

Programação Concorrente

Modelo de Camadas OSI

Prof. Manuel A Rendón M

Redes de Computadores

Camada de Transporte. Protocolos TCP e UDP

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Redes de Computadores I - Protocolos de Controle: ICMP. por Helcio Wagner da Silva

Arquitetura de Computadores II

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Sistemas Operacionais Distribuídos e de Redes

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Programação de Sistemas

Programação de Sistemas

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

Comunicação entre processos (RPC) COMUNICAÇÃO ENTRE PROCESSOS Remote Procedure Call - RPC. Comunicação entre processos (RPC)

Introdução a POO. Introdução a Linguagem C++ e POO

Transcrição:

Comunicação em Sistemas Distribuídos Modelo Cliente-Servidor Caracterização Endereçamento Primitivas Confiabilidade INE5418 Computação Distribuída 1

Modelo Cliente/Servidor A construção básica em comunicação entre processos é a passagem de mensagens. Esta abstração permite um processo transmitir uma mensagem para outro. Ainda que protocolos da linha OSI permitam a transmissão de bits do enviante para o recebedor, existem um quantidade significativa de headers. Além disto, o modelo OSI não aborda sobre como o sistema distribuido deveria ser estruturado. INE5418 Computação Distribuída 2

Definição : Implica um processamento cooperativo de requisições submetidas por um cliente para o servidor que as processa e retorna os resultados para o cliente. Neste modelo o processamento da aplicação é dividido entre o cliente e o servidor. O processamento é iniciado e parcialmente controlado pelo cliente e tanto cliente quanto servidor cooperam para executar com sucesso uma aplicação. INE5418 Computação Distribuída 3

Cliente DoOperation Continua request reply Servidor GetRequest executa SendReply INE5418 Computação Distribuída 4

PROCEDURE DoOperation(serverPort:PortId; request:mens; VAR reply:mens); -> envia mensagem de requisição para o servidor na porta serverport e recebe resposta reply. PROCEDURE GetRequest(serverPort:PortId; VAR request:mess); -> recebe uma requisição a partir da porta serverport. PROCEDURE SendReply(clientPort:PortId; reply:mess); -> envia uma resposta para a porta clientport. INE5418 Computação Distribuída 5

7 6 5 Requisição/Resposta 4 3 2 1 Ligação Físico INE5418 Computação Distribuída 6

#define MAX_PATH 255 #define BUF_SIZE 1024 #define FILE_SERVER 243 #define CREATE 1 #define READ 2 #define WRITE 3 #define DELETE 4 #define OK 0 #define E_BAD_OPCODE -1 #define E_BAD_PARAM -2 #define E_IO -3 struct mensagem{ long source; long dest; long opcode; long count; long offset; long extra1; long extra2; long result; char name[max_path]; char data[buf_size]; INE5418 Computação Distribuída 7 };

#include "fs.h" void main(void) { struct mensagem m1,m2; int r; } while (1) { receive(file_server,&m1); switch(m1.opcode) { case CREATE: r=do_create(&m1,&m2); break; case READ: r=do_read(&m1,&m2); break; case WRITE: r=do_write(&m1,&m2); break; case DELETE: r=do_delete(&m1,&m2); break; default: r=e_bad_opcode; } m2.result = r; send(m1.source, &m2); } INE5418 Computação Distribuída 8

#include "fs.h" int copy(char *src, char *dst) { struct mensagem m1; long position; long client = 110; inicialize(); position = 0; do { m1.opcode = READ; m1.offset = position; m1.count = BUF_SIZE; strcpy(&m1.name, src); send(file_server, &m1); receive(client, &m1); } m1.opcode = WRITE; m1.offset = position; m1.count = m1.result; srtcpy(&m1.name, dst); send(file_server, &m1); receive(client, &m1); position += m1.result; } while (m1.result > 0); INE5418 Computação Distribuída 9 return (m1.result >=0? OK : m1.result);

Endereçamento Opção 1 199 243 1 Cliente Servidor 12 0 2 1: Request para 243.0 2: Reply para 199.12 INE5418 Computação Distribuída 10

199 Endereçamento Opção 2 243 3 Cliente Servidor 12 0 4 1 1 2 1: Broadcast onde esta o Servidor X? 3: Request para 243.0 2: endereço de X é 243.0 4: Reply para 199.12 INE5418 Computação Distribuída 11

Endereçamento Opção 3 243 199 115 1 3 S C SN 0 4 12 2 0 1: Request NS onde esta o Servidor X? 3: Request para 243.0 2: endereço de X é 243.0 4: Reply para 199.12 INE5418 Computação Distribuída 12

Confiabilidade das Primitivas Prováveis causas de falha na entrega: Descarte de mensagens Particionamento da rede, alguns nodos podem ficar de fora do restante da rede Processos podem falhar, como diferenciar falha de processo e falha de comunicação? Dados corrompidos, mensagens não são recebidas corretamente Como uma operação do tipo DoOperation pode detectar uma falha de entrega? INE5418 Computação Distribuída 13

Confiabilidade das Primitivas Abordagens para tratar com o problema das perdas: Definir a semântica do Send para ser não confiável, o sistema não dá garantias (correios). Requisitar que o kernel da máquina recebedora envie um ack de volta para o enviante. Utilizar a mensagem reply como sendo ack do request e enviar ack para o reply. INE5418 Computação Distribuída 14

Modelo Cliente/Servidor Confiabilidade das Primitivas (RR) request Cliente reply Servidor Request ou Reply perdidos. Recuperação tem que ser feita no nível C/S INE5418 Computação Distribuída 15

Modelo Cliente/Servidor Confiabilidade das Primitivas Enviante Recebedor Send(Req) INE5418 Computação Distribuída 16

Modelo Cliente/Servidor Confiabilidade das Primitivas Enviante Recebedor Send(Req) Send(Rep) INE5418 Computação Distribuída 17

Modelo Cliente/Servidor Confiabilidade das Primitivas Enviante Recebedor Send(Req) Execução não completada INE5418 Computação Distribuída 18

Modelo Cliente/Servidor Confiabilidade das Primitivas 1. request Cliente 3. reply 2. ACK 4. ACK Servidor Request e Reply são ACK : timeout e retransmissão são usados para recuperar mensagens INE5418 Computação Distribuída 19

Modelo Cliente/Servidor Confiabilidade das Primitivas (RRA) 1. request Cliente 2. reply Servidor 3. ACK Reply serve como ACK para o request INE5418 Computação Distribuída 20

Código Tipo Origem Destino Descrição REQ Requisição Cliente Servidor Cliente serviço REP Resposta Servidor cliente Resposta serv. ACK Ack Qualquer Outro Confirma AYA Voce esta vivo? Cliente Servidor Verifica condição do servidor. IAA Estou vivo Servidor Cliente Servidor ativo TA Tente de novo Servidor Cliente Servidor não tem espaço AU Endereço desconhecido Servidor Cliente Endereço não esta sendo usado INE5418 Computação Distribuída 21

Modelo Cliente/Servidor Interação Cliente/Servidor REQ CLIENTE REP SERVIDOR CLIENTE REQ ACK AYA IAA REP ACK SERVIDOR INE5418 Computação Distribuída 22