Buscar

Comunicação entre processos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 58 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação em Sistemas 
Distribuídos
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Objetivos
• Estudar os modelos de comunicação nos Sistemas Operacionais de 
Rede.
• Apresentar as características da camada de Transporte e seus 
protocolos.
• Estudar as principais formas de inter-processos.
• Apresentar os principais modelos de Middleware.
• Message-oriented Middleware.
• Remote Procedure Call
• Remote Metod Invocation
• CORBA
• Transaction Processing Monitor.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
A Finalidade do Modelo de Referência OSI
•Open Systems Interconnections
criado pela ISO (International
Organization for Standardization)
Objetivos:
• Reduzir a complexidade
• Padronizar as interfaces
• Facilitar a engenharia modular
• Garantir a interoperabilidade
• Acelerar a evolução
• Reduzir conflitos entre equipamentos
• Simplificar o desenvolvimento
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Aplicação
Serviços da rede para as aplicações
Disponibiliza serviços da rede para os diversos 
aplicativos, como correio eletrônico, FTP, 
Emulação de terminal, E-commerce, etc)
• Contempla as tecnologias que permitem ao 
software do usuário a utilização dos recursos da 
rede.
• Por exemplo: um processador de texto utiliza os 
serviços de transferência de arquivo para 
ingressar na rede.
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Apresentação
Representação de dados
• Garantir que os dados sejam compreensíveis para o 
sistema receptor
• Cuidar da formatação e codificação dos dados
• Estruturar e eventualmente converter os dados
• Negociar e compatibilizar a sintaxe com a camada de 
aplicação
• Pode ocorrer compressão, criptografia ou 
decodificação dos dados
• Exemplos de protocolos de apresentação: MPEG, 
JPEG, GIF, ASCII, etc
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Sessão
Comunicação interhosts
• Estabelece, gerencia, regulamenta e finaliza sessões 
entre as apresentações
• Sessões de comunicação consiste em requisições e 
resposta a serviços que ocorrem entre as aplicações 
localizadas em equipamentos de rede diferentes.
• Oferece recursos para sincronismo entre aplicações em 
hosts diferentes
• Coordena os direitos de acesso
• Fornece relatórios acessibilidade
• Exemplos de protocolos de sessão: Sistemas 
operacionais, como Windows, Novel Netware, MAC OS
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Transporte
Conexões ponto a ponto
• Trata das funções de transporte de segmentos entre os 
hosts
• Responsável pela confiabilidade do transporte de dados
• Estabelece, mantém e finaliza circuitos virtuais fim-a-fim
• Fornece controle de fluxo das informações
• Mantém um serviço de transporte de dados que isola as 
camadas superiores (upper layers) das inferiores (data 
layers)
• Responsável pela qualidade de tipo de serviço 
requeridos pelos níveis superiores (taxa, tamanho do 
pacote, tempo disponível para retransmissão, controle do 
fluxo de dados)
• Exemplos: TCP, UDP, SPX
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Rede
Endereçamento e Melhor Rota
• Prove o endereçamento lógico usado pelos roteadores
• Fornece seleção das melhores rotas entre redes
• Construção das tabelas de roteamento
• Serviços de InternetWorking
• Fornece conectividade de redes geograficamente 
separadas
• Métodos de movimentação de informações entre redes
• A camada de rede pode escolher uma rota específica e 
impedir que os dados sejam enviados a redes não 
envolvidas
• Exemplos: IP, IPX, X.25
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Enlace
Acessos aos meios
• Organização dos bits em grupos lógicos de informações 
chamados de frames ou quadros. 
• Fornece transferência de dados entre os meios
• Responsável pelo endereçamento físico e topologia de rede
• Possui funções de notificação de erros e controle de fluxo
• Função de identificar fisicamente os hosts em uma rede
• Exemplos: 
LAN: Ethernet, IEEE 802.3/802.2, etc
WAN: Frame Relay, HDLC, PPP, ATM etc
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Camadas do Modelo OSI - Física
Transmissão digital
• Cuida das estruturas e especificações físicas
• Define as especificações elétricas, mecânicas e 
funcionais da mídia de transmissão
• Procedimentos para ativar, manter e desativar o link 
físico entre sistemas
• Controla níveis de tensão, taxas de dados, distâncias 
máximas de transmissão e conectores físicos
• Responsável pela pinagem de cabos 
• Codificação da transmissão de bits e regras de 
sincronização (clocking)
• Exemplo: V.24, V.35, E1, E3, SDH etc
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre as Camadas do Modelo 
OSI
DadosA
DadosAASTR
DadosAAST
DadosAAS
DadosAA
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
DadosAASTR
DadosAAST
DadosAAS
DadosAA
Usuário A Dados
DadosA
DadosAASTRE E
DadosAASTREF F
DadosAASTRE E
DadosAASTREF F
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
Usuário BDados
E E
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Modelo de Referência OSI
Protocolo de transporte
Sessão
Transporte
Rede
Enlace
Físico
Aplicação
Apresentação
Protocolo de sessão
Protocolo de apresentação
Protocolo de aplicação
Sub-rede De Comunicações
Roteador Roteador
Rede
Enlace
Físico
Rede
Enlace
Físico
Rede
Enlace
Físico
Sessão
Transporte
Aplicação
Apresentação
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Overhead das camadas
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Data Link Layer
2-3
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Arquitetura TCP/IP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Físico
FTP, SMTP,
Telnet, etc..
TCP/UDP
IP, ICMP, ARP/RARP
Não Padronizado
Modelo OSI TCP/IP
Para redes LAN: Ethernet, Gigabit Eth, 802.3, 802.5 
Para redes WAN: FrameRelay, ATM, PPP, etc
As Camadas OSI x TCP/IP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Arquitetura Internet
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
cliente servidor
request
reply
Comunicação lógica
kernel kernel
Comunicação real
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
HLEN.
4 bits
Número do porta de origem
16 bits
Número de Seqüência
32 bits
Tamanho da janela
16 bits
Opções (se existir)
Dados
20 
bytes
Reservado
6 bits
Número da porta de destino
16 bits
Número de ACK (Reconhecimento)
32 bits
Checksum TCP
16 bits
Ponteiro de Urgência
16 bits
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
Cabeçalho TCP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Triplo HandShake TCP / Estabelecer 
conexão
Envia SYN 
(seq=100 ctl=SYN)
SYN recebido
Envia SYN, ACK 
(seq=300 ack=101 ctl=syn,ack)
Estabelecido
(seq=101 ack=301 ctl=ack)
Host A Host B
1
2
3
SYN recebido
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Source
Port
Source
Port
Dest.
Port
Dest.
Port ……
Sequence
#
Sequence
#
Acknowledgement
#
Acknowledgement
#
10281028 2323
Source Dest.
111111
Seq.
101101
Ack.
10281028 2323
Source Dest.
101010
Seq.
100100
Ack.
102810282323
Source Dest.
111111
Seq.
100100
Ack.
102810282323
Source Dest.
121212
Seq.
101101
Ack.
Recebi o #10,
Agora preciso do
#11.
Acabo de
enviar #10
Sequencia TCP e Números de ACK
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Host A Host B
ACK TCP Simples
No exemplo ao lado:
• O tamanho da janela 
é 1
• Com esse tamanho, 
cada segmento deve 
ser reconhecido (ACK) 
antes que outro 
segmento possa ser 
enviado.
• Resulta num uso 
pouco eficiente da 
banda
Envia 1
Recebe 1
Envia ACK 2
Recebe ACK 2
Envia 2
Envia 3
Recebe 2
Envia ACK 3
Recebe 3
Envia ACK 4
Recebe ACK 4
Recebe ACK 3
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Janela Deslizante TCP
Host A Host B
Envia 1
Envia 2
Envia 3 Recebe 1
Recebe 2
Recebe 3
Envia ACK 4
Recebe ACK 4
Envia 4
Envia 5
Envia 6
Recebe 4
Recebe 5
Recebe 6
Envia ACK 7
Recebe ACK 7
No exemplo ao lado:
• O tamanho da janela é 3
• Um tamanho de janela 
maior permite que mais 
dados sejam transmitidos 
enquanto se espera um 
reconhecimento.
• O termo janela deslizante 
se refere ao fato do 
tamanho da janela se 
adequar dinamicamente 
durante a sessão TCP.
• A janela deslizante 
possibilita o uso otimizado 
da banda
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Client-Server TCP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
• Protocolo de camada 4
• Opera em modo não orientado à conexão (connection less) - RFC 768
• Oferece protocolo sem confiabilidade
• Não há campos de seqüência ou de reconhecimento
• Os protocolos da camada de aplicação (superiores) devem prover 
reconhecimento para haver confiabilidade.
• Os protocolos que utilizam UDP são TFTP (Trivial File Transfer Protocol), 
SNMP (Simple Network Management Protocol), NFS (Network File 
System) e DNS (Domain Name System)
• Possibilita várias conexões UDP simultâneas no mesmo host
Protocolo UDP - User Datagram Protocol
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Formato do Segmento UDP
Número do porta de origem
16 bits
Dados
8
octetos
Número da porta de destino
16 bits
Comprimento
16 bits
Checksum
16 bits
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
Em um S.D. os processos (programas em execução) se comunicam através de:
Acesso compartilhado em uma memória comum
Rede na qual estão conectados via troca de mensagens (message
passing) ou comunicação orientada à mensagens
Esta operação é conhecida como IPC (Inter-Process Communication)
Características:
Simplicidade
Atende diferentes aplicações
Semântica simples
Atende tanto IPCs local e remoto
Eficiência
Refere-se ao custo de estabelecer e encerrar uma conexão
Confiabilidade
Manipulação de mensagens perdidas, time-out, etc..
Segurança
Deve suportar criptografia
Portabilidade
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
O destino da mensagem (p. ex. um servidor) é definido através de
de duas referências: endereço IP e porta local.
Este par recebe o nome de socket.
Socket é um end-point de um enlace de comunicação de duas vias 
entre dois programas rodando em um Sistema Distribuído.
Um socket é descrito por uma API (Application Programer’s Interface).
Uma API para UDP estabelece a mais simples forma de comunicação entre 
processos: datagramas ou message passing.
Uma API para TCP estabelece uma conexão entre um par de processos 
definido como stream.
Um par socket estabelece uma conexão entre dois end-points
As duas principais primitivas de serviço são: send e receive.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
A comunicação entre processos pode ser:
Síncrona
Assíncrona
As primitivas de serviço podem ser do tipo:
Bloqueadas
Não bloqueadas
A comunicação segue dois modelos:
Persistente
Transiente
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
Comunicação síncrona
Os processos atendem a uma semântica de 
sincronização. O processo transmissor da mensagem estabelece uma conexão 
e aguarda a resposta do processo remoto depois de enviada a solicitação.
Comunicação assíncrona
O processo transmissor não aguarda a resposta do 
servidor. Depois de bufferizada a mensagem para posterior envio, o processo 
segue, sem aguardar a resposta do processo remoto.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
Técnicas para o processo remoto detectar a chegada de uma mensagem:
Polling: 
Uma primitiva test permite ao receptor verificar se alguma mensagem 
chegou antes de chamar a primitiva receive
Interrupt: 
Uma interrupção de software é usada para notificar o processo receptor 
quando chega uma mensagem e esta é armazenada no buffer
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
Primitiva Bloqueante (síncrona)
Para a primitiva send – enquanto a mensagem está sendo enviada o 
processo fica bloqueado
Para a primitiva receive – fica bloqueado até alguma mensagem chegar 
ou até um time-out.
Primitiva não – Bloqueante (assíncrona)
Para a primitiva send – retorna o controle imediatamente antes da 
mensagem ser enviada.
Para a primitiva receive – passa para o kernel o ponteiro para o buffer e 
retorna imediatamente, antes de receber a mensagem.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processosComunicação persistente
A mensagem submetida à transmissão é armazenada 
nos sistemas de comunicação e assim que possível é entregue ao seu 
destino, não sendo necessário queos processos send e receiver
estejam rodando
Comunicação transiente
A mensagem submetida à transmissão é armazenada 
nos sistemas de comunicação, se e somente se, os processos send e
receiver estirem rodando.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
a) Persistent asynchronous communication
b) Persistent synchronous communication
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
c) Transient asynchronous communication
d) Receipt-based transient synchronous communication
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
e) Delivery-based transient synchronous communication at message delivery
f) Response-based transient synchronous communication
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Comunicação entre processos
cliente servidor
request
reply
Comunicação lógica
kernel kernel
Comunicação real
Apresentação
Porta de entrada
Porta de conexão
Porta
Cliente
Conexão TCP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Transport Layer
Network Layer
Data Link 
Physical
Session
Presentation
Application
Ethernet
Camada Física
Token Ring
Camada Física EIA/TIA 232 / V35
Ethernet
CSMA/CD Token Ring FR/PPP
IP
TCP UDP
T
E
L
N
E
T
F
T
P
S
M
T
P
D
N
S
T
F
T
P
S
N
M
P
23 20/21 25 53 69 161
6 17
ICMP ARP RARP
Arquitetura TCP/IP - “Well Know ports”
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Programação de Sockets com TCP
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
processo
TCP com 
buffers,
variáveis
socket
controlado pelo
criador da aplicação
controlado pelo
sistema
operacional
host o
servidor
processo
TCP com
buffers,
variáveis
socket
host ou
servidor
internet
controlado pelo
criador da aplicação
controlado pelo
sistema
operacional
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Sockets
Socket API
• introduzida no BSD4.1 UNIX, 1981
• explicitamente criados, usados e 
liberados pelas aplicações
• paradigma cliente/servidor
• dois tipos de serviço de transporte
via socket API: 
– datagrama não confiável
– confiável, orientado a cadeias de 
bytes 
uma interface local, 
controlada pelo OS (uma
“porta”) na qual os
processos de aplicação
podem tanto enviar
quanto receber
mensagens de e para
outro processo de 
aplicação (local ou
remoto)
socket
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Berkeley Sockets (1)
Release the connectionClose
Receive some data over the connectionReceive
Send some data over the connectionSend
Actively attempt to establish a connectionConnect
Block caller until a connection request arrivesAccept
Announce willingness to accept connectionsListen
Attach a local address to a socketBind
Create a new communication endpointSocket
MeaningPrimitive
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Berkeley Sockets (2)
• Connection-oriented communication pattern using sockets.
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Sockets com TCP
Cliente deve contactar o servidor
• processo servidor já deve estar
executando antes de ser 
contactado
• servidor deve ter criado socket 
(porta) que aceita o contato do 
cliente
Cliente contata o servidor:
• criando um socket TCP local
• especificando endereço IP e 
número da porta do processo
servidor
• Quando o cliente cria o socket: 
cliente TCP estabelece conexão
com o TCP do servidor
• Quando contactado pelo cliente, 
o TCP do servidor cria um novo 
socket para o processo servidor
comunicar-se com o cliente
– permite o servidor conversar
com múltiplos clientes
TCP fornece a transferência
confiável, em ordem, de bytes
(“pipe”) entre o cliente e o
servidor
ponto de vista da aplicação
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo de aplicação cliente-
servidor:
• cliente lê linha da entrada padrão
do sistema (inFromUser stream) 
, envia para o servidor via socket 
(outToServer stream)
• servidor lê linha do socket
• servidor converte linha para letras
maiúsculas e envia de volta ao
cliente
• cliente lê a linha modificada
através do (inFromServer
stream)
o
u
t
T
o
S
e
r
v
e
r
para rede da rede
i
n
F
r
o
m
S
e
r
v
e
r
i
n
F
r
o
m
U
s
e
r
teclado monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCP
socket
stream de entrada: 
seqüência de bytes
para dentro do processo
stream de saída: 
seqüência de bytes 
para fora do processo
process
o
cliente
TCP socket
cliente
Sockets com TCP
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Interação Cliente/servidor: TCP
espera por pedido
de conexão entrante
connectionSocket =
welcomeSocket.accept()
cria socket,
port=x, para
solicitação entrante:
welcomeSocket = 
ServerSocket()
cria socket,
conecta com hostid, port=x
clientSocket = 
Socket()
fecha
connectionSocket
lê resposta de
clientSocket
fecha
clientSocket
Servidor (executando em hostid) Cliente
envia pedido usando
clientSocketlê pedido de
connectionSocket
escreve resposta para
connectionSocket
TCP 
estabel. de conexão
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (TCP)
import java.io.*; 
import java.net.*; 
class TCPClient { 
public static void main(String argv[]) throws Exception 
{ 
String sentence; 
String modifiedSentence; 
BufferedReader inFromUser = 
new BufferedReader(new InputStreamReader(System.in)); 
Socket clientSocket = new Socket("hostname", 6789); 
DataOutputStream outToServer = 
new DataOutputStream(clientSocket.getOutputStream());
Cria
stream de entrada
Cria
socket cliente, 
conecta ao servidor
Cria
stream de saída
ligado ao socket
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (TCP), cont.
BufferedReader inFromServer = 
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream())); 
sentence = inFromUser.readLine(); 
outToServer.writeBytes(sentence + '\n'); 
modifiedSentence = inFromServer.readLine(); 
System.out.println("FROM SERVER: " + modifiedSentence); 
clientSocket.close(); 
} 
}
Cria
stream de entrada
ligado ao socket
Envia linha
para o servidor
Lê linha
do servidor
Instituto Presbiteriano Mackenzie Faculdade de Computaçãoe Informática
Disciplina de Sistemas Distribuídos
Exemplo: servidor Java (TCP)
import java.io.*; 
import java.net.*; 
class TCPServer { 
public static void main(String argv[]) throws Exception 
{ 
String clientSentence; 
String capitalizedSentence; 
ServerSocket welcomeSocket = new ServerSocket(6789); 
while(true) { 
Socket connectionSocket = welcomeSocket.accept(); 
BufferedReader inFromClient = 
new BufferedReader(new
InputStreamReader(connectionSocket.getInputStream())); 
Cria
socket de aceitação
na porta 6789
Espera, no socket
de aceitação por
contato do cliente
Cria stream de
entrada, ligado
ao socket
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: servidor Java (cont)
DataOutputStream outToClient = 
new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine(); 
capitalizedSentence = clientSentence.toUpperCase() + '\n'; 
outToClient.writeBytes(capitalizedSentence); 
} 
} 
}
Lê linha do
socket
Cria stream de 
saída, ligado ao
socket
Escreve linha
para o socket
Fim do while loop,
retorne e espere por
outra conexão do cliente
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Sockets com UDP
UDP: não há conexão entre o 
cliente e o servidor
• não existe apresentação
• transmissor envia
explicitamente endereço IP e 
porta de destino em cada
mensagem
• servidor deve extrair o endereço
IP e porta do transmissor de 
cada datagrama recebido
• UDP: dados transmitidos
podem ser recebidos foram de 
ordem ou perdidos
ponto de vista da aplicação
UDP fornece a transferência
não confiável de grupos de bytes
(“datagramas”) entre o cliente e o
servidor
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Interação Cliente/servidor: UDP
fecha
clientSocket
Servidor (executando hostid)
lê resposta de
clientSocket
cria socket,
clientSocket = 
DatagramSocket()
Cliente
Cria, endereço (hostid, port=x,
envia datagrama de pedido
usando clientSocket
cria socket,
port=x, para
solicitação entrante:
serverSocket = 
DatagramSocket()
lê pedido de:
serverSocket
escreve resposta para
serverSocket
especificando endereço
do host cliente e
número da porta
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (UDP)
s
e
n
d
P
a
c
k
e
t
para rede da rede
r
e
c
e
i
v
e
P
a
c
k
e
t
i
n
F
r
o
m
U
s
e
r
teclado monitor
Process
clientSocket
pacote
UDP
stream
de entrada
pacote
UDP
UDP
socket
Saída: envia pacote
(TCP envia “byte 
stream”)
Entrada: recebe
pacote (TCP 
recebe “byte 
stream”)
process
o
cliente
socket UDP 
cliente
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (UDP)
import java.io.*; 
import java.net.*; 
class UDPClient { 
public static void main(String args[]) throws Exception 
{ 
BufferedReader inFromUser = 
new BufferedReader(new InputStreamReader(System.in)); 
DatagramSocket clientSocket = new DatagramSocket(); 
InetAddress IPAddress = InetAddress.getByName("hostname"); 
byte[] sendData = new byte[1024]; 
byte[] receiveData = new byte[1024]; 
String sentence = inFromUser.readLine(); 
sendData = sentence.getBytes();
Cria
stream de entrada
Cria
socket cliente
Translada
nome do host para
endereço IP
usando DNS
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (UDP), cont.
DatagramPacket sendPacket = 
new DatagramPacket(sendData, sendData.length, IPAddress, 9876); 
clientSocket.send(sendPacket); 
DatagramPacket receivePacket = 
new DatagramPacket(receiveData, receiveData.length); 
clientSocket.receive(receivePacket); 
String modifiedSentence = 
new String(receivePacket.getData()); 
System.out.println("FROM SERVER:" + modifiedSentence); 
clientSocket.close(); 
} 
}
Cria datagrama com
dados a enviar,
tamanho, endereço IP 
porta
Envia datagrama
para servidor
Lê datagrama
do servidor
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: servidor Java (UDP)
import java.io.*; 
import java.net.*; 
class UDPServer { 
public static void main(String args[]) throws Exception 
{ 
DatagramSocket serverSocket = new DatagramSocket(9876); 
byte[] receiveData = new byte[1024]; 
byte[] sendData = new byte[1024]; 
while(true) 
{ 
DatagramPacket receivePacket = 
new DatagramPacket(receiveData, receiveData.length); 
serverSocket.receive(receivePacket);
Cria
socket datagrama
na porta 9876
Cria espaço para
datagramas recebidos
Recebe
datagram
a
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: servidor Java, (cont.)
String sentence = new String(receivePacket.getData()); 
InetAddress IPAddress = receivePacket.getAddress(); 
int port = receivePacket.getPort(); 
String capitalizedSentence = sentence.toUpperCase(); 
sendData = capitalizedSentence.getBytes(); 
DatagramPacket sendPacket = 
new DatagramPacket(sendData, sendData.length, IPAddress, 
port); 
serverSocket.send(sendPacket); 
} 
} 
}
Obtém endereço IP 
e número da porta
do transmissor
Escreve o 
datagrama para
dentro do socket
Termina o while loop,
retorna e espera por
outro datagrama
Cria datagrama
para enviar ao cliente
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
The Message-Passing Interface (MPI)
Check if there is an incoming message, but do not blockMPI_irecv
Receive a message; block if there are noneMPI_recv
Pass reference to outgoing message, and wait until receipt startsMPI_issend
Pass reference to outgoing message, and continueMPI_isend
Send a message and wait for replyMPI_sendrecv
Send a message and wait until receipt startsMPI_ssend
Send a message and wait until copied to local or remote bufferMPI_send
Append outgoing message to a local send bufferMPI_bsend
MeaningPrimitive

Outros materiais