SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler offline
Sistemas Distribuídos
Comunicação
Frederico Madeira
LPIC-1, LPIC-2, CCNA
fred@madeira.eng.br
www.madeira.eng.br
Referências
- Tanenbaum, A.; Steen, M.; Sistemas Distribuídos, princípios
e paradigmas. Capítulo 4.
- Coulouris, G.;Dollimore, J.; Kindberg, T.;
SISTEMAS DISTRIBUIDOS CONCEITOS E PROJETO. Capítulo 4.
✔
Introdução
✔
Fundamentos
✔
Modelo em Camadas
✔
OSI
✔
TCP
✔
Modelos de Comunicação
✔
RPC
✔
MOM
✔
Fluxo
Sumário
Introdução
• A comunicação entre processos está no coração de
todo Sistema Distribuído;
• A comunicação é sempre baseada em troca de
mensagens pela rede;
• Protocolo são regras as quais os processos
comunicantes têm de obedecer;
• Expressar comunicação por meio de troca de
mensagens é mais difícil do que usar primitivas
baseadas em memória compartilhada;
• A comunicação via rede não é confiável, como por
exemplo na Internet;
Protocolos em Camadas
• Dada ausência de memória compartilhada, toda
comunicação é feita via troca de mensagens de
baixo nível
• Em resumo:
– Quando A quer se comunicar com B;
– A cria uma mensagem;
– Envia a mensagem para B;
– Vários acordos são necessários para que essa
comunicação seja bem sucedida;
SIMPLES ESSE PROCESSO ???
Protocolos em Camadas
Protocolos em Camadas
• Como o receptor sabe o último bit da mensagem ?
• As partes da mensagem chegaram em ordem ?
• Alguma parte da mensagem foi perdida e precisa
ser retransmitida ?
• A mensagem que foi enviada foi recebida integra ?
Ocorreu algum erro de transmissão ?
• Para onde devo enviar a mensagem ?
• A latência está alta, como compensar ?
• O Servidor está atrás de um firewall e agora ?
• Essa porta é reservada, qual devo usar ?
• Como priorizar meus pacotes no meio de tantos
outros ?
Protocolos em Camadas
• Como o receptor sabe o último bit da mensagem ?
• As partes da mensagem chegaram em ordem ?
• Alguma parte da mensagem foi perdida e precisa
ser retransmitida ?
• A mensagem que foi enviada foi recebida integra ?
Ocorreu algum erro de transmissão ?
• Para onde devo enviar a mensagem ?
• A latência está alta, como compensar ?
• O Servidor está atrás de um firewall e agora ?
• Essa porta é reservada, qual devo usar ?
• Como priorizar meus pacotes no meio de tantos
outros ?
Modelo OSI
• Para resolver esse problema de comunicação, a
ISO desenvolveu um modelo de referência;
• Este modelo é chamado de Open Systems
Interconnection Reference Model (OSI);
• Ele foi projetado para que sistemas abertos se
comuniquem;
• Sistema aberto é um sistema que está preparado
para se comunicar com outro usando regras
padronizadas, que seguem: o formato, o
conteúdo e o significado de cada mensagem;
• Essas regras estão formalizadas no que
denominamos como protocolos;
Modelo OSI
• Modelo baseado em camadas
• Onde cada camada tem sua função e serviços
oferecidos
• A camada inferior oferece (para a camada
superior) uma interface de interação;
• Facilita a identificação e tratamento de falhas
• Exemplo:
– se um grupo de computadores quiser se
comunicar, eles devem concorda quais
protocolos irão utilizar;
• Existem dois tipos de protocolos:
– Orientado a conexão
– Não orientado a conexão (sem conexão)
Modelo OSI
Modelo OSI
• Orientado a conexão
– antes de haver a comunicação,os
computadores estabelecem uma conexão para
negociarem o protocolo;
Ex. telefone
• Sem conexão
– não é preciso haver essa negociação. O
remetente envia uma mensagem assim que ela
estiver pronta;
Ex. correio
• Ambos os tipos de comunicação são comuns;
Modelo OSI
IP Layer
Link Layer
Application Layer
TCP Layer
Dados
Cabecalho de
Aplicação
Dados
TCP
Header
Application Data
TCP
Header
Application DataIP
Header
Application DataTCP
Header
IP
Header
Ethernet
Header
Ethernet
Trailer
TCP Segment
IP Datagram
Ethernet Frame
46 to 1500 bytes
Ethernet
Encapsulamento
Modelo OSI - Camadas
- Transmissão dos bits por um canal de
comunicação
- Ponta A enviar 1 a Ponta B deve receber 1
(definição da voltagem para representar 0 ou
1);
- Duração do bit (nanossegundos)
- Definição do modo de operação (Simplex,
Half ou full duplex)
- Como Inicializar e terminar uma conexão;
- Pinagem do conector e finalidade de cada
pino
Em linhas gerais:
- Interfaces Mecânicas
- Interfaces Elétricas
- Sincronização
- Meio físico de transmissão
Modelo OSI - Camadas
- Transformar um canal de transmissão bruto
em uma linha livre de erros não detectados
para a camada de rede;
- Divide os dados de entrada em QUADROS de
dados e transmite sequencialmente
- Se serviço for confiável, receptor enviará
quadro de confirmação;
- Controle de Fluxo (Buffer interfaces);
- Controle de Erro;
- Controle de Acesso ao canal compartilhado
feito pela sub-camada MAC (Media acces contro
- controle de acesso ao meio).
Modelo OSI - Camadas
Quadro Ethernert
Modelo OSI - Camadas
- Controlar a sub-rede, definindo como os
PACOTES são roteados da origem até o destino;
- Rotas baseadas em tabelas estáticas ou podem
ser dinâmicas (especificada para cada pacote)
- Controle de congestionamento;
- Qualidade de Serviço (retardo, instabilidade,
etc)
- Endereçamento de redes
- Tamanho do pacote (fragmentação)
- Interconectar redes Heterogêneas
Modelo OSI - Camadas
- Aceitar dados das camadas acima, dividi-los em
unidades menores (se necessário), repassá-los a
camada de rede e assegurar que os fragmentos
chegarão corretamente a oura extremidade.
- Deve ser feito de forma transparente para as
camadas superiores, independente da tecnologia
utilizada abaixo dela.
- Comunicação fim-a-fim
- O tipo de transporte mais popular é o ponto-a-
ponto, livre de erros, com garantia, no entanto
também é possível utilizar sem garantia.
Modelo OSI - Camadas
• Os protocolos nesta camada podem utilizar
outros protocolos na camada de rede que seja
orientados, ou não, a conexão;
• Orientado a conexão:
•garantir que os fragmentos chegaram na
ordem correta;
• Sem conexão:
•não tem a mesma garantia, fragmentos
podem chegar desordenados;
• Esta camada deve tratar essa diferença, ela
deve reorganizar, antes de repassar a mensagem
para acamada de cima
Modelo OSI - Camadas
•Dois protocolos se destacam nessa
camada: o TCP e o UDP
• O TCP (Transmission Control Protocol)
garante que todas os fragmentos serão
recebidos (conexão confiável, por
consequência, orientado a conexão)
• O UDP (Universal Datagram Protocol)
não garante que todas os fragmentos
serão recebidos (conexão não confiável,
por consequência, sem conexão)
• Implementa portas de comunicação
Modelo OSI - Camadas
Sessão
• Responsável por sincronizar, manter e gerenciar
a conexão com outro computador
• Porventura a rede falhe, esta camada pode
continuar a comunicação de onde parou;
Apresentação
• Se preocupa com os significados dos bits;
• Também pode comprimir ou criptografar para
tornar a comunicação mais rápida e segura;
Aplicação
• De fato, são as aplicações sendo executadas;
• Esta camada também disponibiliza os recursos
(protocolo) para que tal comunicação aconteça
Modelo OSI - Camadas
• Na prática, somente a camada de aplicação é
usada;
• A aplicação fica responsável por implementar as
funcionalidades das camadas Apresentação e
Sessão;
• Ex. HTTP e FTP
Modelo OSI – Camada de Middleware
•Mesmo com essa pilha de protocolo bem
definida, a aplicação ainda fica encarregada de
implementar diversas funcionalidades (criar
protocolo, segurança e etc);
•Muitas vezes, essas funcionalidades não está
ligadas diretamente ao negócio da aplicação;
•A alternativa é utilizar um middleware, que
ofereça essas funcionalidades já implementadas;
•O Middleware fica entre as camadas de baixo
nível e a aplicação;
Modelos de Comunicação
• Existem dois modos implementar um sistema
distribuído:
– Podemos implementar “do zero”, utilizando
os protocolos oferecidos pela camada de
transporte;
• Utilizando Socket ou Datagram (ambos
fornecidos pela linguagem Java);
– Podemos usar uma middleware;
• Devemos escolher qual tipo de middleware;
• Ex. RPC, MOM
Socket
• Ele é o ponto de comunicação entre full-duplex
(possibilita enviar e receber mensagens) entre
dois processos
• Não existe a transparência de distribuição: toda a
comunicação está explícita, através de
procedimentos:
– Send: enviar os dados (array de bytes)
– Receive: recebe os dados (array de bytes)
• Bem, o que esses Arrays significam? Sua aplicação
que dirá.
• É a forma mais primitiva de criar um sistema
distribuído;
Socket
• Além do mais, o desenvolvedor terá que
implementar (caso seja necessário):
– Balanceamento de carga
– Segurança
– Transparência de tecnologia
– E etc.
Socket
http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
Socket
• Socket: uma porta entre o processo de aplicação
e o protocolo de transporte fim-a-fim (UCP or TCP)
• Serviço TCP: transferência confiável de bytes de
um processo para outro
http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
Socket
http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
Socket
http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
Socket
http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
Modelos de Comunicação -
Middleware
• A maneira mais fácil e rápida de desenvolver um
Sistema Distribuído é utilizando middleware;
• O desenvolvedor deve escolher um middleware
que atenda as necessidades da aplicação;
• Existem vários tipos, tais como:
– Chamada a Processo Remoto (RPC)
– Middleware Orientado a Mensagem (MOM)
– Fluxo de dados
• Mas antes de entender esses tipos, precisamos
entender sobre a:
– persistência, sincronização, granularidade
e ordenação dos bytes
Tipos de Comunicação
Persistência
• Comunicação Persistente
– Uma mensagem que foi apresentada para
transmissão é armazenada pelo middleware de
comunicação durante o tempo que for
necessária entregá-la
• Comunicação Transiente
– Uma mensagem é armazenada pelo sistema de
comunicação somente durante o tempo em que
a aplicação remetente e a aplicação receptora
estiverem executando.
• Normalmente, todos os serviços de comunicação a
nível de transporte oferecem somente
comunicação transiente.
Tipos de Comunicação
Sincronização
• Comunicação Assíncrona (Primitiva não –
Bloqueante)
– Remetente continua sua execução
imediatamente após ter apresentado sua
mensagem para transmissão.
• Comunicação Síncrona (Primitiva
Bloqueante)
– O remetente é bloqueado até saber que a
requisição foi aceita
Tipos de Comunicação
Sincronização
Tipos de Comunicação
Sincronização
Tipos de Comunicação
Granularidade
• Discreta
– Partes se comunicam por mensagens e cada
mensagem forma uma unidade de informação
completa
– Ex: Uma requisição
• Fluxo
– Várias mensagens,sendo que as mensagens
estão relacionadas uma com as outras pela
ordem ou pela relação temporal
– Ex. sistemas multimídia (vídeo ou áudio)
RPC - Remote Procedure Call
• Tecnologia de comunicação entre processos que
permite a um programa chamar um procedimento
em outro computador, conectado por uma rede
• O programador não se preocupa com detalhes de
implementação dessa interação remota
– do ponto de vista do código, a chamada se
assemelha a chamadas de procedimentos
locais.
– Viabiliza a transparência de acesso
• Tecnologia popular para a implementação do
modelo cliente-servidor de computação distribuída
• A idéia de RPC data de 1976, quando foi descrito
no RFC 707
Fonte: Wikipedia
RPC - Remote Procedure Call
Fonte: Wikipedia
RPC - Remote Procedure Call
RPC - Remote Procedure Call
• Arquiteturas de duas máquinas podem ser
diferentes
• É preciso passar parâmetros e resultados;
– De tipos primitivos (ex. int, bool) até os
compostos (classe, struct);
• Como tudo vai se tornar array de bytes, como
será a organização dos dados antes de enviar?
RPC - Remote Procedure Call
• A transparência é conseguida através dos
apêndices;
• Existem dois tipos de apêndices: o Stub (Cliente)
e o Skeleton (Servidor);
– Stub: responsável por empacotar os
parâmetros em uma mensagem, envia para o
servidor, e tratar a resposta.
– Skeleton: responsável por interpreta as
requisições, processar e retorna a resposta;
RPC - Remote Procedure Call
RPC - Remote Procedure Call
• Os Stubs e Skeletons ele não são genéricos;
• São utilizados para facilitar a comunicação com
um determinado servidor;
• Caso haja outro servidor, oferecendo outro tipo de
procedimento, irá existir outro Stub (para o
cliente) e o outro Skeleton (para o servidor);
RPC - Remote Procedure Call
• Mas, como são construído esses apêndices?
• Através de uma IDL (Linguagem de Definição de
Interface), é possível descrever a interface do
procedimento remoto
– A descrição provida pela IDL é independente de
qualquer linguagem de programação
• Assim, é possível criar Stub e Skeleton da
mesma IDL;
• E possibilitar a comunicação entre o cliente e o
servidor de forma transparente;
RPC - Remote Procedure Call
• Uma chamada remota de procedimento difere das
chamadas locais em alguns pontos:
– Tratamento de erros: falhas do servidor ou
da rede devem ser tratadas.
– Variáveis globais e efeitos colaterais: Uma
vez que o servidor não possui acesso ao espaço
de endereços do cliente, argumentos
protegidos não podem ser passados como
variáveis globais ou retornados.
– Desempenho: chamadas remotas geralmente
operam a velocidades inferiores em uma ou
mais ordens de grandeza em relação às
chamadas locais.
RPC - Remote Procedure Call
– Autenticação: uma vez que chamadas
remotas de procedimento podem ser
transportadas em redes sem segurança,
autenticação pode ser necessário.
• Dessa forma, mesmo havendo diversas
ferramentas que geram automaticamente o cliente
e o servidor, os protocolos precisam ser
desenvolvidos cuidadosamente.
RPC - Implementações
• CORBA — padrão RPC independente de
plataforma
• Sun RPC — RPC para as plataformas Unix e Linux
• DCOM — RPC para Windows
• RMI — RPC para Java
• SOAP — padrão RPC para web service
• JRES - Java Remote Execution Service é um
protocolo RPC que usa um mecanismo de
codificação estilo SSL para codificar suas
chamadas e HTTP puro como mecanismo de
transporte.
Comunicação Orientada Mensagem
(Transiente)
• Dada a natureza Síncrona do modelo RPC
– Bloqueia o cliente até que sua requisição
tenha sido atendida
• Quando não podemos garantir que o receptor
estará executando no momento em que uma
requisição é emitida
• É necessário o uso de serviços alternativos de
comunicação
• Neste, caso é o uso de troca de mensagens:
– Ex: Interface Berkley (sockets)
– Interface de troca de mensagens (MPI)
Comunicação Orientada Mensagem
(Persistente)
• Oferecem suporte extensivo para comunicação
assíncrona
• Capacidade de armazenamento de médio prazo
para mensagens,
– remetente ou receptor não precisam estar
ativos durante a transmissão da
mensagem
• A diferença do modelo anterior (sockets/MPI) as
mensagens podem durar minutos ao invés de
seg/ms)
• Exemplos:
– Sistemas de Enfileiramento de
mensagens
– Middleware orientado a mensagem (MOM)
Sistemas de Enfileiramento de Mensagens
• Aplicações se comunicam inserindo mensagens
nas filas especificas.
• As mensagens são repassadas para uma série de
servidores de comunicação
• Em certa altura, elas são entregues aos
destinatários.
• A transmissão da mensagem pode ocorrer mesmo
que o receptor não esteja em funcionamento no
mesmo momento.
• Única garantia: Que a mensagem será inserida na
fila
Sistemas de Enfileiramento de Mensagens
Sistemas de Enfileiramento de Mensagens
Comunicação orientada a Fluxo
• Os modelos anteriores focam a troca de unidades
de informação completas/independentes
• A temporização do envio/recebimento da
mensagem não é tão relevante
• Neste modelo, a temporização representa uma
questão crucial
• Imagine uma transmissão de áudio com qualidade
de CD, ou seja amostrada a 44.1 khz.
– Para reprodução, as amostras no fluxo de
áudio precisam se tocadas em intervalos
de 1/44100s.
– A reprodução a uma taxa diferente vai
resultar um áudio diferente do original
• Neste modelo a distribuição de dados é altamente
dependente do tempo, como áudio e vídeo.
Comunicação orientada a Fluxo
• Modo de Transmissão Assíncrono
– Não existe restrição de temporização sobre quando a
transmissão dos itens deve ocorrer.
– É irrelevante o momento exato em que a
transferência de cada item é concluída
• Modo de Transmissão Síncrono
– Existe um atraso fim-a-fim máximo definido para
cada unidade em um fluxo de dados
– Se forem transmitidas muito mais rápida do que o
atraso mínimo tolerado, não importa
• Modo de Transmissão Isócrono
– As unidades precisam ser transmitidas no temo
certo.
– O atraso fim-a-fim tem um valor máximo e um valor
mínimo. (Variação de atraso delimitado)
Comunicação orientada a Fluxo
Fluxos e Qualidade de Serviço
• Para que as relações temporais em um fluxo possa
ser preservadas, os requisitos costumam ser
expressos em politicas de QOS (Quality of
Service)
• QOS se resume na definição de algumas
propriedades:
– Taxa de bits requerida
– Máximo de atraso até o estabelecimento
de uma sessão
– Máximo atraso fim-a-fim
– Máxima variância de atraso
– Máximo atraso de ida e volta
• Se a comunicação utilizar a pilha de protocolos da
internet, esta é formada por serviço de datagrama
de melhor esforço, extremamento simples, o IP.
– Lá se vai a especificação de QOS !!!
Fluxos e Qualidade de Serviço
• Dada a classe best-effort da internet, o sistema
distribuído pode ocultar essa falta de qualidade
• A internet suporta diffserv ou serviços
diferenciados
• O método DiffServ opera sobre grandes volumes
de dados em oposição a fluxos ou reservas
individuais
– Isto implica em uma negociação para todos os
pacotes de, por exemplo, um ISP ou uma
universidade
– Os acordos resultantes destas negociações são
designados de "acordos de nível de serviço"
(Service Level Agreements), e envolvem
geralmente um valor por parte das operadoras
de telecomunicações.
Fonte: https://pt.wikipedia.org/wiki/DiffServ
Fluxos e Qualidade de Serviço
• Outra alternativa é trabalhar com buffers
– Muito útil para reduzir a variância de atraso.
– O receptor armazena os dados recebidos em
um buffer pelo tempo máximo.
– Isso permite que o receptor passe pacotes para
a aplicação a uma taxa regular
– Sempre haverá pacotes suficientes entrando no
buffer que garantirá a reprodução posterior
Comunicação orientada a Fluxo
Solução é aumentar o
tamanho do buffer
Comunicação orientada a Fluxo
Fonte: https://googlesystem.blogspot.com.br/2016/04/background-buffer-in-youtubes-
android.html#gsc.tab=0
Comunicação Multicast
• “multicast communication” - permite que um
processo envie a mesma mensagem para um
grupo de processos;
• Por muitos anos este tópico pertenceu ao domínio
dos protoco-los de rede, onde soluções na camada
de rede e de transporte foram propostas e
implementadas;
– Dependia de muito esforço de gerenciamento
– Em muitos casos intervenção humana
• No entanto, este tópico vem tomando espaço
como tópico em comunicação em sistemas
distribuídos.
Multicasting de nível de aplicação
• “idéia” - nós são organizados em uma rede de
sobreposição utilizada para disseminar a informação
para os membros;
• Roteadores da rede não estão envolvidos nesta rede,
assim o roteamento de mensagens na rede não é ótimo
em comparação com o roteamento na camada de rede.
• Assim, o aspecto de projeto é essencial no suporte a
multicast na aplicação é a construção da rede de
sobreposição:
– nós se organizam em uma árvore de modo que
tenhamos um único caminho entre cada par de nós;
– nós se organizam de modo que tenham múltiplos
vizinhos - “mesh network” assim, em geral existem
múltiplos caminhos entre cada par de nós.
Multicasting de nível de aplicação
Sistemas Distribuídos
Comunicação
Frederico Madeira
LPIC-1, LPIC-2, CCNA
fred@madeira.eng.br
www.madeira.eng.br

Mais conteúdo relacionado

Mais procurados

Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídosEduardo de Lucena Falcão
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programaçãorodfernandes
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Engenharia de software para Web
Engenharia de software para WebEngenharia de software para Web
Engenharia de software para WebIuri Matos
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J Daniel San Martin
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualgDiego Sales
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisHelder Lopes
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Processos de desenvolvimento de software técnicas de 4ª geração
Processos de desenvolvimento de software   técnicas de 4ª geraçãoProcessos de desenvolvimento de software   técnicas de 4ª geração
Processos de desenvolvimento de software técnicas de 4ª geraçãoRafael Augusto
 
Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidosCrishna Irion
 

Mais procurados (20)

Aula 2 introdução a sistemas distribuídos
Aula 2   introdução a sistemas distribuídosAula 2   introdução a sistemas distribuídos
Aula 2 introdução a sistemas distribuídos
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Engenharia de software para Web
Engenharia de software para WebEngenharia de software para Web
Engenharia de software para Web
 
Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J  Banco de Dados em Grafos com Neo4J
Banco de Dados em Grafos com Neo4J
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Algoritmos visualg
Algoritmos visualgAlgoritmos visualg
Algoritmos visualg
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos IniciaisFundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
 
UML
UMLUML
UML
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Processos de desenvolvimento de software técnicas de 4ª geração
Processos de desenvolvimento de software   técnicas de 4ª geraçãoProcessos de desenvolvimento de software   técnicas de 4ª geração
Processos de desenvolvimento de software técnicas de 4ª geração
 
Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidos
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 

Semelhante a SI - Comunicação (20)

Modelo OSI
Modelo OSIModelo OSI
Modelo OSI
 
aula-13-revisc3a3o.pdf
aula-13-revisc3a3o.pdfaula-13-revisc3a3o.pdf
aula-13-revisc3a3o.pdf
 
Aula 2 - IRL
Aula 2 - IRLAula 2 - IRL
Aula 2 - IRL
 
Apresentaçao Final De Redes
Apresentaçao Final De RedesApresentaçao Final De Redes
Apresentaçao Final De Redes
 
ApresentaçAo Final De Redes
ApresentaçAo Final De RedesApresentaçAo Final De Redes
ApresentaçAo Final De Redes
 
Aula 1
Aula 1Aula 1
Aula 1
 
Redes de computadores
Redes de computadoresRedes de computadores
Redes de computadores
 
Camada OSI e TCP/IP Resumo
Camada OSI e TCP/IP ResumoCamada OSI e TCP/IP Resumo
Camada OSI e TCP/IP Resumo
 
Camadasrede
CamadasredeCamadasrede
Camadasrede
 
Conceitos de rede
Conceitos de redeConceitos de rede
Conceitos de rede
 
Gestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptxGestão de Redes de Computadores e Serviços.pptx
Gestão de Redes de Computadores e Serviços.pptx
 
AULA DE REDES DIA 22.062023.pptx
AULA DE REDES DIA 22.062023.pptxAULA DE REDES DIA 22.062023.pptx
AULA DE REDES DIA 22.062023.pptx
 
Referencia de redes.pdf
Referencia de redes.pdfReferencia de redes.pdf
Referencia de redes.pdf
 
Apresentação - IT Specialist
Apresentação - IT SpecialistApresentação - IT Specialist
Apresentação - IT Specialist
 
Websockets
WebsocketsWebsockets
Websockets
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Módulo 02 modelo iso-osi
Módulo 02   modelo iso-osiMódulo 02   modelo iso-osi
Módulo 02 modelo iso-osi
 
Modelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNAModelos TCP/IP e OSI para CCNA
Modelos TCP/IP e OSI para CCNA
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Modelo de Referência OSI
Modelo de Referência OSIModelo de Referência OSI
Modelo de Referência OSI
 

Mais de Frederico Madeira

Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud ComputingFrederico Madeira
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoFrederico Madeira
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos DistribuídosFrederico Madeira
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosFrederico Madeira
 
SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaFrederico Madeira
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de ProgramasFrederico Madeira
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internetFrederico Madeira
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open sourceFrederico Madeira
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaFrederico Madeira
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreFrederico Madeira
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksFrederico Madeira
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFrederico Madeira
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesFrederico Madeira
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de RedesFrederico Madeira
 

Mais de Frederico Madeira (20)

WebServices
WebServicesWebServices
WebServices
 
IoT - Internet of Things
IoT -  Internet of ThingsIoT -  Internet of Things
IoT - Internet of Things
 
Introdução a Cloud Computing
Introdução a Cloud ComputingIntrodução a Cloud Computing
Introdução a Cloud Computing
 
SI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de CódigoSI - Processos, Threads, Virtualização e Migração de Código
SI - Processos, Threads, Virtualização e Migração de Código
 
SI - Arquiteturas
SI - ArquiteturasSI - Arquiteturas
SI - Arquiteturas
 
SI - SAD - Sistemas de Arquivos Distribuídos
SI - SAD  - Sistemas de Arquivos DistribuídosSI - SAD  - Sistemas de Arquivos Distribuídos
SI - SAD - Sistemas de Arquivos Distribuídos
 
SI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas DistribuidosSI - Introdução a Sistemas Distribuidos
SI - Introdução a Sistemas Distribuidos
 
SI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplinaSI - Sistemas Distribuídos - Apresentação da disciplina
SI - Sistemas Distribuídos - Apresentação da disciplina
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Linux - Instalação de Programas
Linux - Instalação de ProgramasLinux - Instalação de Programas
Linux - Instalação de Programas
 
Proteja seus dados em casa e na internet
Proteja seus dados em casa e na internetProteja seus dados em casa e na internet
Proteja seus dados em casa e na internet
 
Linux e o modelo open source
Linux e o modelo open sourceLinux e o modelo open source
Linux e o modelo open source
 
Redes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da TelefoniaRedes VoIP - O Futuro da Telefonia
Redes VoIP - O Futuro da Telefonia
 
Open Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software LivreOpen Virtualization - Virtualização em Software Livre
Open Virtualization - Virtualização em Software Livre
 
Redes NGN - Next Generation Networks
Redes NGN - Next Generation NetworksRedes NGN - Next Generation Networks
Redes NGN - Next Generation Networks
 
MRTG - SNMP na Prática
MRTG - SNMP na PráticaMRTG - SNMP na Prática
MRTG - SNMP na Prática
 
Introdução ao SNMP
Introdução ao SNMPIntrodução ao SNMP
Introdução ao SNMP
 
Ferramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em RedesFerramentas para Detecção de Problemas em Redes
Ferramentas para Detecção de Problemas em Redes
 
Arquiteturas de Gerência de Redes
Arquiteturas de Gerência de RedesArquiteturas de Gerência de Redes
Arquiteturas de Gerência de Redes
 
Introdução a Gerência de Redes
Introdução a Gerência de RedesIntrodução a Gerência de Redes
Introdução a Gerência de Redes
 

Último

Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfInocencioHoracio3
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoMarcio Venturelli
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 

Último (8)

Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor Sucroenergético
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 

SI - Comunicação

  • 1. Sistemas Distribuídos Comunicação Frederico Madeira LPIC-1, LPIC-2, CCNA fred@madeira.eng.br www.madeira.eng.br
  • 2. Referências - Tanenbaum, A.; Steen, M.; Sistemas Distribuídos, princípios e paradigmas. Capítulo 4. - Coulouris, G.;Dollimore, J.; Kindberg, T.; SISTEMAS DISTRIBUIDOS CONCEITOS E PROJETO. Capítulo 4.
  • 4. Introdução • A comunicação entre processos está no coração de todo Sistema Distribuído; • A comunicação é sempre baseada em troca de mensagens pela rede; • Protocolo são regras as quais os processos comunicantes têm de obedecer; • Expressar comunicação por meio de troca de mensagens é mais difícil do que usar primitivas baseadas em memória compartilhada; • A comunicação via rede não é confiável, como por exemplo na Internet;
  • 5. Protocolos em Camadas • Dada ausência de memória compartilhada, toda comunicação é feita via troca de mensagens de baixo nível • Em resumo: – Quando A quer se comunicar com B; – A cria uma mensagem; – Envia a mensagem para B; – Vários acordos são necessários para que essa comunicação seja bem sucedida;
  • 6. SIMPLES ESSE PROCESSO ??? Protocolos em Camadas
  • 7. Protocolos em Camadas • Como o receptor sabe o último bit da mensagem ? • As partes da mensagem chegaram em ordem ? • Alguma parte da mensagem foi perdida e precisa ser retransmitida ? • A mensagem que foi enviada foi recebida integra ? Ocorreu algum erro de transmissão ? • Para onde devo enviar a mensagem ? • A latência está alta, como compensar ? • O Servidor está atrás de um firewall e agora ? • Essa porta é reservada, qual devo usar ? • Como priorizar meus pacotes no meio de tantos outros ?
  • 8. Protocolos em Camadas • Como o receptor sabe o último bit da mensagem ? • As partes da mensagem chegaram em ordem ? • Alguma parte da mensagem foi perdida e precisa ser retransmitida ? • A mensagem que foi enviada foi recebida integra ? Ocorreu algum erro de transmissão ? • Para onde devo enviar a mensagem ? • A latência está alta, como compensar ? • O Servidor está atrás de um firewall e agora ? • Essa porta é reservada, qual devo usar ? • Como priorizar meus pacotes no meio de tantos outros ?
  • 9. Modelo OSI • Para resolver esse problema de comunicação, a ISO desenvolveu um modelo de referência; • Este modelo é chamado de Open Systems Interconnection Reference Model (OSI); • Ele foi projetado para que sistemas abertos se comuniquem; • Sistema aberto é um sistema que está preparado para se comunicar com outro usando regras padronizadas, que seguem: o formato, o conteúdo e o significado de cada mensagem; • Essas regras estão formalizadas no que denominamos como protocolos;
  • 10. Modelo OSI • Modelo baseado em camadas • Onde cada camada tem sua função e serviços oferecidos • A camada inferior oferece (para a camada superior) uma interface de interação; • Facilita a identificação e tratamento de falhas • Exemplo: – se um grupo de computadores quiser se comunicar, eles devem concorda quais protocolos irão utilizar; • Existem dois tipos de protocolos: – Orientado a conexão – Não orientado a conexão (sem conexão)
  • 12. Modelo OSI • Orientado a conexão – antes de haver a comunicação,os computadores estabelecem uma conexão para negociarem o protocolo; Ex. telefone • Sem conexão – não é preciso haver essa negociação. O remetente envia uma mensagem assim que ela estiver pronta; Ex. correio • Ambos os tipos de comunicação são comuns;
  • 13. Modelo OSI IP Layer Link Layer Application Layer TCP Layer Dados Cabecalho de Aplicação Dados TCP Header Application Data TCP Header Application DataIP Header Application DataTCP Header IP Header Ethernet Header Ethernet Trailer TCP Segment IP Datagram Ethernet Frame 46 to 1500 bytes Ethernet Encapsulamento
  • 14. Modelo OSI - Camadas - Transmissão dos bits por um canal de comunicação - Ponta A enviar 1 a Ponta B deve receber 1 (definição da voltagem para representar 0 ou 1); - Duração do bit (nanossegundos) - Definição do modo de operação (Simplex, Half ou full duplex) - Como Inicializar e terminar uma conexão; - Pinagem do conector e finalidade de cada pino Em linhas gerais: - Interfaces Mecânicas - Interfaces Elétricas - Sincronização - Meio físico de transmissão
  • 15. Modelo OSI - Camadas - Transformar um canal de transmissão bruto em uma linha livre de erros não detectados para a camada de rede; - Divide os dados de entrada em QUADROS de dados e transmite sequencialmente - Se serviço for confiável, receptor enviará quadro de confirmação; - Controle de Fluxo (Buffer interfaces); - Controle de Erro; - Controle de Acesso ao canal compartilhado feito pela sub-camada MAC (Media acces contro - controle de acesso ao meio).
  • 16. Modelo OSI - Camadas Quadro Ethernert
  • 17. Modelo OSI - Camadas - Controlar a sub-rede, definindo como os PACOTES são roteados da origem até o destino; - Rotas baseadas em tabelas estáticas ou podem ser dinâmicas (especificada para cada pacote) - Controle de congestionamento; - Qualidade de Serviço (retardo, instabilidade, etc) - Endereçamento de redes - Tamanho do pacote (fragmentação) - Interconectar redes Heterogêneas
  • 18. Modelo OSI - Camadas - Aceitar dados das camadas acima, dividi-los em unidades menores (se necessário), repassá-los a camada de rede e assegurar que os fragmentos chegarão corretamente a oura extremidade. - Deve ser feito de forma transparente para as camadas superiores, independente da tecnologia utilizada abaixo dela. - Comunicação fim-a-fim - O tipo de transporte mais popular é o ponto-a- ponto, livre de erros, com garantia, no entanto também é possível utilizar sem garantia.
  • 19. Modelo OSI - Camadas • Os protocolos nesta camada podem utilizar outros protocolos na camada de rede que seja orientados, ou não, a conexão; • Orientado a conexão: •garantir que os fragmentos chegaram na ordem correta; • Sem conexão: •não tem a mesma garantia, fragmentos podem chegar desordenados; • Esta camada deve tratar essa diferença, ela deve reorganizar, antes de repassar a mensagem para acamada de cima
  • 20. Modelo OSI - Camadas •Dois protocolos se destacam nessa camada: o TCP e o UDP • O TCP (Transmission Control Protocol) garante que todas os fragmentos serão recebidos (conexão confiável, por consequência, orientado a conexão) • O UDP (Universal Datagram Protocol) não garante que todas os fragmentos serão recebidos (conexão não confiável, por consequência, sem conexão) • Implementa portas de comunicação
  • 21. Modelo OSI - Camadas Sessão • Responsável por sincronizar, manter e gerenciar a conexão com outro computador • Porventura a rede falhe, esta camada pode continuar a comunicação de onde parou; Apresentação • Se preocupa com os significados dos bits; • Também pode comprimir ou criptografar para tornar a comunicação mais rápida e segura; Aplicação • De fato, são as aplicações sendo executadas; • Esta camada também disponibiliza os recursos (protocolo) para que tal comunicação aconteça
  • 22. Modelo OSI - Camadas • Na prática, somente a camada de aplicação é usada; • A aplicação fica responsável por implementar as funcionalidades das camadas Apresentação e Sessão; • Ex. HTTP e FTP
  • 23. Modelo OSI – Camada de Middleware •Mesmo com essa pilha de protocolo bem definida, a aplicação ainda fica encarregada de implementar diversas funcionalidades (criar protocolo, segurança e etc); •Muitas vezes, essas funcionalidades não está ligadas diretamente ao negócio da aplicação; •A alternativa é utilizar um middleware, que ofereça essas funcionalidades já implementadas; •O Middleware fica entre as camadas de baixo nível e a aplicação;
  • 24. Modelos de Comunicação • Existem dois modos implementar um sistema distribuído: – Podemos implementar “do zero”, utilizando os protocolos oferecidos pela camada de transporte; • Utilizando Socket ou Datagram (ambos fornecidos pela linguagem Java); – Podemos usar uma middleware; • Devemos escolher qual tipo de middleware; • Ex. RPC, MOM
  • 25. Socket • Ele é o ponto de comunicação entre full-duplex (possibilita enviar e receber mensagens) entre dois processos • Não existe a transparência de distribuição: toda a comunicação está explícita, através de procedimentos: – Send: enviar os dados (array de bytes) – Receive: recebe os dados (array de bytes) • Bem, o que esses Arrays significam? Sua aplicação que dirá. • É a forma mais primitiva de criar um sistema distribuído;
  • 26. Socket • Além do mais, o desenvolvedor terá que implementar (caso seja necessário): – Balanceamento de carga – Segurança – Transparência de tecnologia – E etc.
  • 28. Socket • Socket: uma porta entre o processo de aplicação e o protocolo de transporte fim-a-fim (UCP or TCP) • Serviço TCP: transferência confiável de bytes de um processo para outro http://meusite.mackenzie.com.br/mariofci/COM_Socket.pdf
  • 32. Modelos de Comunicação - Middleware • A maneira mais fácil e rápida de desenvolver um Sistema Distribuído é utilizando middleware; • O desenvolvedor deve escolher um middleware que atenda as necessidades da aplicação; • Existem vários tipos, tais como: – Chamada a Processo Remoto (RPC) – Middleware Orientado a Mensagem (MOM) – Fluxo de dados • Mas antes de entender esses tipos, precisamos entender sobre a: – persistência, sincronização, granularidade e ordenação dos bytes
  • 33. Tipos de Comunicação Persistência • Comunicação Persistente – Uma mensagem que foi apresentada para transmissão é armazenada pelo middleware de comunicação durante o tempo que for necessária entregá-la • Comunicação Transiente – Uma mensagem é armazenada pelo sistema de comunicação somente durante o tempo em que a aplicação remetente e a aplicação receptora estiverem executando. • Normalmente, todos os serviços de comunicação a nível de transporte oferecem somente comunicação transiente.
  • 34. Tipos de Comunicação Sincronização • Comunicação Assíncrona (Primitiva não – Bloqueante) – Remetente continua sua execução imediatamente após ter apresentado sua mensagem para transmissão. • Comunicação Síncrona (Primitiva Bloqueante) – O remetente é bloqueado até saber que a requisição foi aceita
  • 37. Tipos de Comunicação Granularidade • Discreta – Partes se comunicam por mensagens e cada mensagem forma uma unidade de informação completa – Ex: Uma requisição • Fluxo – Várias mensagens,sendo que as mensagens estão relacionadas uma com as outras pela ordem ou pela relação temporal – Ex. sistemas multimídia (vídeo ou áudio)
  • 38. RPC - Remote Procedure Call • Tecnologia de comunicação entre processos que permite a um programa chamar um procedimento em outro computador, conectado por uma rede • O programador não se preocupa com detalhes de implementação dessa interação remota – do ponto de vista do código, a chamada se assemelha a chamadas de procedimentos locais. – Viabiliza a transparência de acesso • Tecnologia popular para a implementação do modelo cliente-servidor de computação distribuída • A idéia de RPC data de 1976, quando foi descrito no RFC 707 Fonte: Wikipedia
  • 39. RPC - Remote Procedure Call Fonte: Wikipedia
  • 40. RPC - Remote Procedure Call
  • 41. RPC - Remote Procedure Call • Arquiteturas de duas máquinas podem ser diferentes • É preciso passar parâmetros e resultados; – De tipos primitivos (ex. int, bool) até os compostos (classe, struct); • Como tudo vai se tornar array de bytes, como será a organização dos dados antes de enviar?
  • 42. RPC - Remote Procedure Call • A transparência é conseguida através dos apêndices; • Existem dois tipos de apêndices: o Stub (Cliente) e o Skeleton (Servidor); – Stub: responsável por empacotar os parâmetros em uma mensagem, envia para o servidor, e tratar a resposta. – Skeleton: responsável por interpreta as requisições, processar e retorna a resposta;
  • 43. RPC - Remote Procedure Call
  • 44. RPC - Remote Procedure Call • Os Stubs e Skeletons ele não são genéricos; • São utilizados para facilitar a comunicação com um determinado servidor; • Caso haja outro servidor, oferecendo outro tipo de procedimento, irá existir outro Stub (para o cliente) e o outro Skeleton (para o servidor);
  • 45. RPC - Remote Procedure Call • Mas, como são construído esses apêndices? • Através de uma IDL (Linguagem de Definição de Interface), é possível descrever a interface do procedimento remoto – A descrição provida pela IDL é independente de qualquer linguagem de programação • Assim, é possível criar Stub e Skeleton da mesma IDL; • E possibilitar a comunicação entre o cliente e o servidor de forma transparente;
  • 46. RPC - Remote Procedure Call • Uma chamada remota de procedimento difere das chamadas locais em alguns pontos: – Tratamento de erros: falhas do servidor ou da rede devem ser tratadas. – Variáveis globais e efeitos colaterais: Uma vez que o servidor não possui acesso ao espaço de endereços do cliente, argumentos protegidos não podem ser passados como variáveis globais ou retornados. – Desempenho: chamadas remotas geralmente operam a velocidades inferiores em uma ou mais ordens de grandeza em relação às chamadas locais.
  • 47. RPC - Remote Procedure Call – Autenticação: uma vez que chamadas remotas de procedimento podem ser transportadas em redes sem segurança, autenticação pode ser necessário. • Dessa forma, mesmo havendo diversas ferramentas que geram automaticamente o cliente e o servidor, os protocolos precisam ser desenvolvidos cuidadosamente.
  • 48. RPC - Implementações • CORBA — padrão RPC independente de plataforma • Sun RPC — RPC para as plataformas Unix e Linux • DCOM — RPC para Windows • RMI — RPC para Java • SOAP — padrão RPC para web service • JRES - Java Remote Execution Service é um protocolo RPC que usa um mecanismo de codificação estilo SSL para codificar suas chamadas e HTTP puro como mecanismo de transporte.
  • 49. Comunicação Orientada Mensagem (Transiente) • Dada a natureza Síncrona do modelo RPC – Bloqueia o cliente até que sua requisição tenha sido atendida • Quando não podemos garantir que o receptor estará executando no momento em que uma requisição é emitida • É necessário o uso de serviços alternativos de comunicação • Neste, caso é o uso de troca de mensagens: – Ex: Interface Berkley (sockets) – Interface de troca de mensagens (MPI)
  • 50. Comunicação Orientada Mensagem (Persistente) • Oferecem suporte extensivo para comunicação assíncrona • Capacidade de armazenamento de médio prazo para mensagens, – remetente ou receptor não precisam estar ativos durante a transmissão da mensagem • A diferença do modelo anterior (sockets/MPI) as mensagens podem durar minutos ao invés de seg/ms) • Exemplos: – Sistemas de Enfileiramento de mensagens – Middleware orientado a mensagem (MOM)
  • 51. Sistemas de Enfileiramento de Mensagens • Aplicações se comunicam inserindo mensagens nas filas especificas. • As mensagens são repassadas para uma série de servidores de comunicação • Em certa altura, elas são entregues aos destinatários. • A transmissão da mensagem pode ocorrer mesmo que o receptor não esteja em funcionamento no mesmo momento. • Única garantia: Que a mensagem será inserida na fila
  • 54. Comunicação orientada a Fluxo • Os modelos anteriores focam a troca de unidades de informação completas/independentes • A temporização do envio/recebimento da mensagem não é tão relevante • Neste modelo, a temporização representa uma questão crucial • Imagine uma transmissão de áudio com qualidade de CD, ou seja amostrada a 44.1 khz. – Para reprodução, as amostras no fluxo de áudio precisam se tocadas em intervalos de 1/44100s. – A reprodução a uma taxa diferente vai resultar um áudio diferente do original • Neste modelo a distribuição de dados é altamente dependente do tempo, como áudio e vídeo.
  • 55. Comunicação orientada a Fluxo • Modo de Transmissão Assíncrono – Não existe restrição de temporização sobre quando a transmissão dos itens deve ocorrer. – É irrelevante o momento exato em que a transferência de cada item é concluída • Modo de Transmissão Síncrono – Existe um atraso fim-a-fim máximo definido para cada unidade em um fluxo de dados – Se forem transmitidas muito mais rápida do que o atraso mínimo tolerado, não importa • Modo de Transmissão Isócrono – As unidades precisam ser transmitidas no temo certo. – O atraso fim-a-fim tem um valor máximo e um valor mínimo. (Variação de atraso delimitado)
  • 57. Fluxos e Qualidade de Serviço • Para que as relações temporais em um fluxo possa ser preservadas, os requisitos costumam ser expressos em politicas de QOS (Quality of Service) • QOS se resume na definição de algumas propriedades: – Taxa de bits requerida – Máximo de atraso até o estabelecimento de uma sessão – Máximo atraso fim-a-fim – Máxima variância de atraso – Máximo atraso de ida e volta • Se a comunicação utilizar a pilha de protocolos da internet, esta é formada por serviço de datagrama de melhor esforço, extremamento simples, o IP. – Lá se vai a especificação de QOS !!!
  • 58. Fluxos e Qualidade de Serviço • Dada a classe best-effort da internet, o sistema distribuído pode ocultar essa falta de qualidade • A internet suporta diffserv ou serviços diferenciados • O método DiffServ opera sobre grandes volumes de dados em oposição a fluxos ou reservas individuais – Isto implica em uma negociação para todos os pacotes de, por exemplo, um ISP ou uma universidade – Os acordos resultantes destas negociações são designados de "acordos de nível de serviço" (Service Level Agreements), e envolvem geralmente um valor por parte das operadoras de telecomunicações. Fonte: https://pt.wikipedia.org/wiki/DiffServ
  • 59. Fluxos e Qualidade de Serviço • Outra alternativa é trabalhar com buffers – Muito útil para reduzir a variância de atraso. – O receptor armazena os dados recebidos em um buffer pelo tempo máximo. – Isso permite que o receptor passe pacotes para a aplicação a uma taxa regular – Sempre haverá pacotes suficientes entrando no buffer que garantirá a reprodução posterior
  • 60. Comunicação orientada a Fluxo Solução é aumentar o tamanho do buffer
  • 61. Comunicação orientada a Fluxo Fonte: https://googlesystem.blogspot.com.br/2016/04/background-buffer-in-youtubes- android.html#gsc.tab=0
  • 62. Comunicação Multicast • “multicast communication” - permite que um processo envie a mesma mensagem para um grupo de processos; • Por muitos anos este tópico pertenceu ao domínio dos protoco-los de rede, onde soluções na camada de rede e de transporte foram propostas e implementadas; – Dependia de muito esforço de gerenciamento – Em muitos casos intervenção humana • No entanto, este tópico vem tomando espaço como tópico em comunicação em sistemas distribuídos.
  • 63. Multicasting de nível de aplicação • “idéia” - nós são organizados em uma rede de sobreposição utilizada para disseminar a informação para os membros; • Roteadores da rede não estão envolvidos nesta rede, assim o roteamento de mensagens na rede não é ótimo em comparação com o roteamento na camada de rede. • Assim, o aspecto de projeto é essencial no suporte a multicast na aplicação é a construção da rede de sobreposição: – nós se organizam em uma árvore de modo que tenhamos um único caminho entre cada par de nós; – nós se organizam de modo que tenham múltiplos vizinhos - “mesh network” assim, em geral existem múltiplos caminhos entre cada par de nós.
  • 64. Multicasting de nível de aplicação
  • 65. Sistemas Distribuídos Comunicação Frederico Madeira LPIC-1, LPIC-2, CCNA fred@madeira.eng.br www.madeira.eng.br