Upload
brian-alcantara-da-mota
View
220
Download
1
Embed Size (px)
Citation preview
Redes Lógicas
DCA-FEEC-UNICAMP
Ricardo Gudwin
Conceitos 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
Benefí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
Estruturas 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
Hosts e IMPs numa Subrede de Comunicação
Host
IMP
fronteira da subrede de comunicação
subrede de comunicação
Estruturaçã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
Exemplo: Modelo ISO/OSI
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Física
Aplicação
Apresentação
Sessão
Transporte
Rede
Enlace
Física
Rede
Enlace
Física
Rede
Enlace
Física
Host #1 Host #2
protocolo de aplicação
protocolo de apresentação
protocolo de sessão
protocolo de transportesubrede de comunicação
pacote
quadro
bit
IMP #i IMP #j
Arquitetura 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...
Arquitetura 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
Arquitetura 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
Arquitetura 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
Arquitetura 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)
Internet e o modelo OSI/ISO
Aplicação
Transporte
Inter-redes
Interface de rede
Aplicação
Transporte
Inter-redes
Interface de rede
Meio físico
mensagens
pacotes
datagramas
quadros
Aplicação
ApresentaçãoSessão
Transporte
Rede
Enlace
Física
OSI/ISOInternet
Programaçã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
Programaçã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
Programaçã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
Programaçã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
Programação com Sockets
Aplicação
Transporte
Inter-redes
Interface de rede
Aplicação
Transporte
Inter-redes
Interface de rede
Meio físico
mensagens
pacotes
datagramas
quadros
Sockets
Conexão
Modelo 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
Modelo 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
Sistemas 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
Sistemas 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
Sistemas Cliente-Servidor com Sockets e Java
Cliente
…Socket cl = new Socket(destination,port);… BufferedReader inS = new BufferedReader( cl.getInputStream())DataOutputStream outS = new DataOutputStream( cl.getOutputStream());…/* use inS and outS */
Servidor
…ServerSocket s = new ServerSocket(PORT);Socket cl = s. accept();… String dnm =
cl.getInetAddress().getHostName();int dpt = cl.getPort();… BufferedReader inS = new
BufferedReader( new InputStreamReader (cl.getInputStream()));
DataOutputStream outS = new DataOutputStream( cl.getOutputStream());
…/* use inS and outS */
Programaçã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
Programaçã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
Programaçã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 RPC:DCE RPC, Microsoft RPC, ONC RPC,
etc
Objetos 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
Objetos 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
Objetos 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
CORBA - 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
Arquitetura CORBA
Stubs IDLdo Cliente
InvocaçãoDinâmica
SkeletonsInvocaçãoDinâmica
ORB
Cliente Servidor
Interface c/o ORB
Adaptador de Objeto Básico (BOA)
Repositóriode Interfaces
Repositório deImplementações
SkeletonsEstáticos
IDL
Facilidades e Serviços CORBA
Object Request Broker
Naming
Externalization
Events
Persistence
Life Cycle
Properties
Query
Relationships
Time
Security
Transactions
Collections
Trader
ChangeManagement
Licensing
Concurrency
Common Object Services
UserInterface
InformationManagement
SystemsManagement
TaskManagement
Horizontal Common Facilities
Common FacilitiesVertical Common FacilitiesApplication Objects