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).




                            Marcelo Z. Silva / BSI ­ Redes I            1
Modelo Cliente/Servidor




     Marcelo Z. Silva / BSI ­ Redes I   2
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




                           Marcelo Z. Silva / BSI ­ Redes I   3
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. 

                                 Marcelo Z. Silva / BSI ­ Redes I    4
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.




                         Marcelo Z. Silva / BSI ­ Redes I     5
Modelo de Camadas TCP/IP




      Marcelo Z. Silva / BSI ­ Redes I   6
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:




                          Marcelo Z. Silva / BSI ­ Redes I        7
Pacote TCP




Marcelo Z. Silva / BSI ­ Redes I   8
Pacote UDP




Marcelo Z. Silva / BSI ­ Redes I   9
Encapsulamento (Exemplo)




      Marcelo Z. Silva / BSI ­ Redes I   10
Encapsulamento (Exemplo)




      Marcelo Z. Silva / BSI ­ Redes I   11
Encapsulamento (Exemplo)




      Marcelo Z. Silva / BSI ­ Redes I   12
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
                         Marcelo Z. Silva / BSI ­ Redes I     13
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. 




                         Marcelo Z. Silva / BSI ­ Redes I       14
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
                                             IP: 200.10.10.2
                                             Porta: 80

                    Cliente                                      Servidor

                                IP: 70.11.12.13
                                Porta: X



                              Marcelo Z. Silva / BSI ­ Redes I              15
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.

                             Marcelo Z. Silva / BSI ­ Redes I           16
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



                            Marcelo Z. Silva / BSI ­ Redes I             17
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.

                           Marcelo Z. Silva / BSI ­ Redes I         18
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.
                                   Marcelo Z. Silva / BSI ­ Redes I                         19
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.




                           Marcelo Z. Silva / BSI ­ Redes I             20
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




                         Marcelo Z. Silva / BSI ­ Redes I          21
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.

                         Marcelo Z. Silva / BSI ­ Redes I            22
Handshake TCP




t
e
m
p
o




     Marcelo Z. Silva / BSI ­ Redes I   23
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.




                           Marcelo Z. Silva / BSI ­ Redes I           24
Sockets
## Echo Server
import socket

host = ''
port = 50000
backlog = 5
size = 1024
s = 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()

                       Marcelo Z. Silva / BSI ­ Redes I   25

Apostilas modelo cliente servidor

  • 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). Marcelo Z. Silva / BSI ­ Redes I 1
  • 2.
    Modelo Cliente/Servidor Marcelo Z. Silva / BSI ­ Redes I 2
  • 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 Marcelo Z. Silva / BSI ­ Redes I 3
  • 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.  Marcelo Z. Silva / BSI ­ Redes I 4
  • 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. Marcelo Z. Silva / BSI ­ Redes I 5
  • 6.
    Modelo de Camadas TCP/IP Marcelo Z. Silva / BSI ­ Redes I 6
  • 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: Marcelo Z. Silva / BSI ­ Redes I 7
  • 8.
  • 9.
  • 10.
    Encapsulamento (Exemplo) Marcelo Z. Silva / BSI ­ Redes I 10
  • 11.
    Encapsulamento (Exemplo) Marcelo Z. Silva / BSI ­ Redes I 11
  • 12.
    Encapsulamento (Exemplo) Marcelo Z. Silva / BSI ­ Redes I 12
  • 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 Marcelo Z. Silva / BSI ­ Redes I 13
  • 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.  Marcelo Z. Silva / BSI ­ Redes I 14
  • 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 IP: 200.10.10.2 Porta: 80 Cliente Servidor IP: 70.11.12.13 Porta: X Marcelo Z. Silva / BSI ­ Redes I 15
  • 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. Marcelo Z. Silva / BSI ­ Redes I 16
  • 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 Marcelo Z. Silva / BSI ­ Redes I 17
  • 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. Marcelo Z. Silva / BSI ­ Redes I 18
  • 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. Marcelo Z. Silva / BSI ­ Redes I 19
  • 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. Marcelo Z. Silva / BSI ­ Redes I 20
  • 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 Marcelo Z. Silva / BSI ­ Redes I 21
  • 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. Marcelo Z. Silva / BSI ­ Redes I 22
  • 23.
    Handshake TCP t e m p o Marcelo Z. Silva / BSI ­ Redes I 23
  • 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. Marcelo Z. Silva / BSI ­ Redes I 24
  • 25.