World Wide Web - DEINF/UFMA
World Wide Web - DEINF/UFMA
World Wide Web - DEINF/UFMA
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