Departamento de Engenharia Informática. Sistemas Distribuídos Capítulo 2: Programação da Comunicação

Documentos relacionados
Sistemas Distribuídos Capítulos 2 e 3: Modelos, Arquitecturas e Revisão de Redes

Sistemas Distribuídos. Prof. Ricardo Ribeiro dos Santos

Computação Distribuída

Programação com sockets (em Java)

Introdução. Modelo de um Sistema de Comunicação

Programação Orientada por Objectos com Java. Ademar Aguiar. MRSC, Programação em Comunicações

Capítulo IV Comunicação entre processos

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída

Sistemas Distribuídos

Comunicação entre processos

socket Objetivo: aprender a construir aplicações cliente/servidor que se comunicam usando sockets

Sockets em Java. Leonardo R. Nunes - leonardo@sumersoft.com. 1. Introdução. 2. Sockets TCP/IP

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Experiência 04: Comandos para testes e identificação do computador na rede.

Sockets. Bruno Guimarães Lucas Rossini

Sistemas Operacionais:

Redes. Pablo Rodriguez de Almeida Gross

Programação Paralela e Distribuída. Prof. Cidcley T. de Souza

Fundamentos de Redes e Sistemas Distribuídos Aula 03 Camadas

Passagem de Mensagens

Java 2 Standard Edition Fundamentos de

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Redes de Computadores

REDES DE COMPUTADORES

Prof. Marcelo Cunha Parte 5

Barramentos de campo. Modelo OSI para sistemas comunicantes

Arquitetura de Computadores Sistemas Operacionais II

Cliente-servidor com Sockets TCP

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Programação de sockets com TCP

Programação de Sockets em C/C++

Capítulo II Modelos de Programação Distribuída

Mecanismos de Comunicação. Sockets em java (

Tecnologias Java Sockets e RMI

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

Sistemas Distribuídos

Redes de computadores e Internet

Redes de Computadores. Revisões

Protocolos de Redes Revisão para AV I

Programação de Sockets

Flávia Rodrigues. Silves, 26 de Abril de 2010

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Redes de Computadores

Um pouco do Java. Prof. Eduardo

FACULDADE PITÁGORAS. Prof. Ms. Carlos José Giudice dos Santos


MÓDULO 8 Modelo de Referência TCP/IP

Sistemas Multimédia. Arquitectura Protocolar Simples Modelo OSI TCP/IP. Francisco Maia Redes e Comunicações

Camada de Transporte

Módulo 9 Conjunto de Protocolos TCP/IP e endereçamento IP

Redes de Computadores (PPGI/UFRJ)

Camada de Transporte. Bruno Silvério Costa

Redes de Computadores. Trabalho de Laboratório Nº7

Terminal de Operação Cimrex 69

IPTV Televisão sobre a Internet

Sistemas Distribuídos. Coulouris Capítulo 4

Graduação Tecnológica em Redes de Computadores. Fundamentos de Redes II

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

sockets interprocess communication Taisy Weber

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Plataforma para Agentes

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

Servidores de impressão HP Jetdirect

Reader e Writer para streams de caracteres (texto).

Engenharia de Software II

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Gerenciamento de Redes: Protocolo SNMP

INF1013 MODELAGEM DE SOFTWARE

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Modelo de referência OSI. Modelo TCP/IP e Internet de cinco camadas

1 Redes de Computadores - TCP/IP Luiz Arthur

Protocolos, DNS, DHCP, Ethereal e comandos em Linux

Sockets com Java Parte I

Capítulo 1 PROTOCOLOS FUNDAMENTAIS DA INTERNET

Redes de Computadores. Prof. André Y. Kusumoto

Redes de Computadores

Redes - Internet. Sumário Aula 3,4 e 5 9º C } Estrutura baseada em camadas. } Endereços IP. } DNS -Domain Name System

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

Nome do Curso: Técnico em Informática. Nome da Disciplina: Redes de Computadores. Número da Semana: 2. Nome do Professor: Dailson Fernandes

Redes de Computadores Programação com Sockets

Universidade da Beira Interior

Programação de Sockets

5.2.4 Análise de LCR segundo o tempo Regras de marcação LCR

Arquitecturas de Software Enunciado de Projecto

Redes de Computadores II

Sistemas Distribuídos

Informática I. Aula Aula 19-20/06/06 1

Professor: Gládston Duarte

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

MÓDULO 2 Topologias de Redes

SISTEMAS DISTRIBUIDOS

Escola Profissional Vasconcellos Lebre

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

REDES DE COMPUTADORES

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Transcrição:

Sistemas Distribuídos Capítulo 2: Programação da Comunicação Sistemas Distribuídos 2009-2010

Índice Revisão das Redes Modelo da comunicação distribuída Caracterização da interface Exemplos de Interfaces de comunicação

Modelo de Comunicação Comunicação: interacção entre um processo emissor, que gera a informação, e um processo receptor, que irá tratá-la. Canal: abstracção dos mecanismos de transporte que suportam a transferência de informação Porto: extremidade de um canal Conceptualmente, o canal pode ser visto pelos utilizadores como a associação entre dois portos Protocolo: definição das mensagens e respectivo encadeamento que permite a comunicação entre os interlocutores, e acções tomadas quando da transmissão ou recepção de mensagens

Programação da comunicação: modelo Departamento de Engenharia Informática Processo porto Canal de comunicação porto Processo API da comunicação rede transporte rede lógico físico modo utilizador modo sistema

Redes de Dados Fornecer uma base mínima de compreensão das redes de dados Arquitectura Organização Protocolos Revisão Identificar os aspectos relevantes das redes de dados na concepção de sistemas distribuídos

Arquitectura Lógica Porquê uma arquitectura Lógica nas redes? A arquitectura lógica define as propriedades da rede, adequadas ao seu campo de aplicações Tipo de endereçamento Desempenho Garantia de entrega de mensagens Ordenação das mensagens Tolerância a faltas Endereçamento em difusão A mesma arquitectura lógica pode ser realizada (com maior ou menor facilidade) sobre várias arquitecturas físicas

Características habituais das Arquitecturas Físicas Redes Locais Transmissão em difusão Banda passante muito grande Topologias de bus ou anel Encaminhamento trivial Menor escalabilidade, Maior tolerância a faltas Redes de Larga Escala Transmissão ponto a ponto Banda passante com limitações mas tecnologias tradicionais Topologia malhada com redundância Necessidade de encaminhamento Grande escalabilidade, Menor tolerância a faltas

Modelo de Referência Um Modelo de Referência, ou Família de Protocolos, define as características lógicas e físicas das redes Normalmente divididos em níveis Os níveis são independentes mas estão relacionados Permitem várias realizações compatíveis cada nível corresponde a um nível de abstração necessário no modelo cada nível possui funções próprias e bem definidas as funções de cada nível foram escolhidas segundo a definição dos protocolos normalizados internacionalmente as fronteiras entre níveis devem ser definidas de modo a minimizar o fluxo de informação nas interfaces o número de níveis deve ser suficientemente grande para que funções distintas não precisem ser colocadas na mesma nível e, ao mesmo tempo, suficientemente pequeno que não torne a arquitectura difícil de controlar.

OSI - Nível Físico Funções: conseguir transmitir 1 bit de informação sobre meio físico de interligação Velocidade de propagação, atenuação, imunidade ao ruído, etc. Nível Físico define: Níveis eléctricos do sinal, características temporais Protocolos de codificação, baseados no funcionamento da rede (taxa de erros, recuperação de relógio, ) Placas de interface (network cards) Interface eléctrica Aspectos mecânicos dos conectores Anel (ring) Malha (mesh) Bus

OSI - Nível Lógico ou Ligação de Dados Funções: transmissão de pacotes, ou tramas, entre máquinas ligadas à mesma rede física Nível Lógico define: Delimitadores de trama Endereço físico do destinatário Multiplexagem do meio de transmissão (emissor) Detecção do endereço do destinatário (receptor) Definição da unidade básica de informação (bit, octeto) Recuperação de erros de transmissão Controlo de fluxo Frame Relay GPRS UMTS ATM Ethernet

OSI - Nível Rede Rede IP Funções: interligar máquinas independentemente da rede física a que estão ligadas Uma rede lógica passa a ser composta pela interligação de várias redes físicas Nível Rede define: Formato dos pacotes de dados Mecanismos de encaminhamento entre redes Fundamental para redes malhadas Normalmente baseados em tabelas de encaminhamento Protocolo de rede OSI: X.25 Com ligação, sequencialidade, controlo de fluxo Protocolo de rede Internet: IP Sem ligação nem garantias de qualidade

Nível Transporte Processo Utilizador Rede TCP Funções: oferecer um serviço de transmissão de informação que permita a comunicação entre utilizadores finais Características Com ou sem ligação Comunicação fiável Garantia de entrega Garantia de ordem Fragmentação Controlo de fluxo Notificação de excepções na comunicação Processo Utilizador

A Internet como um Relógio de Areia Mail Web Audio VoIP Video IM Web Services Passível de alterações Maior inovação TCP / UDP IP Difícil de alterar Ethernet GPRS 802.11 Satélite Bluetooth

OSI Níveis superiores do Modelo Os restantes níveis do modelo OSI implicam a integração com o sistemas operativos e com as aplicações São em grande parte o objecto desta cadeira, Embora alguns protocolos de nível aplicacional possam ser vistos como de transporte de informação Aplicação Apresentação Sessão HTTP, FTP, SMTP, Corba, IIOP, SOAP, RMI XML, XDR, XML Binding protocol, DCE- RPC Aplicação Apresentação Sessão transporte rede ligação física

Aspectos a Analisar Integração das Redes no Sistema Operativo Características do Canal de Comunicação

Integração da Comunicação no Sistema Operativo As aplicações invocam uma API que lhes permite aceder ao mecanismos de transporte A API deve ser conceptualmente independente de uma determinada pilha de protocolos de transporte Alternativas de implementação Funções de ES genéricas Ex: sockets parcialmente Funções de comunicação específicas Ex: Algumas funções dos sockets Ex: TLI Mecanismo básico de comunicação entre processos do sistema operativo Ex: IPC dos micro-núcleos

Unix 4.4 BSD System calls Interrups and traps Terminal handing Raw tty Cooked tty Line disciplines Sockets Network protocols Routing File naming ping Map- File systems Buffer cache Page faults Virtual memory Page cache Signal handling Process Creation and Termination Process scheduling Character devices Netwok device drivers Disk device drivers Process dispatching Hardware

Winsock Implementation Protocol drivers Application TDI IRPs IPX/SPX Mswsock.dll Msafd.dll Wshtcpip.dll Ntdll.dll SPI Service Providers NtReadFile, NtWriteFile, NtCreateFile, NTDeviceloControlFile User mode Kernel mode \Device\AFD AFD FSD TDI NetBEUI TCP/IP

Caracterização do canal de Comunicação Tipos de canais Com ligação Normalmente serve 2 interlocutores Normalmente fiável, bidireccional e garante sequencialidade Sem ligação Normalmente serve mais de 2 interlocutores Normalmente não fiável: perdas, duplicação, reordenação Canal com capacidade de armazenamento em fila de Mensagens Normalmente com entrega fiável das mensagens

Canal com Fila de Mensagens Emissor Rede Receptor Emissor fila Receptor Emissor fila Receptor Emissor fila fila Receptor

Portos Extermidades do Canal de Comunicação Portos São extremidades de canais de comunicação Em cada máquina são representados por objectos do modelo computacional local Possuem 2 tipos de identificadores: O do objecto do modelo computacional Para ser usado na API pelos processos locais Ex.: File descriptors, handles O do protocolo de transporte Para identificar a extremidade entre processos (ou máquinas) diferentes Ex.: Endereços TCP/IP, URL

JAM1 Programação da comunicação: semântica de envio Departamento de Engenharia Informática Assíncrona Transferência para os tampões do núcleo A função retorna e a aplicação continua Síncrona Garantia de entrega no destino A aplicação fica bloqueada até a mensagem ser entregue Pedido/resposta ou Remote Procedure Call Cliente só prossegue após resposta do servidor aplicação aplicação cliente servidor Núcleo SO

Slide 22 JAM1 Final aula 3 Jose Alves Marques; 07-03-2006

Programação da comunicação: Conteúdo Não Estruturado as mensagens são constituídas por bytes transmitidos entre as aplicações Estruturado o conteúdo das mensagens é descrito com um protocolo de Apresentação. As mensagens podem ser traduzidas entre máquinas heterogéneas Documentos as mensagens são documentos estruturados que podem ser usados de diversas formas pelas aplicações. Exemplo: doc em XML Fluxo Sequências de octetos (byte stream) Normalmente ilimitadas Sequências de blocos de octetos Fronteiras bem definidas e mantidas pelo transporte Normalmente os blocos são limitados O fluxo de blocos pode não manter a ordem

Programação da comunicação: semântica de recepção Ler de forma não bloqueante Erro se nada houver na fila Bloquear à espera de ler uma mensagem Bloqueio infinito ou temporizado Bloquear à espera de múltiplos eventos - guarda Multiplexagem de E/S e potencialmente de outras operações (ex. Windows) Leitura da fila só após receber um dado evento Utilizável para outras operações bloqueantes: Espera de pedidos de ligação Espera por aceitações de ligação Espera por capacidade de envio Departamento de Engenharia Informática

Programação da comunicação: Detecção e tratamento de faltas O modelo de faltas depende do tipo dos canais Com ligação: Na ligação: destinatário inexistente, etc. Na conversação: quebra de ligação, etc. Sem ligação: destinatário inexistente, perda de dados, etc. A notificação das faltas às aplicações depende da API e do modelo computacional Valores de retorno da API Chamadas assíncronas de procedimentos Chamadas próprias da API

Programação da comunicação: Difusão de mensagens Departamento de Engenharia Informática Semântica Enviar apenas uma mensagens para múltiplos receptores Suporte à difusão depende da rede Fácil em LANs (Ethernet, etc.) Suporte dos níveis 1 e 2 (físico e rede) Complexo em redes maiores (MANs, WANs) Requer suporte dos níveis superiores Suporte específico a níveis superiores IP multicast (não é suportado genericamente) Comunicação em grupo (ex. ISIS) Brokers de mensagens com regras de distribuição das mensagens

Concretizações da API: semânticas próximas do Transporte UNIX Sockets (BSD 82) TLI (Transport Layer Interface, ATT 86) Streams (Ritchie 84, ATT 89) Windows NetBIOS (IBM 84) NetBEUI (IBM 85) Winsocks (Windows Sockets ) V1 (MS 93) V2 (MS 96) Named Pipes (IBM OS/2) Mailslots (IBM OS/2) NetDDE (MS) MSMQ sistema de message queuing

Exemplos de Interfaces Sockets TLI

Interface sockets Interface de programação para comunicação entre processos introduzida no Unix 4.2 BSD Objectivos: Independente dos protocolos Transparente em relação à localização dos processos Compatível com o modelo de E/S do Unix Eficiente

Interface sockets Domínio do socket: define a família de protocolos associada a um socket INET: família de protocolos Internet Unix: comunicação entre processos da mesma máquina Outros Tipo do socket: define as características do canal de comunicação Stream: canal com ligação, bidireccional, fiável, interface tipo sequência de octetos Datagram: canal sem ligação, bidireccional, não fiável, interface tipo mensagem Raw: permite o acesso directo aos níveis inferiores dos protocolos (ex: IP na família Internet)

Interface sockets Relação entre domínio, tipo de socket e protocolo UNIX INET NS Stream Sim TCP SPP Datagram Sim UDP IDP Raw - IP Sim Seq Packet - - SPP

Sockets Cliente processo socket TCP com buffers, variáveis Ou UDP controlado pelo programador da aplicação Internet Controlado pelo SO Servidor processo socket TCP com buffers, variáveis socket Os processos enviam /recebem mensagens para /de outros processos através dos seus sockets Um socket corre no sistema terminal e é análogo a uma porta entre os processos da aplicação e o protocolo de transporte O processo que envia empurra a mensagem para fora da porta assume que a infraestrutura de transporte do outro lado da porta leva a mensagem até ao socket do processo que a recebe Protocolo de transporte: transferência de bytes de um processo para outro API (Interface de Programação da Aplicação) Permite escolher o protocolo de transporte E definir alguns parâmetros

Sockets sem Ligação Servidor Cliente socket socket bind bind recvfrom sendto sendto recvfrom

Sockets UDP em Java (Cliente) import java.net*; import java.io*; public class UDPClient{ public static void main(string args[]){ // args give message contents and server hostname DatagramSocket asocket = null; try { asocket = new DatagramSocket(); byte [] m = args [0].getBytes(); InetAddress ahost = InetAddress.getByName(args[1]); Int serverport = 6789; DatagramPacket request = new DatagramPacket(m, args[0].length(), ahost, serverport); asocket.send(request); byte[]buffer = new byte[1000]; DatagramPacket reply = new DatagramPacket(buffer, buffer.length); asocket.receive(reply); System.out.println( Reply: + new String(reply.getData())); } catch (SocketException e){system.out.println( Socket: + e.getmessage()); } catch (IOException e){system.out.println( IO: + e.getmessage()); } finally { if(asocket! = null) asocket.close();} } } Constrói um socket datagram (associado a qualquer porto disponível) Conversão do nome DNS para endereço IP Cada mensagem enviada tem que levar junto identificador do processo destino: IP e porto

Sockets UDP em Java (Servidor) import java.net*; import java.io*; public class UDPServer{ public static void main(string args[]){ DatagramSocket asocket = null; try{ asocket = new DatagramSocket(6789); byte[] buffer = new byte [1000]; while(true){ DatagramPacket request = new DatagramPacket(buffer, } } buffer.legth); asocket.receive(request); Constrói um socket datagram (associado ao porto 6789) Recebe mensagem DatagramPacket reply = new DatagramPacket(request.getData(), request.getlength(); request.getaddress(), request.getport()); asocket.send(reply); } } catch (SocketException e){system.outprintln( Socket: + e.getmessage()); } catch (IOException e){system.out.println( IO: + e.getmessage()); } finally {if(asocket! = null) asocket.close();} Extrai da mensagem o IP e porto do processo origem para responder

Sockets com Ligação Servidor Cliente socket Servidor Cliente bind Socket Escuta 3-way handshake listen accept socket connect Socket Ligação bytes bytes Socket Cliente read write write read

Sockets Stream em Java (Cliente) WriteUTF / readutf para Universal transfer format / para as cadeias de caracteres import java.net*; import java.io*; public class TCPClient{ public static void main(string args[]){ // args: message and destin. hostname Socket s = null; try{ } int server Port = 7896; s = new Socket (args[1], serverport); DataInputStream = new DataInputStream(s.getInputStream()); DataOutputStream out = newdataoutputstream (s.getoutputstream()); out.writeutf(args[0]); String data = in.readutf(); System.out.prtintln( Received: + data); }catch (UnknownHostException e){ classe Socket suporta o socket cliente. Argumentos: nome DNS do servidor e o porto. Construtor não só cria o socket como efectua a ligação TCP Métodos getinputstream / getoutputstream permitem aceder aos dois streams definidos pelo socket System.out.println( Sock: + e.getmessage()); }catch (EOFException e){system.out.println( EOF: e.getmessage()); }catch (IOException e){system.out.println( IO: e.getmessage()); }finally {if(s!=null) try{s.close();}catch (IOException e}

Sockets Stream em Java (Servidor) import java.net*; import java.io*; public class TCPServer{ public static void main(string args[]){ try{ int server Port = 7896; } } Cria socket servidor que fica à escuta no porto serverport Bloqueia até cliente estabelecer ligação. ServerSocket listensocket = new ServerSocket(serverPort); while(true){ Socket connectionsocket = listensocket.accept(); myconnection c = new myconnection(connectionsocket); } }catch (IOException e){system.out.println( Listen: +e.getmessage());} Cria novo socket servidor com quem é estabelecida ligação com o cliente e onde os dados são recebidos

Transport Layer Interface Introduzida no Sistema V versão 3 (1987) A implementação da TLI é suportada nos stream Unix. Objectivo total integração com os mecanismos de E/S. As funções são muito semelhantes às dos sockets mas existe uma maior uniformização com a interface genérica dos streams. Actualmente pouco utilizados (sockets são o standard de facto)

Transport Layer Interface Departamento de Engenharia Informática Servidor Cliente Servidor Cliente t_open t_bind t_alloc t_open t_listen Bloqueio à espera de ligação t_accept li gaç ão t_bind t_alloc t_connect t_rcv t_snd t_snd t_rcv

Sistemas Distribuídos Capítulo 2: Programação da Comunicação Seguem-se os slides não utilizados

Sockets Datagram em Java DatagramSocket classe que suporta os sockets datagram e que tem como argumento um porto Métodos send; receive setsotimeout temporizador que limita o tempo de espera do receive connect define um porto remoto Conversão do nome DNS para um endereço Internet com o método InetAddress.getByName

Sockets Stream em Java Socket classe que suporta o socket cliente e que tem como argumentos a identificação remota do servidor: o nome DNS do servidor e o porto O construtor não só cria o socket como efectua a ligação Métodos getinputstream; getoutputstream permite aceder aos dois streams definidos pelo socket ServerSocket classe para o servidor Métdos Accept Recebe um socket cliente sempre que é invocado o connect WriteUTF e readutf para Universal transfer format para as cadeias de caracteres