Baixe o app para aproveitar ainda mais
Prévia do material em texto
Interação cliente servidor APRESENTAÇÃO Os termos cliente e servidor se referem aos dois aplicativos envolvidos em uma comunicação. O aplicativo que começa ativamente o contato é chamado cliente, enquanto o aplicativo que espera passivamente por contato é chamado servidor. Esta Unidade de Aprendizagem tem por foco o ensino do paradigma cliente-servidor, seus principais conceitos e os protocolos de rede utilizados. Juntas, essas características representam a base para todos os aplicativos de rede. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Reconhecer o paradigma cliente-servidor.• Identificar as diferenças entre os protocolos de rede.• Avaliar as características de clientes e servidores.• DESAFIO Você foi contratado para ser analista de redes em uma loja de materiais de construção. Jorge, gerente da loja, resolve abrir mais uma filial em sua cidade natal. Essa filial será maior e deverá possuir três caixas para atender as demandas de atendimento, com possibilidade de expansão. INFOGRÁFICO Em uma comunicação cliente-servidor, os dipositivos/computadores efetuam a solicitação de informações para um servidor, que, por sua vez, efetua o processamento e devolve os resultados e/ou os dados solicitados. CONTEÚDO DO LIVRO Muito utilizado nos dias de hoje, o paradigma cliente-servidor permite o acesso centralizado a sistemas que utilizam clientes dístribuídos. Os aplicativos de rede usam-no como uma forma de comunicação. Um aplicativo servidor espera passivamente ser contatado, enquanto um aplicativo cliente inicia a comunicação ativamente. Acompanhe um trecho da obra Redes de computadores e Internet. Inicie o estudo pelo tópico O modelo de interação cliente-servidor e finalize no tópico Programação em redes e API de sockets. Boa leitura! Redes de Computadores e Internet R ed es d e C o m p u tad o res e In tern et Redes de Computadores e Internet CONTEÚDO ONLINE Douglas E. ComerDouglas E. Comer D o u g las E . C o m er 6ª EDIÇÃO 6ª EDIÇÃO 6 ª E D IÇ Ã O R ed es d e C o m p u tad o res e In tern et Redes e Internet D o u g las E . C o m er 6ª ED. Escrito por um dos maiores especialistas em redes no mundo, Douglas E. Comer, este livro apresenta, de forma ampla e sistemática, os mais importantes conceitos, princípios e tecnologias das redes de computadores e da Internet. De fácil leitura, não requer experiência prévia com sistemas operacionais ou redes nem conhecimento avançado de matemática. Além disso, combina o melhor das abordagens top-down e bottom-up, permitindo aos professores adaptar o conteúdo às suas necessidades em sala de aula. Totalmente revisada e atualizada, esta nova edição inclui IPv4 e IPv6 em todos os capítulos e traz ainda tópicos emergentes e tendências, como a Internet das Coisas e as Redes Definidas por Software (SDN). Acesse o nosso site, www.grupoa.com.br, cadastre-se gratuitamente, encontre a página do livro por meio do campo de busca e clique no link Conteúdo Online para fazer download do código para a API simplificada e de materiais extras para alunos e professores (em inglês). www.grupoa.com.br 0800 703 3444 A Bookman Editora é um dos selos editoriais do Grupo A Educação, empresa que oferece soluções em conteúdo, tecnologia e serviços para a educação acadêmica e profissional. COMPUTAÇÃO E TI www.grupoa.com.br BAEZA-YATES, R.; RIBEIRO-NETO, B. Recuperação de Informação – Conceitos e Tecnologia das Máquinas de Busca – 2.ed. COMER, D. E. Redes de Computadores e Internet – 6.ed. COULOURIS, G.; DOLLIMORE, J.; KINDBERG, T.; BLAIR, G. Sistemas Distribuídos – Conceitos e Projeto – 5.ed. FOROUZAN, B. A. Comunicação de Dados e Redes de Computadores – 4.ed. FOROUZAN, B. A.; FEGAN, S. C. Protocolo TCP/IP - 3.ed FOROUZAN, B. A.; MOSHARRAF, F. Redes de Computadores – Uma Abordagem Top-Down GOODRICH, M. T.; TAMASSIA, R. Introdução à Segurança de Computadores MCCARTHY, N. K. Resposta a Incidentes de Segurança em Computadores – Planos para Proteção de Informação em Risco MCCLURE, S.; SCAMBRAY, J.; KURTZ, G. Hackers Expostos 7 – Segredos e Soluções para a Segurança de Redes – 7.ed. WRIGHTSON, T. Segurança de Redes Sem Fio – Guia do Iniciante Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094 C732r Comer, Douglas E. Redes de computadores e internet [recurso eletrônico] / Douglas E. Comer ; tradução: José Valdeni de Lima, Valter Roesler. – 6. ed. – Porto Alegre : Bookman, 2016. Editado como livro impresso em 2016. ISBN 978-85-8260-373-4 1. Redes de computadores. 2. Internet. I. Título. CDU 004.7 O autor Dr. Douglas Comer é um internacionalmente reconhecido especialista em redes de com- putadores, protocolos TCP/IP e Internet. Foi um dos pesquisadores que contribuíram com a formação da Internet no fim dos anos 1970 e nos anos 1980, sendo membro do In- ternet Architecture Board, o grupo responsável por guiar o desenvolvimento da Internet. Também foi presidente do comitê técnico CSNET, membro do comitê executivo CSNET e presidente do Distributed Systems Architecture Board da DARPA (Defense Advanced Research Projects Agency). Foi ainda Vice-Presidente de Pesquisa na Cisco Systems. Comer é consultor de projeto de redes de computadores para empresas e palestran- te frequente em ambientes acadêmicos e profissionais ao redor do mundo. Seu sistema operacional, Xinu, e a implementação de protocolos TCP/IP (ambos documentados em seus livros) são utilizados em produtos comerciais. É professor honorário de Ciências da Computação na Purdue University, onde leciona redes de computadores, redes de internet, arquitetura de computadores e sistemas operacionais. Lá desenvolveu labora- tórios de informática inovadores que dão aos alunos a oportunidade de ter experiências práticas na operação de sistemas, redes de computadores e protocolos. Além de escrever livros técnicos best-sellers, já traduzidos para 16 idiomas, atuou como editor norte-americano do periódico Software – Practice and Experience por 20 anos. Comer é membro da ACM. Informações adicionais podem ser encontradas em: w ww.cs.purdue.edu/homes/comer. 28 Parte I Introdução a redes e aplicações da Internet 3.4 O modelo de interação cliente-servidor O primeiro passo no Algoritmo 3.1 leva a uma questão: como um par de aplicações executadas em dois computadores diferentes se coordena para solicitar uma conexão ao mesmo tempo? A resposta está em uma forma de interação conhecida como modelo cliente-servidor. Uma aplicação, conhecida como servidor, inicia antes e aguarda con- tato. A outra aplicação, conhecida como cliente, inicia depois e solicita a conexão. A Figura 3.2 resume a interação cliente-servidor. Aplicação servidor Aplicação cliente Inicia antes Inicia depois Não precisa saber qual cliente vai se conectar Precisa saber a qual servidor se conectar Espera passivamente um tempo indeterminado pelo contato do cliente Inicia o contato quando a comunicação é necessária Comunica-se com o cliente enviando e recebendo dados Comunica-se com o servidor enviando e recebendo dados Continua executando após atender um cliente, esperando pelo próximo Pode encerrar após interagir com o servidor Figura 3.2 Resumo do modelo cliente-servidor. As próximas seções descrevem como serviços específicos utilizam o modelo clien- te-servidor. Por enquanto, é suficiente lembrar o seguinte: Embora forneça comunicação básica, a Internet não inicia nem aceita contato de um computador remoto; programas de aplicação conhecidos como clientes e servidores manipulam todos os serviços. 3.5 Características de clientes e servidores Embora variações menores existam, a maioria das instâncias de aplicações que seguem o paradigma cliente-servidor tem as seguintes características gerais: Software cliente • Consiste em um programa de aplicação arbitrário que se torna um clientetemporariamente quando acesso remoto é necessário. • É invocado diretamente pelo usuário e executa somente durante uma sessão. • Roda localmente no computador ou dispositivo do usuário. • Inicia contato ativamente com o servidor. • Pode acessar múltiplos serviços se necessário, mas usualmente se comunica com um servidor por vez. • Não necessita hardware potente. Software servidor • Consiste em um programa de propósito especial, com privilégios, dedicado a fornecer um serviço. Capítulo 3 Programação em redes e aplicações da Internet 29 • É invocado automaticamente quando o sistema inicializa e continua execu- tando enquanto o computador estiver ligado. • É executado em um computador dedicado. • Espera passivamente pelos contatos dos clientes remotos. • Pode aceitar conexões de muitos clientes ao mesmo tempo, porém (usual- mente) oferece somente um serviço. • Requer um hardware mais poderoso e um sistema operacional sofisticado. 3.6 Programas servidores e computadores servidores Algumas vezes o termo servidor é compreendido de forma inadequada. Formalmen- te, ele se refere a um programa que espera passivamente o contato de clientes, e não ao computador no qual ele executa. Entretanto, quando um computador é dedicado a executar um ou mais programas servidores, seus administradores normalmente o chamam de “servidor”. Fabricantes de hardware aumentam a confusão, pois classifi- cam computadores que possuem CPUs mais rápidas, grande quantidade de memória e sistemas operacionais sofisticados como máquinas servidoras. A Figura 3.3 ilustra as definições. Internetconexão cliente executa em um computador normal servidor executa em um computador servidor Figura 3.3 Ilustração de um cliente e de um servidor. 3.7 Requisições, respostas e direção do fl uxo de dados Os termos cliente e servidor surgiram porque quem inicia a conexão é um cliente. Entre- tanto, uma vez que a conexão tenha sido estabelecida, a comunicação flui em ambas as direções (i.e., dados podem fluir do cliente para o servidor e do servidor para o cliente). Tipicamente, um cliente envia uma requisição ao servidor, e o servidor envia uma res- posta ao cliente. Em alguns casos, um cliente envia uma série de requisições e o servidor uma série de respostas (por exemplo, um cliente de banco de dados deve permitir ao usuário acessar mais de um item por vez). O conceito pode ser resumido: A informação pode fluir em ambas as direções entre cliente e servidor. Embora muitos serviços sejam baseados no cliente enviando uma ou mais requisições e no servidor enviando as respostas, outras interações são possíveis. Comer_03.indd 29Comer_03.indd 29 29/10/15 14:4629/10/15 14:46 30 Parte I Introdução a redes e aplicações da Internet 3.8 Múltiplos clientes e múltiplos servidores Um cliente ou servidor consiste em um programa de aplicação, e um computador pode executar múltiplas aplicações ao mesmo tempo. Como consequência, um dado compu- tador pode executar: • Um cliente individual • Um servidor individual • Múltiplas cópias de um cliente se comunicando com um dado servidor • Múltiplos clientes individuais se comunicando com diferentes servidores • Múltiplos servidores, cada um para um serviço diferente Permite que um computador opere múltiplos clientes é útil, pois diferentes servi- ços podem ser acessados simultaneamente. Por exemplo, um usuário roda três aplica- ções ao mesmo tempo: um navegador Web, um software de mensagens instantâneas e uma videoconferência. Cada aplicação é um cliente que se comunica com um servidor particular, de forma independente das outras aplicações. Na verdade, a tecnologia per- mite a um usuário executar várias cópias de uma mesma aplicação, cada uma se comu- nicando com um servidor (por exemplo, duas janelas em um navegador Web, cada uma acessando uma página diferente). Permitir a um dado computador executar múltiplos programas servidores é útil por duas razões. Primeira, utilizar somente um computador físico em vez de vários reduz o es- forço administrativo de manutenção. Segunda, a experiência mostra que a demanda para um serviço é muitas vezes esporádica – um determinado servidor frequentemente permanece ocioso por muito tempo, e um servidor ocioso não consome CPU. Assim, se a demanda total por serviços é pequena, consolidar vários servidores em um único computador físico pode reduzir custos drasticamente sem redução significativa no desempenho. Resumindo: Um único computador potente pode oferecer múltiplos serviços ao mesmo tem- po, basta executar um programa servidor para cada serviço. 3.9 Identifi cação de servidores e demultiplexação Como um cliente identifica um servidor? Os protocolos da Internet dividem a identifi- cação em duas partes: • Um identificador que especifica o computador onde o programa servidor está sen- do executado. • Um identificador que especifica o serviço naquele computador. Identificando o computador. Cada computador na Internet possui um identifica- dor único conhecido como endereço do protocolo da Internet (endereço IP)1. Quando vai iniciar a comunicação, o cliente deve especificar o endereço IP do servidor. Para facilitar a identificação dos servidores pelos seres humanos, cada computador também possui um nome, e o DNS (Domain Name System), descrito no Capítulo 4, é utilizado para traduzir um nome em um endereço. Assim, o usuário especifica um nome, como www.cisco.com, em vez de um endereço IP. 1 O Capítulo 21 trata de endereços IP em detalhes e explica os formatos de endereços em IPv4 e IPv6. Capítulo 3 Programação em redes e aplicações da Internet 31 Identificando um serviço. Cada serviço disponível na Internet possui um identi- ficador único de 16 bits conhecido como número da porta do protocolo (normalmente abreviado para número da porta ou simplesmente porta). Por exemplo, o serviço de envio de mensagens de e-mail utiliza a porta 25, e o serviço de navegação Web utiliza a porta 80. Quando um servidor inicia a execução, ele se registra com o sistema local es- pecificando o número da porta por onde seu serviço será acessível. Quando um cliente se conecta a um servidor remoto para requisitar determinado serviço, a requisição contém esse número de porta. O sistema operacional do servidor utiliza o número de porta da requisição para determinar qual aplicação deve tratá-la. A Figura 3.4 resume a discussão listando os passos básicos que um cliente e um servidor devem efetuar para se comunicar. Internet • Inicia depois que o servidor já está rodando • Usuário fornece o nome do servidor • Usa DNS para traduzir o nome para endereço IP • Especifica a porta do serviço que deseja utilizar, no caso, porta N • Conecta com o servidor e interage com ele • Inicia antes de todos os clientes • Registra a porta N com o sistema local • Espera contato dos clientes • Interage com o cliente até ele encerrar • Espera conexão do próximo cliente Figura 3.4 Passos conceituais de que cliente e servidor necessitam para se comunicar. 3.10 Servidores concorrentes Os passos na Figura 3.4 mostram que o servidor lida com um cliente por vez. Embora uma abordagem sequencial funcione em alguns casos triviais, a maioria dos servidores trabalha de forma concorrente, ou seja, o servidor utiliza mais que uma thread de con- trole2 para lidar com múltiplos clientes ao mesmo tempo. Para entender a importância do serviço concorrente, imagine o que acontece se um cliente efetua o download de um filme do servidor. Se o servidor atender a uma requisição por vez, todos os outros clientes vão ter que esperar até ele transferir todo o filme. Num servidor concorrente isso não acontece. Assim, se outro cliente se conectar requisitando um pequeno download (por exemplo, de uma música), sua requisição começa imediatamente e pode terminar antes que a transferência do filme seja comple- tada (dependendo do tamanho dos arquivos e da velocidade na qual cada cliente pode receber dados). Os detalhes da execução concorrentedependem do sistema operacional, mas a ideia é fácil de entender. O código do servidor concorrente é dividido em duas partes: o programa principal (thread principal) e o atendimento (thread de controle). O programa principal somente aceita a conexão do cliente e cria a thread de controle para atender a ele. Cada thread de controle interage com um único cliente e executa o código de atendi- 2 Alguns sistemas operacionais utilizam o termo thread de execução ou processo para se referir à thread de controle. Comer_03.indd 31Comer_03.indd 31 29/10/15 14:4629/10/15 14:46 32 Parte I Introdução a redes e aplicações da Internet mento. Depois de atender o cliente, a thread termina. Enquanto isso, o programa princi- pal mantém o servidor ativo – após criar a thread para atender à requisição, o programa principal espera novas conexões. Note que, se N clientes estão utilizando simultaneamente um servidor concorrente, haverão N+1 threads sendo executadas: o programa principal esperando conexões e as N threads interagindo com seus respectivos clientes. Podemos resumir: Um servidor concorrente utiliza threads de execução para atender a requisições dos múltiplos clientes ao mesmo tempo. Assim, um cliente pode ser atendido imediatamente, sem precisar esperar um cliente anterior finalizar sua conexão. 3.11 Dependências circulares entre servidores Tecnicamente, qualquer programa que contate outro está agindo como cliente, e qual- quer programa que aceite contato de outro está agindo com servidor. Na prática, a dis- tinção não é tão clara, pois um servidor de um serviço pode agir como cliente de outro. Por exemplo, antes de preencher uma página Web, o servidor Web pode ter que se tornar cliente de um servidor de banco de dados ou de um serviço de segurança (por exemplo, para verificar se o cliente tem permissão de acesso à página Web solicitada). É claro que os programadores devem ter cuidado para evitar dependências circula- res entre servidores. Por exemplo, considere o que pode acontecer se um servidor para o serviço X1 se tornar um cliente do serviço X2, que se torna um cliente do serviço X3, que se torna um cliente do serviço X1. A cadeia de requisições pode continuar indefinida- mente até que todos os três servidores esgotem seus recursos. O potencial de circularida- de é alto especialmente quando serviços são projetados de forma independente, porque nenhum dos programadores tem acesso a todos os servidores. 3.12 Interações peer-to-peer (par-a-par) Se um único servidor fornecer um determinado serviço, a conexão de rede entre ele e a Internet pode se tornar o gargalo. A Figura 3.5 ilustra o problema. Internet servidor todo o tráfego ocorre sobre um único enlace Figura 3.5 Gargalo de tráfego em um sistema que utiliza servidor único. A questão que surge é: como serviços da Internet podem ser oferecidos sem criar um gargalo central? Uma forma de evitar o gargalo é a base das aplicações de compar- tilhamento de arquivos. Conhecido como arquitetura peer-to-peer (p2p ou par-a-par), Capítulo 3 Programação em redes e aplicações da Internet 33 o esquema evita manter os dados em um servidor central. Conceitualmente, dados são distribuídos igualmente por N servidores, e cada requisição de cliente é enviada para o servidor mais apropriado. Como um determinado servidor somente fornece 1/N dos dados, a quantidade de tráfego entre o servidor e a Internet é 1/N quando comparado à arquitetura de servidor único. A ideia principal é que o software do servidor pode rodar no mesmo computador dos clientes. Se cada usuário concordar em localizar 1/N dos dados em seu computador, não serão necessários servidores especiais. A Figura 3.6 ilustra a arquitetura. O exemplo mostra somente quatro computadores. Em um sistema p2p real, o tráfego em um computador pode ser extremamente pequeno, pois N pode ser extremamente grande (dezenas de milhares). Internet 1/N de todo o tráfego Figura 3.6 Interação exemplo em um sistema peer-to-peer. 3.13 Programação em redes e API de sockets A interface utilizada pelas aplicações para comunicação na Internet é conhecida como interface de programas de aplicação (API, Application Program Interface)3. Embora os detalhes exatos de uma API dependam do sistema operacional, uma API particular tem emergido como um padrão de fato para softwares que se comunicam via Internet. Co- nhecida como API de sockets e comumente abreviada como sockets, a API está disponí- vel para muitos sistemas operacionais, como Microsoft Windows, Apple OS-X, Android e vários sistemas UNIX, incluindo o Linux. Em resumo: A API de sockets, que se tornou o padrão de fato para comunicação via Inter- net, está disponível na maioria dos sistemas operacionais. O restante do capítulo descreve funções na API de sockets; leitores que não são progra- madores podem pular os detalhes. 3 O Apêndice 1 contém uma API simplificada (com somente sete funções) e um código-exemplo que demons- tra como tal API pode ser utilizada para criar aplicações na Internet, incluindo um servidor Web funcional. Comer_03.indd 33Comer_03.indd 33 29/10/15 14:4629/10/15 14:46 Encerra aqui o trecho do livro disponibilizado para esta Unidade de Aprendizagem. Na Biblioteca Virtual da Instituição, você encontra a obra na íntegra. DICA DO PROFESSOR Acompanhe no vídeo uma explicação prática sobre a interação cliente-servidor. Conteúdo interativo disponível na plataforma de ensino! EXERCÍCIOS 1) No paradigma cliente/servidor, quais são as funções desempenhadas? A) O cliente efetua solicitações e o servidor as processa, efetuando a entrega. B) O cliente processa todos os dados e se comunica com o servidor para informar o resultado. C) O servidor só permite a conexão de um cliente, os demais entram em uma fila de espera. D) O cliente se comunica com o servidor que, por sua vez, comunica-se com outro servidor. E) O cliente se comunica com o servidor a cada minuto para verificar a rede, e o servidor mantém os registros de conexão. 2) O paradigma cliente/servidor permite o uso de computadores heterogêneos? A) Sim, todos os computadores possuem a mesma arquitetura. B) Não, porque esse tipo de arquitetura impossibilita predizer o desempenho de uma aplicação. C) Não, o correto é utilizar arquiteturas de hardwares homogêneas. D) Sim, pois, ao utilizar computadores heterogêneos, o desempenho é superior. E) Sim, esse paradigma utiliza a computação distribuída, que, por sua vez, permite a utilização de hardware para computação heterogênea. 3) Cliente e servidor podem residir no mesmo computador? A) Não, pois os clientes não vão conseguir se comunicar localmente. B) Sim, mas somente para aplicações. C) Sim, o paradigma irá funcionar do mesmo modo, mas com computação local. D) Sim, mas o número de clientes é limitado. E) Não, porque o servidor não fornece suporte local. 4) Um servidor pode fornecer múltiplos serviços e permitir o acesso a diversos clientes simultaneamente? A) Sim, mas somente um cliente pode acessar o serviço por vez. B) Sim, múltiplos acesso e serviços simultaneamente. C) Não, porque o servidor utiliza processamento paralelo. D) Não, porque é um software bloqueante. E) Sim, acessos simultâneos, mas somente um tipo de serviço. 5) Se um servidor estiver hospedado na nuvem, é possível aumentar sua capacidade, ou seja, seus recursos computacionais? A) Não, o uso é estático. B) Sim, o uso de recursos pode ocorrer sob demanda. C) Sim, mas só para os recursos de armazenamento. D) Não, uma vez contratado o serviço, este não pode ser alterado. E) Não, o uso de recursos é atrelado à máquina fisíca. NA PRÁTICA Os protocolos de transporte designam cada serviço com um identificador único. Clientes e servidores especificam o identificador de serviço; o software de protocolo usa o identificador para direcionar ao servidor correto cada requisição que chega. Pode-se citar como exemplo de interação cliente-servidor uma agência bancária. SAIBA + Para ampliaro seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Ambiente Cliente/Servidor Conteúdo interativo disponível na plataforma de ensino! Arquitetura cliente-servidor e o ambiente de Cloud Computing Conteúdo interativo disponível na plataforma de ensino! O que é Cliente-Servidor? Conteúdo interativo disponível na plataforma de ensino!
Compartilhar