Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DAD - 2.2 - Comunicacao - Fundamentos - Sockets
DAD - 2.2 - Comunicacao - Fundamentos - Sockets
Aplicações Distribuídas
SI | DAD | Comunicação 2
Aspectos de SDs – Comunicação – Fundamentos de redes
Tipos de Redes
• Mundo
Internet • Redes de redes
SI | DAD | Comunicação 3
Aspectos de SDs – Comunicação – Fundamentos de redes
Esquemas de comutação
Broadcast
Tudo é enviado para todos os nodos.
Comutação de circuitos
Estabelecimento de canais dedicados de comunicação
Comutação de pacotes
Sistema de armazenamento e encaminhamento de pacotes com base nas
informações de origem e destino.
Frame Relay
Avanço na comutação de pacotes com a passagem de pacotes em tempo real
SI | DAD | Comunicação 4
Aspectos de SDs – Comunicação – Fundamentos de redes
Protocolos em camadas
SI | DAD | Comunicação 5
Aspectos de SDs – Comunicação – Fundamentos de redes
Protocolos
Camadas | Suites | Portas | Endereçamento
# Camada Descrição Protocolos
7 Aplicação Atende aos requisitos de comunicação de aplicativos HTTP, SMTP, SNMP, FTP,
específicos, definindo uma interface para um serviço Telnet, SSH, NFS, DNS
Transmitem dados em uma representação de rede
6 Apresentação independente das usadas em cada nó. Criptografia, se exigida Segurança TLS, SMB, AFP
é feita nesta camada
Realiza operações relacionadas com a confiabilidade das
5 Sessão conexões, detecção de falhas e recuperação automática SIP, SSH, RPC, NetBIOS, ASP
4 Transporte Nível mais baixo de manipulação das mensagens que são TCP, UDP, SPX
endereçadas para portas de comunicação
3 Rede Transfere pacotes com base no endereçamento dos nodos, o IP, ICMP, IGMP, X.25, ARP,
que pode envolver o roteamento entre redes RARP, BGP, OSPF, RIP, IPX
Ethernet, Token Ring, PPP,
2 Enlace de dados Transmite pacotes entre nodos fisicamente conectados HDLC, Frame Relay, ISDN,
ATM, Wi-Fi
1 Física Transmite sequências de dados binários envolvendo hardware Elétrico, radio, laser
e seus circuitos
SI | DAD | Comunicação 6
Aspectos de SDs – Comunicação – Fundamentos de redes
Protocolos
Camadas | Suites | Portas | Endereçamento
SI | DAD | Comunicação 7
Comunicação – Fundamentos de redes – Mensagens TCP/IP
SI | DAD | Comunicação
8
Comunicação – Fundamentos de redes
Primitivas básicas
send(): envia mensagem
receive(): recebe mensagem
Abstração de socket:
SI | DAD | Comunicação 9
Aspectos de SDs – Comunicação – Fundamentos de redes
Protocolos rede - Endereçamento
Endereçamento IP
SI | DAD | Comunicação 10
Aspectos de SDs – Comunicação – Fundamentos de redes
Protocolos rede - Endereçamento
Endereçamento IP
SI | DAD | Comunicação 11
Aspectos de SDs – Comunicação – Fundamentos de redes
Interligação de Redes – Network Address Translation (NAT)
SI | DAD | Comunicação 14
Aspectos de SDs – Comunicação – Fundamentos de redes
Interligação de Redes – Firewall
SI | DAD | Comunicação 15
Aspectos de SDs – Comunicação
Fundamentos de redes
Tipos de redes
Esquemas de comutação
Protocolos
Interligação de redes
Comunicação entre processos
API de protocolos Internet
Representação externa de dados e Empacotamento
Invocação remota
Protocolos de Requisição/Resposta
Chamadas de Procedimento Remoto (RPC)
Invocação de Método Remoto (RMI)
Comunicação Indireta
Características e Técnicas
Sistemas Publicar-Subscrever
Filas de mensagens
SI | DAD | Comunicação 16
Comunicação entre Processos - Introdução
A comunicação é o coração de qualquer SD
SI | DAD | Comunicação 17
Comunicação entre Processos - Introdução
Toda comunicação em SD é baseada em troca de mensagens (baixo nível)
mais complexa do que uso de memória compartilhada
SI | DAD | Comunicação 18
Comunicação entre Processos - Introdução
toda comunicação em sistemas distribuídos tem por base o envio e recepção
de mensagens no nível mais baixo da pilha de comunicação em razão da
ausência de memória compartilhada;
... embora esta idéia básica pareça simples, os processos que desejam trocar
informações devem acordar a forma como os bits/bytes serão enviados –
protocolo.
e.g., A envia informações escritas em Francês e codificadas em Código EBCDIC, enquanto B aguarda
as informações em Inglês e codificada em Código ASCII.
SI | DAD | Comunicação 19
Comunicação entre Processos - Introdução
Comunicação efetiva entre computadores envolve acordos sobre diferentes
aspectos, desde a seleção de um meio físico e a codificação dos bits para
transmissão até questões de apresentação e manipulação dos dados.
Funcionalidades são organizadas em camadas
Protocolos definem regras e formatos de mensagens
Modelo de referência para implementação de protocolos abertos: OSI
Exemplo de protocolos em ampla utilização: arquitetura TCP/IP
Protocolos podem ser orientados a conexão ou não
Comunicação com conexão: requer estabelecimento de conexão antes das transmissões de dados
efetivas
SI | DAD | Comunicação 20
Protocolo em camadas - OSI
Protocolos de comunicação
Base para os SDs
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved. 0-13-239227-5
SI | DAD | Comunicação 21
Adaptação do Modelo OSI para SDs
Camada Middleware: Protocolos independentes da aplicação
Tanenbaum & Van Steen, Distributed Systems: Principles and Paradigms, 2e, (c) 2007 Prentice-Hall, Inc. All rights reserved. 0-13-239227-5
SI | DAD | Comunicação 22
Protocolos de Middleware
Camada de software situada logicamente entre camada de aplicação de transporte
Devem suportar serviços de comunicação de alto nível de forma transparente;
e.g., serviços de comunicação de alto nível para estabelecer e sincronizar streams para transferência
de dados em tempo real.
e.g., processo que invoca um procedimento ou um objeto em um processo remoto com o máximo de
transparência.
SI | DAD | Comunicação 23
Protocolos de Middleware
Devem suportar serviços de comunicação de alto nível de forma
transparente;
“data (un)marshaling” - necessário para sistemas integrados;
“naming protocols” - facilitar o compartilhamento de recursos;
“security protocols” - para segurança de comunicação;
“scaling mechanisms” - para replicação e salvaguarda.
Separação de responsabilidades:
assim, o que resta são protocolos verdadeiramente específicos e dependentes da aplicação.
Para melhor entender as várias alternativas de comunicação que o middleware pode ofererecer para as
aplicações, podemos ver o middleware como um serviço adicional no modelo cliente/servidor.
e.g., considere um sistema de correio eletrônico, cujo núcleo do sistema de entrega de mensagens pode ser visto
como um serviço de comunicação do “middleware”;
Cliente: é representado pelo agente do usuário que permite ao mesmo a composição, envio e recepção de emails;
Servidor: um agente transmissor repassa este email para o sistema de entrega de mensagens
SI | DAD | Comunicação 24
Middlewares de Comunicação
Serviços de comunicação que podem ser adicionados a camada de
middleware e seus tipos:
Chamadas de procedimento remoto
Comunicação orientada a mensagens
Comunicação orientada a fluxos
Aplicações e Serviços
TCP e UDP
SI | DAD | Comunicação 25
Tipos de Comunicação - Persistência
Persistente
Mensagem fica armazenada o tempo que for necessário para entrega-la ao destinatário
Exemplo: Email
Transiente
Mensagem armazenada somente durante a execução do remetente e do receptor
Exemplo: API cliente/servidor simples
SI | DAD | Comunicação 26
Tipos de Comunicação - Sincronizção
Remetente pode ou não ficar bloqueado até receber resposta
Assíncrona
Remetente continua sua execução imediatamente após enviar a Mensagem (Não fica bloqueado)
Ex: Email
Síncrona
Execução do remetente é bloqueada até que sua requisição seja aceita*
Ex: Telefone
* Pontos de sincronização
“request submission” - remetente é bloqueado até o middleware notificá-lo que irá assumir o
controle da transmissão da requisição;
“request delivery” - remetente é bloqueado até que a requisição seja entregue ao receptor, mas
ainda assim cabe ao middleware notificar;
“request processing” - remetente é bloqueado até que a requisição seja recebida e processada pelo
receptor – middleware notifica remetente.
SI | DAD | Comunicação
27
Tipos de Comunicação - Granularidade
Um conjunto de mensagens pode ou não estar relacionadas
Discreta
Cada mensagem é uma unidade de informação completa
Ex: Mensagem para adicionar um novo recurso (envia dados de um form via api)
Fluxo
Várias mensagens estã orelacionadas umas com as outras
Relacionadas pela ordem ou pela relação temporal
Ex: Streaming de audio e video (multimidia), Chamada de áudio
SI | DAD | Comunicação
28
Comunicação entre Processos - Sockets
API de protocolos Internet
Sockets
De acordo com KUROSE: “socket é a interface entre a camada de aplicação e a de transporte
dentro de uma máquina”.
Cada socket tem um endereço único na internet. Este endereço é formado por um número IP e
por um número de porta.
SI | DAD | Comunicação 29
Comunicação entre processos – Sockets
Listando as conexões TCP no Windows
Processo
Ex: Apache na
porta 80
SI | DAD | Comunicação 30
Comunicação entre processos – Sockets
Listando as conexões TCP no linux – netstat
Porta 7000: Calculadora TCP
SI | DAD | Comunicação 31
Aspectos de SDs – Comunicação – Comunicação entre Processos
Nota
• Stream é uma sequencia de dados que é transmitida de um processo a outro.
• Datagrama é uma unidade de transferência em uma rede baseada em pacotes.
SI | DAD | Comunicação 32
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 33
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 34
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 35
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 36
Aspectos de SDs – Comunicação – Comunicação entre Processos
Programando o cliente
Inicialização
gethostbyname – traduz nome do servidor
socket – cria o socket
connect – conecta à porta do servidor
Trasmissão:
send – envia msg para o servidor
recv – recebe msg do servidor
Encerramento
close – fecha o socket
SI | DAD | Comunicação 37
Aspectos de SDs – Comunicação – Comunicação entre Processos
Programando o servidor
Inicialização
socket – cria o socket
bind – associa o socket ao endereço local
listen – associa socket a requisições de
entrada
Trasmissão:
accept – aceita conexão de cliente
recv – recebe msg do cliente
send – envia msg para o cliente
Encerramento
close – fecha o socket
SI | DAD | Comunicação 38
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 39
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 40
Aspectos de SDs – Comunicação – Comunicação entre Processos
SI | DAD | Comunicação 41