Redes de Computadores
Por: Eugenio Santos • 5/9/2016 • Artigo • 1.717 Palavras (7 Páginas) • 349 Visualizações
Servidor HTTP .
Jeferson Santos de Almeida, Eugênio Santos de Jesus
Curso de Bacharelado em Sistemas de Informação – Universidade do Estado da Bahia (UNEB) – Campus de Salvador
41.150-000 – Salvador – BA– Brasil
Abstract. This article describes the operation of an http server, describing the methods of request and response, and presents the Java implementation of a basic HTTP server that accepts requests from simple html pages and several connections.
Resumo. Este artigo, descreve o funcionamento de um servidor http, descrevendo os métodos de requisição e resposta, e apresenta a implementação em Java de um servidor http básico, que aceita requisições de paginas html e muitiplas conexões
Introdução.
O presente projeto, visa explicar o funcionamento de um servidor http, e apresentar seu funcionamento através de um exemplo prático implementado na linguagem de programação Java.
Servidores HTTP.
Um servidor HTTP ou servidor web, como é popularmente conhecido é um software responsável por aceitar requisições HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, incluindo opcionalmente dados, que geralmente são páginas web, tais como documentos HTML com objetos embutidos.
Atualmente há cada vez mais programas que fazem pedidos HTTP (leitores de RSS e outros) e quase desde o início da web que os arquivos servidos pelo webserver vão para além de páginas htmls simples, estes incluem imagens, arquivos de midia, pdfs, etc. De modo geral tudo o que se enquadre no conceito de arquivo pode ser enviado como resultado de um pedido HTTP. Finalmente, os servidores web também podem executar programas e scripts, interagindo mais com o usuário.
O protocolo HTTP.
Para falarmos de http, é necessario ter em mente o conceito de internet, e lembrar que a esta formado por diversos servições entre eles se exite a web. Para que esses serviços sejam de maneira correta é necessário ter um
linguagem comum que permita que o servidor entenda o que o cliente quer, e que o cliente saiba se a resposta do pedido está correta ou não, para isso estabelecem-se os protocolos, que são padrões estipulados por um órgão competente afim de uniformizar o “trafego” de informações de diferentes serviços na internet. Quem define esses padrões é a IETF (Internet Engineering Task Force, ou melhor, Força Tarefa de Engenharia da Internet).
O protocolo HTTP, ou Hyper Text Transfer Protocol, em português Protocolo de Transferência de Hipertexto, é um protocolo de comunicação (na camada de aplicação segundo o Modelo OSI) utilizado para sistemas de informação de hipermídia, distribuídos e colaborativos. Ele é a base para a comunicação de dados da World Wide Web., A versão mais atual (que é a que vamos adotar nesse artigo) essa versão e seus padrões foram propostos no documento RFC 2068 e atualizado e alterado por diversos outros RFCs, é possível visualizar todas as alterações no site do IETF.
[pic 1]
Figura 1: Visão geral protocolo http
No nosso contexto, é um processo simples, o servidor http é um softwares que aguarda requisições (request) de um cliente que normalmente é browser, e devolve respostas para essas requisições (responses).
3.1 – Requisições HTTP.
Um requisição http, nada mais é do que um documento contendo uma cabeçalho, o requerido e corpo da mensagem (dados) sendo que este não é obrigatório , variando de aplicação para aplicação.
O cabeçalho é bem simples, a primeira linha contém a informação principal da requisição, ou seja, qual a sua solicitação (método), o que está sendo solicitado (arquivo/página/recurso a ser acessado) e padrão de comunicação que no nosso caso é o HTTP/1.1, a segunda linha é o endereço de host do servidor que irá responder a sua solicitação
As linhas seguintes são informações pertinentes a conexão e podem conter informações de quem está solicitando, o formato dessas informações é do tipo
[pic 2]
Figura 2: Exemplo de uma requisição http.
No exemplo acima , queremos pegar (GET) a raiz ou página inicial ( / ) que está em “www.google.com.br”. Esta requisição está sendo enviada de um navegador (User-Agent) Firefox, que aceita (Accept) os seguintes formatos, html e xml de preferência que estejam no idioma (Accept-Language) Português do Brasil (pt- BR) ou qualquer outro idioma descrito, o formato de compactação aceito pelo navegador (Accept-Enconding) e por fim a persistência da conexão, ou seja se você quer que o servidor mantenha a conexão ativa, pois como o cliente pode fazer diversas requisições em um curto espaço de tempo, não seria viável criar uma nova conexão para cada requisição, então o keep-alive mantém a conexão ativa, em um tempo pra que esses recursos sejam carregados. O protocolo define muitas propriedades, porém não iremos mencionar todas para não estender o artigo, entretanto é possível observa-las no RFC descrito acima.
3.3 Respostas HTTP.
Similar a uma requisição, uma resposta http (response) também é formada por um cabeçalho, pelo status do protocolo informado a descrição/código e pelo corpo da entidade (geralmente paginas html).
O status do protocolo serve para informa se a requisição foi um sucesso ou não, geralmente retorna o código 200 em caso de sucesso. Existem diversos códigos de retorno de sucesso, e de erro, sendo que o “404 not found” que significa que pagina não foi encontrada, se tornou o código de erro mais comum. Por fim a linha seguinte da resposta contém algumas informações pertinentes ao navegador seguida da página html solicitada, veja que o conteúdo é concatenado com a resposta.
...