comunicação em sistemas distribuídosmeusite.mackenzie.com.br/mariofci/com_socket.pdf ·...
TRANSCRIPT
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: Frame Relay, 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 origem16 bits
Número de Seqüência32 bits
Tamanho da janela16 bits
Opções (se existir)
Dados
20 bytes
Reservado6 bits
Número da porta de destino16 bits
Número de ACK (Reconhecimento)32 bits
Checksum TCP16 bits
Ponteiro de Urgência16 bits
URG
ACK
PSH
RST
SYN
FIN
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
SourcePort
SourcePort
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 deenviar #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 6Recebe 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 origem16 bits
Dados
8octetos
Número da porta de destino16 bits
Comprimento16 bits
Checksum16 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 (messagepassing) 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:
BloqueadasNã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 processos
Comunicaçã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
PortaCliente
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
EthernetCamada Física
Token RingCamada Física
EIA/TIA 232 / V35
EthernetCSMA/CD
Token Ring FR/PPP
IP
TCP UDP
TELNET
FTP
SMTP
DNS
TFTP
SNMP
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 protocolode 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 pelocriador da aplicação
controlado pelosistema
operacional
host oservidor
processo
TCP combuffers,variáveis
socket
host ouservidor
internet
controlado pelocriador da aplicação
controlado pelosistemaoperacional
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 osprocessos de aplicação
podem tanto enviarquanto receber
mensagens de e paraoutro 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ênciaconfiável, em ordem, de bytes
(“pipe”) entre o cliente e oservidor
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)
outT
oS
erv
er
para rede da rede
inF
rom
Serv
er
inF
rom
User
teclado monitor
Process
clientSocket
input
stream
input
stream
output
stream
TCPsocket
stream de entrada:
seqüência de bytes
para dentro do processostream de saída:
seqüência de bytes
para fora do processo
processo
cliente
TCP socketcliente
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 pedidode conexão entranteconnectionSocket =welcomeSocket.accept()
cria socket,port=x, para
solicitação entrante:welcomeSocket =
ServerSocket()
cria socket,conecta com hostid, port=xclientSocket =
Socket()
fechaconnectionSocket
lê resposta declientSocket
fechaclientSocket
Servidor (executando em hostid) Cliente
envia pedido usandoclientSocketlê pedido de
connectionSocket
escreve resposta paraconnectionSocket
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());
Criastream de entrada
Criasocket cliente,
conecta ao servidor
Criastream de saídaligado 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();
}
}
Criastream de entrada
ligado ao socket
Envia linhapara o servidor
Lê linhado servidor
Instituto Presbiteriano Mackenzie Faculdade de Computação e 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()));
Criasocket de aceitação
na porta 6789
Espera, no socketde aceitação por
contato do cliente
Cria stream deentrada, 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 dosocket
Cria stream de saída, ligado ao
socket
Escreve linhapara o socket
Fim do while loop,retorne e espere poroutra 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 enviaexplicitamente endereço IP e porta de destino em cadamensagem
• servidor deve extrair o endereçoIP e porta do transmissor de cada datagrama recebido
• UDP: dados transmitidospodem ser recebidos foram de ordem ou perdidos
ponto de vista da aplicaçãoUDP 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
fechaclientSocket
Servidor (executando hostid)
lê resposta declientSocket
cria socket,
clientSocket = DatagramSocket()
Cliente
Cria, endereço (hostid, port=x,
envia datagrama de pedidousando clientSocket
cria socket,port=x, para
solicitação entrante:serverSocket = DatagramSocket()
lê pedido de:serverSocket
escreve resposta paraserverSocketespecificando endereçodo host cliente enúmero da porta
Instituto Presbiteriano Mackenzie Faculdade de Computação e Informática
Disciplina de Sistemas Distribuídos
Exemplo: cliente Java (UDP)
sendP
acket
para rede da rede
receiv
eP
acket
inF
rom
User
teclado monitor
Process
clientSocket
pacote
UDP
stream
de entrada
pacote
UDP
UDPsocket
Saída: envia pacote(TCP envia “byte stream”)
Entrada: recebepacote (TCP recebe “byte stream”)
processo
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();
Criastream de entrada
Criasocket cliente
Transladanome do host para
endereço IPusando 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 comdados a enviar,
tamanho, endereço IP porta
Envia datagramapara servidor
Lê datagramado 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);
Criasocket datagrama
na porta 9876
Cria espaço paradatagramas recebidos
Recebedatagram
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 poroutro datagrama
Cria datagramapara 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