tecnologia em redes - servidor web

35
Tecnologia em Redes, agosto de 2007 Servidor WEB Prof. Dr. Ruy de Oliveira CEFET-MT

Upload: elliando-dias

Post on 30-Jun-2015

3.422 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Tecnologia em Redes - Servidor WEB

Tecnologia em Redes, agosto de 2007Servidor WEB

Prof. Dr. Ruy de OliveiraCEFET-MT

Page 2: Tecnologia em Redes - Servidor WEB

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

Page 3: Tecnologia em Redes - Servidor WEB

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

Page 4: Tecnologia em Redes - Servidor WEB

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

Page 5: Tecnologia em Redes - Servidor WEB

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.

Page 6: Tecnologia em Redes - Servidor WEB

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

Page 7: Tecnologia em Redes - Servidor WEB

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

Page 8: Tecnologia em Redes - Servidor WEB

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

Page 9: Tecnologia em Redes - Servidor WEB

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, ...)...

Page 10: Tecnologia em Redes - Servidor WEB

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

Page 11: Tecnologia em Redes - Servidor WEB

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

Page 12: Tecnologia em Redes - Servidor WEB

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>

Page 13: Tecnologia em Redes - Servidor WEB

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”

Page 14: Tecnologia em Redes - Servidor WEB

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

Page 15: Tecnologia em Redes - Servidor WEB

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.

Page 16: Tecnologia em Redes - Servidor WEB

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)

Page 17: Tecnologia em Redes - Servidor WEB

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"

Page 18: Tecnologia em Redes - Servidor WEB

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.

Page 19: Tecnologia em Redes - Servidor WEB

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

Page 20: Tecnologia em Redes - Servidor WEB

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

Page 21: Tecnologia em Redes - Servidor WEB

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

Page 22: Tecnologia em Redes - Servidor WEB

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”

Page 23: Tecnologia em Redes - Servidor WEB

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”...

Page 24: Tecnologia em Redes - Servidor WEB

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

Page 25: Tecnologia em Redes - Servidor WEB

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

Page 26: Tecnologia em Redes - Servidor WEB

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

Page 27: Tecnologia em Redes - Servidor WEB

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

Page 28: Tecnologia em Redes - Servidor WEB

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

Page 29: Tecnologia em Redes - Servidor WEB

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

Page 30: Tecnologia em Redes - Servidor WEB

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>

Page 31: Tecnologia em Redes - Servidor WEB

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

Page 32: Tecnologia em Redes - Servidor WEB

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)

Page 33: Tecnologia em Redes - Servidor WEB

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

Page 34: Tecnologia em Redes - Servidor WEB

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

Page 35: Tecnologia em Redes - Servidor WEB

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/