1. Tecnologia em Redes, agosto de 2007
Servidor WEB
Prof. Dr. Ruy de Oliveira
CEFET-MT
2. Conteúdo
TCP/IP e sockets
O protocolo HTTP
Troca de mensagens com o HTTP
O servidor de páginas APACHE
CEFET-MT, 2007/2, Ruy de Oliveira 2
3. TCP/IP: Conceito de Portas
Possibilita vários canais de comunicão entre duas
máquinas (hosts) que têm end. IP únicos
Pr1 Pr2 ... Prn Pr1 Pr2 ... Prn
P1 P2 ... Pn P1 P2 ... Pn
Mux/Demux Px: porta x Mux/Demux
Prx: processo x
Rede (IP) Rede (IP)
Enlace (MAC) Enlace (MAC)
Físico Físico
Host A Host B
CEFET-MT, 2007/2, Ruy de Oliveira 3
4. TCP/IP: Conceito de Portas (cont.)
Portas são usadas não apenas pelo TCP, mas
também pelo UDP
As portas são identificadas por número
Portas na faixa 0-1023 são reservadas a
serviços específicos. Tais portas são ditas
“well-known ports”
Portas acima de 1023 podem ser usadas para
qualquer propósito
CEFET-MT, 2007/2, Ruy de Oliveira 4
5. TCP/IP: Conceito de Portas (cont.)
Algumas das “well-known” portas são:
Porta Serviço
21 FTP
22 SSH
23 Telnet
25 SMTP
53 DNS
80 HTTP
110 POP3
143 IMAP
161 SNMP
CEFET-MT, 2007/2, Ruy de Oliveira 5
.
6. Portas e Sockets
O termo “socket” é usado para designar um gerenciador
de arquivo que é usado por processos a fim de solicitar
serviços de rede do sistema operacional
Quando um processo necessita estabelecer comunicação
com outro processo, ele o faz por meio do socket
Um endereço de socket completo:
<prot,end-local,proc-local,end-remoto,proc-remoto>
Ex.: <tcp,192.168.101.46,654,200.15.221.14,354>
O algoritmo do socket é responsável por associar uma
porta à conexão e estabecer a comunicação entre os dois
processos
CEFET-MT, 2007/2, Ruy de Oliveira 6
7. O PROTOCOLO HTTP
O HTTP (Hypertext Transfer Protocol) é o
protocolo usado para transferência de dados
(recursos) na World Wide Web
Os dados transportados pelo HTTP podem ser
arquivos HTML, arquivos de imagem, resultado
de solicitações, etc.
TCP/IP sockets são usados pelo HTTP
Como a maioria dos protocolos de rede, o HTTP
usa o modelo Cliente-Servidor
CEFET-MT, 2007/2, Ruy de Oliveira 7
8. O PROTOCOLO HTTP
O “Browser” é o cliente que envia solicitações
ao “servidor HTTP”
A porta padrão usada pelo servidor HTTP é a 80
O servidor fica constantemente ouvindo
(listening) esta porta a fim de atender as
chamadas provenientes dos browsers
CEFET-MT, 2007/2, Ruy de Oliveira 8
9. HTTP transporta “Recursos”
O HTTP não transporta apenas arquivos, mas
sim “recursos”
Um recurso representa uma porção de
informações identificadas por uma URL (Uniform
Resource Locator)
Recursos mais comuns:
Arquivos
Resultado de um “script” (cgi, perl, ...)
...
CEFET-MT, 2007/2, Ruy de Oliveira 9
10. Vantagens de se conhecer o HTTP
Desenvolvimento de:
Servidores WEB
Browser para a WEB
Aplicativos para download automático de
páginas
Avaliadores de links
...
CEFET-MT, 2007/2, Ruy de Oliveira 10
11. Transações de mensagens no HTTP
O cliente (browser) solicita um recurso do servidor que
responde adequadamente e fecha o socket!
Cliente Servidor
Solicitação
(request)
Resposta
(response)
CEFET-MT, 2007/2, Ruy de Oliveira 11
12. Formato das Mensagens do HTTP
Mensagens de Solicitação e Resposta são similares e consistem de:
Uma linha inicial
Zero ou mais linhas cabeçalhos (headers)
Uma linha em branco (Carrier-Return/Line-Feed)
Uma mensagem de corpo opcional (ex.: um arquivo, ou dado
solicitado ou resultado de solicitação)
Ou seja, o formato de uma mensagem HTTP é:
<linha inicial, distinta para solicitação e resposta>
<HEADER1: value1>
<HEADER2: value1>
<o corpo de mensagem opcional vai aqui; pode ser composto de
várias linhas e conter dados ou códigos de programa>
CEFET-MT, 2007/2, Ruy de Oliveira 12
13. Linha Inicial de Solicitação
Uma linha de solicitação é composta de três partes
separadas por um espaço:
A versão do HTTP
Nome do método usado
usado é sempre
Caminho local do recurso solicitado escrita na forma
Versão do HTTP usado “HTTP/x.x”
EX.:
GET /texto_teste/index.html HTTP/1.0
GET representa o método O caminho local do
HTTP mais comum e recurso pedido é a parte
significa “dê-me o da URL quem vem
recurso”. Outros métodos depois do nome do host.
são: POST e HEAD
CEFET-MT, 2007/2, Ruy de Oliveira 13
14. Linha Inicial de Resposta
A linha de resposta inicial (status line) também contém
três partes separadas por um espaço
A versão do HTTP
Um código de resposta (status code)
Uma descrição do código de resposta (em Inglês)
Típicas “status line” são:
HTTP/1.0 200 OK
HTTP/1.0 404 Not Found
O primeiro dígito do código de resposta identifica a
categoria da resposta:
1xx indica mensagem de informação
2xx indica algum tipo de sucesso
3xx redireciona o cliente para outra URL
4xx indica um erro do cliente
5xx indica um erro do servidor
CEFET-MT, 2007/2, Ruy de Oliveira 14
15. Linha Inicial de Resposta (cont.)
Os códigos de mais comuns são:
200 OK
Essa solicitação foi bem-sucedida, e o recurso pedido (ex.:
arquivo ou resultado de script) está no corpo da mensagem
404 Not Found
O recurso solicitado não existe
301 Moved Permanently
302 Moved Temporarily
303 See Other (somente no HTTP 1.1)
O recurso foi transferido para outra URL (dado pela variável
Location: no cabeçalho resposta), e deveria ser recuperada
automaticamente pelo cliente. Isso é normalmente usado em
scripts CGI para redirecionar o browser a um arquivo existente.
500 Server Error
Um erro inesperado no servidor. A causa mais comum aqui são
problemas em scripts.
CEFET-MT, 2007/2, Ruy de Oliveira 15
16. Linhas de Cabeçalho (Header Lines)
Trazem informações sobre solicitações e
respostas, ou sobre o objeto enviado no corpo da
mensagem
O uso de cabeçalhos facilita a depuração de
problemas no modelo cliente-servidor
São formatadas como: Nome: valor
O HTTP1.0 define 16 tipos de cabeçalhos, e o
HTTP1.1 define 46.
Enquanto o HTTP1.0 não exige o uso de
cabeçalhos, o seu sucessor demanda ao menos
um (host)
CEFET-MT, 2007/2, Ruy de Oliveira 16
17. Linhas de Cabeçalho (cont.)
Cabeçalhos importantes
From: indentifica o endereço de e-email de quem
está fazendo o pedido (é configurável)
User-Agent: idenfica o programa que está
realizando a solicitação, no formato “Nome do
programa/x.xxquot;, onde x.xx é a versão do
programa.
Exemplo: o Netscape 3.0 envia o seguinte
cabeçalho quot;User-agent: Mozilla/3.0Goldquot;
CEFET-MT, 2007/2, Ruy de Oliveira 17
18. Linhas de Cabeçalho (cont.)
Cabeçalhos importantes no servidor
Server: análogo ao cabeçalho Agent: ou seja ele
identifica o software no servidor no formato
“nome do programa/x.xx”
Ex.: Uma resposta do Apache:
“Server:Apache/1.22”
Last-Modified: informa a data de modificação do
recurso que está sendo retornado. É usado em
caches e outras atividades para economia de
banda passante.
CEFET-MT, 2007/2, Ruy de Oliveira 18
19. Corpo da Mensagem
Uma mensagem HTTP pode conter dados
enviados após as linhas de cabeçalhos
Numa resposta, esse é o local onde o recurso
solicitado é retornado ao cliente, ou talvez um
texto descritivo de um erro
Numa solicitação, essa é a parte da mensagem
em que os dados envidados pelo usuário ou
arquivos para upload são envidados ao servidor
CEFET-MT, 2007/2, Ruy de Oliveira 19
20. Corpo da Mensagem (cont.)
Há normalmente linhas de cabeçalho
descrevendo o conteúdo do corpo da mensagem
(quando esta existir)
Content-Type: esse cabeçalho informa o
MIME-type do dado no corpo da mensagem,
tal como text/html ou image/gif.
Content-Length: informa o número de bytes
no corpo da mensagem
CEFET-MT, 2007/2, Ruy de Oliveira 20
21. Exemplo de troca de Mensagens
Para obter por exemplo o arquivo na URL abaixo
http://www.getec.cefetmt.br/texto_teste/arquivo1.html
Abra um socket estabelecendo uma conexão com o host
www.getec.cefetmt.br, porta 80.
Envie uma linha de comando como abaixo pelo socket:
GET /texto_teste/arquivo1.html HTTP/1.0
Depois de enviar a
From: oliveira@iam.unibe.ch
resposta, o servidor
User-Agent: HTTPTool/1.0 fecha o socket !!!
[linha em branco vai aqui]
O servidor deveria responder com algo do tipo:
HTTP/1.0 200 OK
Date: Sat, 26 Nov 2005 15:59:59 GMT
Content-Type: text/html
Content-Length: 1354
<html> <body> <h1>Página simples!</h1> (mais conteúdo de
arquivo) . . . </body> </html>
CEFET-MT, 2007/2, Ruy de Oliveira 21
22. Experimentos manuais com o HTTP
Com o telnet, pode-se abrir um socket interativamente, e
assim verificar a resposta do servidor
Ex.: Abra o socket:
telnet www.getec.cefetmt.br 80
Em seguida execute o comando
GET /texto_teste/arq1.html HTTP/1.0
[“headers” aqui se houver]
[linha em branco]
O servidor então responderá com uma mensagem
contendo: “status line”, “headers” e “message body”
CEFET-MT, 2007/2, Ruy de Oliveira 22
23. O Servidor de HTTP Apache
Apache é o servidor de WEB mais usado
mundialmente
Tem versões para Unix e Windows
É robusto em termos de segurança
Suporta “Virtual hosting”
...
CEFET-MT, 2007/2, Ruy de Oliveira 23
24. Instalação/Inicialização do Apache
Instalação:
apt-get install apache2 ; instala do CD-ROM ou Internet
Inicialização e parada do serviço (SUSE):
/etc/init.d/apache2 start
/etc/init.d/apache2 stop
Para inicialização automática no “boot”
/sbin/chkconfig apache2 on
Obs.: essas tarefas demandam privilégios de root
CEFET-MT, 2007/2, Ruy de Oliveira 24
25. Configuração do Apache
O principal arquivo de configuração (com os sub arquivos)
/etc/apache2/httpd.conf
Fatores configuráveis via httpd.conf
Diretório padrão a ser disponibilizado para a WEB
Diretório padrão para cada usuário publicar na WEB
Outros diretórios a serem disponibilizados p/ a WEB
Opções de segurança
Propriedade de cada “virtual hosting”
Temporizações envolvidas na troca de mensagens
Quantidade máxima de clientes
E muito mais...
CEFET-MT, 2007/2, Ruy de Oliveira 25
26. Configuração do Apache (cont.)
Descrição para a distribuição: redhat
ServerRoot
Especifica o diretório em que o servidor está instalado
Timeout
Tempo, em segundos, que o servidor espera por transmissões e
recepções de mensagens (padrão: 300 segs)
KeepAlive
Qdo ativada permite ao servidor aceitar mais de uma solicitação por
conexão (padrão: off)
KeepAliveTimeout
Se KeepAlive está ativado, este parâmetro determina o tempo
(segs) que o servidor espera para fechar a conexão após responder
a uma solic.
MaxKeepAliveRequests
Define o número máx. de solicitações permitida a uma conexão
persistente
CEFET-MT, 2007/2, Ruy de Oliveira 26
27. Configuração do Apache (cont.)
MaxClients
Limite do número de clientes simultâneos conectados ao
servidor (padrão: 150)
Listen
Especifica a porta pela qual o servidor aceitará entrada de
solicitações (padrão: 80). Portas abaixo de 1023 indicam
que somente o root pode iniciar o httpd
User
usuário associado ao processo apache2 (httpd)
Group
grupo associado ao processo apache2
CEFET-MT, 2007/2, Ruy de Oliveira 27
28. Configuração do Apache (cont.)
ServerAdmin
E-mail do administrador do servidor
(padrão: root@localhost)
DocumentRoot
O diretório em que a maioria dos arquivos html residem
(padrão: /srv/www/htdocs)
UserDir
O subdiretório dentro do diretório de cada usuário
(/home/nome_usuário/) onde os usuários podem publicar na WEB
(padrão: public_html).
Ex.: /home/aluno/public_html/arq1.html
É acessado como:
http://www.getec.cefetmt.br/~aluno/arq1.html
As permissões dos diretórios dos usuários deveriam ser: 711 ou
755
CEFET-MT, 2007/2, Ruy de Oliveira 28
29. Configuração do Apache (cont.)
Redirect
Redireciona uma página antiga deste servidor a uma
nova URL
Ex.:
Redirect /var/www/html/index.html
http://informática.cefetmt.br/teste/index2.html
CEFET-MT, 2007/2, Ruy de Oliveira 29
30. Configuração do Apache (cont.)
CONTAINERS: Usados para delimitar configurações a
partes específicas do sistema, tais como diretórios e
arquivos
Diretórios
<Directory /caminho/nome_diretorio>
configurações
</Directory>
Arquivos
<Files /caminho/nome_arq>
configurações
</Files>
CEFET-MT, 2007/2, Ruy de Oliveira 30
31. Configuração do Apache (cont.)
Exemplos de Containers Admite execução de
scripts (.cgi) nesse dir.
Diretório
<Directory /var/www/meu_diretorio_cgi>
Options +ExecCGI
</Directory>
Arquivo
<Files /var/www/meu_dir/arq1>
order Deny,Allow
Deny from all Permite acesso a arq1
Allow from apache.org apenas para usuários
</Files> de apache.org
CEFET-MT, 2007/2, Ruy de Oliveira 31
32. Configuração do Apache (cont.)
AllowOverride
Se ativada (ex.: AuthConfig) permite que
usuários do sistema definam diretórios
protegidos por senha
(padrão: None)
AccessFileName
Nome do arquivo em que os usuários devem
definir suas configurações tais como as
associadas a nome/senha para acesso a um
determinado diretório
(padrão: .htaccess)
CEFET-MT, 2007/2, Ruy de Oliveira 32
33. Configuração do Apache (cont.)
O diretório /home/nome_usuario/public_html/
Quando configurado, o Apache procura por solicitações
(index.html) para cada usuário nesse diretório
Se não há o arquivo index.html, então o conteúdo do
diretório é listado (isso pode ser desabilitado)
Portanto, as páginas de cada usário devem estar aqui
O arquivo .htaccess
É aqui que o usuário deve configurar suas opções, tais
como proteção por senha de certos diretórios
Todos os diretórios contendo tal arquivo serão
avaliados, e se protegidos, os seus subdiretórios
também estarão
CEFET-MT, 2007/2, Ruy de Oliveira 33
34. Aula Prática !!!
Na próxima aula será pedido o seguinte:
Cada aluno deverá escrever uma página html que pode ser
extemamente simples tal como:
<html><body><h1 align=“center”>
<hr> Olá, <br> Bem-vindo à minha página <hr>
</h1></body></html>
Grave-a como index.html em seu diretório public_html
Procure na Internet como se deve configurar o arquivo
.htaccess para proteger os seus diretórios com senha
Defina com o professor os usuários e grupos que devem ter
acesso ao seu diretório
CEFET-MT, 2007/2, Ruy de Oliveira 34