300 likes | 667 Views
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:
E N D
Protocolo HTTPeWeb Servers Gerencia de Redes Redes de Computadores II
O protocolo Http • HTTP : HyperTextTransferProtocol. • 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 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. • 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. • 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)
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 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: Apache X-Powered-By: PHP/5.1.2 Connection: close Content-Type: text/html; charset=iso-8859-1 Dados dadosdadosdadosdados...
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 • 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 servidoraceitaconexões de redeefetuadaspelosclientes • Recupera o conteudo do disco local • Quandonecessárioexecutaprogramasparagerarpáginasdinamicas (ouencaminha o pedido a um servidor de aplicações) • Transmiteos dados resultantesparao cliente • Deveser o maisrapidopossivel • Suportar multithreads e multiprocessamento é umagrandediferença
Overview de como um Web Server trabalha • Maiorexpansãonosservidoresfoi a possibilidade de criarpáginasdinâmicasbaseadasnaentrada de dados dos usuarios • A forma maisantiga e aindautilizada é atraves do uso de Common Gateway Interface (CGI) • Elebasicamente define como um Web Server deveexecutarprogramaslocalmente e transmitiros dados para o cliente com o conteudogerado de forma dinamica • As demaisformas de gerarpáginasdinamicas se baseiam no mesmoprincipo de execução de um programa local e a saída do mesmosendoencaminhadapara o navegador do cliente
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 # telnetwww.san.uri.br80 • 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.