2-Prog Comunicacao 2009

Transcrição

2-Prog Comunicacao 2009
Departamento de Engenharia Informática
Sistemas Distribuídos
Capítulo 2: Programação da Comunicação
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 1
1
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Programação da comunicação:
modelo
porto
porto
Canal
Canal de
de comunicação
comunicação
Processo
físico
lógico
rede
rede
transporte
API da
comunicação
Processo
modo utilizador modo sistema
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 2
2
Departamento de Engenharia Informática
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 3
3
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
–
–
–
–
–
–
3/6/2005
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
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 4
4
Departamento de Engenharia Informática
OSI - Nível Físico
• Funções: conseguir transmitir 1 bit de informação sobre o
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Nível Físico
Bus
Malhada
3/6/2005
Anel
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 5
5
Departamento de Engenharia Informática
OSI: Nível Lógico ou Ligação de Dados
• Funções: transmissão de pacotes, ou tramas, entre duas
máquinas ligadas à mesma rede física
• Nível Lógico define:
– Delimitadores de trama
– Endereço físico do destinatário (endereço único, broadcast,
multicast)
– Multiplexagem do meio de transmissão (emissor)
– Detecção do endereço do destinatário (receptor)
– Detecção de erros de transmissão (códigos CRC)
– Definição da unidade básica de informação (bit, octeto)
– Recuperação de erros de transmissão
– Controlo de fluxo
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Nível Lógico
Ethernet
Frame
Relay
ATM
GPRS
UMTS
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 6
6
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Nível Rede
Rede IP
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 7
7
Departamento de Engenharia Informática
OSI: Nível Transporte
• 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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Nível Transporte
Processo Utilizador
Rede TCP
Processo Utilizador
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 8
8
Departamento de Engenharia Informática
A Internet como um Relógio de Areia
Mail
Web
Audio
Passível de alterações
Maior inovação
VoIP
Video
IM
Web Services
TCP / UDP
Difícil de alterar
IP
Ethernet
3/6/2005
GPRS
802.11
Satélite
Bluetooth
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
Aplicação
HTTP, FTP,
SMTP, Corba,
IIOP, SOAP, RMI
Apresentação
XML, XDR,
XML
Sessão
Binding protocol,
DCE-RPC
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 9
9
Departamento de Engenharia Informática
Aspectos a Analisar
• Integração das Redes no Sistema Operativo
• Características do Canal de Comunicação
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 10
10
Departamento de Engenharia Informática
Unix – 4.4 BSD
System calls
Terminal handing
Sockets
Cooked tty
Network
protocols
Line
disciplines
Routing
Raw
tty
Character
devices
Interrups and traps
File Map- Page
Process
naming ping faults Signal
handling Creation and
File
Virtual
Termination
systems memory
Buffer
cache
Netwok
device drivers
Page
cache
Process
scheduling
Disk
device drivers
Process
dispatching
Hardware
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Winsock Implementation
Application
Mswsock.dll
SPI
Msafd.dll
Wshtcpip.dll
Service Providers
Ntdll.dll
NtReadFile, NtWriteFile,
NtCreateFile,
NTDeviceloControlFile User mode
Kernel mode
\Device\AFD
TDI IRPs
Protocol drivers
3/6/2005
IPX/SPX
AFD FSD
NetBEUI
TDI
TCP/IP
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 11
11
Departamento de Engenharia Informática
Caracterização do canal
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Tipos de canais (I)
• 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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 12
12
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Programação da comunicação:
semântica de envio
•
Núcleo SO
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
•
aplicação
aplicação
Pedido/resposta ou Remote
Procedure Call
– Cliente só prossegue após resposta
do servidor
cliente
servidor
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 13
13
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 14
14
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
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
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 15
15
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)
–
–
–
–
3/6/2005
Named Pipes (IBM OS/2)
Mailslots (IBM OS/2)
NetDDE (MS)
MSMQ – sistema de message queuing
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Exemplos de Interfaces
• Sockets
• TLI
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 16
16
Departamento de Engenharia Informática
Interface sockets
• Interface de programação para comunicação entre
processos introduzida no Unix 4.2 BSD
• Objectivos:
–
–
–
–
3/6/2005
Independente dos protocolos
Transparente em relação à localização dos processos
Compatível com o modelo de E/S do Unix
Eficiente
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
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)
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 17
17
Departamento de Engenharia Informática
Interface sockets
Relação entre domínio, tipo de socket e protocolo
Stream
Datagram
Raw
Seq
Packet
3/6/2005
UNIX
INET
NS
Sim
Sim
-
TCP
UDP
IP
-
SPP
IDP
Sim
SPP
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Sockets sem Ligação
Servidor
Cliente
socket
socket
bind
bind
sendto
recvfrom
sendto
recvfrom
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 18
18
Departamento de Engenharia Informática
Sockets UDP em Java (Cliente)
Constrói um socket
datagram (associado a
qualquer porto disponível)
import java.net*;
import java.io*;
public class UDPClient{
public static void main(String args[]){
// args give message contents and server hostname
Conversão do nome
DatagramSocket aSocket = null;
DNS para endereço IP
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();}
} 3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
}
Departamento de Engenharia Informática
Sockets UDP em Java (Servidor)
Constrói um socket
import java.net*;
datagram (associado ao
import java.io*;
porto 6789)
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();}
José Alves Marques, Rodrigo Miragaia Rodrigues
} 3/6/2005
}
Page 19
19
Departamento de Engenharia Informática
Sockets com Ligação
Servidor
Cliente
socket
bind
3/6/2005
listen
socket
accept
connect
read
write
write
read
José Alves Marques, Rodrigo Miragaia Rodrigues
Departamento de Engenharia Informática
Sockets Stream em Java (Cliente)
import java.net*;
• classe Socket – suporta o
import java.io*;
socket cliente. Argumentos:
public class TCPClient{
nome DNS do servidor e o porto.
public static void main(String args[]){
• Construtor não só cria o socket
// args: message and destin. hostname
Socket s = null;
como efectua a ligação
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}
}
Métodos getInputStream /
WriteUTF / readUTF – para
getOutputStream – permitem
Universal transfer format /
aceder aos dois streams
para as cadeias de caracteres
3/6/2005
José Alves Marques, Rodrigo Miragaiadefinidos
Rodrigues pelo socket
Page 20
20
Departamento de Engenharia Informática
Sockets Stream em Java (Servidor)
Cria socket servidor
que fica à escuta no
porto “serverPort”
import java.net*;
import java.io*;
Bloqueia até cliente
public class TCPServer{
estabelecer ligação.
public static void main(String args[]){
try{
int server Port = 7896;
ServerSocket listenSocket = new ServerSocket(serverPort);
while(true){
Socket clientSocket = listenSocket.accept();
myConnection c = new myConnection(clientSocket);
}
}catch (IOException e){System.out.println(“Listen:”
+e.getMessage());}
}
}
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
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 sockets
mas existe uma maior uniformização com a
interface genérica dos streams.
• Actualmente pouco utilizados (sockets são o
standard de facto)
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 21
21
Departamento de Engenharia Informática
Transport Layer Interface
Servidor
Cliente
t_open
t_bind
t_alloc
t_open
t_bind
t_listen
t_alloc
Bloqueio à
espera de ligação
li g aç
ão
t_connect
t_accept
t_snd
t_rcv
t_rcv
t_snd
3/6/2005
José Alves Marques, Rodrigo Miragaia Rodrigues
Page 22
22