Redes de computadores II Modelo Cliente/servidor Prof: Diovani Milhorim Modelo cliente/servidor Modelos de organização de sistemas distribuídos Cliente-servidor Pares (peer to peer) Filtros Modelo cliente/servidor Paradigma cliente-servidor Aplicações Aplicações que esperam por comunicação Aplicações que iniciam a comunicação Servidores. Clientes. Servidores : Oferecem serviços aos usuários. Clientes : Solicitam serviços aos servidores. Modelo cliente/servidor Paradigma cliente-servidor Modelo Cliente/servidor Modelo mais usado para aplicações distribuídas não paralelas. Um processo servidor está sempre a espera de uma comunicação. O processo cliente tem a iniciativa de começar a comunicação quando deseja um serviço através de alguma forma de comunicação. cliente cliente pedido resposta servidor cliente Modelo Cliente/servidor Modelo cliente/servidor – Processos em uma mesma unidade de processamento. Processo Processo cliente cliente Servidor página Servidor arquivos .... mensagem Kernel Servidor impressão Modelo Cliente/servidor Modelo cliente/servidor – Processos em unidade de processamento diferentes. Maquina 1 Maquina 2 Maquina 3 Máquina 4 cliente Servidor páginas Servidor arquivos Servidor impressão kernel kernel kernel kernel rede mensagens Modelo Cliente/servidor Modelo cliente/servidor – Adaptabilidade a sistemas distribuídos O cliente se comunica com o servidor trocando mensagens, sem ter conhecimento da localização do servidor (local ou remoto) Para o modelo cliente servidor não interessa onde se localiza o servidor desde que possa ser alcançado através de mensagens. Pode-se distribuir serviços diferente, em unidades de processamento diferentes, economizando-se e compartilhando recursos. O sistema é transparente ao cliente. Modelo Cliente/servidor Um exemplo de aplicação cliente servidor. Nome do arquivo Nome do arquivo stdin servidor cliente Conteúdo ou mensagem de erro stdout Conteúdo ou mensagem de erro arquivo Modelo Cliente/servidor Comunicação entre clientes e servidores: Usando primitivas de comunicação: Sistemas de midleware para evocações de operações remotas: TCP/IP (udp, tcp) Esconde os detalhes da comunicação permitindo ao programador se concentrar nos detalhes da programação. Sistemas de RPC/RMI permite que programadores vejam servidores como objetos locais. Invoquem uma operação em um servidor da mesma forma que em um objeto local. Web services: Permitem evocar serviços remotos usando protocolo HTTP. Modelo Cliente/servidor Comunicação entre clientes e servidores: Modelo Cliente/servidor Comunicação entre clientes e servidores: Modelo Cliente/servidor Comunicação entre clientes e servidores: Modelo Cliente/servidor Comunicação entre clientes e servidores: A generalidade dos serviços básicos disponíveis na internet se adaptam ao modelo cliente servidor. Pedidos e resposta codificadas como texto (embora os usuários utilizem na maioria dos casos interfaces gráficas). Exemplos: FTP: transferência de arquivos. SMTP: servidor de e-mail Messenger : mensagem instantânea. Skype : voz sobre ip. Modelo Cliente/servidor Comunicação entre clientes e servidores: Exemplo: Servidor Proxy. Modelo Cliente/servidor Comunicação entre clientes e servidores: Exercício: Utilizar o aplicativo telnet para se conectar a um servidor web remoto e baixar página inicial. c:> telnet www.google.com.br 80 Digitar: GET index.xml Veja o cabeçalho da resposta e o conteúdo da mensagem. Modelo Cliente/servidor Comunicação entre clientes e servidores: Exercício: Veja o script em : www.voile.com.br/diovani/redes2/calculadora.php Este é um script em PHP que se utiliza do conceito cliente/servidor via web para implementar aplicação que realiza cálculos. Modelo Cliente/servidor form action="index.php" method="post" name="cd" id= "cd"> <div align="center"> <input name="v1" type="text" id="v1"> </p> </div> <p align="center"> <input name="v2" type="text" id="v2"> </p> <p align="center"> <input name="r" type="submit" id="r" value="Calcular"> </p> <p align="center"> <input type=radio name= "operac" value="soma" id = "operac" > Soma <input type=radio name="operac" value="subtracao" id ="operac"> Subtração <input type=radio name="operac" value="multiplicacao" id ="operac"> Multiplicação <input type=radio name="operac" value="divisao" id ="operac"> Divisão <p> </p> </form> </p> <label></label> <? $x = $_POST ["operac"]; $v1 = $_POST["v1"]; $v2 = $_POST["v2"]; if ($x == "soma"){ $y = $v1 + $v2; } if ($x == "subtracao"){ $y = $v1 - $v2; } if ($x == "multiplicacao"){ $y = $v1 * $v2; } if ($x == "divisao"){ $y = $v1 / $v2; } echo $y; ?> Modelo Cliente/servidor Modelo Par a par (peer to peer) Modelo alternativo ao modelo cliente-servidor Não existe a diferenciação de quem é o servidor Os processos estão no mesmo nível Modelo Cliente/servidor Modelo Par a par (peer to peer) A flexibilidade do modelo pode tornar seu entendimento mais complexo. Modelo Cliente/servidor Exemplo de aplicação Par a par (peer to peer) Algoritmo para determinação da topologia de uma rede (echo/probe) n1 n2 n4 n3 Modelo Cliente/servidor Modelo Filtro Cada processo está sempre processando uma ou mais entradas e jogando o resultado em outro processo. Um pipeline é um exemplo deste modelo