SlideShare uma empresa Scribd logo
1 de 37
SISTEMAS
DISTRIBUÍDOS
COMUNICAÇÃO
ENTRE PROCESSOS
ARTHUR EMANUEL DE OLIVEIRA CAROSIA
1
INTRODUÇÃO
2
INTRODUÇÃO
Discussão de como middleware e aplicativos podem utilizar os
protocolos TCP e UDP.
Na API Java, a comunicação é feita por meio de sockets.
3
INTRODUÇÃO
A interface de programa para UDP fornece uma abstração de
passagem de mensagem, a forma mais simples de
comunicação entre processos.
Permite que um processo remetente transfira uma mensagem
(datagramas) para processo destino.
4
INTRODUÇÃO
A interface de programa TCP fornece uma abstração de um
fluxo bidirecional entre pares de processos.
A informação consiste em um fluxo contínuo de dados sem dar
a noção de limites da mensagem (início e fim).
5
INTRODUÇÃO
Os fluxos comunicação de acordo com o paradigma
produtor-consumidor.
• par de processos com funções distintas
• produz itens de dados;
• consome itens de dados;
• Os itens de dados criados são enfileirados na chegada
(buffer) até que o consumidor esteja pronto para recebe-los.
• O consumidor deve esperar quando nenhum item de dados
estiver disponível.
• O produtor deve esperar caso o armazenamento usado para
conter os itens de dados esteja cheio.
6
INTRODUÇÃO
7
CARACTERÍSTICAS NA
COMUNICAÇÃO ENTRE
PROCESSOS
8
SÍNCRONO VS
ASSÍNCRONO
• Síncrona:
• os processos remetente e destino são sincronizados a cada
mensagem.
• Send e Receive são operações que causam bloqueio.
9
SÍNCRONO VS
ASSÍNCRONO
• Assíncrono:
• a operação Send é não bloqueante
• o remetente pode prosseguir assim que a mensagem tenha
sido copiada para um buffer local
• Receive pode ter variantes com e sem bloqueio.
10
DESTINOS DA
MENSAGEM
• As mensagens são enviadas para destinos identificados pelo
par (endereço IP, porta local).
• Uma porta é o destino da mensagem dentro de um
computador, e pode ter vários remetentes.
• Os processos podem usar várias portas para receber
mensagens e qualquer processo que saiba essas portas
pode enviar mensagens para processos remetentes.
11
CONFIABILIDADE E
ORDENAMENTO
Confiabilidade:
garantia que as mensagens foram entregues,
independentemente do número de mensagens que
possam ter sido eliminadas ou perdidas.
Ordenamento:
algumas aplicações exigem que as mensagens sejam
entregues na ordem de emissão.
12
SERIALIZAÇÃO EM
JAVA
13
SERIALIZAÇÃO EM
JAVA
Serialização
refere à atividade de simplificar o objeto em uma
forma sequencial conveniente para armazenamento
em disco ou transmitir uma mensagem.
Desserialização
consiste em restaurar o estado de um objeto a partir
de sua forma serializada.
Serializable não possui métodos e sua implementação tem o
efeito de permitir que suas instâncias sejam serializadas.
14
SERIALIZAÇÃO EM
JAVA
15
COMUNICAÇÃO
CLIENTE-SERVIDOR
16
COMUNICAÇÃO
CLIENTE-SERVIDOR
Forma de comunicação projetada para suportar as funções e
trocas de mensagens em interações cliente-servidor típicas.
Comunicação é síncrona e confiável.
17
COMUNICAÇÃO
CLIENTE-SERVIDOR
Baseada em 3 primitivas:
• doOperation:
• método usado pelo cliente para invocar ações remotas.
• getRequest:
• usado por um processo servidor para ler as requisições de
serviço.
• sendReply:
• usado pelo servidor para enviar a mensagem de resposta ao
cliente.
18
COMUNICAÇÃO
CLIENTE-SERVIDOR
19
SOCKETS
20
SOCKETS
TCP e UDP utilizam sockets como forma de comunicação.
A comunicação entre processos consiste na transmissão de
mensagens entre soquetes.
Para que um processo receba mensagens, seu socket deve estar
vinculado a um endereço IP e uma porta local.
21
SOCKETS
22
COMUNICAÇÃO POR
DATAGRAMA UDP
Transmitido do processo remetente ao processo destino sem a
existência de confirmações ou novas tentativas de envio.
Se ocorrer uma falha, a mensagem poderá não chegar.
23
COMUNICAÇÃO POR
DATAGRAMA UDP
Servidor
Associa socket a uma porta de serviço.
Cliente
Associa socket a qualquer porta local livre.
24
QUESTÕES
RELACIONADAS AO UDP
• Tamanho da mensagem:
• Limite de 64 kb.
• Timeout:
• não é adequado que um processo espere indefinidamente
para receber algo, pois o processo remetente pode ter
falhado ou a mensagem pode ter se perdido.
• Falhas por omissão:
• mensagens podem ser descartadas devido a erros de soma
de verificação ou porque não há espaço no buffer de origem
ou destino.
• Ordenamento:
• as mensagens podem ser entregues em ordem diferente da
que foram emitidas.
25
26
API JAVA
PARA UDP
UDPCLIENT
API JAVA
PARA UDP
UDPSERVER
27
EXECUTANDO
Executando o servidor
Java UDPServer
Executando o cliente
Java UDPClient mensagem localhost
28
COMUNICAÇÃO POR
FLUXO TCP
29
COMUNICAÇÃO POR
FLUXO TCP
Abstração no qual fluxo de dados podem ser lidos (receive) e
escritos (send).
30
COMUNICAÇÃO POR
FLUXO TCP
• Tamanho das mensagens:
• o aplicativo pode escolher o volume de dados que vai ser
enviado ou recebido em um fluxo.
• Mensagens perdidas:
• Se o destinatário não receber uma mensagem, o remetente a
retransmite.
• Controle de fluxo:
• Controle para processos rápidos não sobrecarregarem
processos lentos.
• Destinos da mensagem:
• uma vez estabelecida as conexões, os processos
simplesmente leem ou escrevem no fluxo, sem necessidade
de usar endereços IP e portas, pois já foi estabelecida uma
conexão.
31
COMUNICAÇÃO POR
FLUXO TCP
Threads:
quando um servidor aceita uma conexão, ele cria
uma nova thread para se comunicar com o novo
cliente.
Falhas:
Os fluxos TCP usam timeout e retransmissões para
tratar pacotes perdidos.
32
33
API JAVA
PARA TCP
TCP CLIENT
34
API JAVA
PARA TCP
TCP SERVER
35
API JAVA
PARA TCP
CONNECTION
EXECUTANDO
Executando o servidor
Java TCPServer
Executando o cliente
Java TCPClient teste localhost
36
SISTEMAS
DISTRIBUÍDOS
COMUNICAÇÃO ENTRE
PROCESSOS
ARTHUR EMANUEL DE OLIVEIRA CAROSIA
37

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02Sistemas Distribuídos - Aula 02
Sistemas Distribuídos - Aula 02
 
Redes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos GeraisRedes de computadores 1 - Conceitos Gerais
Redes de computadores 1 - Conceitos Gerais
 
Packet Tracer
Packet TracerPacket Tracer
Packet Tracer
 
Camada de enlace parte1
Camada de enlace   parte1Camada de enlace   parte1
Camada de enlace parte1
 
Firewall
FirewallFirewall
Firewall
 
Arquitetura de Redes de Computadores
 Arquitetura de Redes de Computadores Arquitetura de Redes de Computadores
Arquitetura de Redes de Computadores
 
SI - Comunicação
SI - ComunicaçãoSI - Comunicação
SI - Comunicação
 
Endereçamento IP
Endereçamento IPEndereçamento IP
Endereçamento IP
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6
 
Conceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos DistribuidosConceitos Básicos de Objetos Distribuidos
Conceitos Básicos de Objetos Distribuidos
 
Arquitetura cliente servidor
Arquitetura cliente servidorArquitetura cliente servidor
Arquitetura cliente servidor
 
Trabalho Servidor FTP
Trabalho Servidor FTPTrabalho Servidor FTP
Trabalho Servidor FTP
 
Modelo de camadas TCP/IP
Modelo de camadas TCP/IPModelo de camadas TCP/IP
Modelo de camadas TCP/IP
 
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
Desenvolvimento de Sistemas Cliente/Servidor - Estrutura de sistemas cliente ...
 
Roteadores e roteamento
Roteadores e roteamentoRoteadores e roteamento
Roteadores e roteamento
 
Protocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosProtocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson Treinamentos
 
Descrição formal de Casos de Uso
Descrição formal de Casos de UsoDescrição formal de Casos de Uso
Descrição formal de Casos de Uso
 
Redes de Computadores Capítulo 3 - Camada de Enlace
Redes de Computadores Capítulo 3 - Camada de EnlaceRedes de Computadores Capítulo 3 - Camada de Enlace
Redes de Computadores Capítulo 3 - Camada de Enlace
 

Destaque

Sincronização e comunicação entre processos
Sincronização e comunicação entre processosSincronização e comunicação entre processos
Sincronização e comunicação entre processos
Amedy Caisse
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
Computação Depressão
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
Adriano Teixeira de Souza
 

Destaque (11)

Sincronização e comunicação entre processos
Sincronização e comunicação entre processosSincronização e comunicação entre processos
Sincronização e comunicação entre processos
 
Capítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisCapítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - Coulouris
 
Slides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas DistribuídosSlides NGINX - Sistemas Distribuídos
Slides NGINX - Sistemas Distribuídos
 
Sockets : Introdução
Sockets : IntroduçãoSockets : Introdução
Sockets : Introdução
 
CSS 3
CSS 3CSS 3
CSS 3
 
Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06Sistemas Distribuídos - Aula 06
Sistemas Distribuídos - Aula 06
 
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
2009 1 - sistemas operacionais - aula 4 - threads e comunicacao entre processos
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
P2P - Sistemas Distribuídos
P2P - Sistemas DistribuídosP2P - Sistemas Distribuídos
P2P - Sistemas Distribuídos
 
Sistemas Operacionais 10 comunicação entre processos
Sistemas Operacionais 10   comunicação entre processosSistemas Operacionais 10   comunicação entre processos
Sistemas Operacionais 10 comunicação entre processos
 
Sistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na WebSistemas Distribuídos baseados na Web
Sistemas Distribuídos baseados na Web
 

Semelhante a Sistemas Distribuídos - Aula 05

Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
Faculdade Mater Christi
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
fantic3o
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
Daniel Silveira
 

Semelhante a Sistemas Distribuídos - Aula 05 (20)

Aula 1
Aula 1Aula 1
Aula 1
 
Capítulo 23 comunicação entre processos
Capítulo 23   comunicação entre processosCapítulo 23   comunicação entre processos
Capítulo 23 comunicação entre processos
 
Sd04 (si) comunicação em sd
Sd04 (si)   comunicação em sdSd04 (si)   comunicação em sd
Sd04 (si) comunicação em sd
 
Trabalho camada de transporte
Trabalho camada de transporteTrabalho camada de transporte
Trabalho camada de transporte
 
Protocolo UDP
Protocolo UDPProtocolo UDP
Protocolo UDP
 
Lab 06 ping_com_udp
Lab 06 ping_com_udpLab 06 ping_com_udp
Lab 06 ping_com_udp
 
Mini Curso - Redes de Computadores
Mini Curso - Redes de ComputadoresMini Curso - Redes de Computadores
Mini Curso - Redes de Computadores
 
Intro_redes.pdf
Intro_redes.pdfIntro_redes.pdf
Intro_redes.pdf
 
Aula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicaçãoAula01 - protocolos da camada de aplicação
Aula01 - protocolos da camada de aplicação
 
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptxAula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
Aula CARACTERIZAÇÁO DE SISTEMAS distribuidos.pptx
 
Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2Camada de Transporte - TADS/REC 2014/2
Camada de Transporte - TADS/REC 2014/2
 
Ac.m4 tarefa video-emil
Ac.m4 tarefa video-emilAc.m4 tarefa video-emil
Ac.m4 tarefa video-emil
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 
02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf02 - Aplicação-Transporte.pdf
02 - Aplicação-Transporte.pdf
 
1089335456 paper 4 sockets em java
1089335456 paper 4   sockets em java1089335456 paper 4   sockets em java
1089335456 paper 4 sockets em java
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Protocolos
ProtocolosProtocolos
Protocolos
 
Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte Redes de Comunicacao-Camada de transporte
Redes de Comunicacao-Camada de transporte
 
Redes tcp udp
Redes tcp udpRedes tcp udp
Redes tcp udp
 
Redes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de TransporteRedes de Computadores Capítulo 6 - Camada de Transporte
Redes de Computadores Capítulo 6 - Camada de Transporte
 

Mais de Arthur Emanuel

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Arthur Emanuel
 

Mais de Arthur Emanuel (20)

Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine LearningApresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Orientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - ExercíciosOrientação a Objetos - Introdução - Exercícios
Orientação a Objetos - Introdução - Exercícios
 
Android - Integração com Facebook
Android - Integração com FacebookAndroid - Integração com Facebook
Android - Integração com Facebook
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, MultimidiaDesenvolvimento para Android - Acelerômetro, GPS, Multimidia
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e MenuAula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e SomAula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e ColisaoAula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - ObstáculosAula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do JogoAula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do JogoAula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
 
Desenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - ExercícioDesenvolvendo Jogos Para Android - Exercício
Desenvolvendo Jogos Para Android - Exercício
 
CSS
CSSCSS
CSS
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
HTML -  Listas, Estilos, Tabelas, Div, Span, FormulárioHTML -  Listas, Estilos, Tabelas, Div, Span, Formulário
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
 
HTML - Introducao
HTML - Introducao HTML - Introducao
HTML - Introducao
 
Android - Google Maps
Android - Google MapsAndroid - Google Maps
Android - Google Maps
 
Android - Bluetooth
Android - BluetoothAndroid - Bluetooth
Android - Bluetooth
 
Android - Acelerometro e GPS
Android - Acelerometro e GPSAndroid - Acelerometro e GPS
Android - Acelerometro e GPS
 
Android - Consumindo Webservices
Android - Consumindo WebservicesAndroid - Consumindo Webservices
Android - Consumindo Webservices
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 

Sistemas Distribuídos - Aula 05