Tecnologia em Redes - Servidor WEB

  • 3,303 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,303
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
188
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 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