Redes de Computadores I
description
Transcript of Redes de Computadores I
Redes de Computadores I
Prof. Mateus Raeder
Universidade do Vale do Rio dos Sinos- São Leopoldo -
Redes de Computadores I – Prof. Mateus Raeder
Sumário
• Camada de aplicação
• Protocolos de aplicação– HTTP– FTP
• Exercícios
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
Metas:• Aprender aspectos
conceituais e de implementação de protocolos de aplicação em redes– Paradigma cliente
/servidor– Modelos de serviço
• Aprender sobre protocolos através do estudo de protocolos populares do nível da aplicação
Conhecer...• ...protocolos específicos:
– http– ftp– smtp– pop– dns
• ...a programação de aplicações de rede.– Programação usando
sockets
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• É a camada mais próxima dos usuários• Nas demais camadas, existem 1 ou 2
protocolos principais• Na camada de aplicação, existem vários
protocolos, um para cada tipo de serviço– Além disso, um serviço de rede pode fazer uso
de mais de um protocolo• Ex.: o serviço de e-mail pode utilizar os protocolos
SMTP, POP e IMAP
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• Aplicações de rede são a “razão de ser” de uma rede de computadores– Qual a necessidade de
projetar uma rede se não existissem aplicações que fossem usá-la?
• Aplicações de rede são distribuídas em dois ou mais sistemas finais
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
applicationtransportnetworkdata linkphysical
• Aplicações comunicam-se através de troca de mensagens– Ex.: Correio eletrônico,
transferência de arquivos, WWW, login remoto, voz, etc...
– As aplicações de rede têm protocolos da camada de aplicação que definem detalhes desta comunicação via troca de mensagens
Redes de Computadores I – Prof. Mateus Raeder
Protocolos de aplicação
• Protocolos da camada de aplicação:– Não são a aplicação.– APENAS uma “parte” da aplicação.– Define mensagens trocadas por aplicações e ações tomadas
em sua resposta.– Usam serviços providos por protocolos de camadas inferiores
Os processos em dois sistemas diferentes comunicam-se entre si, trocando mensagens através da rede de
computadores.Um processo de emissão cria e emite mensagens na rede;
um processo de recepção recebe estas mensagens e responde possivelmente emitindo mensagens de volta.
Redes de Computadores I – Prof. Mateus Raeder
Como os processos trocam mensagens
• Um protocolo da camada de aplicação define como os processos de aplicação, funcionando em sistemas de extremidade diferentes, trocam mensagens.
• Detalhadamente, um protocolo da camada de aplicação define:– Os tipos de mensagens trocadas, por exemplo, mensagens
do pedido e mensagens de resposta.– A sintaxe dos vários tipos de mensagem, tais como os
campos na mensagem e como os campos são delineados.– A semântica dos campos, isto é, o significado da informação
nos campos.– As regras para determinar quando e como um processo emite
mensagens e responde às mensagens.
Redes de Computadores I – Prof. Mateus Raeder
Aplicações de rede
• Um processo é um programa que roda num host.– Dois processos no mesmo
host se comunicam usando comunicação entre processos (interprocess comunnication), definida pelo sistema operacional (SO).
– Dois processos em hosts distintos se comunicam usando um protocolo da camada de aplicação
Um agente de usuário(UA) é uma interfaceentre o usuário e aaplicação de rede.• WWW: browser.• Correio: leitor/compositor de mensagens• Streaming audio/video:tocador (player) de mídia
Redes de Computadores I – Prof. Mateus Raeder
Paradigma cliente-servidor
• Existem 2 figuras: cliente e servidor– Cliente: solicita um serviço
• Ex.: leitor de correio eletrônico
– Servidor: recebe, processa e responde• Ex.: servidor de correio
Redes de Computadores I – Prof. Mateus Raeder
Camada de aplicação
• API - Aplication Program Interface:– Interface de programação de aplicações
• Define a interface entre a aplicação e camada de transporte.
• Socket (= tomada) : API da Internet– Dois processos se comunicam enviando dados
para um socket , ou lendo dados de um socket.
Redes de Computadores I – Prof. Mateus Raeder
Comunicação pelos sockets (1)
• Os dois processos comunicam-se entre si emitindo e recebendo mensagens através de seus sockets.
• O socket de um processo pode ser pensado como do porta do processo:– Um processo emite e recebe mensagens da rede,
através de seus sockets.– Quando um processo quer emitir uma mensagem a um
outro processo em um outro host, empurra a mensagem para fora de sua porta.
– O processo supõe que há um infra-estrutura de transporte no outro lado da porta, a qual transportará a mensagem até a porta do processo do destino.
Redes de Computadores I – Prof. Mateus Raeder
Como um processo identifica outro ?
• Pergunta: Como um processo pode “identificar”o outro processo com o qual quer se comunicar?
• Endereço IP do host do outro processo.– Por enquanto: basta saber que o IP ADDRESS é um valor de
32-bits que identifica unicamente o sistema de extremidade. Mais precisamente, identifica unicamente a interface (placa) que conecta esse host à Internet. Ex. 200.145.9.9
• “Número de porta” : permite que o hospedeiro receptor determine a qual processo deve ser entregue a mensagem. Exemplo: Porta 80/TCP.
• Ex. 200.145.9.9:80 (Ver RFC 1700 - Portas well-known)
Redes de Computadores I – Prof. Mateus Raeder
Que serviços de transporte a aplicação precisa?
• Quando se desenvolve uma aplicação, deve-se escolher um dos protocolos disponíveis do transporte.– Como você faz esta escolha?
• Estuda-se os serviços fornecidos pelos protocolos disponíveis do transporte, e escolhe-se o protocolo com os serviços que melhor se adaptem às necessidades de sua aplicação.
Redes de Computadores I – Prof. Mateus Raeder
Perda de dados:• Algumas aplicações (porexemplo áudio) podemtolerar algumas perdas.• Outras (por exemplo,transferência dearquivos, telnet) exigemtransferência 100%confiável
Temporização:• Algumas aplicações(por exemplo,telefonia em Internet,jogos interativos)requerem baixoretardo para serem“viáveis”.
Largura de banda:• Algumas aplicações (por exemplo , multimídia) requeremquantia mínima de banda para serem “viáveis”.• Outras aplicações (“elásticas”) conseguem usar qualquerquantia de banda disponível.
Que serviços de transporte a aplicação precisa?
Redes de Computadores I – Prof. Mateus Raeder
Requisitos do serviço de transporte de aplicações comuns
Aplicação Perdas BandaSensibilidade
temporal
transferência de arqs sem perdas elástica não
correio sem perdas elástica não
documentos WWW sem perdas elástica não
áudio/vídeo de tempo real
toleranteáudio: 5Kb-1Mb | vídeo:10Kb-5Mb
sim, décimos de seg.
áudio/vídeo gravado tolerante como anterior sim, alguns seg.
jogos interativos tolerante > alguns Kbps sim, décimos de seg.
apps financeiras sem perdas elástica sim e não
Redes de Computadores I – Prof. Mateus Raeder
• Serviço TCP:– Orientado a conexão:
estabelecimento exigido entre cliente e servidor.
– Transporte confiável entre processos emissor e receptor.
– Controle de fluxo: emissor não vai “afogar” receptor.
– Controle de congestionamento: estrangular emissor quando a rede está carregada.
• Serviço UDP:– Não orientado a
conexão– Transferência de dados
não confiável entre processos remetente e receptor.
– Não provê: estabelecimento da conexão, confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima.
– Pergunta-se: Qual é o interesse em ter um UDP?
Serviços providos por protocolos de transporte Internet
Redes de Computadores I – Prof. Mateus Raeder
Aplicações Internet: seus protocolos e seus protocolos de transporte
AplicaçãoProtocolo da
camada de app.Protocolo de
transporte usado
Correio eletrônico smtp [RFC 821] TCP
Acesso terminal remoto
telnet [RFC 854] TCP
WWW http [RFC 2068] TCP
Transferência de arquivos
ftp [RFC 959] TCP
streaming multimídiaproprietário (Ex: RealNetworks)
TCP ou UDP
Servidor de arquivo remoto
NFS TCP ou UDP
Telefonia Internetproprietário (Ex:
Volcatec)tipicamente UDP
Redes de Computadores I – Prof. Mateus Raeder
Os principais protocolos deaplicaçãoHTTP e FTP
Redes de Computadores I – Prof. Mateus Raeder
• Página WWW:– Consiste de “objetos”– Endereçada por um URL -
Universal Resource Locator.
• Quase todas as páginas WWW consistem de:– Página base HTML, e– Vários objetos
referenciados.
• URL tem duas partes:– nome de hospedeiro, e
nome de caminho: • www.inf.unisinos.br/imgs/
logo.gif
• Agente de usuário para WWW se chama de browser:– MS Internet Explorer.– Firefox.
• Servidor para WWW se chama “servidor WWW”:– Apache (domínio público).– MS Internet Information
Server (IIS).
WWW
Redes de Computadores I – Prof. Mateus Raeder
WWW: o protocolo http
• http: HyperText Transfer Protocol– Protocolo da camada de
aplicação para WWW.– Modelo cliente-servidor
• cliente: browser que solicita, recebe (“visualiza”) objetos WWW.
• servidor: servidor WWW envia objetos em resposta a pedidos.
– http1.0: RFC 1945– http1.1: RFC 2068
PC runningExplorer
Server running
Apache Webserver
Mac runningSafari
HTTP request
HTTP request
HTTP response
HTTP response
Redes de Computadores I – Prof. Mateus Raeder
• Usa serviço de transporte TCP:– 1.) Cliente inicia conexão TCP
(cria socket) ao servidor, na porta 80.
– 2.) Servidor aceita conexão TCP do cliente.
– 3.) Troca mensagens http (mensagens do protocolo da camada de aplicação) entre browser (cliente http) e servidor WWW (servidor http).
– 4.) Encerra conexão TCP.
• http é “sem estado” (stateless)– Servidor não mantém
informação sobre pedidos anteriores do cliente.
Mais sobre o protocolo http
Protocolos que mantêm “estado”são complexos!História passada (estado) tem queser guardada.Caso caia servidor/cliente, suasvisões do “estado” podem serinconsistentes, devem serreconciliadas
Redes de Computadores I – Prof. Mateus Raeder
Exemplo de http
Supondo que um usuário digita a URL www.inf.unisinos.br/index.html
1a. Cliente http inicia conexão TCPao servidor http (processo) emwww.inf.unisinos.brPorta 80 é padrão para servidor http.
2. cliente http envia mensagem depedido de http (contendo URL)através do socket da conexão TCP
1b. servidor http no hospedeirowww.inf.unisinos.br espera por conexão TCP na porta 80. “Aceita” conexão, avisando ao cliente
3. servidor http recebe mensagem depedido, formula mensagem de respostacontendo objeto solicitado(index.html), e envia mensagem viasocket.
TEMPO
(Ex: contém texto,referências a 10imagens jpeg)
...
Redes de Computadores I – Prof. Mateus Raeder
Exemplo de http (continuação)
TEMPO
4. servidor http encerra conexão TCP .
5. cliente http recebe mensagemde resposta contendo arquivohtml “inicial.html”, e visualizaHtml. Analisando arquivo html,encontra 10 objetos jpegreferenciados.
6. Passos 1 a 5 repetidos paracada um dos 10 objetos jpeg
E então, continua...
Redes de Computadores I – Prof. Mateus Raeder
• Não persistente:– HTTP/1.0– Servidor analisa pedido,
responde, e encerra conexão TCP.
– 2 RTTs para trazer cada objeto (RTT = round trip Time tempo de viagem de ida e volta)
• Persistente:– Default for HTTP/1.1– Na mesma conexão TCP:
• servidor analisa pedido, responde, analisa novo pedido, etc...
– Cliente envia pedidos para todos objetos referenciados, assim que recebe o HTML base .
– Menos RTTs.– Consexão é encerrada
depois de determinado tempo sem uso
Conexões não-persistente e persistente
Redes de Computadores I – Prof. Mateus Raeder
Conexão não-persistente (1)1. O cliente HTTP inicia uma conexão TCP com o servidor.2. O cliente emite mensagem de requisição HTTP através do
socket associado com a conexão do TCP que foi estabelecida.3. Servidor HTTP recebe o request através do socket
associado com a conexão estabelecida, recupera o objeto /ai/inicial.html de seu armazenamento, encapsula o objeto em uma mensagem HTTP de resposta, e emite a mensagem de resposta através do socket.
4. O servidor diz ao cliente para fechar a conexão TCP.5. O cliente recebe a mensagem de resposta. A conexão TCP
termina. A mensagem indica que o objeto encapsulado é um arquivo HTML. O cliente extrai o arquivo da mensagem de resposta, analisa, e encontra referências a 10 objetos do JPEG.
6. As primeiras quatro etapas são repetidas então para cada um dos objetos JPEG referenciados.
Redes de Computadores I – Prof. Mateus Raeder
Conexão não-persistente (2)
• Cada conexão TCP transporta exatamente uma mensagem de pedido e uma mensagem de resposta. No nosso exemplo, quando um usuário requisita página, 11 conexões TCP são geradas.
• Nas etapas das conexões não persistentes, cada conexão do TCP é fechada depois que o servidor envia o objeto: a conexão não persiste para outros objetos.
• Quando o browser recebe uma página, mostra a página ao usuário. Dois browsers diferentes podem interpretar (isto é, mostrar ao usuário) um Web page de maneiras um diferentes. O HTTP não tem nada ver como um Web page é interpretado por um cliente.
• As especificações do HTTP (RFC1945 e RFC2616) definem somente o protocolo de comunicação entre o programa HTTP do cliente e o programa HTTP do servidor.
Redes de Computadores I – Prof. Mateus Raeder
RTT (Round Trip Time)
• Definição: tempo que um pacote leva para ser enviado e retornar ao cliente;
• Tempo de resposta:– Um RTT para iniciar a
conexão TCP;– Um RTT para enviar
requisição HTTP e receber os primeiros bytes da resposta;
• Tempo de transmissão do arquivo– Total: 2RTT + tempo de
transmissão
time to transmit file
initiate TCPconnection
RTT
requestfile
RTT
filereceived
time time
Redes de Computadores I – Prof. Mateus Raeder
• Problemas do HTTP não persistente:– Gasta 2RTT para cada objeto– OS deve alocar recursos para cada conexão TCP– Browsers costumam abrir conexões paralelas
• HTTP persistente– Servidor deixa as conexões abertas após enviar a resposta– Mensagens HTTP seguintes são enviadas usando esta
conexão
Conexão persistente
Redes de Computadores I – Prof. Mateus Raeder
Conexão persistente
• Persistente sem paralelismo– Cliente envia nova requisição apenas quando a mensagem
anterior tiver sido recebida– Um RTT para cada objeto referenciado
• Persistente com paralelismo– Padrão no HTTP/1.1– Cliente envia requisições no momento em que encontra
objetos referenciados– Pouco maior que um RTT para todos os objetos
referenciados