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

Sistemas Distribuídos Capítulo2: Programaçãoda Comunicação · Revisão. Departamento de Engenharia Informática ... Modelo de Referência Um Modelo de Referência , ou Família

Embed Size (px)

Citation preview

Departamento de Engenharia Informática

Sistemas DistribuídosCapítulo 2: Programação da Comunicação

Sistemas Distribuídos 2009-2010

Departamento de Engenharia Informática

Índice

• Revisão das Redes

• Modelo da comunicação distribuída

• Caracterização da interface

• Exemplos de Interfaces de comunicação

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

Programação da comunicação:modelo

ProcessoProcesso Canal de comunicaçãoCanal de comunicação

portoProcesso

API da

comunicação

API da

comunicação

modo utilizador modo sistema

rederede

porto

transporte

rede

lógico

físico

Departamento de Engenharia Informática

Redes de Dados

• Fornecer uma base mínima de compreensão das redes de dados– Arquitectura– Organização– Protocolos

• Identificar os aspectos relevantes das redes de dados na concepção de sistemas distribuídos

Revisão

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

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.

Departamento de Engenharia Informática

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

Bus

Anel (ring)

Malha (mesh)

Departamento de Engenharia Informática

• 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

OSI - Nível Lógico ou Ligação de Dados

Ethernet

ATMFrame Relay

GPRS

UMTS

Departamento de Engenharia Informática

OSI - Nível Rede

• 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

Rede IP

Departamento de Engenharia Informática

• 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

Nível Transporte

Rede TCP

Processo Utilizador

Processo Utilizador

Departamento de Engenharia Informática

A Internet como um Relógio de Areia

IP

TCP / UDP

Ethernet GPRS 802.11 BluetoothSatélite

Web Audio VoIP Web ServicesMail Video IM

Difícil de alterarPassível de alterações

Maior inovação

Departamento de Engenharia Informática

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

Bindingprotocol, DCE-RPC

Sessão

XML, XDR, XML

Apresentação

HTTP, FTP, SMTP, Corba, IIOP, SOAP, RMI

Aplicação

Aplicação

Apresentação

Sessão

transporte

rede

ligação

física

Departamento de Engenharia Informática

Aspectos a Analisar

• Integração das Redes no Sistema Operativo

• Características do Canal de Comunicação

Departamento de Engenharia Informática

Integração da Comunicação no SistemaOperativo

• 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

Departamento de Engenharia Informática

System calls

Terminal handing Sockets Filenaming

Map-ping

Pagefaults Signal

handlingProcess

Creation andTermination

Rawtty

Cooked tty

Interrups and traps

Linedisciplines

Network protocols

Filesystems

Virtualmemory

Routing Buffercache

Pagecache

Processscheduling

Characterdevices

Netwokdevice drivers

Diskdevice drivers

Processdispatching

Hardware

Unix – 4.4 BSD

Departamento de Engenharia Informática

Winsock Implementation

Application Mswsock.dll

SPI

Service Providers

NtReadFile, NtWriteFile,NtCreateFile,NTDeviceloControlFile

Kernel mode

User mode

\Device\AFD

AFD FSD

TCP/IPIPX/SPX

TDI IRPs

NetBEUI

TDI

Protocol drivers

Wshtcpip.dll

Ntdll.dll

Msafd.dll

Departamento de Engenharia Informática

Caracterização do canal de Comunicação

• 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

Tipos de canais

Departamento de Engenharia Informática

Emissor

Emissor

Emissor

Emissor

Receptor

Receptor

Receptor

Receptor

fila

fila

fila

fila

Rede

Canal com Fila de Mensagens

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

Programação da comunicação:semântica de envio

• 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 respostado servidor

Núcleo SO

aplicação

aplicação

cliente

servidor

JAM1

Slide 22

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

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

Programação da comunicação:Difusão de mensagens

• 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

Departamento de Engenharia Informática

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

Departamento de Engenharia Informática

Exemplos de Interfaces

• Sockets• TLI

Departamento de Engenharia Informática

Interface sockets

• Interface de programação para comunicação entreprocessos 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

Departamento de Engenharia Informática

Interface sockets

• Domínio do socket: define a família de protocolosassociada 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)

Departamento de Engenharia Informática

Interface sockets

Relação entre domínio, tipo de socket e protocolo

UNIX INET NS

Stream Sim TCP SPPDatagram Sim UDP IDP

Raw - IP SimSeq

Packet- - SPP

Departamento de Engenharia Informática

• 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

processo

TCP combuffers,variáveis

socket

Cliente

processo

TCP combuffers,variáveis

socket

Servidor

Internet

Controlado pelo SO

controlado peloprogramador daaplicação

socket

Ou UDP

Departamento de Engenharia Informática

Sockets sem Ligação

socket

bind

recvfrom

sendto

socket

bind

sendto

recvfrom

ClienteServidor

Departamento de Engenharia Informática

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();}

}

}

Conversão do nome DNS para endereço IP

Constrói um socket datagram(associado a qualquer porto disponível)

Cada mensagem enviada tem que levar junto identificador do processo destino: IP e porto

Departamento de Engenharia Informática

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);

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();}

}

}

Constrói um socket datagram (associado ao porto 6789)

Recebe mensagem

Extrai da mensagem o IP e porto do

processo origem para responder

Departamento de Engenharia Informática

Sockets com Ligação

socket

bind

listen socket

connectaccept

read

write read

write

ClienteServidor

ClienteServidor

Socket

Cliente

Socket

Escuta

Socket

Ligação

3-way handshake

bytes

bytes

Departamento de Engenharia Informática

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){

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}

}

• 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 streamsdefinidos pelo socket

WriteUTF / readUTF –para Universal transferformat / para as cadeias de caracteres

Sockets Stream em Java (Cliente)

Departamento de Engenharia Informática

import java.net*;

import java.io*;

public class TCPServer{

public static void main(String args[]){

try{

int server Port = 7896;

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());}

}

}

Bloqueia até cliente estabelecer ligação.

Cria socket servidor que fica àescuta no porto “serverPort”

Sockets Stream em Java (Servidor)

Cria novo socket servidor com quem é estabelecida ligação com o cliente

e onde os dados são recebidos

Departamento de Engenharia Informática

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 socketsmas existe uma maior uniformização com a interface genérica dos streams.

• Actualmente pouco utilizados (sockets são o standard de facto)

Departamento de Engenharia Informática

Transport Layer Interface

Servidor Cliente

t_open

t_bind

t_alloc

t_accept

t_open

t_bind

t_alloc

t_connect

t_listen

Bloqueio à espera de ligação

t_rcv

t_snd t_rcv

t_snd

li gaç ã

o

Servidor Cliente

Departamento de Engenharia Informática

Sistemas DistribuídosCapítulo 2: Programação da Comunicação

Seguem-se os slides não utilizados

Departamento de Engenharia Informática

Sockets Datagram em Java

• DatagramSocket – classe que suporta os sockets datagrame que tem como argumento um porto

• Métodos– send; receive

– setSoTimeout – temporizador que limita o tempo de espera doreceive

– connect – define um porto remoto

• Conversão do nome DNS para um endereço Internet com o método InetAddress.getByName

Departamento de Engenharia Informática

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 streamsdefinidos 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