Capítulo 2 A Camada de Aplicação Prof. Othon Marcelo Nunes Batista Mestre em Informática - PDF
Download "Capítulo 2 A Camada de Aplicação Prof. Othon Marcelo Nunes Batista Mestre em Informática"
Filipe Porto Santarém
1 Capítulo 2 A Camada de Aplicação Prof. Othon Marcelo Nunes Batista Mestre em Informática slide 1
2 Capítulo 2: Camada de aplicação 2.1 Princípios de aplicações de rede 2.2 A Web e o HTTP 2.3 FTP 2.4 Correio eletrônico v SMTP, POP3, IMAP 2.5 DNS 2.6 Aplicações P2P 2.7 Programação de sockets com UDP 2.8 Programação de sockets com TCP slide 2
3 Web e HTTP primeiro, algum jargão página Web consiste em objetos objeto pode ser arquivo HTML, imagem JPEG, applet Java, arquivo de áudio, página Web consiste em arquivo HTML básico que inclui vários objetos referenciados cada objeto é endereçável por um URL exemplo de URL: nome do hospedeiro nome do caminho slide 3
4 Visão geral do HTTP HTTP: HyperText Transfer Protocol protocolo da camada de aplicação da Web modelo cliente/servidor v cliente: navegador que requisita, recebe, exibe objetos Web v servidor: servidor Web envia objetos em resposta a requisições PC rodando Explorer Mac rodando Navigator Servidor rodando servidor Web Apache slide 4
5 usa TCP: cliente inicia conexão TCP (cria socket) com servidor, porta 80 servidor aceita conexão TCP do cliente mensagens HTTP (do protocolo da camada de aplicação) trocadas entre navegador (cliente HTTP) e servidor Web (servidor HTTP) conexão TCP fechada HTTP é sem estado servidor não guarda informações sobre requisições passadas do cliente aparte Protocolos que mantêm estado são complexos! história passada (estado) deve ser mantida se servidor/cliente falhar, suas visões do estado podem ser incoerentes, devem ser reconciliadas slide 5
6 Conexões HTTP HTTP não persistente no máximo um objeto é enviado por uma conexão TCP. HTTP persistente múltiplos objetos podem ser enviados por uma única conexão TCP entre cliente e servidor. slide 6
7 HTTP não persistente Suponha que o usuário digite o URL tempo 1a. Cliente HTTP inicia conexão TCP com servidor HTTP (processo) em na porta Cliente HTTP envia mensagem de requisição HTTP (contendo URL) pelo socket de conexão TCP. Mensagem indica que cliente deseja o objeto somedepartment/home.index. (contém texto, referências a 10 imagens JPEG) 1b. Servidor HTTP no hospedeiro esperando conexão TCP na porta 80. aceita conexão, notificando cliente 3. Servidor HTTP recebe mensagem de requisição, forma mensagem de resposta contendo objeto requisitado e envia mensagem para seu socket slide 7
8 HTTP não persistente tempo 5. Cliente HTTP recebe mensagem de resposta contendo arquivo html, exibe html. Analisando arquivo html, acha 10 objetos JPEG referenciados. 6. Etapas 1-5 repetidas para cada um dos 10 objetos JPEG. 4. Servidor HTTP fecha conexão TCP. slide 8
9 HTTP não persistente: tempo de resposta definição de RTT: tempo para um pequeno pacote trafegar do cliente ao servidor e retornar. tempo de resposta: um RTT para iniciar a conexão TCP um RTT para a requisição HTTP e primeiros bytes da resposta HTTP retornarem tempo de transmissão de arquivo total = 2RTT + tempo de transmissão inicia conexão TCP RTT requisita arquivo RTT arquivo recebido tempo tempo tempo para transmitir arquivo slide 9
10 HTTP persistente problemas do HTTP não persistente: requer 2 RTTs por objeto overhead do SO para cada conexão TCP navegadores geralmente abrem conexões TCP paralelas para buscar objetos referenciados HTTP persistente: servidor deixa a conexão aberta depois de enviar a resposta mensagens HTTP seguintes entre cliente/servidor enviadas pela conexão aberta cliente envia requisições assim que encontra um objeto referenciado no mínimo um RTT para todos os objetos referenciados slide 10
11 Mensagem de requisição HTTP dois tipos de mensagens HTTP: requisição, resposta mensagem de requisição HTTP: v ASCII (formato de texto legível) linha de requisição (comandos GET, POST, HEAD) slide 11 linhas de cabeçalho carriage return, line feed indica final da mensagem GET /somedir/page.html HTTP/1.1 Host: User-agent: Mozilla/4.0 Connection: close Accept-language:fr (carriage return, line feed extras)
12 Mensagem de requisição HTTP: formato geral slide 12
13 Upload da entrada do formulário método POST: página Web geralmente inclui entrada do formulário entrada é enviada ao servidor no corpo da entidade método do URL: usa o método GET entrada é enviada no campo de URL da linha de requisição: slide 13
14 Tipos de método HTTP/1.0 GET POST HEAD v pede ao servidor para deixar objeto requisitado fora da resposta HTTP/1.1 GET, POST, HEAD PUT v envia arquivo no corpo da entidade ao caminho especificado no campo de URL DELETE v exclui arquivo especificado no campo de URL slide 14
15 Mensagem de resposta HTTP linha de status (protocolo código de estado frase de estado) linhas de cabeçalho dados, p. e., arquivo HTML requisitado HTTP/ OK Connection close Date: Thu, 06 Aug :00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun Content-Length: 6821 Content-Type: text/html dados dados dados dados dados... slide 15
16 Códigos de estado da resposta HTTP primeira linha da mensagem de resposta servidor->cliente alguns exemplos de código: 200 OK v requisição bem-sucedida, objeto requisitado mais adiante 301 Moved Permanently v objeto requisitado movido, novo local especificado mais adiante na mensagem (Location:) 400 Bad Request v mensagem de requisição não entendida pelo servidor 404 Not Found v documento requisitado não localizado neste servidor 505 HTTP Version Not Supported slide 16
17 Testando o HTTP (lado cliente) você mesmo 1. Use Telnet para seu servidor Web favorito: telnet cis.poly.edu 80 Abre conexão TCP com porta 80 (porta HTTP default do servidor) em cis.poly.edu. Qualquer coisa digitada é enviada à porta 80 em cis.poly.edu 2. Digite uma requisição HTTP GET: GET /~ross/ HTTP/1.1 Host: cis.poly.edu Digitando isto (pressione carriage return duas vezes), você envia esta requisição GET mínima (mas completa) ao servidor HTTP 3. Veja a mensagem de resposta enviada pelo servidor HTTP! slide 17
18 Estado usuário-servidor: cookies Muitos sites importantes usam cookies Quatro componentes: 1) linha de cabeçalho de cookie da mensagem de resposta HTTP 2) linha de cabeçalho de cookie na mensagem de requisição HTTP 3) arquivo de cookie na máquina do usuário, controlado pelo navegador do usuário 4) banco de dados de apoio no site Web Exemplo: Susana sempre acessa a Internet pelo PC visita um site de comércio eletrônico pela primeira vez quando as primeiras requisições HTTP chegam ao site, este cria: v ID exclusivo v entrada no banco de dados de apoio para o ID slide 18
19 Estado usuário-servidor: cookies cliente servidor ebay 8734 arq. de cookie ebay 8734 amazon 1678 uma semana depois: ebay 8734 amazon 1678 requisição http normal resposta http normal Set-cookie: 1678 requisição http normal cookie: 1678 resposta http normal requisição http normal cookie: 1678 resposta http normal servidor Amazon cria ID 1678 para usuário cria entrada ação específica do cookie ação específica do cookie acessa acessa banco de dados de apoio slide 19
20 slide 20 Estado usuário-servidor: cookies O que os cookies podem ter: autorização carrinhos de compras recomendações estado da sessão do usuário ( da Web) Como manter o estado : extremidades do protocolo: mantêm estado no emissor/receptor por múltiplas transações cookies: mensagens HTTP transportam estado Cookies e privacidade: aparte cookies permitem que os sites descubram muito sobre você você pode fornecer nome e aos sites
21 Caches Web (servidor proxy) objetivo: satisfazer a requisição do cliente sem envolver servidor de origem usuário prepara navegador: acessos à Web via cache navegador envia todas as requisições HTTP ao cache v objeto no cache: cache retorna objeto v ou cache requisita objeto do servidor de origem, depois retorna objeto ao cliente cliente cliente servidor proxy servidor de origem servidor de origem slide 21
22 Mais sobre caching Web cache atua como cliente e servidor normalmente, cache é instalado por ISP (da universidade, empresa, residencial) Por que caching Web? reduz tempo de resposta à requisição do cliente reduz tráfego no enlace de acesso de uma instituição Internet densa com caches: permite que provedores de conteúdo fracos remetam conteúdo efetivamente (mas o mesmo ocorre com compartilhamento de arquivos P2P) slide 22
23 Exemplo de caching suposições tamanho médio do objeto = bits taxa de requisição média dos navegadores da instituição aos servidores de origem = 15/s slide 23 atraso do roteador institucional a qualquer servidor de origem e de volta ao roteador = 2 s consequências utilização na LAN = 15% utilização no enlace de acesso = 100% atraso total = atraso da Internet + atraso do acesso + atraso da LAN = 2 s + x minutos + y milissegundos rede institucional Internet pública servidores de origem enlace de acesso a 15 Mbps LAN de 100 Mbps cache institucional
24 Exemplo de caching solução possível aumentar largura de banda do enlace de acesso para, digamos, 100 Mbps consequência utilização na LAN = 15% utilização no enlace de acesso = 15% atraso total = atraso da Internet + atraso do acesso + atraso da LAN = 2 s + x ms + y ms normalmente, uma atualização dispendiosa rede institucional Internet pública servidores de origem enlace de acesso a 100 Mbps LAN de 100 Mbps cache institucional slide 24
25 Exemplo de caching possível solução: instalar cache suponha que índice de acerto é 0,4 consequência 40% de requisições serão satisfeitas imediatamente 60% de requisições satisfeitas pelo servidor de origem utilização do enlace de acesso reduzida para 60%, resultando em atrasos insignificantes (digamos, 10 ms) atraso médio total = atraso da Internet + atraso de acesso + atraso da LAN = 0,6*(2,01) s + 0,4*milissegundos < 1,4 s rede institucional Internet pública servidores de origem enlace de acesso a 15 Mbps LAN de 100 Mbps cache institucional slide 25
26 GET condicional objetivo: não enviar objeto cache servidor se o cache tiver versão atualizada cache: especifica data da cópia em cache na requisição HTTP If-modified-since: <data> msg requisição HTTP If-modified-since: <data> resposta HTTP HTTP/ Not Modified objeto não modificado servidor: resposta não contém objeto se a cópia em cache estiver atualizada: HTTP/ Not Modified msg requisição HTTP If-modified-since: <data> resposta HTTP HTTP/ OK <dados> objeto modificado slide 26
Capítulo 2. Camada de aplicação 5/3/2009. Camada de aplicação. Algumas aplicações de rede. Parte 2: Camada de aplicação
5/3/009 Redes de computadores e a Internet Capítulo Camada de aplicação.1 Princípios de aplicações de rede. Web e HTTP.3 FTP.4 Correio eletrônico SMTP, POP3, IMAP.5 DNS.6 Compartilhamento de arquivos PP.7