Servidor web
Origem: Wikipédia, a enciclopédia livre.
A expressão servidor web pode aplicar-se a duas coisas:
- Um computador (hardware + Software) responsável por aceitar e responder a pedidos http de outras aplicações;
- Um programa de computador (aplicativo) com a funcionalidade descrita anteriormente.
Índice |
[editar] Características
Os pedidos http referem-se habitualmente a páginas html e são normalmente feitos através de browsers.
O processo se inicia com a conexão entre o computador onde está instalado o servidor web e o computador do cliente; como na web não é possível prever a que hora se dará essa conexão, os servidores web precisam estar disponíveis dia e noite.
A partir daí é processado o pedido do cliente, e conforme as restrições de segurança e a existência da informação solicitada, o servidor devolve os dados.
Actualmente há cada vez mais programas que fazem pedidos http (leitores de rss e outros) e quase desde o inicio da web que os ficheiros servidos pelo webserver vão para além dos ficheiros html, incluindo imagens, ficheiros de som, pdfs, etc.
Genericamente tudo o que se enquadre no conceito de ficheiro 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.
[editar] Exemplo do fluxo pedido/resposta gerado quando se acede a uma página estática
Supondo que num servidor web existe um ficheiro chamado introWebServer.html com o seguinte conteúdo
<html> <body> <p>olá mundo</p> </body> </html>
Se no browser tentar aceder a este ficheiro a sequência pedido / resposta iria produzir os seguintes comandos
Pedido
GET /introWebServer.html HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: en-gb,pt;q=0.5 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Host: localhost:79 Connection: Keep-Alive Cookie: infoview_userCultureKey=useBrowserLocale
Resposta
HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 X-Powered-By: ASP.NET Date: Thu, 25 May 2006 14:02:51 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Thu, 25 May 2006 14:02:12 GMT ETag: "cd3bdd2380c61:ba9" Content-Length: 54 <html> <body> <p>olá mundo</p> </body> </html>
Embora estes valores variem de acordo com o browser que utilizarmos e com o servidor web que responde a este pedido http, muito do conteúdo será sempre igual:
- no pedido
GET /introWebServer.html HTTP/1.1 ou seja estamos a pedir usando o protocolo http versão 1.1 o ficheiro introWebServer.html que está na raiz do servidor
- na resposta
HTTP/1.1 200 OK ou seja o pedido é válido (200 OK) e o conteúdo segue em baixo. Como podemos ver depois de mais um conjunto de dados aparece finalmente o conteudo do ficheiro html que tinhamos criado.
Independentemente de estarmos a falar de páginas dinâmicas ou páginas estáticas este será sempre o fluxo que o pedido/resposta entre o servidor e o browser irá provocar.
[editar] Páginas Dinâmicas e Páginas Estáticas
A origem do conteúdo enviado pelo servidor web numa resposta a um pedido http pode ser:
- estática - se vier directamente de um ficheiro já existente no servidor
- dinâmica - se for criada dinamicamente por outro programa, script ou api chamado pelo servidor.
no caso de uma página dinâmica, o pedido, depois de recebido, é processado pelo servidor web que vai criar dinamicamente o conteúdo que depois será enviado para o cliente.
as páginas dinâmicas têm a vantagem de poderem ser programadas, ou seja usando alguma linguagem de programação (que dependendo do servidor web pode ser php, java, perl, Visual Basic .NET, C#, ...) podemos criar programas que correm no servidor web, eventualmente acedendo a bases de dados e cujo resultado é enviado para o browser.
[editar] Exemplo do fluxo pedido/resposta gerado quando se acede a uma página dinâmica
Num servidor web capaz de responder a páginas dinâmicas (no nosso caso o IIS da Microsoft) temos um ficheiro chamado introWebServer.asp com o seguinte conteúdo
<html> <body> <% for i=1 to 10 Response.Write("<p>olá mundo</p>") next %> </body> </html>
Se no browser tentar aceder a este ficheiro, a sequência pedido / resposta iria produzir os seguintes comandos
Pedido
GET /introwebserver.asp HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Accept-Language: en-gb,pt;q=0.5 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Host: localhost:79 Connection: Keep-Alive Cookie: infoview_userCultureKey=useBrowserLocale; ASPSESSIONIDQSRCCSAS=KJLFNNNCNHKODOIOCIICJFBA
Resposta
HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 Date: Thu, 25 May 2006 14:20:34 GMT X-Powered-By: ASP.NET Content-Length: 198 Content-Type: text/html Cache-control: private <html> <body> <p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p><p>olá mundo</p> </body> </html>
Como podemos o pedido/resposta de um ficheiro estático ou de um ficheiro dinâmico gera fluxos de informação praticamente iguais, isto é, na web a informação que circula é essencialmente a mesma. a diferença é que um ficheiro dinãmico tem que ser primeiro processado pelo servidor web.