Tecnologia em Redes, agosto de 2007
Servidor WEB



Prof. Dr. Ruy de Oliveira
CEFET-MT
Conteúdo
    TCP/IP e sockets
    O protocolo HTTP
    Troca de mensagens com o HTTP
    O servidor de páginas APACHE




...
TCP/IP: Conceito de Portas

  Possibilita vários canais de comunicão entre duas
  máquinas (hosts) que têm end. IP únicos
...
TCP/IP: Conceito de Portas (cont.)

  Portas são usadas não apenas pelo TCP, mas
  também pelo UDP

  As portas são identi...
TCP/IP: Conceito de Portas (cont.)

  Algumas das “well-known” portas são:
  Porta            Serviço
  21               F...
Portas e Sockets

  O termo “socket” é usado para designar um gerenciador
  de arquivo que é usado por processos a fim de ...
O PROTOCOLO HTTP

   O HTTP (Hypertext Transfer Protocol) é o
   protocolo usado para transferência de dados
   (recursos)...
O PROTOCOLO HTTP

   O “Browser” é o cliente que envia solicitações
   ao “servidor HTTP”

   A porta padrão usada pelo se...
HTTP transporta “Recursos”

   O HTTP não transporta apenas arquivos, mas
   sim “recursos”

   Um recurso representa uma ...
Vantagens de se conhecer o HTTP

   Desenvolvimento de:
     Servidores WEB
     Browser para a WEB
     Aplicativos para ...
Transações de mensagens no HTTP

  O cliente (browser) solicita um recurso do servidor que
  responde adequadamente e fech...
Formato das Mensagens do HTTP
  Mensagens de Solicitação e Resposta são similares e consistem de:
    Uma linha inicial
  ...
Linha Inicial de Solicitação

    Uma linha de solicitação é composta de três partes
    separadas por um espaço:
        ...
Linha Inicial de Resposta

  A linha de resposta inicial (status line) também contém
  três partes separadas por um espaço...
Linha Inicial de Resposta (cont.)

Os códigos de mais comuns são:
  200 OK
     Essa solicitação foi bem-sucedida, e o rec...
Linhas de Cabeçalho (Header Lines)

   Trazem informações sobre solicitações e
   respostas, ou sobre o objeto enviado no ...
Linhas de Cabeçalho (cont.)

Cabeçalhos importantes
  From: indentifica o endereço de e-email de quem
  está fazendo o ped...
Linhas de Cabeçalho (cont.)

Cabeçalhos importantes no servidor

  Server: análogo ao cabeçalho Agent: ou seja ele
  ident...
Corpo da Mensagem

   Uma mensagem HTTP pode conter dados
   enviados após as linhas de cabeçalhos

   Numa resposta, esse...
Corpo da Mensagem (cont.)

   Há      normalmente    linhas   de  cabeçalho
   descrevendo o conteúdo do corpo da mensagem...
Exemplo de troca de Mensagens
   Para obter por exemplo o arquivo na URL abaixo
   http://www.getec.cefetmt.br/texto_teste...
Experimentos manuais com o HTTP

  Com o telnet, pode-se abrir um socket interativamente, e
  assim verificar a resposta d...
O Servidor de HTTP Apache

   Apache é o servidor de WEB mais usado
   mundialmente
   Tem versões para Unix e Windows
   ...
Instalação/Inicialização do Apache

   Instalação:
      apt-get install apache2 ; instala do CD-ROM ou Internet

   Inici...
Configuração do Apache

   O principal arquivo de configuração (com os sub arquivos)
      /etc/apache2/httpd.conf

   Fat...
Configuração do Apache (cont.)
  Descrição para a distribuição: redhat
  ServerRoot
     Especifica o diretório em que o s...
Configuração do Apache (cont.)

   MaxClients
        Limite do número de clientes simultâneos conectados ao
        servi...
Configuração do Apache (cont.)
  ServerAdmin
     E-mail do administrador do servidor
    (padrão: root@localhost)
  Docum...
Configuração do Apache (cont.)

   Redirect
     Redireciona uma página antiga deste servidor a uma
     nova URL
     Ex....
Configuração do Apache (cont.)

  CONTAINERS: Usados para delimitar configurações a
  partes específicas do sistema, tais ...
Configuração do Apache (cont.)

Exemplos de Containers                      Admite execução de
                           ...
Configuração do Apache (cont.)

   AllowOverride
      Se ativada (ex.: AuthConfig) permite que
      usuários do sistema ...
Configuração do Apache (cont.)

  O diretório /home/nome_usuario/public_html/
    Quando configurado, o Apache procura por...
Aula Prática !!!

   Na próxima aula será pedido o seguinte:
       Cada aluno deverá escrever uma página html que pode se...
Leitura Complementar

    http://httpd.apache.org/docs/2.0/
    http://web.mit.edu/rhel-doc/3/rhel-sag-pt_br-3/
    http:/...
Próximos SlideShares
Carregando em…5
×

Tecnologia em Redes - Servidor WEB

3.845 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
3.845
No SlideShare
0
A partir de incorporações
0
Número de incorporações
33
Ações
Compartilhamentos
0
Downloads
202
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Tecnologia em Redes - Servidor WEB

  1. 1. Tecnologia em Redes, agosto de 2007 Servidor WEB Prof. Dr. Ruy de Oliveira CEFET-MT
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  35. 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/ CEFET-MT, 2007/2, Ruy de Oliveira 35

×