25
Marcelo Z. Silva / BSI - Redes I 1 Modelo Cliente/Servidor A maioria das aplicações da Internet utilizam o modelo de interação chamado “cliente/servidor”. “Cliente” é um programa (software) executado em um host que solicita informações a outro programa, normalmente através da rede. Exemplos de programa cliente: “navegador” Web (Internet Explorer, Firefox). “Servidor” é um programa que fica em espera, aguardando solicitações de clientes e que fornece os dados solicitados quando recebe uma solicitação de um cliente (Ex. de servidor: servidores Web Apache e IIS).

Apostilas modelo cliente servidor

Embed Size (px)

Citation preview

Page 1: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 1

Modelo Cliente/Servidor

● A maioria das aplicações da Internet utilizam o modelo de interação chamado “cliente/servidor”.

– “Cliente” é um programa (software) executado em um host que solicita informações a outro programa, normalmente através da rede. Exemplos de programa cliente: “navegador” Web (Internet Explorer, Firefox).

– “Servidor” é um programa que fica em espera, aguardando solicitações de clientes e que fornece os dados solicitados quando recebe uma solicitação de um cliente (Ex. de servidor: servidores Web Apache e IIS).

Page 2: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 2

Modelo Cliente/Servidor

Page 3: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 3

Modelo Cliente/Servidor

● Outros exemplos de aplicações que utilizam o modelo cliente/servidor:

– Email (SMTP)

– Transferência de arquivos (FTP)

– Terminal remoto (telnet e SSH)

– Sistema de nomes (DNS)

– Bancos de dados (SQL)

– etc

Page 4: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 4

Modelo Cliente/Servidor

● Características de programas do tipo cliente:

– Inicia a solicitação;

– Aguarda pela resposta;

– Normalmente interage com um número pequeno de servidores ao mesmo tempo;

● Características de programas do tipo servidor:

– É passivo (aguarda solicitações dos clientes);

– Quando recebe uma solitação, processa­a e envia resposta;

– Pode interagir com um grande número de clientes ao mesmo tempo. 

Page 5: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 5

Modelo Peer to Peer (P2P)

● Outro modelo de interação entre hosts em uma rede é o chamado Peer to Peer (Ponto a Ponto), freqüentemente abreviado como P2P.

● Os programas que operam utilizando esse modelo são, ao mesmo tempo, cliente e servidor.

● Exemplo de serviço P2P: compartilhamento de arquivos.

Page 6: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 6

Modelo de Camadas TCP/IP

Page 7: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 7

Protocolos da Camada de Transporte

● Os serviços que o protocolo IP, da camada de rede, não fornece podem ser oferecidos pelos protocolos da camada de transporte (camada 4).

● Os dois principais protocolos da camada de transporte do modelo TCP/IP são:

– TCP – Transmission Control Protocol

– UDP – User Datagram Protocol● A seguir são mostrados os formatos desses dois protocolos:

Page 8: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 8

Pacote TCP

Page 9: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 9

Pacote UDP

Page 10: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 10

Encapsulamento (Exemplo)

Page 11: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 11

Encapsulamento (Exemplo)

Page 12: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 12

Encapsulamento (Exemplo)

Page 13: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 13

Portas

● Como citado anteriormente, clientes e servidores são programas em execução em um host. Clientes requisitam informações e os servidores as fornecem, como no exemplo no qual um “navegador web” (cliente web) requisita uma página web a um servidor web.

● Muitas vezes os servidores oferecem diversos tipos de serviços, em uma mesma máquina, através de diferentes protocolos. Ex:

– Web (HTTP)

– E­mail (SMTP)

– Nomes (DNS)

– etc

Page 14: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 14

Portas

● Os computadores de usuários acessando a rede normalmente executam diversos programas e recebem vários “fluxos” de dados simultaneamente como, por exemplo, carregar diversas páginas simultaneamente enquanto “baixa” arquivos e participa de “chats”;

● Assim, de modo a permitir que tenhamos diversos “fluxos” simultâneos de informações vindos de diversos servidores para diversos clientes no computador do usuário, existem as Portas.

● “Portas” são números que identificam um “canal” de dados entre dois hosts trocando informações pela rede. 

Page 15: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 15

Conexões TCP e UDP

● Uma “conexão” entre dois computadores utilizando TCP/IP (ou UDP/IP) é dada por quatro informações:

– Endereço IP do servidor

– Porta TCP ou UDP do servidor

– Endereço IP do cliente

– Porta TCP/UDP do cliente

Cliente Servidor

IP: 70.11.12.13Porta: X

IP: 200.10.10.2Porta: 80

Page 16: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 16

Portas Efêmeras

● Antes de ocorrer a troca de informações, apenas três das quatro informações necessárias estão pré­estabelecidas:

– O endereço IP do servidor

– A porta TCP ou UDP do servidor

– O endereço IP do cliente

● A quarta informação (porta do cliente) é definida “aleatoriamente” e serve e existe apenas durante uma troca de informações. Se houver nova troca, o número da porta será provavalmente diferente.

● Essa porta “aleatória” utilizada temporariamente pelo cliente é chamada de “porta efêmera” (ephemeral port). Pelo uso do comando “netstat ­an” pode­se ver conexões TCP abertas, com suas portas utilizadas.

Page 17: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 17

Portas Bem­Conhecidas

● Diversos serviços da Internet são bastante utilizados (WWW, Email, FTP, telnet etc) e por isso os servidores desses serviços utilizam um número de porta fixo para o serviço.

● Esses números de portas “fixos” são conhecidos como “Portas Bem Conhecidas” (Well­Known Ports).

● Algumas portas bem conhecidas:

– HTTP (WWW): Porta 80/TCP

– Email (SMTP): Porta 25/TCP

– Telnet: Porta 23/TCP

– POP3: Porta 110/TCP

Page 18: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 18

Protocolo IP ­ Rev.

● O protocolo IP, não provê os seguintes serviços:

– Garantia de entrega: o datagrama IP enviado pode ser simplesmente perdido ou descartado, sem que o protocolo IP notifique esse fato;

– Integridade dos dados: os dados de um datagrama IP podem estar corrompidos (“estragados”);

– Ordem de entrega: dois datagramas, A e B, que foram enviados nessa ordem, podem chegar com a ordem trocada (B e depois A);

– Checagem de unicidade: é possível que múltiplas cópias de um mesmo datagrama seja entregue ao destinatário.

Page 19: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 19

Diferenças TCP e UDP● Principais difererenças entre TCP ou UDP:

– TCP é orientado a conexão e o UDP não utiliza conexões

● Antes de haver troca de dados entre dois hosts é necessário que o cliente “abra” uma conexão entre eles através de uma seqüência chamada “handshake TCP” (descrito a seguir);

– TCP é “pesado”

● O TCP provê diversos serviços adicionais que o UDP não provê mas, justamente por isso, ele é mais complexo (e mais lento) que o UDP.

– TCP é confiável

● Caso haja a perda de um pacote TCP no caminho e ele não chegar ao destino, o sistema TCP do remetente providencia o reenvio do pacote perdido. O UDP não tem essa funcionalidade.

– Os pacotes TCP são ordenados

● Números de seqüência no cabeçalho TCP permitem que o receptor dos pacotes ordene os mesmo caso cheguem fora de ordem. O UDP também não possui esse recurso.

Page 20: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 20

Portas TCP e UDP

● Os principais campos de um cabeçalho TCP ou UDP são:

– Porta de destino (destination port): identifica o serviço do servidor ao qual se deseja conectar (ex: porta 80 – WWW)

– Porta de origem (source port): identifica a porta do cliente a ser utilizada pelo servidor para responder a requisição feita.

Page 21: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 21

Localhost● A rede 128.0.0.0/8 é especial e não aparece em uso na 

Internet.

● Ela é reservada como “localnet” e todos os hosts dessa rede são tratados como “localhost”, especialmente o endereço 127.0.0.1.

● Qualquer conexão para esse endereço é “retornada” para o próprio computador de origem.

● Ex: o comando ping 127.0.0.1 é respondido pelo localhost

Page 22: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 22

Handshake TCP● Ao contrário do protocolo UDP, o protocolo TCP é “orientado a 

conexão”. Isso significa que antes de trocar dados o TCP necessita “abrir” uma conexão.

● Essa conexão é estabelecida através de uma sequência chamada “TCP handshake” (aperto de mão TCP) e é mostrada a seguir.

● Essa seqüência envolve a troca de três pacotes e por isso é chamado de “three­way handshake” (aperto de mão em três etapas).

● O pacote inicial do handshake é chamado pacote de sincronização e tem o bit SYN ligado.

Page 23: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 23

Handshake TCP

tempo

Page 24: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 24

Estados das Portas TCP● O protocolo TCP é orientado a conexão, o que significa que antes de 

haver troca de dados é necessário que um computador estabeleça uma conexão TCP com outro através do “handshake TCP”;

● Quando um programa aceita receber conexão em uma porta TCP (servidor) dizemos que essa porta está em modo LISTEN (OUVINDO);

● Quando há uma conexão estabelecida a conexão passa para ESTABLISHED (ESTABELECIDA);

● O comando netstat ­a do Windows e dos Unix mostra o estado das conexões.

Page 25: Apostilas   modelo cliente servidor

Marcelo Z. Silva / BSI ­ Redes I 25

Sockets

## Echo Serverimport socket

host = ''port = 50000backlog = 5size = 1024s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.bind((host,port))s.listen(backlog)while 1:    client, address = s.accept()    data = client.recv(size)    if data:        client.send("Voce disse: ")        client.send(data)        client.close()