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.
Download

Web Server