Tecnologia em Redes, agosto de 2007Servidor WEB
Prof. Dr. Ruy de OliveiraCEFET-MT
CEFET-MT, 2007/2, Ruy de Oliveira 2
Conteúdo
TCP/IP e socketsO protocolo HTTPTroca de mensagens com o HTTPO servidor de páginas APACHE
CEFET-MT, 2007/2, Ruy de Oliveira 3
TCP/IP: Conceito de Portas
Possibilita vários canais de comunicão entre duas máquinas (hosts) que têm end. IP únicos
Rede (IP)
Mux/DemuxP1 P2 Pn...
Pr1 Pr2 Prn...
Enlace (MAC)
Físico
Rede (IP)
Mux/DemuxP1 P2 Pn...
Pr1 Pr2 Prn...
Enlace (MAC)
Físico
Host A Host B
Px: porta xPrx: processo x
CEFET-MT, 2007/2, Ruy de Oliveira 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úmeroPortas 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 5
TCP/IP: Conceito de Portas (cont.)
Algumas das “well-known” portas são:Porta Serviço21 FTP22 SSH23 Telnet25 SMTP53 DNS80 HTTP110 POP3143 IMAP161 SNMP.
CEFET-MT, 2007/2, Ruy de Oliveira 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 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 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 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:ArquivosResultado de um “script” (cgi, perl, ...)...
CEFET-MT, 2007/2, Ruy de Oliveira 10
Vantagens de se conhecer o HTTP
Desenvolvimento de: Servidores WEBBrowser para a WEBAplicativos para download automático de páginasAvaliadores de links...
CEFET-MT, 2007/2, Ruy de Oliveira 11
Transações de mensagens no HTTP
O cliente (browser) solicita um recurso do servidor que responde adequadamente e fecha o socket!
Resposta(response)
Solicitação(request)
Cliente Servidor
CEFET-MT, 2007/2, Ruy de Oliveira 12
Formato das Mensagens do HTTP
Mensagens de Solicitação e Resposta são similares e consistem de:Uma linha inicialZero 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 13
Linha Inicial de Solicitação
Uma linha de solicitação é composta de três partes separadas por um espaço:
Nome do método usadoCaminho local do recurso solicitadoVersão do HTTP usadoEX.: GET /texto_teste/index.html HTTP/1.0
GET representa o método HTTP mais comum e significa “dê-me o recurso”. Outros métodos são: POST e HEAD
O caminho local do recurso pedido é a parte da URL quem vem depois do nome do host.
A versão do HTTP usado é sempre escrita na forma “HTTP/x.x”
CEFET-MT, 2007/2, Ruy de Oliveira 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 HTTPUm 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 OKHTTP/1.0 404 Not FoundO primeiro dígito do código de resposta identifica a categoria da resposta:
1xx indica mensagem de informação2xx indica algum tipo de sucesso3xx redireciona o cliente para outra URL 4xx indica um erro do cliente5xx indica um erro do servidor
CEFET-MT, 2007/2, Ruy de Oliveira 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 FoundO 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ávelLocation: no cabeçalho resposta), e deveria ser recuperadaautomaticamente pelo cliente. Isso é normalmente usado emscripts CGI para redirecionar o browser a um arquivo existente.
500 Server ErrorUm erro inesperado no servidor. A causa mais comum aqui sãoproblemas em scripts.
CEFET-MT, 2007/2, Ruy de Oliveira 16
Linhas de Cabeçalho (Header Lines)
Trazem informações sobre solicitações e respostas, ou sobre o objeto enviado no corpo da mensagemO uso de cabeçalhos facilita a depuração de problemas no modelo cliente-servidorSão formatadas como: Nome: valorO 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 17
Linhas de Cabeçalho (cont.)
Cabeçalhos importantesFrom: 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.xx", onde x.xx é a versão do programa.
Exemplo: o Netscape 3.0 envia o seguintecabeçalho "User-agent: Mozilla/3.0Gold"
CEFET-MT, 2007/2, Ruy de Oliveira 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 emcaches e outras atividades para economia de banda passante.
CEFET-MT, 2007/2, Ruy de Oliveira 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 recursosolicitado é 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 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 21
Exemplo de troca de MensagensPara obter por exemplo o arquivo na URL abaixohttp://www.getec.cefetmt.br/texto_teste/arquivo1.html
Abra um socket estabelecendo uma conexão com o hostwww.getec.cefetmt.br, porta 80. Envie uma linha de comando como abaixo pelo socket:GET /texto_teste/arquivo1.html HTTP/1.0 From: [email protected]: HTTPTool/1.0 [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>
Depois de enviar a resposta, o servidorfecha o socket !!!
CEFET-MT, 2007/2, Ruy de Oliveira 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 comandoGET /texto_teste/arq1.html HTTP/1.0 [“headers” aqui se houver] [linha em branco]
O servidor então responderá com uma mensagemcontendo: “status line”, “headers” e “message body”
CEFET-MT, 2007/2, Ruy de Oliveira 23
O Servidor de HTTP Apache
Apache é o servidor de WEB mais usado mundialmenteTem versões para Unix e WindowsÉ robusto em termos de segurançaSuporta “Virtual hosting”...
CEFET-MT, 2007/2, Ruy de Oliveira 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 25
Configuração do Apache
O principal arquivo de configuração (com os sub arquivos)/etc/apache2/httpd.conf
Fatores configuráveis via httpd.confDiretório padrão a ser disponibilizado para a WEBDiretório padrão para cada usuário publicar na WEBOutros diretórios a serem disponibilizados p/ a WEBOpções de segurançaPropriedade de cada “virtual hosting”Temporizações envolvidas na troca de mensagensQuantidade máxima de clientesE muito mais...
CEFET-MT, 2007/2, Ruy de Oliveira 26
Configuração do Apache (cont.)
Descrição para a distribuição: redhatServerRoot
Especifica o diretório em que o servidor está instaladoTimeout
Tempo, em segundos, que o servidor espera por transmissões e recepções de mensagens (padrão: 300 segs)
KeepAliveQdo ativada permite ao servidor aceitar mais de uma solicitação por conexão (padrão: off)
KeepAliveTimeoutSe 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.
MaxKeepAliveRequestsDefine o número máx. de solicitações permitida a uma conexão persistente
CEFET-MT, 2007/2, Ruy de Oliveira 27
Configuração do Apache (cont.)
MaxClientsLimite do número de clientes simultâneos conectados ao servidor (padrão: 150)
ListenEspecifica 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)
Groupgrupo associado ao processo apache2
CEFET-MT, 2007/2, Ruy de Oliveira 28
Configuração do Apache (cont.)
ServerAdminE-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)
UserDirO 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.htmlAs permissões dos diretórios dos usuários deveriam ser: 711 ou 755
CEFET-MT, 2007/2, Ruy de Oliveira 29
Configuração do Apache (cont.)
RedirectRedireciona uma página antiga deste servidor a uma nova URLEx.:
Redirect /var/www/html/index.html http://informática.cefetmt.br/teste/index2.html
CEFET-MT, 2007/2, Ruy de Oliveira 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 31
Configuração do Apache (cont.)
Exemplos de Containers
Diretório<Directory /var/www/meu_diretorio_cgi>
Options +ExecCGI</Directory>
Arquivo<Files /var/www/meu_dir/arq1>
order Deny,AllowDeny from allAllow from apache.org
</Files>
Admite execução de scripts (.cgi) nesse dir.
Permite acesso a arq1 apenas para usuários
de apache.org
CEFET-MT, 2007/2, Ruy de Oliveira 32
Configuração do Apache (cont.)
AllowOverrideSe ativada (ex.: AuthConfig) permite que usuários do sistema definam diretórios protegidos por senha (padrão: None)
AccessFileNameNome 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 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óriosTodos 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 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_htmlProcure na Internet como se deve configurar o arquivo .htaccess para proteger os seus diretórios com senhaDefina com o professor os usuários e grupos que devem ter acesso ao seu diretório
CEFET-MT, 2007/2, Ruy de Oliveira 35
Leitura Complementar
http://httpd.apache.org/docs/2.0/http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/http://www.conectiva.com.br/listas/linux-br/http://www.getec.cefetmt.br/~ruy/