14.03.2015 Views

World Wide Web - DEINF/UFMA

World Wide Web - DEINF/UFMA

World Wide Web - DEINF/UFMA

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Visão Geral da Internet<br />

<strong>World</strong> <strong>Wide</strong> <strong>Web</strong><br />

Mário Meireles Teixeira<br />

Departamento de Informática, <strong>UFMA</strong><br />

mario@deinf.ufma.br<br />

• Internet – Uma rede formada por diversas redes<br />

(internetwork).<br />

• É um conjunto de LANs/WANs interligadas a fim de<br />

fornecer facilidades de comunicação comuns. As<br />

tecnologias e protocolos de cada rede individual tornamse<br />

transparentes aos usuários.<br />

• Necessidades:<br />

<br />

<br />

<br />

Um protocolo comum<br />

Administração de Nomes<br />

Segurança...<br />

2<br />

Os Protocolos da Internet<br />

Protocolos TCP/IP<br />

• Em termos lógicos, a comunicação na Internet se baseia<br />

na família de protocolos TCP/IP.<br />

• Os protocolos TCP/IP foram criados pelo Dept. de<br />

Defesa dos EUA, tendo sido adotados como padrão no<br />

UNIX a partir do 4.3 BSD.<br />

• Protocolos:<br />

<br />

TCP, UDP, IP, ARP, RARP, ICMP, RIP, SMTP, HTTP, DNS, SLIP,<br />

PPP...<br />

• Os protocolos da família TCP/IP constituem a base<br />

para a interligação dos computadores na Internet<br />

• Arquitetura dividida em camadas:<br />

<br />

Aplicação, Transporte, Internet e Acesso à Rede<br />

• IP Protocolo de Roteamento<br />

• TCP, UDP Protocolos de Transporte<br />

• FTP, TELNET, DNS, SMTP, SNMP, NFS, HTTP ...<br />

Protocolos da Camada de Aplicação HTTP<br />

3<br />

4


Camadas TCP/IP<br />

A <strong>World</strong> <strong>Wide</strong> <strong>Web</strong><br />

4 HTTP<br />

Aplicação<br />

TCP<br />

UDP<br />

3 Transporte<br />

2 IP<br />

Internet<br />

1 (diferentes protocolos) Acesso à rede<br />

• Conceito: Estrutura arquitetônica que permite o<br />

acesso a documentos interligados espalhados pela<br />

Internet.<br />

• Aplicação tão popular que muitas pessoas pensam<br />

ser “A Internet”, porém é a aplicação do hipertexto<br />

na Internet.<br />

• Utilizações:<br />

Biblioteca: publicação e compartilhamento de<br />

informações.<br />

Comercial: Divulgação de produtos e realização de<br />

transações comerciais.<br />

Educação, comunicação, etc.<br />

5<br />

6<br />

Evolução do Hipertexto e da <strong>Web</strong><br />

Evolução do Hipertexto e da <strong>Web</strong><br />

• Em 1945, Vannevar Bush introduziu o conceito de<br />

hipertexto: modelo que organiza o conhecimento<br />

num grafo onde vértices são recursos e arestas são<br />

referências cruzadas, porém os termos foram<br />

utilizados apenas em 1965 por Ted Nelson.<br />

• A <strong>Web</strong> teve início em 1989, no centro de pesquisa<br />

CERN, surgindo da necessidade de compartilhamento<br />

de informações. Nesse ano, Tim Berners-Lee criou o<br />

protocolo HTTP<br />

• Lee apresentou uma proposta para o gerenciamento de<br />

informações do CERN e o primeiro protótipo era<br />

operacional já em 1991.<br />

• A pesquisa avançou e Marc Andreessen desenvolveu o<br />

primeiro navegador gráfico, o Mosaic, que popularizou o<br />

uso da <strong>Web</strong>.<br />

• Chegou-se, finalmente, à solução atual: o hipertexto, com<br />

a possibilidade dos links poderem conter elementos<br />

multimídia<br />

• Em 1994, foi criado o W3C (<strong>World</strong> <strong>Wide</strong> <strong>Web</strong> Consortium),<br />

voltado para o desenvolvimento <strong>Web</strong>, padronização de<br />

protocolos e incentivo à interoperabilidade de sites.<br />

7<br />

8


Organização da <strong>Web</strong><br />

• Desde 1995, a <strong>Web</strong> é responsável pela maior parte<br />

do tráfego na Internet<br />

• A <strong>Web</strong> é um gigantesco sistema de hipertexto em<br />

escala global<br />

• Separação entre o software de armazenamento da<br />

informação e o software de visualização da mesma<br />

• Sistema de nomenclatura URLs<br />

• Interações entre os componentes Paradigma C/S<br />

• A <strong>Web</strong> funciona sobre dois padrões:<br />

<br />

<br />

Linguagem HTML<br />

Protocolo HTTP<br />

Independência<br />

de plataforma<br />

Sistema de Nomenclatura – URLs<br />

• URLs permitem que os usuários acessem páginas web e outros serviços<br />

como FTP, telnet, notícias, utilizando como interface o próprio navegador:<br />

http - Hipertexto (HTML)<br />

ftp - Transferência de arquivos<br />

file - Acesso a arquivos locais<br />

news - Grupos de notícias e artigos<br />

gopher - recuperar informações pelo gopher<br />

mailto - Enviar e-mail<br />

telnet - Login remoto<br />

9<br />

10<br />

Protocolo HTTP<br />

Protocolo HTTP<br />

HTTP: hypertext transfer<br />

protocol<br />

• protocolo da camada de<br />

aplicação da <strong>Web</strong><br />

• modelo cliente/servidor<br />

cliente: browser que<br />

solicita, recebe e<br />

apresenta objetos da <strong>Web</strong><br />

server: envia objetos em<br />

resposta a pedidos<br />

• HTTP 1.0: RFC 1945<br />

• HTTP 1.1: RFC 2616<br />

PC com<br />

Explorer<br />

Mac com<br />

Navigator<br />

http request<br />

http response<br />

http request<br />

http response<br />

Servidor<br />

com<br />

Apache<br />

web server<br />

11<br />

http: protocolo de<br />

aplicação sobre TCP<br />

• cliente inicia conexão TCP<br />

(cria socket) com o servidor<br />

na porta 80<br />

• servidor aceita uma<br />

conexão TCP do cliente<br />

• mensagens http são<br />

trocadas entre o browser<br />

(cliente http) e o servidor<br />

web (servidor http)<br />

• A conexão TCP é fechada<br />

http é “stateless”:<br />

• o servidor não mantém<br />

informações sobre os pedidos<br />

dos clientes<br />

Protocolos que mantêm<br />

informações de estado são<br />

complexos:<br />

• necessidade de organizar informações<br />

passadas<br />

• se ocorrer uma falha, as informações<br />

podem ser perdidas ou<br />

gerar inconsistências entre o<br />

cliente e o servidor<br />

• baixa escalabilidade<br />

12


Exemplo de Operação HTTP (1)<br />

Exemplo (2)<br />

tempo<br />

Usuário digita a URL: www.deinf.ufma.br/prof/index.html<br />

1a. cliente http inicia conexão<br />

TCP com o servidor http<br />

(processo) em www.deinf.<br />

ufma.br, pela porta 80<br />

(default)<br />

2. cliente http client envia http<br />

request, contendo a URL,<br />

ao servidor web<br />

(referencia 10 imagens)<br />

1b. servidor http no host<br />

www.deinf.ufma.br, aguardando<br />

pela conexão TCP na porta 80,<br />

aceita a conexão, notificando o<br />

cliente<br />

3. servidor http recebe mensagem<br />

de pedido, recupera o objeto e<br />

envia uma http response,<br />

contendo o objeto solicitado, ao<br />

cliente<br />

13<br />

5. cliente http recebe mensagem de<br />

resposta contendo o arquivo html<br />

e o apresenta ao usuário<br />

5a. ao analisar o arquivo html, cliente<br />

tempo encontra 10 objetos jpeg<br />

referenciados<br />

6. cliente repete Passos 1-5 para<br />

cada um dos 10 objetos jpeg<br />

4. servidor http fecha conexão TCP<br />

(http 1.0)<br />

14<br />

Conexões persistentes e não-persistentes<br />

Mensagens HTTP: request<br />

Não-persistente<br />

• http/1.0: servidor analisa<br />

pedido, envia resposta e<br />

fecha a conexão TCP<br />

• 2 RTTs para obter um objeto:<br />

estabelecimento de<br />

conexão TCP<br />

solicitação e transferência<br />

do objeto<br />

• cada transferência sofre ainda<br />

porcausado mecanismode<br />

slow-start do TCP<br />

• muitos browsers abrem várias<br />

conexões paralelas<br />

Persistente<br />

• modo default para http/1.1<br />

• na mesma conexão TCP, são<br />

recuperados vários objetos<br />

• o cliente solicita todos os<br />

objetos referenciados, tão<br />

logo ele receba a página<br />

HTML básica (pipelining)<br />

• poucos RTTs, menos slow<br />

start<br />

• Dois tipos de mensagens HTTP: request, response<br />

• Formato ASCII (legível para humanos)<br />

linha de pedido<br />

(comandos GET,<br />

POST,HEAD )<br />

linhas de<br />

cabeçalho<br />

Carriage return,<br />

line feed<br />

indica fim da mensagem<br />

GET /dir/page.html HTTP/1.0<br />

User-agent: Mozilla/4.0<br />

Accept: text/html, image/gif, image/jpeg<br />

Accept-language: fr<br />

(linha em branco)<br />

Corpo da mensagem<br />

15<br />

16


HTTP request: formato geral<br />

Mensagens HTTP: response<br />

<br />

[: ] <br />

. . .<br />

[: ] <br />

<br />

[Entity body]<br />

linha de status<br />

(protocolo<br />

código de status<br />

frase de status)<br />

dados, p.ex.,<br />

arquivo html<br />

linhas de<br />

cabeçalho<br />

HTTP/1.0 200 OK<br />

Date: Thu, 06 Aug 1998 12:00:15 GMT<br />

Server: Apache/1.3.0 (Unix)<br />

Last-Modified: Mon, 22 Jun 1998 ...<br />

Content-Length: 6821<br />

Content-Type: text/html<br />

dados dados dados dados ...<br />

17<br />

18<br />

HTTP response: formato geral<br />

Métodos HTTP<br />

[] <br />

[: ] <br />

. . .<br />

[: ] <br />

<br />

[Entity body]<br />

• GET – Solicita o objeto identificado pela URL<br />

• HEAD – Obtém informações sobre o objeto sem que o<br />

mesmo seja retornado ao cliente (depuração)<br />

• POST – Envia informações adicionais ao servidor web<br />

(p.ex., dados de formulários)<br />

• OPTIONS – Obtém opções de comunicação disponíveis ou<br />

os requisitos associados ao objeto solicitado<br />

• PUT – Cria ou modifica um objeto no servidor web<br />

• DELETE – Remove um objeto do servidor web<br />

• TRACE – Envia mensagem de teste (loopback) ao servidor<br />

• CONNECT – Reservado para comunicação com servidores<br />

proxy<br />

19<br />

20


Códigos de Status<br />

Cookies<br />

• 1xx – Informational<br />

• 2xx – Success<br />

200 OK<br />

• 3xx – Redirection<br />

301 Moved Permanently<br />

304 Not Modified<br />

307 Temporary Redirect<br />

• 4xx – Client Error<br />

400 Bad Request<br />

401 Unauthorized<br />

404 Not Found<br />

• 5xx – Server Error<br />

503 Service Unavailable<br />

505 HTTP Version Not<br />

Supported<br />

• Gerados e lembrados pelo<br />

servidor (RFC 2109), usados<br />

mais tarde para:<br />

autenticação<br />

lembrar preferências<br />

dos usuários ou<br />

escolhas prévias<br />

• Servidor envia “cookie” ao<br />

cliente na resposta HTTP<br />

Set-cookie: 1678453<br />

• Cliente apresenta “cookie”<br />

em pedidos posteriores<br />

Cookie: 1678453<br />

cliente<br />

http request msg<br />

http response +<br />

Set-cookie: #<br />

http request msg<br />

Cookie: #<br />

http response msg<br />

http request msg<br />

Cookie: #<br />

usual http response msg<br />

servidor<br />

ação<br />

específica<br />

do cookie<br />

ação<br />

específica<br />

do cookie<br />

ação<br />

específica<br />

do cookie<br />

21<br />

22<br />

GET Condicional: caches no cliente<br />

<strong>Web</strong> Caches<br />

• servidor: só envia o objeto<br />

solicitado se sua versão for<br />

mais atual que a do cliente<br />

• cliente: especifica, na requisição<br />

HTTP, a data da versão<br />

armazenada no cache local:<br />

If-Modified-Since:<br />

<br />

• servidor: resposta não<br />

contém o objeto se a cópia<br />

do cliente estiver atualizada:<br />

304 Not Modified<br />

cliente<br />

http request<br />

If-Modified-Since:<br />

<br />

http response<br />

HTTP/1.0<br />

304 Not Modified<br />

http request<br />

If-Modified-Since:<br />

<br />

http response<br />

HTTP/1.1 200 OK<br />

<br />

servidor<br />

objeto<br />

não<br />

modificado<br />

objeto<br />

modificado<br />

23<br />

Objetivo: atender o cliente sem envolver o servidor <strong>Web</strong>,<br />

detentor da informação original<br />

• usuário configura o<br />

browser:<br />

acesso à <strong>Web</strong> é feito<br />

através de um servidor<br />

proxy<br />

• cliente envia todos os<br />

pedidos http para o<br />

proxy:<br />

se o objeto existe no<br />

cache, o proxy retorna o<br />

objeto<br />

senão, o proxy solicita o<br />

objeto ao servidor original<br />

e o envia ao cliente<br />

cliente<br />

cliente<br />

http request<br />

http response<br />

http request<br />

http response<br />

Proxy<br />

server<br />

http request<br />

http response<br />

servidor<br />

original<br />

24


Por que <strong>Web</strong> Caching?<br />

• armazenamento fica “perto”<br />

do cliente (p.ex., na mesma<br />

rede)<br />

• menor tempo de resposta<br />

• reduz o tráfego para<br />

servidores distantes:<br />

links externos podem ser<br />

caros e facilmente<br />

congestionáveis<br />

• caches hierárquicos e<br />

cooperativos (NLANR)<br />

• ICP (RFC 2186)<br />

Internet Caching Protocol,<br />

suportado pelo Squid<br />

rede<br />

institucional<br />

Internet<br />

pública<br />

servidores<br />

originais<br />

enlace de acesso<br />

1,5 Mbps<br />

10 Mbps LAN<br />

cache<br />

institucional<br />

Paradigma Cliente-Servidor na<br />

<strong>Web</strong><br />

25<br />

A Evolução da <strong>Web</strong><br />

• Na evolução da <strong>Web</strong>, é possível observar três fases, sob<br />

o ponto de vista das aplicações: (desatualizado)<br />

<br />

<br />

<br />

A <strong>Web</strong> como um repositório de documentos hipertexto<br />

• Mosaic<br />

A <strong>Web</strong> como um servidor de aplicação simples<br />

• CGI, ASP, NSAPI, HTML Dinâmico<br />

A <strong>Web</strong> como um meio de acesso a objetos servidores<br />

• CORBA/IIOP, XML, DOM<br />

Fase I - A Era do Hipertexto<br />

(ou a criação do mundo)<br />

• Mosaic Browser (1993)<br />

<br />

<br />

<br />

<br />

<br />

<br />

Aplicação C/S usando a Internet<br />

C/S em duas camadas<br />

Clientes magros, portáteis e “universais”<br />

Servidores gordos<br />

Independência de plataforma<br />

A <strong>Web</strong> se constituía em:<br />

• um Servidor de Documentos HTML; ou<br />

• um Servidor de Arquivos baseado em URLs.<br />

27<br />

28


Cliente-servidor na <strong>Web</strong><br />

(duas camadas)<br />

Evolução das Tecnologias<br />

Fase I<br />

29<br />

30<br />

Fase II - A Era Interativa<br />

(CGI & Cia.)<br />

Cliente-servidor na <strong>Web</strong><br />

(três camadas)<br />

• CGI - Common Gateway Interface (1995)<br />

<br />

<br />

<br />

<br />

<br />

Permite executar aplicações no lado servidor<br />

Parâmetros de entrada e resultados em HTML<br />

• Independência de plataforma<br />

Com o CGI, os browsers se tornaram os “terminais burros” de<br />

antigamente<br />

C/S em três camadas<br />

Porém...<br />

• O CGI é um protocolo stateless, lento e “antigo”<br />

31<br />

32


Alternativas ao CGI<br />

Evolução das Tecnologias<br />

Fase II-a<br />

• CGI lança um novo processo para cada requisição que<br />

chega dos clientes ⇒ sobrecarga no servidor<br />

• Soluções proprietárias visando melhor desempenho e<br />

interatividade:<br />

<br />

No lado servidor:<br />

• NSAPI, ISAPI, ASP, Java Servlets, Cold Fusion<br />

<br />

No lado cliente:<br />

• HTML Dinâmico, Scripts<br />

33<br />

34<br />

Evolução das Tecnologias<br />

Fase II-b<br />

Fase III - A Era dos Objetos Distribuídos<br />

(Object <strong>Web</strong>)<br />

“<strong>Web</strong> technology and distributed object technology are<br />

naturally complementary. We want to ensure that OMG<br />

and W3C work together to define a<br />

common future.”<br />

Tim Berners-Lee<br />

Diretor, W3C<br />

35<br />

36


Interação C/S com Java<br />

Objetos Distribuídos na <strong>Web</strong><br />

• O uso de CORBA/Java na <strong>Web</strong> traz os seguintes<br />

benefícios:<br />

<br />

<br />

<br />

<br />

<br />

Acaba o gargalo do CGI no servidor<br />

Propicia interações C/S não necessariamente baseadas em HTML<br />

(parâmetros tipados)<br />

CORBA guarda o estado dos clientes entre as invocações de<br />

métodos<br />

Balanceamento de carga no servidor (Adaptador de Objetos,<br />

transações distribuídas)<br />

Novas formas de interação/cooperação entre os servidores<br />

37<br />

38<br />

Objetos Distribuídos na <strong>Web</strong><br />

Objetos Distribuídos na <strong>Web</strong><br />

• Java - Transparência de Implementação<br />

(portabilidade)<br />

CORBA - Transparência de Rede<br />

• Existem vários esforços no sentido de integrar Java e<br />

CORBA:<br />

<br />

<br />

<br />

Um ORB CORBA já faz parte do Java 2 (Java IDL)<br />

Java RMI executa sobre CORBA/IIOP<br />

Enterprise Java Beans (EJB) usa CORBA como seu modelo de<br />

objetos distribuídos<br />

39<br />

40


Objetos Distribuídos na <strong>Web</strong><br />

O Paradigma C/S na Object <strong>Web</strong><br />

• Em resumo:<br />

<br />

<br />

Java permite a criação de aplicações que podem executar<br />

em qualquer máquina. Ideal para a confecção de pequenos<br />

clientes “portáteis”.<br />

CORBA viabiliza a criação de uma infra-estrutura de objetos<br />

distribuídos sobre a Internet.<br />

• Concluindo, nesta nova visão:<br />

<br />

<br />

HTTP é ideal para recuperar documentos HTML repletos de<br />

componentes (Java Beans) ou applets.<br />

Uma vez no cliente, estes usam um ORB para se comunicar<br />

com os objetos no servidor.<br />

• Camada 1<br />

<br />

<br />

<br />

<br />

<br />

<br />

Executa em browsers web ou similares<br />

Novas formas de interação: drag-and-drop, crítica de dados de<br />

entrada no cliente, páginas “animadas”, ...<br />

Presença de componentes (beans) no cliente<br />

Interações C/C, C/S, S/C (callbacks)<br />

HTTP é usado para o download das páginas<br />

CORBA é usado para a comunicação C/S<br />

41<br />

42<br />

O Paradigma C/S na Object <strong>Web</strong><br />

O Paradigma C/S na Object <strong>Web</strong><br />

• Camada 2<br />

<br />

<br />

<br />

<br />

<br />

Executa em qualquer servidor que dê suporte a clientes HTTP e<br />

CORBA (UNIX’s, NT, NetWare, OS/2, Mac OS, OS/400, MVS, ... ).<br />

Os objetos CORBA se constituem na camada intermediária deste<br />

modelo C/S<br />

Interações entre objetos no servidor<br />

Suporte a transações distribuídas é fundamental<br />

Comunicação com a terceira camada via ORB (de preferência)<br />

ou outros protocolos.<br />

• Camada 3<br />

<br />

<br />

Aqui ficam todos os recursos que estão à disposição dos clientes,<br />

acessados via objetos CORBA.<br />

Por exemplo: e-mail, news, BDRs, BDOOs, aplicações de<br />

mainframe, sistemas ERP, SAP, CSCW, EAD, E-commerce, . . .<br />

43<br />

44


Evolução das Tecnologias<br />

Fase III<br />

Principais Empresas na Object <strong>Web</strong><br />

• Netscape/AOL<br />

<br />

<br />

Coloca um ORB Java Visibroker em cada browser<br />

Usa CORBA para a comunicação no Netscape Enterprise Server<br />

• Oracle<br />

Adotou CORBA/Java como a plataforma para sua NCA (Network<br />

Computing Architecture)<br />

Oracle 8i : toda a comunicação via ORB (Visibroker)<br />

O engine de banco de dados está sendo subdividido em<br />

componentes usando CORBA<br />

Oracle Application Server 4.0<br />

45<br />

46<br />

Principais Empresas na Object <strong>Web</strong><br />

• Sun/JavaSoft<br />

<br />

<br />

CORBA está sendo integrado ao núcleo de Java<br />

Sun adotou o Visibroker como seu ORB para o Solaris<br />

• IBM/Lotus<br />

<br />

<br />

<br />

• Outros<br />

<br />

Está baseando sua plataforma de computação distribuída em<br />

CORBA<br />

Java VMs em todos os seus SO’s<br />

IBM <strong>Web</strong>Sphere, Domino 5.0, Visual Age<br />

HP, Iona, Visigenic/Borland, Novell, GemStone, ODI,<br />

Versant, Sybase, Symantec, Expersoft<br />

Fase IV - A Era dos Serviços <strong>Web</strong><br />

(<strong>Web</strong> Services)<br />

• <strong>Web</strong> Service<br />

<br />

É uma aplicação, identificada por uma URI, cujas interfaces<br />

podem ser definidas, descritas e descobertas como artefatos<br />

XML. As interações de um <strong>Web</strong> Service com outras aplicações<br />

usam mensagens baseadas em XML, trocadas por meio de<br />

protocolos baseados na Internet (W3C)<br />

• Requisitos (padrões)<br />

<br />

<br />

<br />

<br />

Comunicação –SOAP(Simple Object Access Protocol) sobre HTTP<br />

Descrição de tipos –XML Schema<br />

Descrição das interfaces dos serviços –WSDL(<strong>Web</strong> Services<br />

Description Language)<br />

Descoberta dos serviços – UDDI (Universal Description, Discovery<br />

and Integration)<br />

47<br />

48


A Era dos Serviços <strong>Web</strong><br />

Interação C/S baseada em <strong>Web</strong> Services<br />

• O “mantra” dos <strong>Web</strong> Services concentra-se em:<br />

<br />

<br />

<br />

Interoperabilidade<br />

Independência de plataforma<br />

Conformidade total com os padrões do W3C (<strong>World</strong> <strong>Wide</strong> <strong>Web</strong><br />

Consortium)<br />

• Empresas:<br />

<br />

<br />

<br />

<br />

Sun Microsystems – J2EE/Sun AS<br />

Microsoft – .NET<br />

IBM<br />

Apache – Axis/TomCat<br />

49<br />

50

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!