Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 18 de maio de 2017
Visão Geral 1 Visão Geral 2 3 4
Web e o HTTP Relembrando rapidamente, página web é construída com objetos um objeto pode ser um arquivo HTML, uma imagem JPEG, um applet Java, um arquivo de audio, etc. páginas web são criadas de arquivos HTML base que incluem diversos objetos referenciados cada objeto é endereçável por uma URL, ex.: www.facom.ufms.br/~brivaldo/redes-de-computadores-pt br.html nome do host: www.facom.ufms.br caminho: / brivaldo/redes-de-computadores-pt br.html
Visão Geral do HTTP HTTP: hypertext transfer protocol protocolo da camada de aplicação para Web usa o modelo cliente/servidor: cliente: navegador faz uma requisição, recebe a resposta (usando o protocolo HTTP) e mostra os objetos Web servidor: servidor Web envia (usando o protocolo HTTP) objetos em resposta as requisições
Visão Geral do HTTP usa TCP: cliente inicia uma conexão TCP (cria um socket) com o servidor (porta 80) o servidor aceita a conexão TCP com o cliente mensagens HTTP (mensagens da camada de aplicação) são trocadas entre o navegador (cliente HTTP) e o servidor Web (servidor HTTP) a conexão TCP é encerrada HTTP é sem estado o servidor não mantém informações sobre requisições de clientes antigos protocolos que mantém o estado são complexos! manter o histórico (estado) é possível se o servidor/cliente travar, sua visão do estado pode se tornar inconsistente, mas pode ser reconciliada (recuperada)
Conexões HTTP HTTP não-persistente para cada objeto é criada uma conexão TCP a conexão é então fechada baixar multiplos objetos requer várias conexões HTTP persistente múltiplos objetos podem ser enviados por uma única conexão TCP entre o cliente e o servidor
Conexões HTTP Não-Persistentes Suponha o acesso a URL: http://www.ufms.br/facom/index.html (possui o texto e referência a 10 imagens jpeg) cliente: 1 O cliente HTTP inicia uma conexão TCP com o servidor HTTP (processo) em www.ufms.br na porta 80 servidor: 2 O servidor HTTP no para o host www.ufms.br, que está esperando conexões TCP na porta 80, aceita a conexão e notifica o cliente.
Conexões HTTP Não-Persistentes cliente: 3 o cliente HTTP envia uma mensagem de requisição (contendo a URL) dentro de uma conexão socket TCP. A mensagem indica que o cliente quer o objeto facom/index.html servidor: 4 O servidor HTTP recebe a requisição de mensagem, cria a mensagem de resposta com o objeto requisitado e envia a mensagem ao cliente pelo socket 5 O servidor HTTP encerra a conexão TCP.
Conexões HTTP Não-Persistentes cliente: 6 O cliente HTTP recebe a mensagem de resposta com o arquivo HTML, mostra na tela do usuário. Faz a análise (parsing) do arquivo e acha 10 referências a objetos jpeg. 7 Repete os passos 1-5 para cada um dos 10 objetos jpeg.
Conexões HTTP Não-Persistentes: tempo de resposta RTT (round time trip): tempo para um pequeno pacote viajar do cliente ao servidor e voltar. Tempo de resposta do HTTP: um RTT para iniciar a conexão TCP um RTT para a requisição HTTP e os primeiros bytes da resposta HTTP retornar tempo de envio do arquivo requisitado tempo total de resposta de uma transmissão HTTP não-persistente: t resposta = 2 RT T t envio
Conexões HTTP Persistentes problemas do HTTP não-persistente: precisa de 2 RTTs por objeto sobrecarga do OS para cara conexão TCP navegadores podem abrir conexões TCP em paralelo para baixar objetos referenciados HTTP persistente: servidor mantém a conexão aberta após enviar uma resposta mensagens HTTP subsequentes entre o mesmo cliente/servidor usam a mesma conexão aberta clientes enviam requisições assim que encontram referências a objetos usa apenas um RTT para todos os objetos referenciados
Mensagem de Requisição HTTP dois tipos de mensagem HTTP: requisição e resposta Formato da mensagem de requisição HTTP ASCII (formato legível por humanos)
Mensagem de Requisição HTTP: formato geral
Envio de Informações Método POST: página web deve incluir entradas de formulários (form input) a entrada é enviada para o servidor no corpo de uma entidade Método GET: usa o método GET entradas são enviadas no corpo da requisição: www.facom.ufms.br/buscaprof?brivaldo&redes
Tipos de Métodos HTTP/1.0: GET POST HEAD pede ao servidor para deixar objetos requisitados fora da resposta HTTP/1.1: GET, POST, HEAD PUT envia arquivos no corpo de uma entidade para um caminho especificado no campo URL DELETE apaga um arquivo especificado no campo URL
Mensagem de Resposta HTTP
Resposta de Código de Estado HTTP Códigos de estado (status) aparecem na primeira linha da mensagem de resposta do servidor ao cliente. alguns exemplos de códigos são: 200 OK requisição bem sucedida, objeto requisitado em mensagens posteriores 301 Moved Permanently objeto requisitado foi movido, nova localização especificada em mensagem posterior (Location:) 400 Bad Request mensagem de requisição não compreendida pelo servidor 404 Not Found objeto requisitado não encontrado neste servidor 505 HTTP Version Not Suported
Experimentando o HTTP (lado do cliente)
Estado do usuário-servidor: cookies Vários sites Web usam cookies. quatro componentes principais: 1 a linha sobre cookie no cabeçalho de resposta do HTTP 2 a linha sobre cookie no cabeçalho da mensagem de resposta na próxima requisição HTTP 3 o arquivo de cookie armazenado na máquina do usuário e gerenciado pelo navegador 4 a base de dados armazenada por trás dos panos no Web site exemplo: Susan sempre acessa a Internet do computador visita um site de e-commerce pela primeira vez quando a requisição HTTP inicial chega ao site, ele cria: ID único uma entrada no banco de dados de retaguarda para o ID
: mantendo o estado
Estado do usuário-servidor: cookies para que cookies são usados: autorização carrinhos de compras recomendações estado de sessão do usuário (Web email) como mantém o estado : protocolo final: mantém o estado entre o receptor/emissor entre múltiplas transações cookies: carregam o estado nas mensagens HTTP cookies e a privacidade: cookies permitem sites aprender muito sobre você fornece usuário e email para sites
Web Cache (servidor proxy) objetivo: satisfazer uma requisição do cliente sem envolver o servidor original o usuário configura o navegador para acessar a Web por um cache navegador envia todas as requisições HTTP para o cache objeto está no cache: cache retorna o objeto faz cache do objeto requisitado e retorna o objeto ao cliente
Web Cache (servidor proxy) objetivo: satisfazer uma requisição do cliente sem envolver o servidor original cache age como cliente e servidor servidor para a requisição original do cliente cliente para o servidor destino cache s típicos são instalados pelo ISP (universidade, empresa, ISP residencial) Por que fazer Web caching? redução do tempo de resposta do cliente redução do tráfego no link de acesso da instituição Uma Internet densa de caches s permite provedores de conteúdo pobres entregar efetivamente conteúdo (de forma similar ao que o P2P faz com compartilhamento de arquivos)
Web Cache (servidor proxy): exemplo Seja uma instituição ligada na Internet por um enlace de 1.5 Mbps O tamanho médio dos arquivos 1 Mbit A taxa média de requisição é de 15 requisições/s O tamanho das mensagens HTTP seja desprezível O RTT (atraso da Internet) seja de 2 s em média O tempo de resposta total será a soma do atraso da LAN, atraso do acesso e atraso da Internet.
Web Cache (servidor proxy): exemplo Logo, a intensidade do tráfego na LAN será: (15req/s) 1Mbit/req = 0, 15 100Mbps (o que da um atraso, quase desprezível, de algumas dezenas de milisegundos) e o atraso do tráfego no enlace de acesso a Internet: (15req/s) 1Mbit/req = 1 (dada 15Mbps a intensidade, o atraso é grande, ou seja, vários minutos, o que é inaceitável)
Web Cache (servidor proxy): exemplo Uma solução é aumentar a velocidade de acesso no enlace de acesso a Internet de 15 Mpbs para 100 Mbps Esse aumento levaria a intensidade do tráfego no enlace de acesso para 0, 15, fazendo com o que o atraso da Internet domine o tempo que seria pouca coisa maior que 2 segundos. Custos do aumento podem ser proibitivos
Web Cache (servidor proxy): exemplo Suponha agora que uma fração das requisições sejam atendidas por um cache (em geral em torno de 20 à 70% na prática) em 40% das requisições. Digamos que como as máquinas estão na mesma rede LAN de alta velocidade, sejam gastos 10ms para atender requisições em cache
Web Cache (servidor proxy): exemplo Mesmo assim teríamos 60% das requisições sendo enviadas para os servidores na Internet, mas a intensidade do tráfego sairia de 1 para 0, 6 (no geral, intensidades inferiores a 0, 8 impactam com um pequeno atraso apenas) Logo o tempo médio do atraso será: 0, 4 (0, 01s) + 0, 6 (2, 01)s = 1, 21s, que é menor até mesmo que a solução de aumento simples do enlace de acesso.
GET Condicional Notamos que o uso de cache reduzem bastante o tempo de acesso do ponto de vista do usuário Contudo, como garantir que o dado recebido pelo usuário é o mais atual? E se o cache tiver uma informação desatualizada? o HTTP possui um mecanismo que permite que o cache verifique se sua informação é a mais atual (GET Condicional) uma entrada If-Modified-Since: <data> auxilia na decisão de requisitar ou não novamente um objeto ao servidor na Internet Se o arquivo requisitado não foi modificado desde a última requisição, o objeto continua inalterado no cache e é entregue ao cliente, caso contrário o cache atualiza seu objeto e devolve o novo objeto ao cliente
CDNs - Content Delivery Network Geralmente empresas de grande porte como Google, Amazon, Akamai, Microsoft, Facebook, Netflix, Spotify, etc, distribuem caches de conteúdo geograficamente pelo mundo para reduzir o tráfego global e tempo de acesso dos usuários. Muito usado para reduzir o tráfego de conteúdo multimídia. Iremos estudar CDNs futuramente, mas saibam que elas desempenham papel importante na Internet.
Perguntas?