Protocolo HTTP e Web Servers Gerencia de Redes Redes de Computadores II O protocolo Http • HTTP : Hyper Text Transfer Protocol. • Protocolo de camada de aplicação. • Modelo cliente/servidor : browser são clientes que pedem objetos ao servidor web (web server). • Duas versões do protocolo: HTTP 1.0 (RFC 1945) HTTP 1.1 (RFC 2616) O protocolo Http • HTTP : Utiliza o tcp como protocolo de transporte • Cliente utiliza conexão via socket no servidor. Porta padrão 80. • O protocolo HTTP é sem estado (stateless). – Servidor não mantém histórico de outras conexões do cliente. – Servidores que mantêm estado são complexos. O protocolo Http • Exemplo de conexão 1. Cliente pede conexão em servidor http (processo) na porta 80 do servidor 2.Servidor aceita a conexão e avisa o cliente 3. Cliente envia mensagem de pedido de http (que contém a URL) através de socket de conexão tcp tempo 4. Servidor recebe mensagem pedido e formula a mensagem de resposta contendo os objetos solicitados. Envia mensagem via socket. O protocolo Http • Exemplo de conexão (continuação) 5.Servidor encerra a conexão 6.Cliente http recebe mensagem do servidor, contendo arquivo html. Visualiza o arquivo html. Verifica que o arquivo Html referencia outros 10 objetos. 7. Passos de 1 a 5 repetidos para cada objeto tempo Protocolo http. • Conexões persistentes e conexões não persistentes. Não persistente Persistentes •http 1.0 •http 1.1 •Servidor analisa pedido, responde e encerra a conexão tcp. •Na mesma conexão tcp o servidor analisa o pedido, responde e analisa novo pedido. •Para cada objeto e para a página Html deverá ser aberta uma conexão tcp •Transferência de cada objeto sofre de partida lenta do tcp. •2 RTTs para cada objeto. (round trip time) •Cliente envia o pedido para todos os objetos referenciados assim que recebe o Html básico. •Menos RTTs e menos partidas lentas. Protocolo Http Formato de mensagem http: Formato geral • Dois tipos de mensagens: Pedido, resposta. • Mensagem de pedido http (formato ASCII) Protocolo Http Formato de mensagem http: Método • GET: É o método mais comum: solicita algum recurso como um arquivo ou um script CGI (qualquer dado que estiver identificado pelo URI) por meio do protocolo HTTP. O método GET é reconhecido por todos os servidores. • HEAD: É o mesmo que GET, mas sem que o recurso seja retornado. É usado para obter meta-informações por meio do cabeçalho da resposta, sem ter que recuperar todo o conteúdo. • POST: Envia dados para serem processados (por exemplo, dados de um formulário HTML) para o recurso especificado. Os dados são incluídos no corpo do comando. Protocolo Http • Exemplo de pedido: GET / HTTP/1.1 Host: www.san.uri.br Accept: */* User-agent: Mozilla/4.0 POST / HTTP/1.1 Host: san.uri.br Content-Length: 27 Connection: Keep-Alive Usando método GET Usando método POST Nome=NamePessoa&Idade=99&Curso=Computacao Protocolo Http • Exemplo de resposta: HTTP/1.1 200 OK Date: Mon, 06 Aug 2012 23:32:52 GMT Server: Apache X-Powered-By: PHP/5.1.2 Connection: close Content-Type: text/html; charset=iso-8859-1 Dados dados dados dados dados... Protocolo Http Mensagens de erro 1xx: Informational (Informação) – utilizada para enviar informações para o cliente de que sua requisição foi recebida e está sendo processada; 2xx: Success (Sucesso) – indica que a requisição do cliente foi bem sucedida; 3xx: Redirection (Redirecionamento) – informa a ação adicional que deve ser tomada para completar a requisição; 4xx: Client Error (Erro no cliente) – avisa que o cliente fez uma requisição que não pode ser atendida; 5xx: Server Error (Erro no servidor) – ocorreu um erro no servidor ao cumprir uma requisição válida. Protocolo Http Mensagens de erro 200 : OK 301: Moved permanently 400: Bad Request 404: Not found 505: Http version not supported. Web Server Web Server • Um servidor web é um software usado para armazenar páginas e aplicações web • Proporciona paginas para a Internet e intranet. • Armazena diferentes tipos de paginas, scripts, programas e arquivos multimídia • Os arquivos são servidos usando o protocolo HTTP. Web Server • Uma grande quantidade de tecnologias baseadas no lado do servidor podem ser utilizadas para aumentar a habilidade dos servidores em disponibilizar simples paginas HTML • Exemplos: – – – – CGI SSI SSL ASP, PHP, JSP, etc Histórico • 1989 Tim Berners-Lee propõe ao CERN (seu empregador) um novo projeto para permitir a troca de informações usando um sistema hipertexto • 1990 dois programas são disponibilizados – Um cliente web (browser) – Um servidor web (que seria mais tarde chamado de CERN Httpd rodando em NextStep • 1991 – 1994 consolidação e portabilidade de cliente e servidor para diferentes plataformas • 1994 – Berners cria o World Wide Web Consortium para fins de padronização do HTTP e tecnologias envolvidas Overview de como um Web Server trabalha Browser 1 – Requisição do usuário através de um navegador (exemplo index.hml) 4 – Servidor retorna os dados do documento ao navegador do usuário Web Server 2 – Servidor web procura o arquivo no seu sistema de arquivos 3 – Servidor obtém o arquivo do seu sistema de arquivos Sistema de arquivos Interação Web Server e Browser • O browser atua como uma interface entre o usuario e o servidor web • O browser executa os seguinte passos para o usuários: – Contata o servidor web – Envia informacoes requeridas – Recebe as informacoes – Interpreta e mostra as informacoes recebidas Interação Web Server e Browser • O servidor aceita conexões de rede efetuadas pelos clientes • Recupera o conteudo do disco local • Quando necessário executa programas para gerar páginas dinamicas (ou encaminha o pedido a um servidor de aplicações) • Transmite os dados resultantes para o cliente • Deve ser o mais rapido possivel • Suportar multithreads e multiprocessamento é uma grande diferença Overview de como um Web Server trabalha • Maior expansão nos servidores foi a possibilidade de criar páginas dinâmicas baseadas na entrada de dados dos usuarios • A forma mais antiga e ainda utilizada é atraves do uso de Common Gateway Interface (CGI) • Ele basicamente define como um Web Server deve executar programas localmente e transmitir os dados para o cliente com o conteudo gerado de forma dinamica • As demais formas de gerar páginas dinamicas se baseiam no mesmo principo de execução de um programa local e a saída do mesmo sendo encaminhada para o navegador do cliente Exemplo de como um script PHP é executado Caracteristicas • Grande parte dos servidores web implementam as seguintes caracteristicas – – – – – – Autenticacao Suporte a conteudo estatico e dinamico HTTPS Compressao de conteudo Virtual Hosting Suporte a arquivos de grande tamanho (acima de 2Gb) – Controle de banda Conversão de caminho • Servidor mapeia uma URL para um caminho local – http://www.exemplo.com.br/diretorio/arquivo – O cliente efetua seguinte requisicao GET /diretorio/arquivo.html HTTP/1.1 Host: www.exemplo.com.br – Servidor procura o arquivo em /var/www/diretorio/arquivo.html Limite de carga e de processos • Servidores possuem uma configuracao que define quantos clientes podem conectar de forma concorrente • Tambem possuem configuracoes da quantidade de processos que podem ser disparados (spawn) para evitar sobrecarga do sistema Prática • Na linha de comando # telnet www.san.uri.br 80 – GET index.html – <enter> duas vezes. – Analise a resposta. Prática • Utilize a ferramenta CURL para obter os cabecalhos # curl -v -I http://www.san.uri.br Analise a resposta. *Mais informações sobre CURL em http://curl.haxx.se/ Prática • Agora use o site – http://hurl.it/ – Analise a resposta.