Upload
daniel-silveira
View
1.955
Download
2
Embed Size (px)
Citation preview
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).
Marcelo Z. Silva / BSI Redes I 2
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
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, processaa e envia resposta;
– Pode interagir com um grande número de clientes ao mesmo tempo.
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.
Marcelo Z. Silva / BSI Redes I 6
Modelo de Camadas TCP/IP
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:
Marcelo Z. Silva / BSI Redes I 8
Pacote TCP
Marcelo Z. Silva / BSI Redes I 9
Pacote UDP
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
Encapsulamento (Exemplo)
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)
– Email (SMTP)
– Nomes (DNS)
– etc
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.
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
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” podese ver conexões TCP abertas, com suas portas utilizadas.
Marcelo Z. Silva / BSI Redes I 17
Portas BemConhecidas
● 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” (WellKnown 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 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 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 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 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 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 “threeway 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 23
Handshake TCP
tempo
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.
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()