protocolo http e web servers
DESCRIPTION
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: - PowerPoint PPT PresentationTRANSCRIPT
Protocolo HTTPe
Web Servers
Gerencia de RedesRedes 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ão1. 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
4. Servidor recebe mensagem pedido e formula a mensagem de resposta contendo os objetos solicitados. Envia mensagem via socket.
tempo
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•http 1.0•Servidor analisa pedido, responde e encerra a conexão tcp.•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)
Persistentes•http 1.1•Na mesma conexão tcp o servidor analisa o pedido, responde e analisa novo pedido.•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 HttpFormato 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.1Host: san.uri.brContent-Length: 27Connection: Keep-Alive
Nome=NamePessoa&Idade=99&Curso=Computacao
Usando método GET
Usando método POST
Protocolo Http
• Exemplo de resposta:
HTTP/1.1 200 OK Date: Mon, 06 Aug 2012 23:32:52 GMT Server: ApacheX-Powered-By: PHP/5.1.2 Connection: close Content-Type: text/html; charset=iso-8859-1Dados dados dados dados dados...
Protocolo HttpMensagens 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
1 – Requisição do usuário através de um navegador (exemplo index.hml)
2 – Servidor web procura o arquivo no seu sistema de arquivos
3 – Servidor obtém o arquivo do seu sistema de arquivos
4 – Servidor retorna os dados do documento ao navegador do usuário
Browser
Web Server
Sistema de arquivos
• 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
Interação Web Server e Browser
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 requisicaoGET /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/