Você está na página 1de 33

UNIVERSIDADE

Sistemas Distribudos

Cincia da Computao

Prof.
Jesus Jos de Oliveira Neto

Comunicao Inter-Processos
Sockets e Portas
Introduo

Sistemas distribudos consistem da comunicao entre


processos
Compartilhamento de memria
Troca de mensagens
Cpia de dados de um espao de memria a outro
Passagem de mensagem
Conjunto de primitivas para comunicao entre processos
baseado em um protocolo de troca de mensagens
Esconde detalhes de protocolos de comunicao-interface
simples
Tratamento de heterogeneidade
Exemplos: Sockets, RPC, RMI etc.
Caractersticas necessrias(1)
Simplicidade e clareza de uso
Semntica uniforme
Processos locais e remotos usam a mesma interface de
comunicao
Necessidade de Marshalling/Unmarshalling
Eficincia
Busca de baixo custo de processamento
Minimizar custos de estabelecimento/manuteno de conexes
Uso do piggybacking para eliminar msgs adicionais
Confiabilidade
Garantir a entrega das mensagens em presena de falhas
Eliminar (tratar) replicao de mensagens
Ordenamento de mensagens
Caractersticas necessrias(2)
Correo (associado a comunicao em grupo)
Atomicidade: todos ou nenhum recebem
Entrega ordenada: mensagens chegam na mesma ordem a todos
os processos
Garantia de entrega
Flexibilidade
Nem todas as aplicaes tem as mesmas necessidades
Ex.: Certas aplicaes suportam perda de pacotes
Segurana
Autenticao de pares
Codificao de mensagens
Portabilidade
Das aplicaes e da prpria biblioteca (implica em
heterogeneidade)
Protocolos utilizados

Aplicaes e Servios

RMI ou RPC
Middleware
Protocolo de requisio-e-resposta
Marshalling
Representao externa de dados

UDP e TCP
Modelos de comunicao

Duas primitivas bsicas: send e receive


Duas semnticas: bloqueante e no bloqueante
Envio de mensagem (send)
Incluso da mensagem em uma fila remota
Recepo de mensagem (receive)
Retirada da mensagem em uma fila local
Modelos de comunicao
Comunicao sncrona vs. assncrona

Comunicao Sncrona: sincronizao entre


processos
Primitivas send e receive so bloqueantes
Vantagens
Simplicidade de programao
Desvantagens
Limitao de concorrncia
Possibilidade de deadlocks
Comunicao sncrona vs. assncrona

Comunicao Assncrona: inexistncia de


sincronizao
Primitiva send no bloqueante
Processo remetente prossegue logo aps a
msg ser copiada no buffer local
Transmisso ocorre paralelamente ao processo
remetente
Primitiva receive apresenta duas variantes
Com bloqueio
Sem bloqueio
Semntica de sincronizao - send

Bloqueante: o processo do send espera a execuo


do receive correspondente
No bloqueante: o processo do send prossegue com
a execuo to logo a mensagem seja bufferizada
localmente e enviada
Semntica de sincronizao - receive

Bloqueante: o processo destino bloqueado at que a


mensagem seja recebida
Processos que suportam multithreads (nico
processo) no apresentam desvantagens. Outras
threads permanecem ativas com sincronizao
simples
No bloqueante (implementao complexa):
Processo destino prossegue execuo aps
bufferizao da msg
Necessidade de notificao de chegada da msg no
buffer
Por meio do polling ou interrupo
API para a camada de transporte: Sockets e
portas
Sockets: interface entre processo de aplicao e o
protocolo de transporte fim-a-fim

Sockets a maneira mais popular de utilizar as


funcionalidades de comunicao TCP/IP

Um dado socket pode utilizar um (e somente um)


destes protocolos
API para a camada de transporte: Sockets e
portas
Um Socket um ponto final (endpoint) de um canal
bidirecional de comunicao entre dois programas
rodando em uma rede
Todos os mecanismos Sockets so gerenciados pela
camada de transporte

Define um ponto da comunicao (IP, Porta)


Uma porta no pode ser compartilhada por vrios
processos
Vrios processos podem enviar para uma mesma
porta
API para a camada de transporte: Sockets
e portas

agreed port
any port
socket socket

message
client server
other ports

Internet address = 138.37.94.248 Internet address = 138.37.88.249


API para a camada de transporte: Sockets e
portas
O servidor apenas fica ouvindo o Socket aguardando
um pedido de conexo do cliente

O cliente sabe o nome do host e qual porta est


associada aplicao servidora

Assim que o servidor aceitar a conexo, este cria um


novo Socket (e conseqentemente o associa a uma
nova porta) e pode ficar esperando novas conexes
no Socket original enquanto atende s requisies do
cliente pelo novo Socket.
API para a camada de transporte: Sockets
e portas
Protocolos de sockets com TCP

Servio TCP: transferncia confivel de bytes de um


processo para outro
Protocolos de sockets com TCP
Cliente deve contatar o servidor
Processo servidor j deve estar em execuo
Servidor deve ter criado socket (porta) que aceita o contato do cliente
Cliente contata o servidor
Criando um socket TCP local
Especificando endereo IP e nmero da porta do processo servidor
Quando o cliente cria o socket: cliente TCP estabelece conexo com
oTCP do servidor
Quando contatado pelo cliente, o TCP do servidor cria um novo
socket para o processo servidor comunicar-se com o cliente
Permite ao servidor conversar com mltiplos clientes
Nmeros da porta de origem so usados para distinguir o cliente
Comunicao por fluxo TCP

Define a abstrao de fluxo (stream)


Dados podem ser lidos (receive) e escritos (send)
Caractersticas de um fluxo TCP
No define limites de tamanho para as mensagens
Faz controle de erros
Faz controle de fluxo (regula a taxa de leitura e escrita
em fluxo para evitar perdas por overflow)
Garante entrega ordenada e a no duplicao dos
dados
Define a abstrao de conexo com identificadores de
processos origem e destino
Modelo de falhas TCP

Funcionamento do TCP
Validade: usa time-outs e retransmisses para tratar
perda de mensagens
Integridade: uso do checksum e de nmero de
seqncias para garantir mensagens no
corrompidas nem duplicadas
Porm, NO uma comunicao confivel pois as conexes
TCP podem ser desfeitas, implicando em
Processos no distinguem entre falha de rede e falha
de processo
Processos no sabem identificar se mensagens
enviadas recentemente foram recebidas ou no
Interao cliente-servidor TCP
Cliente TCP: estabelece conexo com
servidor, envia requisio e recebe resposta
Cliente TCP: estabelece conexo com
servidor, envia requisio e recebe resposta
Servidor TCP: aceita conexes dos clientes
e ecoa seu contedo de volta ao cliente
Servidor TCP: continuao
Protocolos de sockets com UDP

Baseado em uma unidade de transmisso: datagrama


Transmitido do remetente ao destino sem confirmaes ou
tentativas de reenvio
Mensagens podem no chegar
Um processo executa send e outro receive
O mtodo receive retorna o endereo e a porta do remetente
Associao IP-Porta antes do envio
Exemplos de aplicao: DNS, VOIP, etc. (Baixo overhead)
Aspectos a considerar
Protocolos de sockets com UDP
Tamanho da mensagem
Necessidade de especificar o tamanho da mensagem
Se maior que o array do receptor mensagem truncada
IP permite datagramas de 216 bytes (64KB) maioria
contm 8KB
Bloqueio
Normalmente o send no bloqueante e o receive
bloqueante
Recomendao: uso de vrias threads
Time-out
Limitar o tempo de espera do receive (Qual o time-out?????)
Recepo annima
Receive no especifica uma origem, porm possvel
identificar a fonte
Modelo de falhas UDP
Comunicao confivel implica em duas propriedades
Validade: qualquer msg entregue no destino
Integridade: msgs no podem ser corrompidas nem
duplicadas
Motivos das falhas de datagramas UDP
Omisso: msgs podem ser perdidas e/ou descartadas
Ordenamento: msgs podem ser entregues fora de
ordem
Conseqncia bvia:
Aplicativos precisam tratar as falhas
Interao cliente-servidor UDP
Cliente UDP: envia uma mensagem a um
servidor e obtm uma resposta
Cliente UDP: (continuao)
Servidor UDP: recebe requisio e envia seu
contedo de volta para o cliente
Servidor UDP: (continuao)

Você também pode gostar