Universidade Federal de Mato Grosso
Programação III
Curso de Ciência da Computação
Prof. Thiago P. da Silva
[email protected]
Material basedado em [Kurose&Ross 2009] e [Gonçalves, 2007]
Agenda

Internet

WWW

Arquitetura de Aplicações de Rede

Protocolos de Camada de Aplicação

HTTP (Hypertext Transfer Protocol)

Web Proxy|
Internet

Rede eletrônica de comunicação mundial.

Gigantesca rede de redes, uma infraestrutura em rede.


Conecta milhões de computadores globalmente (sistemas
abertos), formando uma rede em que qualquer computador
pode comunicar-se com qualquer outro computador deste que
ambos estejam conectados à Internet.
A informação que viaja pela Internet o faz por meio de uma
variedade de linguagens conhecidas por protocolos.
Internet

Crescimento da Internet
Internet

Crescimento da Internet
WWW – World Wide Web



Maneira de acessar informação por meio da Internet.
Modelo de compartilhamento de informações construído sobre
a Internet.
Usa o protocolo HTTP, que é apenas uma das linguagens utilizadas na
Internet, para transmitir informações.

Browsers (Chrome, Firefox, IE)

Páginas (documentos) são ligados por meio de hyperlinks.

Documentos Web também contém gráficos, sons, textos e vídeos. Diferença entre Internet e WWW ???


Internet - gigantesca rede de redes, uma infraestrutura em
rede. coleção de redes de computadores interconectadas,
ligadas por fibra ótica, conexões sem fio, fios de cobre, etc.
WWW - uma coleção de documentos interconectados,
acessados através de links e URLs e usand o a Internet para a
transmissão dos documentos.



É uma das maneiras pelas quais a informação pode ser
disseminada pela Internet.
Internet, não a Web, é utilizada ainda para e-mail, fóruns,
Instant Messaging e transferência de arquivos.
A Web é apenas uma parte da Internet, embora uma
grande parte, mas os dois termos não são sinônimos e
não devem ser confundidos.
Conceitos Básicos


Página – documento, conjunto de informações, objetos e
hiperlinks.
Hiperlink ou link - é uma referência num documento em
hipertexto à outras partes deste documento ou a outro
documento. Como uma citação na literatura.

Permite "navegar" na Web.

Permite interatividade.
Conceitos Básicos


Browser – programa que habilita seus usuários a interagirem com
documentos virtuais da Web (páginas), que podem ser escritas em
linguagens como HTML, ASP, PHP, com ou sem folhas de estilos em
linguagens como o CSS e que estão hospedadas num Servidor WEb.
Exemplos:

Opera, Netscape, Internet Explorer,
Safari, Mozilla Firefox, Google Chrome,
Konqueror, ...
Conceitos Básicos


Website (site) – Conjunto de páginas.
Cada site tem seu endereço eletrônico particular  URL (Uniform
Resource Location - Localizador-Padrão de Recursos)
Conceitos Básicos

URL – endereço de um recurso.
Recurso:: arquivo,
impressora, etc...
protocolo://máquina/caminho/recurso



Protocolo: implementa o serviço/recurso. Ex: HTTP, FTP.
Máquina: designa o servidor que disponibiliza o documento ou
recurso designado.
Caminho: especifica o local (geralmente num sistema de
arquivos) onde se encontra o recurso dentro do servidor.
Servidor: sistema de computação
que fornece serviços a uma rede de
computadores.
Cliente e Servidor

Servidor: sistema de computação que fornece serviços a uma
rede de computadores.

Serviço: natureza diversa. Ex: arquivos, correio eletrônico.

Cliente: computadores que acessam os serviços de um servidor.


Termo Servidor - largamente aplicado a computadores
completos.
Software, partes de um sistema computacional, uma
computador.
Arquitetura de Aplicações de Redes
Tipos de Servidores
Servidor Web: Servidor responsável pelo armazenamento de
páginas de um determinado site.
Servidor de arquivos: Servidor que armazena arquivos de
diversos usuários.
Servidor de e-mail: Servidor responsável pelo armazenamento,
envio e recebimento de mensagens de correio eletrônico.
Servidor de banco de dados: Servidor que possui e manipula
informações contidas em um banco de dados.
Servidor DNS: Servidores responsáveis pela conversão de
endereços de sites em endereços IP e vice-versa.
Servidor de Aplicação: Gerenciam aplicaçoes que usam a
infraestrutura de comunicação da Internet para prover seu serviços
Protocolos de Camada de Aplicação

Definem como processos distribuídos passam mensagem entre si

Tipos de mensagens trocadas

Sintaxe dos vários tipos de mensagens

Semântica dos campos das mensagens

Regras para determinar quando e como enviar mensagens
HTTP

Protocolo para WWW (World Wide Web)

Utiliza TCP como protocolo de transporte

Stateless (Sem estado)


Ex. Requisitar várias vezes a mesma página
Modelo cliente-servidor

Existe uma resposta para cada requisição
HTTP

Situação: Conexão cliente-servidor (várias requisições/respostas
trocadas)

Para cada requisição/resposta uma nova conexão TCP – não persistente;

requisições/respostas em uma mesma conexão TCP – persistente;

Por padrão o HTTP 1.1 utiliza a conexão persistente

Mensagens HTTP

2 tipos: requisição e resposta

Codificadas em ASCII
HTTP

Conexão não persistente

Padrão para versões anteriores ao HTTP 1.1

Cada conexão TCP transporta exatamente uma requisição e uma resposta

Overhead do TCP



Alocar buffers e variáveis TCP; pode sobrecarregar o servidor.
Ex. página html com 10 imagens → são necessárioas 11 conexões (1 para o
arquivo html e 10 para as imagens)
Conexão persistente


Padrão para HTTP 1.1
O servidor deixa a conexão TCP aberta - por um período de tempo – após
enviar a resposta.


Pq o servidor não pode deixar a conexão sempre aberta?
Requisições/respostas subsequentes utilizam esta conexão

No exemplo anterior os 11 objetos (html+10 imagens) podem ser enviados pela
mesma conexão
HTTP

Requisição HTTP
Utilizado pelo proxy
Podem existir diversos
domínio em um mesmo
Host
HTTP

Médotos HTTP
HTTP

Resposta HTTP
HTTP

Código de respostas – status code


200 OK - requisição bem sucedida, objeto solicitado vem em seguida
301 Moved Permanently - objeto requisitado foi movido; a nova localização
é especificada a seguir na mensagem

400 Bad Request - mensagem de requisição não entendida pelo servidor

404 Not Found - documento requisitado não encontrado neste servidor

505 HTTP Version Not Supported
HTTP

Cabeçalho HTTP
Prática de HTTP no Wireshark

Instale o Servidor Web Apache Tomcat ou qualquer outro servidor

para baixá-lo e informações de como instalar: http://tomcat.apache.org/

pode ser qualquer versão

Inicie o Servidor Web e crie uma página simples para fazer os testes

Capture os pacotes da interface lookback (127.0.0.1) com o Wireshark



Abra o browser e acesse o endereço 127.0.0.1:8080 onde 8080 é a porta
que o Servidor Web está ”ouvindo”
Analise os pacotes capturados pelo Wireshark.
Agora utilize o telnet para abrir uma conexão com o Servidor Web e
requisitar uma página qualquer

Telnet 127.0.0.1 8080

Utilize o protocolo HTTP para recuperar a pagǵina de teste (GET)
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
GET / HTTP/1.1
GET / HTTP/1.1
Host: localhost
Host: localhost
O servidor envia a conteudo
por partes
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Fri, 24 May 2013 19:20:17 GMT
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Fri, 24 May 2013 19:23:17 GMT
2000
<html>...
dados...
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
POST /nnnn HTTP/1.1
POST /nnnn HTTP/1.1
Host: localhost
Host: localhost
HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 959
Date: Fri, 24 May 2013 19:31:15 GMT
<html>...
HTTP/1.1 404 Not Found
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 959
Date: Fri, 24 May 2013 19:31:15 GMT
<html>...
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
HEAD / HTTP/1.1
HEAD / HTTP/1.1
Host: localhost
Host: localhost
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Fri, 24 May 2013 19:41:14 GMT
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Transfer-Encoding: chunked
Date: Fri, 24 May 2013 19:41:14 GMT
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
OPTIONS * HTTP/1.1
OPTIONS * HTTP/1.1
Host: localhost
Host: localhost
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE, OPTIONS
Content-Length: 0
HTTP/1.1 200 OK
Date: Fri, 24 May 2013 19:55:10 GMT
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE,
OPTIONS
Content-Length: 0
Date: Fri, 24 May 2013 19:55:10 GMT
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
TRACE / HTTP/1.1
TRACE / HTTP/1.1
Host: localhost
Host: localhost
HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
Allow: OPTIONS
Content-Length: 0
Date: Fri, 24 May 2013 19:58:57 GMT
Não está permitido o
TRACE
HTTP/1.1 405 Method Not Allowed
Server: Apache-Coyote/1.1
Allow: OPTIONS
Content-Length: 0
Date: Fri, 24 May 2013 19:58:57 GMT
Prática de HTTP no Wireshark
thiago@thiago-Vostro1510:~$ telnet 127.0.0.1 8080
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
DELETE /thiago.html HTTP/1.1
DELETE /thiago.html HTTP/1.1
Host: localhost
Host: localhost
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 961
Date: Fri, 24 May 2013 20:03:34 GMT
HTTP/1.1 403 Forbidden
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 961
Date: Fri, 24 May 2013 20:03:34 GMT
Web Proxy

Caches Web ou servidores proxy

Servidor Web intermédiário entre os clientes e os servidores reais

Mantém cópias de objetos recentemente requisitados



ignora conteúdo marcado como non-cacheable (cabeçalho HTTP)
Finalidades principais:

reduzir o tempo de resposta para uma requisição

reduzir o tráfego no enlace de acesso à Internet
Funcionamemento básico:

Navegador cliente conecta-se ao proxy

Se proxy tem o conteúdo solicitado, envia resposta ao cliente imediatamente

Senão, proxy conecta-se (como cliente!) ao servidor Web real e solicita o objeto

Proxy guarda o objeto em sua cache
Web Proxy
HTTP e Web Proxy

Como manter o objeto em cache atualizado?

Objeto mantido no cache pode ter sido modificado no servidor

Cliente faz uma requisição para o cache


Cache proxy envia uma requisição ao servidor web: especifica data da
versão armazenada no pedido HTTP


GET /objeto HTTP/1.1
Host: www.aa.com.br
If-modified-since: <data>
Servidor web responde: resposta não contém objeto se a cópia do proxy está
atualizada


GET /objeto HTTP/1.1
HTTP/1.0 304 Not Modified
Date: <data>
Cache envia sua cópia para o cliente
Para casa



Investigar os tipos de MIME (
http://www.iana.org/assignments/media-types)
Instalar Apache Tomcat 5.5 ou superior (
http://tomcat.apache.org/)
Brincar com telnet e Tomcat
Próxima Aula

Definição dos Grupos

Instalando o Tomcat

Introdução ao Servlet
Download

Servidor