Title: Redes L
1Redes Lógicas
Ricardo Gudwin
2Conceitos Básicos
- Redes de Computadores
- um conjunto de computadores autônomos e
interconectados - autonomia exclui arranjos com relação
mestre/escravo ou com controle centralizado (e.g.
terminal) - nenhum computador recebe comandos de outro,
possuindo autonomia para até mesmo se desconectar
da rede - interconexão por meios tais como
- cabos de cobre
- fibras óticas
- rotas de microondas
- radiodifusão
- meios de interconexão limitam a
- taxa de transmissão
- extensão geográfica
3Benefícios de Redes
- compartilhamento de informação e recursos
- objetivo central
- capacidade de processamento
- crescimento gradual
- diversidade de equipamento
- liberdade de escolha
- maior confiabilidade
- redundância
- processamento local da informação
- comunicação social
- meio alternativo
4Estruturas de Redes
- Host
- computador ligado à rede
- também denominado End System (ES)
- Subredes de Comunicação
- conectam hosts
- carregam mensagens (ou pacotes) de um host para
outro - Redes locais
- tipicamente um único duto elétrico ou ótico
- Redes de longa distância
- linhas (ou canais) de transmissão
- IMPs (Interface Message Processors) ou ISs
(Intermediate Systems) - dispositivos de chaveamento
- computadores especializados conectando duas ou
mais linhas de transmissão
5Hosts e IMPs numa Subrede de Comunicação
fronteira da subrede de comunicação
IMP
Host
subrede de comunicação
6Estruturação de Redes em Camadas
- Modelo de uma rede de computadores
- blocos funcionais interligados ? camadas
- a cada camada, um nível é associado
- uma camada oferece serviços à camada superior
- esconde detalhes de implementação destes serviços
- camada N de um host troca informação com camada N
de outros hosts - protocolo da camada N
- regras de utilização de serviços oferecidos por
uma camada é definida pela interface entre
camadas adjacentes - Arquitetura da rede
- conjunto de camadas e protocolos de uma rede
7Exemplo Modelo ISO/OSI
protocolo de aplicação
Aplicação
Aplicação
protocolo de apresentação
Apresentação
Apresentação
protocolo de sessão
Sessão
Sessão
protocolo de transporte
Transporte
Transporte
subrede de comunicação
Rede
Rede
Rede
Rede
pacote
Enlace
Enlace
Enlace
Enlace
quadro
Física
Física
Física
Física
bit
IMP i
IMP j
Host 1
Host 2
8Arquitetura Internet
- Internet TCP/IP
- Arquitetura de 4 camadas
- Aplicação
- Transporte
- Inter-redes
- Interface de rede
- Especifica protocolos para cada camada
- permite o compartilhamento de dados utilizando
diferentes tecnologias na camada anterior - e.g. Ethernet, Token-Ring, PPP, etc...
9Arquitetura Internet
- Camada Interface de Rede
- corresponde às camadas Física e de Enlace do
modelo OSI - Física responsável pela geração dos sinais
elétricos, ópticos ou eletromagnéticos que serão
propagados pelo meio físico - especificam características tais como duração do
sinal, intensidade do sinal, técnica de
multiplexação, etc. - Enlace utiliza a camada física para transmitir
quadros de dados - transmissão de quadros não é confiável pode
ocorrer duplicação de quadros, recepção fora de
ordem, etc... - pode operar sobre rede local
- interface de rede é uma placa implementando
protocolo de enlace e acesso ao meio - pode operar sobre rede de longa distância
- interface de rede é um subsistema que implementa
protocolo de conexão física HOST-IMP e protocolo
de enlace IMP-IMP
10Arquitetura Internet
- Camada Inter-Redes
- equivale à camada de rede do modelo OSI
- controla a operação da subrede roteamento de
pacotes da origem ao destino - converte pacotes entre subredes subredes de
origem e destino podem empregar formatos
diferentes - define protocolo IP - Internet Protocol
- transporte não confiável de mensagens
(datagramas) - define protocolo ICMP
- Internet Control Message Protocol
- controle da comunicação e informe de erros
- define protocolos para roteamento de mensagens,
tais como - GGP Gateway-to-Gateway Protocol
- RIP Routing Information Protocol
11Arquitetura Internet
- Camada de Transporte
- equivale à camada de transporte do modelo OSI
- particiona dados recebidos da camada superior em
unidades menores pode garantir ordem correta e
não-duplicação - primeira camada a promover comunicação host-host
- define protocolo TCP/IP
- Transfer Control Protocol
- transporte confiável de dados, mesmo para redes
de baixa confiabilidade - define protocolo UDP
- User Datagram Protocol
- confiabilidade do transporte é deixado a cargo
das camadas inferiores
12Arquitetura Internet
- Camada de Aplicação
- especifica protocolos comumente implementados em
programas interativos, tais como - terminal remoto
- TELNET, RLOGIN
- transferência de arquivos
- FTP (file transfer protocol)
- HTTP (hyper text transfer protocol)
- correio eletrônico
- SMTP (simple mail transfer protocol)
- gerenciamento de rede
- SNMP (simple network management protocol)
- boletim eletrônico
- NNTP (network news transfer protocol)
13Internet e o modelo OSI/ISO
OSI/ISO
Internet
Aplicação
Aplicação
Aplicação
mensagens
Apresentação
Sessão
Transporte
Transporte
Transporte
pacotes
Rede
Inter-redes
Inter-redes
datagramas
Enlace
Interface de rede
Interface de rede
quadros
Física
Meio físico
14Programação em Redes
- Redes de Computadores
- Software para o uso da rede
- Compartilhamento de Arquivos e Impressoras
- Serviços de Rede (autenticação, acesso a
recursos, etc) - Emergência de um novo paradigma sistemas
distribuídos - Sistemas Distribuídos
- Sistemas Operacionais Distribuídos
- Software do sistema é distribuído ao longo da
rede - Aplicações Distribuídas
- Novos métodos de programação
- Tecnologias Básicas
- Sockets, RPC, Objetos Distribuídos
15Programação em Redes
- Comunicação entre Programas em uma Rede
- comutação de pacotes de dados - pacotes IP
- protocolo no nível de aplicação, utilizando um
protocolo no nível de transporte - Dispositivo de Acesso à Rede
- Endereço Físico - e.g. IEEE 802.3 (Ethernet) - 6
bytes (48 bits), usualmente fornecido como 6
números hexadecimais - exemplo 67.F3.AF.3E.12.FF
- Endereço IP - números de 32 bits -
NNN.NNN.NNN.NNN - Domain Name System (DNS) - associação de nomes a
endereços IP - DNS Servers - Portas
- endereço dentro de um computador (16 bits)
- número associado a um tipo de serviço
16Programação em Redes
- TCP - Serviço Orientado a conexão
- estabelece uma conexão entre uma origem
(porta/end.IP) e um destino (porta/end.IP) que
perdura até que a mesma seja explicitamente
encerrada - comunicação confiável
- UDP - Serviço sem Conexão
- Não estabelece um vínculo direto entre origem e
destino - envia datagramas sem confirmação de resposta e
sem técnicas de correção de erros - mais rápidos que o TCP
- Unicast x Multicast
- unicast - comunicação ponto a ponto
- multicast - grupo de hosts recebendo um mesmo
endereço IP
17Programação com Sockets
- Programação Socket
- Base para programação em rede utilizando TCP/IP
- Apareceu como uma abstração para programação em
rede dentro de sistemas UNIX, tornando-o
compatível com o paradigma básico de E/S do UNIX - Paradigma básico de E/S do UNIX
- open-read-write-close
- insuficiente para gerenciar todos os serviços e
protocolos de rede - Socket
- generalização do mecanismo de acesso a arquivos
do UNIX, provendo um ponto de conexão para
comunicação - programas aplicativos solicitam a criação de um
socket ao sistema operacional, quando necessário
18Programação com Sockets
Aplicação
Aplicação
mensagens
Sockets
Conexão
Transporte
Transporte
pacotes
Inter-redes
Inter-redes
datagramas
Interface de rede
Interface de rede
quadros
Meio físico
19Modelo Cliente-Servidor
- O modelo cliente/servidor de comunicação é um
modelo de interação entre sistemas distribuídos,
onde um processo contacta outro processo para
requisitar serviços - Processo requisitando o serviço é chamado de
cliente - Processo oferecendo o serviço é chamado de
servidor - Papel do Cliente
- Realizar uma requisição ativa por serviços
- postura inicial - enviar mensagens
- Papel do Servidor
- Aguardar a requisição de mensagens, e quando de
sua chegada providenciar os serviços requisitados - postura inicial - receber mensagens
20Modelo Cliente-Servidor
- Processos podem assumir o papel de clientes,
servidores ou de ambos - Sistemas mais antigos atribuiam somente um único
papel a cada processo cliente OU servidor - Servidores de Arquivos
- Servidores de Banco de Dados
- Sistemas mais modernos usam novas metodologias
que permitem aos processos interagir como
clientes ou servidores dependendo da situação - Monitores de Transações/Processos (TP Monitors)
- Groupware
- Objetos Distribuídos
21Sistemas Cliente-Servidor com Sockets e Java
- Pacote java.net
- provê diversas classes para facilitar o acesso a
redes, utilizando o paradigma de sockets e outros
mais sofisticados - InetAddress - encapsula endereços IP e suporta
conversão entre notação decimal pontuada e nomes
de hosts - Socket, ServerSocket, DatagramSocket,
MulticastSocket - implementam sockets clientes e
servidores - SocketImpl e DatagramSocketImpl (classes) e
SocketImplFactory (interface) - auxiliam a
criação de sockets customizados - URL, URLConnection, HttpURLConnection e
URLEncoder - implementam conexões Web de alto
nível - FileNameMap (interface) - usada no mapeamento de
nomes de arquivos a tipos MIME
22Sistemas Cliente-Servidor com Sockets e Java
- Streams
- Sequências de bytes que se movimentam de uma
origem a um destino - Pacote java.io
- possui diversas classes para a manipulação de
diferentes tipos de Streams - InputStreams, OutputStreams, Readers, Writers
- Programação de Sistemas Cliente-Servidor
- protocolo de comunicação entre cliente e servidor
- regras para troca de mensagens entre os programas
- criação de Sockets e ServerSockets, e a obtenção
dos Streams associados aos sockets - envio de dados por meio dos Streams
23Sistemas Cliente-Servidor com Sockets e Java
Servidor ServerSocket s new
ServerSocket(PORT) Socket cl s. accept()
String dnm cl.getInetAddress().getHostName() i
nt dpt cl.getPort() BufferedReader inS
new BufferedReader( new InputStreamReader
(cl.getInputStream())) DataOutputStream outS
new DataOutputStream( cl.getOutputStream()) /
use inS and outS /
Cliente Socket cl new Socket(destination,por
t) BufferedReader inS new BufferedReader(
cl.getInputStream()) DataOutputStream outS new
DataOutputStream( cl.getOutputStream()) / use
inS and outS /
24Programação RPC
- Programação Socket
- apesar de conveniente, apresenta um problema
incurável - paradigma de troca de mensagens
- Implementar toda a programação de rede em cima de
troca de mensagens tem uma série de
inconveniências - diferentes formatações de dados
(big-endian/little-endian, 8/16 bits, formatos de
ponto flutuante), dados estruturados (árvores,
grafos, listas ligadas), dificuldades na
sincronização de mensagens, perda de pacotes,
crashes de uma ou ambas as máquinas, etc... - RPC - Remote Procedure Call
- introduzida por Birrel e Nelson em 1984
- idéia chamar rotinas localizadas em outras
máquinas como se fossem rotinas locais - informação vai por meio de parâmetros retornando
como o resultado da chamada
25Programação RPC
- Transparência na Programação
- Chamadas stubs
- procedimento local com nome correlato ao
procedimento remoto, que se responsabiliza por
efetuar toda a codificação/decodificação dos
dados e comunicação pela rede - Stub do Cliente empacota os parâmetros e envia
ao servidor. Depois, fica esperando um retorno do
servidor, bloqueando o socket. Quando o servidor
retorna, desempacota a mensagem do servidor,
copia o resultado para a rotina que fez a chamada
do RPC e retorna de modo usual - Stub do Servidor quando a mensagem do stub do
cliente chega ao servidor, o kernel a passa para
o stub do servidor, que tipicamente está com um
socket bloqueado esperando por mensagens. O stub
desempacota os parâmetros, chama a rotina
desejada e a seguir re-empacota o resultado da
chamada e envia a resposta ao stub do cliente,
aguardando nova requisição
26Programação RPC
- Transparência na Programação
- O programa não tem a menor idéia que o trabalho
está sendo feito remotamente - Todos os detalhes de passagem de mensagens ficam
escondidos dentro dos dois stubs - Gerando stubs
- Se a troca de mensagens é feita manualmente,
erros obscuros podem acontecer - Portanto, a geração de stubs deve ser feita
automaticamente - Um compilador de stubs deve ser utilizado,
portanto para gerar os stubs do cliente e do
servidor - e.g. - SunRPC arquivo .x - linguagem RPC, um
programa - rpcgen gera os arquivos de stubs (em
linguagem C) - diversos mecanismos de RPCDCE RPC, Microsoft
RPC, ONC RPC, etc
27Objetos Distribuídos
- Aplicações convencionais do tipo Cliente-Servidor
- apenas transformam aplicações monolíticas
separando-as em duas metades - Futuro do Modelo Cliente-Servidor
- extrapolar de aplicações restritas a redes locais
para redes de alcance global - Como ?
- Usando uma arquitetura baseada em componentes
- Objetos Distribuídos são a chave para esta
revolução - Aplicações envolvendo objetos distribuídos são
muito adequadas para a criação de sistemas
cliente/servidor mais flexíveis, pois tanto dados
quanto a lógica da aplicação estão encapsulados
dentro dos objetos, permitindo sua localização em
qualquer lugar de um sistema distribuído
28Objetos Distribuídos
- Objetos Clássicos
- unidade de serviço encapsulando código e dados
- provê diversas facilidades para reutilização de
código - existe somente dentro de um programa isolado
- Objetos Distribuídos
- unidade de serviço localizada em qualquer lugar
de uma rede - armazenados como pedaços independentes de código
que podem ser acessados por clientes remotos via
invocação de métodos - linguagens de programação e compiladores
envolvidos são totalmente transparentes para seus
clientes - clientes não necessitam saber onde se localizam
os objetos ou que sistema operacional está sendo
executado remotamente - pedaços inteligentes de software que podem trocar
mensagens entre si de modo transparente em
qualquer lugar do mundo
29Objetos e Componentes
- Componentes
- pedaços isolados de software que podem se
interconectar automaticamente via redes,
aplicações, linguagens, ferramentas e sistemas
operacionais - Objetos Distribuídos
- são por definição, componentes
- nem todo componente é um objeto e nem todos os
componentes são distribuídos - Tecnologia de Componentes
- promete alterar radicalmente a maneira como se
desenvolve software permitem a criação de
sistemas cliente-servidor sofisticados
simplesmente interconectando-se componentes - meta é atingir o nível de interoperabilidade
encontrado por exemplo em circuitos integrados
30CORBA - Common Object Request Broker Architecture
- Norma da OMG definindo a operação, gerenciamento,
serviços e facilidades para objetos distribuídos - Características
- arquitetura completamente orientada a objetos
- separa interface de serviços de sua implementação
- provê um conjunto padrão de serviços e
facilidades - integra múltiplas linguagens de programação
- permite sua inserção dentro de um sistema
operacional - independente do sistema operacional
- padrão aberto adotado por múltiplas empresas de
software - permite a interoperabilidade entre produtos de
diferentes empresas
31Arquitetura CORBA
32Facilidades e Serviços CORBA