Baixe o app para aproveitar ainda mais
Prévia do material em texto
1) Descreva e ilustre a arquitetura cliente-servidor de uma ou mais aplicações na Internet (por exemplo: Web e e-mail). Em particular, os processos clientes interagem com processos servidores, localizados possivelmente em distintos computadores hospedeiros, para acessar os recursos compartilhados que estes gerenciam. Os servidores podem, por sua vez, ser clientes de outros servidores. Por exemplo, um servidor Web é frequentemente um cliente de um servidor de arquivos local que gerencia os arquivos nos quais as páginas Web estão armazenadas. Os servidores Web, e a maioria dos outros serviços Internet, são clientes do serviço DNS, que mapeia nomes de domínio Internet a endereços de rede (IP). 2) Para a aplicação apresentada no exercício anterior, discuta como os servidores cooperam ao prover um serviço. Web: servidores Web cooperam com servidores proxy para minimizar o tráfego de rede e latência. Responsabilidade para consistência é feitapelos servidores proxy que verifique as datas de modificação de páginas freqüentemente com o servidor web de origem. Mail: servidores SMTP não mantem necessariamente tabelas de roteamento de distribuição de email para todos os destinos. Em vez disso, eles simplesmente encaminham mensagens dirigidas a destinos desconhecidos para outro servidor que é provavelmente tem as tabelas. Netnews: Todos os servidores NNTP cooperam da maneira descrita acima para fornecer o mecanismo de feed de notícias. 3) Como as aplicações apresentadas no exercício 1 acomodam o particionamento, a replicação ou caching de dados entre os servidores. Web: Web page masters são mantidos em um sistema de arquivos em um único servidor. As informações sobre a web como um todo é, portanto, dividido entre muitos servidores web. A replicação não é uma parte dos protocolos de web, mas um site muito usado pode fornecer vários servidores com cópias idênticas do sistema de arquivos em questão, utilizando um dos meios conhecidos para replicar slowly alteração de dados. Solicitações HTTP podem ser multiplexados entre os servidores idênticos utilizando o (bastante básico) mecanismo de compartilhamento de carga DNS. Além disso, os servidores proxy web replicação apoio através do uso de réplicas em cache de páginas e navegadores usados recentemente suportar a replicação através da manutenção de um cache local de páginas acedidas recentemente. Mail: As mensagens são armazenadas somente em seus destinos. Ou seja, o serviço de email é baseado principalmente em particionamento, embora uma mensagem para vários destinatários é replicado em vários destinos. Netnews: Cada grupo é replicada somente em locais que exigem isso. 4) Sugira algumas aplicações para o modelo de processos pares (peers), distinguindo entre os casos quando o estado de todos pares necessita ser idêntico e casos que exijam menos consistência. Trabalho cooperativo (groupware) aplicativos que fornecem um processo de pares perto de cada usuário. Os aplicativos que precisam apresentar todos os usuários com estado idêntico compartilhada whiteboard, visão compartilhada de uma discussão textual. Menos consistência: onde um grupo de usuários está trabalhando em um documento compartilhado, mas usuários diferentes podem acessar diferentes partes ou talvez um usuário bloqueia parte do documento e aos outros são mostrados a nova versão quando ele estiver terminada. Alguns serviços são efetivamente grupos de processos pares para fornecer disponibilidade ou tolerância a falhas. Se eles particionarem dados, então eles não precisam para manter consistente em tudo. 5) Liste os tipos de recursos locais que são vulneráveis para um ataque por um programa não confiável que é carregado de um local remoto e executa em um computador local. Objetos no sistema de arquivos, como arquivos e diretórios, podem sofrer leitura e escrita, e podem ser criados e deletados usando os direitos locais do usuário que executa o programa. A comunicação de rede: o programa pode tentar criar sockets, conecta-los, enviar mensagens, etc. Acesso a impressoras. Também é possível se passar pelo usuário de várias formas, como por exemplo, enviando e recebendo email. 6) Dê alguns exemplos de aplicações onde o uso de código móvel é interessante. Fazendo a computação próximo ao usuário, como nos Applets. Casos em que os objetos são enviados para um processo e o código é necessário para torna-lo usável. 7) Quais fatores afetam o tempo/capacidade de resposta (responsiveness) de uma aplicação que acessa dados compartilhados gerenciados por um servidor. Descreva e discuta alternativas para os problemas. Quando o cliente acessa um servidor, faz-se uma invocação de uma operação no servidor que esta rodando num computador remoto. As seguintes causas podem afetar o tempo de resposta: 1. Servidor sobrecarregado 2. Latência na troca de request e reply (devido a camadas do sistema operacional e do middleware no cliente e servidor) 3. Carga na rede O uso de cache ajuda com todos os problemas acima, Em particular cache no cliente reduz todos eles. 8) Diferencie buffering e caching. Buffer: uma técnica para armazenar dados transmitidos a partir de um processo de envio a um processo receptor em memória local ou armazenamento secundário até que o processo receptor esteja pronto para usar. Por exemplo, ler dados de um arquivo ou transmissão de mensagens através de uma rede, é melhor para lidar com isso em grandes blocos. Os blocos são mantidos em armazenamento de buffer no espaço de memória do processo receptor. O buffer é liberado quando os dados tiverem sido consumidos pelo processo. Caching: uma técnica para otimizar o acesso a objetos de dados remotos, mantendo uma cópia deles na memória local ou em armazenamento secundário. Os acessos a partes do objecto remoto são traduzidos em acessos ao partes da cópia local correspondente. Ao contrário de buffering, a cópia local pode ser mantido enquanto houver locais memória disponível para armazená-la. Um algoritmo de gerenciamento de cache e uma estratégia de liberação são necessários para gerenciar o uso da memória alocada para o cache. 9) Dê alguns exemplos de falhas em hardware e software que podem ou não podem ser tolerados pelo uso de redundância em um sistema distribuído. Para quais o uso de redundância, em casos apropriados, torna o sistema tolerante a falhas. Falhas de Hardware: processadores, discos e conexões de rede podem usar redundância, por exemplo, rodar um processo em múltiplos computadores, escrever em dois discos, ter dois roteadores separados na rede disponível. Falhas de software, crashes: Redundância não é bom com erros, porque eles podem ser replicados. Processos replicados ajudam com crashes que podem ocorrer devidos a bugs em partes independentes do sistema. Mensagens retransmitidas ajudam com o problema de perda de mensagens. 10) Considere um servidor simples que atenda a pedidos de clientes sem acessar outros servidores. Explique por que geralmente não é possível determinar um tempo limite despendido pelo servidor para responder ao pedido do cliente. O que poderia ser feito para tornar o servidor capaz de executar pedidos dentro de um tempo delimitado? É uma opção prática? A taxa de chegada de requests do cliente é imprevisível. Se o servidor usa threads para executar requests de forma concorrente, ele pode não ser capaz de alocar tempo suficiente para um request em particular que tem um tempo limite. Se o servidor coloca o request na fila e vai tirando da fila um de cada vez,eles podem esperar na fila por uma quantidade de tempo ilimitada. Para executar requests dentro de um período de tempo limitado, limite o numero de clients para se adequar a sua capacidade. Para lidar com mais clients, usa um servidor com mais processadores. Depois disso, ou em vez disso, replique o serviço. A solução pode ser cara e, em alguns casos manter as replicas consistentes pode levar úteis ciclos de processamento, reduzindo os ciclos disponíveis para execução de requests. 11) Para cada um dos fatores que contribuem para o tempo levado para transmitir uma mensagem entre dois processos sobre um canal de comunicação, discuta quais medidas poderiam ser tomadas para configurar um limite de tempo total. Por que estas medidas não são fornecidas para os sistemas distribuídos de propósito geral? O tempo gasto pelos serviços de comunicação do SO nos processos de envio e recepção: estas tarefas teriam de ser garantidas com ciclos de processador suficientes. O tempo necessário para acessar a rede: o par de processos de comunicação precisaria ter garantia da capacidade de rede. O tempo para transmitir os dados é uma constante uma vez que a rede tenha sido acessada. Para fornecer as garantias acima, precisaríamos de mais recursos e custos associados. As garantias associadas ao acesso à rede podem, por exemplo, ser fornecidas com redes ATM, mas são dispendiosas para serem utilizadas como LANs. Dar garantias para os processos é mais complexo. Por exemplo, para um servidor para garantir a receber e enviar mensagens dentro de um limite de tempo significaria limitar o número de clientes. 12) O serviço Protocolo de Tempo de Rede (NTP) pode ser usado para sincronizar relógios de computadores. Explique por que, mesmo com este serviço, não há garantias para a diferença entre dois relógios. Qualquer cliente que utilize o serviço NTP deve comunicar com ele por meio de mensagens passadas por um canal de comunicação. Se um limite for definido no momento que transmitimos uma mensagem através de um canal de comunicação, então a diferença entre o relógio do cliente e o valor fornecido pelo serviço NTP também seria limitada. Com um tempo de transmissão de mensagens ilimitado, as diferenças de relógio são necessariamente ilimitadas. 13) Considere dois serviços de comunicação para uso em um sistema distribuído assíncrono. No serviço A, mensagens podem ser perdidas, duplicadas ou atrasadas e, checksums aplicam-se somente a cabeçalhos. No serviço B, mensagens podem ser perdidas, atrasadas ou entregadas muito rápido para recipiente de tratamento, mas estas são entregues na ordem e com o conteúdo correto. Descreva as classes de falhas para cada serviço. Classifique suas falhas de acordo com os efeitos nas propriedades de validade e integridade. Pode um serviço B ser descrito como um serviço de comunicação confiável? Serviço A pode ter: • Falhas arbitrárias: ◦ checksum não se aplicar ao corpo da mensagem, o corpo da mensagem pode ser corrompido. ◦ mensagens duplicadas. • Falhas de omissão (mensagens perdidas) ◦ Uma vez que o sistema distribuído que é usado de forma assíncrona, ele não pode sofrer de falhas de temporização. ▪ Validade é negado por mensagens perdidas ▪ Integridade é negado por mensagens corrompidas ou duplicadas Serviço B pode ter: • Filhas de omissão (mensagens perdidas, mensagens dropadas) • Uma vez que o sistema distribuído que é usado de forma assíncrona, ele não pode sofrer de falhas de temporização. • Passa no teste de integridade, mas não no de validade, por conta disso, não pode ser considerado confiável. 14) Considere um par de processos X e Y que usam o serviço de comunicação B do exercício 13 para se comunicarem entre si. Suponha que X é um cliente e Y um servidor e, que uma invocação consiste de uma mensagem de X para Y (pedido) seguido por uma mensagem de reposta de Y para X. Descreva as classes de falhas que podem ocorrer durante o processo de invocação. Uma invocação pode sofrer com as seguintes falhas: Falhas de crash: X ou Y podem crashar, então, uma invocação pode sofrer com falhas de crash. Falhas de omissão: se o serviço B sofrer com falhas de omissão, a mensagem de request ou reply pode se perder. 15) Suponha que um disco básico pode ler, às vezes, valores que são diferentes daqueles escritos. Discuta o tipo de falha que está ocorrendo. Sugira como esta falha pode ser mascarada para produzir uma falha benigna, ou seja, que não cause danos graves ao sistema. Agora sugira como mascarar a falha benigna. Uma leitura básica de disco apresenta falhas arbitrárias. Isso pode ser mascarado usando checksum em cada bloco de disco (tornando improvável que valores errados não sejam detectados). Quando um valor incorreto é detectado, a leitura retorna nenhum valor em vez de um valor errado (uma falha de omissão). As falhas de omissão podem ser mascaradas replicando cada bloco de disco em dois discos independentes o que tornar falhas de omissão improváveis. 16) Defina a propriedade de integridade da comunicação confiável e liste todos as possíveis ameaças à integridade dos usuários e aos componentes do sistema. Quais medidas podem tomadas para garantir a propriedade de integridade em face de cada fonte de ameaça. Integridade: a mensagem recebida é idêntica à enviada e nenhuma mensagem é entregue mais de uma vez. Ameaças dos usuários: injectar mensagens falsas, reproduzir mensagens antigas, alterar mensagens durante a transmissão. Ameaças de componentes do sistema: • mensagens podem ser corrompidas no caminho. • mensagens podem ser duplicadas por protocolos de comunicação que retransmitem as mensagens. Medidas que podem ser adotadas: • Para ameaças de usuários use canais seguros ou técnicas de autenticação. • Para ameaças de componentes do sistema. Checksums para detectar mensagens corrompidas mas depois temos um problema de validade (mensagem perdidas). As mensagens duplicadas podem ser detectadas se números de sequência forem anexados a mensagens. 17) Descreva possíveis ocorrências de ameaça a segurança (ameaças aos processos, ameaças aos canais de comunicação e negação de serviço) que podem ocorrer na Internet. Ameaças aos processos: sem autenticação servidores, existem muitas ameaças. Um inimigo pode acessar os arquivos ou caixas de correio de outros usuários ou configurar servidores 'spoof'. Por exemplo. Um servidor pode ser configurado para 'spoof' serviço de um banco e receber detalhes de transações financeiras do usuário. Ameaças aos canais de comunicação: IP spoofing - enviar solicitações para servidores com um endereço de fonte falsa, ataques man-in-the-middle. Negação de serviço: inundar um serviço publicamente disponível com mensagens irrelevantes.
Compartilhar