Universidade da Beira Interior Departamento de Informática Unidades Curriculares Serviços de Acesso a Informação Licenciatura em Tecnologias e Sistemas de Informação
Cap. 6 - Sumário ü Introdução ü World Wide Web (WWW) ü Hypertext Transfer Protocol (HTTP) ü Servidor HTTP
Introdução No final dos anos 80 e início dos anos 90, surgiram diversas aplicações com o objectivo de permitir que o utilizador pudesse tirar partido da crescente quantidade de informação disponibilizada nos servidores da Internet. Exemplos destas aplicações são o: Gopher Archie wais
Introdução O gopher foi desenvolvido na Universidade de Minnesota e permite, através de menus, efectuar browsing de recursos na Internet O archie permite efectuar a procura de ficheiros por nome, palavra-chave ou strings, em servidores de ficheiros O wais possibilita a pesquisa em bases de dados indexadas para referência de informação bibliográfica e baseia-se na norma ANSI Z39.50
Introdução Estas aplicações atingiram algum sucesso e implementação, mas rapidamente foram ultrapassadas, após o surgimento de uma aplicação de acesso a informação integradora e revolucionária: O World Wide Web (WWW).
Cap. 6 - Sumário ü Introdução ü World Wide Web (WWW) ü Hypertext Transfer Protocol (HTTP) ü Servidor HTTP
World Wide Web (WWW) O WWW foi concebido por Tim Berners-Lee, investigador do Centro Europeu de Pesquisa Nuclear (CERN), em 1989. O WWW começou a ser usado internamente no CERN em 1991. Neste ano (1991), o WWW foi apresentado na Conferência Hypertext 91. Em Fevereiro de 1993, o National Center for Supercomputing Applications (NCSA) apresentou a primeira versão do Mosaic, desenvolvida por Marc Andreesen.
World Wide Web Em 1994, Marc Andreesen e alguns colegas deixam o NCSA e fundam a Mosaic Communications Corp. (a futura Netscape) Em 1994, Tim Berners-Lee deixa o CERN e ingressa no Massachusetts Institute of Technology (MIT). No MIT, funda o World Wide Web Consortium (W3C) http://www.w3c.org Em 1999, a AOL adquire a Netscape
World Wide Web O WWW é uma aplicação de acesso a informação, responsável, em grande parte, pela explosão do crescimento da Internet. O WWW pode ser considerado como um repositório de informação à escala da Internet, suportado por milhares de servidores espalhados pelo Mundo, possibilitando que os utilizadores acedam a informação textual, gráfica e/ou multimédia, através de um programa designado por browser
World Wide Web O browser pode comunicar através de vários protocolos, nomeadamente, o HTTP, o FTP, o SMTP ou o GOPHER. O cliente estabelece uma ligação TCP para pedir: A página E todos os seus componentes A informação disponibilizada no WWW é constituída por documentos hipermédia (com texto, imagem, áudio, etc.), designados por páginas web ou, simplesmente, páginas.
World Wide Web Clientes e servidores: Servidores: armazenamento de documentos Clientes: visualização dos documentos Clientes WWW Modo de texto: lynx Gráficos: Netscape, MS Internet Explorer, Mozilla, Opera, GoZilla, NSCA Mosaic,...
World Wide Web Para estabelecer a ligação a uma página, utiliza-se um URL (Uniform Resource Locator). Um URL identifica univocamente toda e qualquer página web. Um URL contém: Protocolo utilizado para aceder a um documento ou página O nome absoluto da máquina onde se encontra O porto a utilizar pelo protocolo (opcional; normalmente, não se inclui porque se usa o porto pré-definido) O nome absoluto do documento dentro da máquina
World Wide Web - URL Formato genérico de um URL: Protocolo://nome_da_máquina:porto/ nome_do_documento Exemplos: http://www.ubi.pt:80/index.php www.ubi.pt http://www.di.ubi.pt
World Wide Web - URL Caracteres utilizados nos URLs: Caracteres US-ASCII. Caracteres que podem ser reservados: [ ;, /,?, :, @, =, &, # ] Se aparecerem fora do contexto para o qual foram reservados, devem ser codificados. Codificação de caracteres: %<código em hexadecimal> Ex: James & James -> James+%26+James Se o endereço tiver links relativos e uma estrutura hierárquica, os componentes da hierarquia devem ser separados por /.
World Wide Web Os documentos Web podem ser classificados em três grandes categorias: Estáticos Ficheiros com conteúdo fixo definido pelo autor no momento da sua criação Dinâmicos Ficheiros cujo conteúdo é construído pelo servidor no momento em que recebe um pedido do documento pelo browser. Ex.: Comon Gateway Interface (CGI) RFC 3875 Activos São programas que o servidor envia ao browser, a seu pedido, e que são executados localmente na máquina do browser. Ex.: Tecnologia Java que inclui a linguagem de programação, o ambiente de execução (run-time environment) e uma biblioteca de classes. Em Java, os documentos activos são designados por applets.
World Wide Web Os documentos Web podem ser simples ou compostos Páginas simples: blocos de texto Páginas compostas: blocos de texto com imagens, som e hiperligações (links) para outras páginas. Links hipertexto WWW --> URLs Sempre que é seleccionado um link externo, o browser contacta o servidor (local ou remoto) e solicita a transferência do respectivo ficheiro. O protocolo utilizado para a transferência é o HTTP (Hypertext Transfer Protocol).
Cap. 6 - Sumário ü Introdução ü World Wide Web (WWW) ü Hypertext Transfer Protocol (HTTP) ü Servidor HTTP
Hypertext Transfer Protocol (HTTP) Protocolo que permite a comunicação entre Browsers e servidores HTTP. HTTP é um protocolo da camada de aplicação. Fundamentalmente, o HTTP está especificado nos RFC s: RFC 1945 (HTTP 1.0) RFC 2817 (HTTP 1.1) (actualiza o RFC 2616)
Hypertext Transfer Protocol (HTTP) Funciona sobre TCP/IP. Funciona no modelo cliente/servidor. É utilizada uma única ligação TCP. Utiliza normalmente o porto 80, embora possam ser utilizados outros.
HTTP - Pedidos Request Line - Linha do pedido. Headers - Cabeçalhos. CRLF - Linha em branco. Conteúdos - (opcionais). Request-Line Headers. CRLF Conteúdos
HTTP - Pedidos Linha do pedido A linha linha do pedido (Request-Line) possui 3 elementos separados por espaços (<SP>): O método usado O URI A versão do protocolo A linha do pedido termina com <CRLF> Método <SP> URI <SP> HTTP-Version <CRLF>
HTTP - Métodos Métodos implementados: GET: Descarrega informação identificada pelo URI. HEAD: Descarrega informação sobre o URI. POST: Transfere informação para o URI. PUT: Coloca informação na localização especificada no URI. DELETE: Remove uma entidade identificada pelo URI.
HTTP - Métodos Métodos implementados (cont.): TRACE: usado para verificar a comunicação através de proxies. Devolve no conteúdo da resposta o pedido enviado. OPTIONS: usado para determinar os métodos implementados no servidor. GET e HEAD são suportados por todas as implementações. Servidores HTTP 1.1 disponibilizam normalmente POST, OPTIONS e TRACE.
HTTP Métodos Utilização típica dos métodos GET - usado para obter recursos. HEAD - usado para obter apenas informações sobre recursos. POST - usado para enviar dados ao servidor, normalmente via formulário.
HTTP - Métodos Exemplo de pedido GET: GET /index.html HTTP/1.0 User-Agent: Internet Explorer From: cheater@cheaters.org Referer: http://foo.com/ (linha em branco)
HTTP Método POST Pedido POST inclui linhas de conteúdo depois do fim dos cabeçalhos (e da linha em branco). Não existe um formato predefinido para os dados. Um pedido POST tem de incluir um cabeçalho Content-Length: Exemplo: Content-Length: 267
HTTP Método POST Exemplo de pedido POST: POST /~joel/notas.cgi HTTP/1.1 User-Agent: Mozilla 5.0 Content-length: 35 Referer:http://www.di.ubi.pt/~joel/MA/ valor=1440199722&nom=joel¬as=45
HTTP Existem as versões: HTTP/1.0 (RFC 1945) HTTP/1.1 (RFC 2817) O HTTP 0.9 não utilizava a versão na linha do pedido/resposta. Se um servidor receber uma linha de pedido sem a versão considera a implementação do HTTP 0.9.
HTTP - URI URI Universal Resource Identifier. O URI define a sintaxe para identificadores de recursos. Formato genérico de um URI <protocolo>:<parte-específica-doprotocolo> Essencialmente, os URIs estão definidos no RFC 3986 (STD 0066).
HTTP - URI URI Absoluto: Protocol:// hostname[:port]/path Exemplo: http://www.di.ubi.pt:80/english/index.html URI Relativo: Exemplo: /english/index.html
HTTP - URI Tipos de URI s: URL - Uniform Resource Locator (RFCs 2368, 1738, 1808) Identificam por localização. URN - Uniform Resource Names (RFC 2141) Identificadores persistentes, independentes da localização.
HTTP URI (Protocolos) ftp - File Transfer Protocol http - Hypertext Transfer Protocol gopher - The Gopher Protocol mailto - Electronic Mail Address news - USENET news nntp - USENET news using NNTP access telnet - Sessões iterativas File - Nomes específicos de ficheiros Sintaxe: <protocol>://[<user>[:<password>]@]<host> [:<port>]/<url-part>
HTTP Linhas de Cabeçalho Depois da linha de pedido podem ser enviadas linhas adicionais de cabeçalhos. Cada cabeçalho é composto por uma designação e por um valor, separados por dois pontos (:). Os cabeçalhos disponibilizam informação sobre o servidor ou sobre o cliente. Exemplo: Qual o cliente usado? Qual o tipo de conteúdo aceite? Quem está a fazer o pedido? Qual é o servidor usado? Que data no servidor?
HTTP Linhas de Cabeçalho Também podem não ser consideradas linhas de cabeçalho. Cada cabeçalho termina com CRLF. O fim dos cabeçalhos termina com uma linha em branco CRLF. Nos pedidos GET e HEAD, o fim dos cabeçalhos representam o fim do pedido." Accept: text/html From: neytmann@cybersurg.com User-Agent: Mozilla/5.0
HTTP Respostas HTTP-Version Status-Code Message Status Code: número de 3 dígitos (para o computador). Message: Texto (para ser interpretado por pessoas).
HTTP Códigos das Respostas 1xx Informativo. 2xx Bem Sucedido. 3xx Redireccionar. 4xx Erro do Cliente. 5xx Erro do Servidor.
HTTP Exemplos de Respostas HTTP/1.0 200 OK HTTP/1.0 301 Moved Permanently HTTP/1.0 400 Bad Request HTTP/1.0 500 Internal Server Error
Cap. 6 - Sumário ü Introdução ü World Wide Web (WWW) ü Hypertext Transfer Protocol (HTTP) ü Servidor HTTP Servidor APACHE
Servidor APACHE Introdução O Servidor Apache é um servidor HTTP muito utilizado em ambientes UNIX/Linux e Windows (http://www.apache.org) Algumas considerações: Possui uma grande fatia do mercado Estável Open source Flexível Seguro
Introdução Servidor APACHE Faz parte da maioria das distribuições do Linux. Apesar de o Apache já vir instalado na maioria das distribuições Linux, por vezes é necessário efectuar a sua reinstalação (p.ex., para fazer um upgrade). Uma distribuição pode obter-se em: http:// httpd.apache.org/download.cgi
Servidor APACHE Distribuição Já existe a versão do (com várias releases) Apache HTTP Server 2.4.3 Em UNIX/Linux, a extracção cria uma directoria com o código fonte, necessária para a compilação (onde também coloca toda a documentação). Localizações importantes: Ficheiros de configuração: /etc/httpd/conf O ficheiro mais importante da configuração do httpd é o ficheiro httpd.conf, geralmente localizado em /etc/ httpd/conf (muito comentado) Restart do servidor: service httpd restart