Programação Distribuída em Java Aula 01 1 Na aula de hoje veremos: • • • • • • Introdução Conceito de Rede Protocolos Modelo ISO/OSI Modelo TCP/IP Modelo Cliente/Servidor 2 Introdução 3 O quê um programa para rede pode fazer? Recuperar e exibir dados • • • Web browsers “conversam” com alguns tipos específicos de servidores “Compreendem” tipos específicos de dados Uma aplicação Java pode se adaptar virtualmente a qualquer tipo de servidor ou dado 4 O quê um programa para rede pode fazer? Acesso contínuo à informação • Web browsers buscam informação on-demand • Um cliente Java pode se manter constantemente atualizado 5 O quê um programa para rede pode fazer? Enviar dados • Web browsers são limitados quanto ao envio de dados ao servidor • Esse envio ocorre principalmente a partir de formulários • Um programa Java não tem essa limitação 6 O quê um programa para rede pode fazer? Interação ponto a ponto • Games on-line • Chat • Colaboração on-line 7 O quê um programa para rede pode fazer? Servidores • Possibilidades de escrever servidores para fins específicos • Simplicidade • Shopping carts • Spiders 8 O quê um programa para rede pode fazer? Agentes inteligentes • Independência de plataforma • Segurança (SecurityManager) e muito mais... 9 Rede Conceitos básicos 10 Componentes da Rede • Uma rede é uma coleção de computadores e outros dispositivos que podem trocar informações entre si. • Cada máquina da rede (impressoras, roteadores, máquinas de refrigerante, etc.) é chamada de nó. • A um nó plenamente funcional chamaremos de host. 11 Packet-Switched networks • Redes modernas distribuem dados em pequenos pacotes de informação. • Pacotes diminuem o custo das redes . • Pacotes permitem o uso de check-sums. • Cada pacote recebe o nome de datagrama. 12 Protocolo • Conjunto preciso de regras que define como computadores se comunicam; como a informação é tratada e distribuída. • e.g. HTTP define como os browsers se comunicam com servidores. 13 Modelo ISO/OSI • Facilitar o processo de padronização e obter interconectividade entre máquinas de diferentes fabricantes. • Trata da transmissão de dados em sete camadas de abstração; divide-se em: 14 Aplicação • Interface entre o protocolo de comunicação e o aplicativo que enviou ou receberá a informação 15 Apresentação • Traduzir os dados do formato do aplicativo para o formato da rede e vice versa. • Define como inteiros, mensagens de texto e outros dados são codificados e transmitidos na rede. 16 Sessão • Gerencia uma sessão de comunicação entre duas aplicações em computadores diferentes. • Disponibiliza serviços como pontos de controle periódicos a partir dos quais a comunicação pode ser restabelecida em caso de pane na rede. 17 Transporte • Separa os dados enviados pela camada de Sessão em pacotes que serão transmitidos pela rede. • Responsável pela consistência dos dados • TCP (telefone) - connection-based • UDP (carta) - connection-less 18 Rede • Organização dos dados em pacotes. • Organiza o endereçamento dos pacotes, convertendo endereços lógicos em endereços físicos. • Determina a rota que os datagramas seguirão. 19 Esquema de datagrama IPv4 version header length type of service datagram length identification number time-to-live (TTL) flags protocol fragment offset header checksum source address destination address optional information data 20 Enlace (data link) • Estabelece um protocolo de comunicação entre sistemas diretamente conectados. 21 Física • Move bits através de um meio físico. • Confirmação e retransmissão de quadros. • Controle da quantidade e velocidade de transmissão de informações na rede. 22 A B Aplicação Aplicação Apresentação Apresentação Sessão Sessão Transporte Transporte Rede Rede Enlace Enlace Física Física 23 A B Aplicação Aplicação Apresentação Apresentação Sessão Sessão Transporte Transporte Rede Rede Enlace Enlace Física Física 24 Modelo TCP/IP • O modelo TCP/IP é o mais apropriado para a Internet • As classes Java que dão suporte a programação para rede são baseadas nos protocolos TCP/IP • O programador Java só poderá interagir com as camadas de aplicação ou transporte 25 A B Aplicação Aplicação Transporte Transporte Internet Internet Host-to-host Host-to-host 26 Modelo Cliente/Servidor • A distinção é cada vez mais tênue • Em geral, o lado que inicia a conversa é o cliente • O lado que aceita o pedido geralmente é o servidor 27 Modelo Cliente/Servidor • Cliente: • Manipula a maior parte da lógica do programa • Interface gráfica • Roda em PC’s relativamente baratos 28 Modelo Cliente/Servidor • Servidor: • programa que gerência grandes quantidades de informação e é executado geralmente em máquinas caras e poderosas. 29 Modelo Cliente/Servidor • Servidor de arquivos ou DB • Recupera e envia informação ao cliente • Não processa essa informação 30 Modelo Cliente/Servidor • Servidor de aplicação • Processa e/ou analisa os dados • Envia os resultados desse processamento 31 O que você precisa saber... • Funcionamento básico de uma rede • Modelo de camadas – Prefira TCP/IP • Interação cliente/servidor 32 Na próxima aula veremos: • I/O • Sockets 33