Vous êtes sur la page 1sur 86

Captulo 03:

Camada de Aplicao

Ricardo Couto Antunes da Rocha


rcarocha@inf.ufg.br

2005 Ricardo Couto Antunes da Rocha


Roteiro

Caractersticas, Arquitetura e Conceitos


Bsicos
DNS Domain Name System
HTTP WWW
Servidores Proxy
Programao com Sockets
Requisitos de aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 2


Camada de Aplicao
Arquitetura TCP/IP

Mensagem Aplicao

Segmento Transporte

Datagrama IP Rede

Quadro Enlace

Bits Fisica

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 3


Aplicaes e protocolos
da camada de aplicao
aplicao
Aplicaes de rede: processos transporte
distribudos rede
enlace
pares de processos que trocam fsica
mensagens atravs da rede;
executam nos sistemas finais da
comunicao;
Identificado pelas portas;
Comunicao fim-a-fim;
p.ex., Browser, correio eletrnico
Protocolos da camada de aplicao
faz parte da aplicao;
aplicao
define a semntica e ordem dos aplicao transporte
transporte rede
comandos trocados entre as aplicaes; rede enlace
usam servios providos por protocolos enlace fsica
fsica
da camada inferior (TCP, UDP);
Exemplo, HTTP (proto) e Browser (Apl de
rede).

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 4


Arquiteturas de
Aplicaes
Cliente-servidor
Princpio bsico: processamento dividido
entre uma aplicao cliente e uma aplicao
servidora (substituiu o paradigma mainframe-
terminais)
Servidores atendem a vrios clientes e so
centralizados
Peer-to-Peer (P2P)
Mquinas dividem igualmente o processamento
e recursos
Mquinas so distribudas sem obedecer
qualquer arquitetura
Hbridas de cliente-servidor e P2P
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 5
Paradigma de comunicao
Cliente/Servidor
aplicao
Aplicao de rede tem duas partes: transporte
cliente e servidor rede
enlace
Servidor: fsica
prov ao cliente o servio requisitado;
pedido
Possui endereo fixo e bem conhecido;
p.ex., servidor WWW envia pgina solicitada
pelo browser cliente;
Mquina com alto poder de processamento

Cliente: resposta
Envia requisies para o servidor;
Mquina com baixo poder de aplicao
transporte
processamento rede
tipicamente solicita servio ao servidor; enlace
fsica
Conexo pode ser intermitente
Dois clientes no se comunicam
diretamente;

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 6


Protocolos da Camada de
Aplicao
Exemplos: Exemplos
http Gopher
SMTP IIOP
DNS RMI
TLS/SSL LDAP
FTP SNMP
IMAP Telnet
SSH
RTP
SIP
POP3
WhoIS
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 7
Comunicao entre
Processos
Aplicao distribuda em rede
Processos trocam mensagens entre si pela rede
Processos assumem papel de cliente ou servidor
No contexto de uma sesso de comunicao entre um
par de processos, o processo que inicia a
comunicao rotulado de cliente e o processo que
espera ser contactado para iniciar a sesso o
servidor.
Mesmo em aplicaes P2P devem existir
processos que atuem como clientes e
servidores, no sentido da comunicao entre
processos.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 8


Endereamento de
Processos
Processos so identificados e endereados
com o par (endereo IP, porta)
Endereo IP: estao onde o processo se
encontra
Porta: identificador do processo na estao
Portas
SAP no nvel de transporte
Identificam os processos origem e destino
Viabilizam a comunicao fim-a-fim
Permite envio e recepo de datagramas de
forma independente
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 9
Portas
Como o protocolo de transporte identifica
para qual processo ele tem que entregar as
informaes na camada de aplicao?
Atravs das portas

Porta 1 Porta 2 Porta n

Nvel de Transporte

Nvel de Rede
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 10
Comunicao Cliente-
Servidor
Porta Origem Porta Destino Dados

Porta bem Servidor


Outlook conhecida WWW
Servidor
Internet de
Explorer email

1024 1025 80 25
Porta aleatria

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 11


Portas
Exemplo: Protocolo TCP ou UDP
Portas so nmeros inteiros de 16 bits
Padronizao da IANA (Internet Assigned Number Authority)
A IAB (Internet Activity Board) define o nmero da porta que
cada servio da Internet deve estar associado

0
PORTAS RESERVADAS PARA SERVIOS
PADRONIZADOS
1023
1024

PORTAS UTILIZADAS POR CLIENTES E


SERVIOS NO PADRONIZADOS

65535
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 12
Portas
Processo Processo Processo Processo

APLICAO APLICAO
PORTA PORTA PORTA PORTA
TRANSPORTE TRANSPORTE TRANSPORTE
IP IP IP
REDE REDE
MAC MAC
ENLACE/FSICA ENLACE/FSICA

REDE
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 13
Portas
Aplicao Aplicao

Definio de
portas SMTP FTP DNS NFS
Porta
Transporte TCP UDP
Protocolo
Rede
IP
Fsica Endereo IP
Placa de Rede / Fax Modem
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 14
Comunicao Cliente-
Servidor
Porta Origem Porta Destino Dados

Como definida/atribuda uma porta para uma aplicao?

Porta bem Servidor


Outlook conhecida WWW
Servidor
Internet de
Explorer email

1024 1025 80 25
Porta aleatria

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 15


Parmetros de protocolos
Objetivo do protocolo
Protocolo de transporte: TCP ou UDP
Porta (servidora!): padronizada
Caractersticas gerais: arquitetura P2P/CS,
com estado/sem estado (sesso), textual,
proprietrio/aberto, escopo de uso, etc.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 16


Protocolo da Camada de
Aplicao
Define
Tipos de mensagens trocadas, como de
requisio e resposta
Sintaxe dos vrios tipos de mensagens, tais
como campos da mensagem e como os campos
so delineados
Semntica dos campos
Regras para identificar como e quando um
processo envia mensagens e responde a
mensagens

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 17


Roteiro

Caractersticas, Arquitetura e Conceitos


Bsicos
DNS Domain Name System
HTTP WWW
Servidores Proxy
Programao com Sockets
Requisitos de aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 18


DNS Domain Name
System
Camada de transporte e rede s entendem endereos IP
Identificador 32 bits (v.4): 200.137.221.69, 208.67.222.222,
139.82.24.231

Dificuldade para uso de endereos IP por usurios e


aplicaes
Endereos IP no possuem um significado claro para usurio:
propsito, localizao da estao
Difceis de lembrar e validar
Endereos IP podem mudar

DNS mapeia endereos IP em nomes hierrquicos e


significantes
Consulta: qual o IP da estao www.inf.ufg.br?

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 19


DNS - Domain Name
System
Padro Aberto para Resoluo de Nomes
Hierrquicos
Agrupa nomes em domnios;
Base de dados distribuda implementada em uma
hierarquia de servidores DNS;
Protocolo de aplicao que permite as mquinas
consultarem essa base de dados distribuda.
Atende requisies na porta 53
Utiliza UDP e TCP
Especificaes do DNS (RFCs)
RFCs 1034, 1035, 1101, 1123, 1183 e 1536.
Principal implementao dos servidores DNS:
Berkeley Internet Name Domain (BIND)
Implementao desenvolvida na Berkeley University

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 20


Hierarquia de Domnios
Estrutura hierrquica de nomes
. Servidores raiz (TLD)
Nvel 1

au pt com br Servidores de
domnio Nvel 2

com uminho yahoo ufg Servidores de


domnio Nvel 3

cs ee cc www prppg inf

www www
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 21
Organizao dos
Domnios
O espao de domnio de nomes dividido
em duas reas principais:
Domnios Genricos:
3 caracteres para indicar a atividade.
.com, .edu, .gov, .int, .mil, .net, .org
.int: organizaes internacionais
.mil: organizaes militares
.org: organizaes no comerciais
Domnios Geogrficos:
2 caracteres para identificar o pas.
.br, .fr, .jp, etc.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 22


Descentralizao
A descentralizao e delegao de
autoridade simplifica o gerenciamento,
limita o trfego e aumenta a confiabilidade.
.
Raiz Gerenciado pela
InterNIC
( Network Information
Center )

edu com gov br Gerenciado


pelo NIC

com ufg

uol bol www inf


Gerenciad Gerencia
o por do pela
terceiros UFG
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 23
Registro de Recursos
RR um tupla que contm
Domain_name, Time_to_Live, Type, Value

Tipo Significado Valor


SOA Start of authority Parmetros da zona
A IP de um host Inteiro 32-bits (IPv4)
MX Servidor e-mail Prioridade, domnio aceitando
e-mail
NS Servidor de Nome do servidor to domnio
nomes
CNAM Nome cannico Nome do domnio
E
PTR Ponteiro Apelido para endereo IP
HINFO Descrio da Texto ASCII com CPU, OS, ..
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 24
Registros de Recursos

Exemplo parcial de registros no BD do domnio cs.vu.nl


2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 25
Zonas
.
Zona .br
au pt com br

Zona ufg.br
com uminho yahoo ufg
Zona inf.ufg.b

cs ee cc www prppg inf

www www

Cada zona define responsabilidades pelo


BD de domnio
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 26
Tipos de Servidores de
DNS
Primrio
o servidor autoritrio para zona. A incluso, alteraes ou
excluso dos registros da zona so feitas atravs deste servidor.
O servidor primrio envia uma cpia dos seus arquivos de dados
para o servidor secundrio atravs de um processo denominado
zone transfer
Secundrio
Funciona como backup. Apenas l os arquivos de dados do
servidor primrio, e responde as requisies dos clientes quando
requisitado.
Caching-Only
So servidores DNS que apenas efetuam consultas e guardam o
resultado numa cache e retornam os resultados.
Um servidor DNS realiza consulta a outros servidores sempre que
tiver que localizar um nome externo as zonas que controla.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 27


Resoluo de
Requisies DNS
Resoluo Resoluo Interativa
Recursiva

dns.brt.com.br www.ufg.br
a.root-server.net
a.root-server.net
cliente1.brt.com.br br NS ns.nic.br
www.ufg.br
www.ufg.br
ns.nic.br
ns.nic.br
ufg.br NS dns.ufg.br
200.137.221.69
www.ufg.br
dns.ufg.br
dns.ufg.br
www.ufg.br A 200.137.221.69

Resoluo do IP da estao www.ufg.br

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 28


Contedo da
Requisio/Resposta

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 29


Usos Adicionais
Caractersticas interessantes
Simples paradigma request-response
Bancos de dados textuais simples
Cache distribudo automaticamente mantido pela Internet
Balanceamento de carga baseado em DNS
Manuteno de mais um registro A (IP) para mesmo nome
Respostas alternam a sequncia dos IPs da resposta
Bancos de dados simples textuais
Ex: Lista negra de IPs mantida por SPAMHAUS
Validao de origem de mensagens no DomainKeys
DNS mantm chave pblica de autenticao de origem de
mensagens de um domnio

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 30


Roteiro

Caractersticas, Arquitetura e Conceitos


Bsicos
DNS Domain Name System
HTTP WWW
Servidores Proxy
Programao com Sockets
Requisitos de aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 31


HTTP Breve histrico
Incio 1989 CERN (Centro Europeu de
Pesquisas Nucleares) precisava de um meio
de viabilizar o trabalho cooperativo por
cientistas espalhados por diversos pases,
atravs da troca de documentos.
1991 primeira verso da Web, baseada
em texto.
1993 NCSA - browser grfico Mosaic
1994 Netscape
1994 CERN e M.I.T fundam o W3C (w3.org)

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 32


HTTP - O Servidor Web

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 33


Servidor Web
A resposta do servidor tambm na forma
texto um hipertexto no formato HTML:
<HTML>
<HEAD>
<TITLE> ....</TITLE>
...
</HEAD>
</HTML>

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 34


Formato HTML

HTML da
Pgina formatada
pgina pelo browser

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 35


Formato HTML
Algumas tags HTML

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 36


O modelo da operao da
Web

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 37


HTTP - O Servidor Web
Idia bsica: distribuio de contedo
esttico (tipicamente pginas escritas em
HTML).
Evoluo: distribuio de contedo
gerado dinamicamente, em resposta a
dados fornecidos pelo usurio (por exemplo
atravs da consulta a um banco de dados
corporativo).
CGI Common Gateway Interface: a forma
mais antiga de prover contedo dinmico.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 38


Common Gateway
Interface

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 39


URL Uniform Resource
Locator
Os URLs constituem a forma de endereamento dos
recursos na Web. formado por quatro partes:
Ex. de uma URL:
http://www.uol.com.br/esportes/index.html
o protocolo utilizado
http
nome do domnio
www.uol.com.br
caminho de busca / Diretrio
esportes
nome do arquivo
index.html

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 40


URL Uniform Resource
Locator
O protocolo define o tipo do servidor no
qual est localizado o recurso. A partir
desta informao o browser determina a
porta e o tipo de protocolo utilizado. Os
principais protocolos so:
ftp: file transfer protocol
http: hypertext transfer protocol
mailto: envio de e-mail para certo endereo
telnet:
skype: chamada Skype

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 41


URL Uniform Resource
Locator
O nome do domnio (domain name) define a
localizao do servidor que hospeda o recurso
desejado.
Pode ser fornecido como um nome de domnio ou
como um endereo IP.
O par
<protocolo>://<nome do domnio>
na maioria dos casos d acesso home page ou
diretrio raiz do servidor no havendo
necessidade de especificar o nome do arquivo. Ex.:
www.globo.com/index.html
S www.globo.com o suficiente
Por que ???
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 42
URL Uniform Resource
Locator

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 43


HTTP - HyperText
Transmission Protocol
HTTP - HyperText Transmission Protocol
o protocolo usado na comunicao entre o
servidor Web e o Browser.
HTTP constitui a base sobre a qual o
servidor Web realiza suas operaes.
A idia inicial era a de que o HTTP deveria
ser um protocolo bem simples.
Mesmo aps vrias modificaes e
melhorias, a idia bsica do HTTP continua
sendo a mesma simplicidade.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 44


HTTP - HyperText
Transmission Protocol
Todo site na Web deve manter um processo
servidor que fica aceitando pedidos de
conexo na porta TCP 80;
Uma vez estabelecida a conexo, o cliente
envia um pedido e o servidor envia a resposta
correspondente;
Tendo atendido o pedido, a conexo
encerrada.
O protocolo HTTP define o conjunto de pedidos
possveis e as respostas correspondentes.
Todas as mensagens/comandos HTTP so
textuais
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 45
HTTP

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 46


Viso geral do HTTP
Utiliza TCP:
Cliente inicia conexo TCP (cria socket) para o servidor
na porta 80
Servidor aceita uma conexo TCP do cliente
mensagens HTTP (mensagens do protocolo de camada
de aplicao) so trocadas entre o browser (cliente HTTP)
e o servidor Web (servidor HTTP)
A conexo TCP fechada
HTTP stateless (sem estado)
O servidor no mantm informao sobre os pedidos
passados pelos clientes
Protocolos que mantm informaes de estado
so complexos!
Histrico do passado (estado) deve ser mantido
Se o servidor/cliente quebra, suas vises de estado
podem ser inconsistentes, devendo ser reconciliadas
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 47
Etapas de abertura de uma
pgina WEB no HTTP
Um exemplo:
http://www.w3.org/hypertext/WWW/TheProject.html

1. Browser interroga DNS pelo IP de www.w3.org


2. DNS responde: 18.23.0.23
3. Browser estabelece a conexo na porta 80 de 18.23.0.23
4. browser envia comando:
GET /hypertext/WWW/TheProject.html
O servidor www.w3.org envia o arquivo TheProject.html
armazenado no diretrio /hypertext/WWW/
O cliente armazena a resposta do servidor na memria
A conexo TCP encerrada
O browser apresenta o texto contido em TheProject.html.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 48


Mensagem HTTP request
Dois tipos de mensagens HTTP: request, response
HTTP request message:
ASCII (formato legvel para humanos)

Linha de pedido
(comandos GET, POST, GET /somedir/page.html HTTP/1.0
HEAD ) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
Linhas de Accept-language:fr
cabealho
(extra carriage return, line feed)
Carriage return,
line feed
indica fim da mensagem

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 49


HTTP Comandos

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 50


HTTP Resultado de uma
requisio
HTTP/1.0 200 Document follows
MIME-Version: 1.0 Cabealho
Server:CERN/3.0
Content-Type: text/html
Content-Length:8247

<HEAD> <TITLE> The World Wide Web


Consortion (W3C)
Contedo
</TITLE>
</HEAD>
<BODY>
...
</BODY>
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 51
Mensagem HTTP
response
Linha de status
(protocolo
cdigo de status HTTP/1.0 200 OK
frase de status) Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Linhas de Last-Modified: Mon, 22 Jun 1998 ...
cabealho Content-Length: 6821
Content-Type: text/html

data data data data data ...


Dados, ex.:
arquivo html

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 52


Cdigos de status das
respostas
Na primeira linha da mensagem de resposta
servidor cliente.
Alguns exemplos de cdigos:
200 OK
Requisio bem-sucedida, objeto requisitado a seguir nesta
mensagem
301 Moved permanently
Objeto requisitado foi movido, nova localizao especificada
a seguir nesta mensagem (Location:)
400 Bad request
Mensagem de requisio no compreendida pelo servidor
404 Not Found
Documento requisitado no encontrado neste servidor
505 HTTP version not supported
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 53
Cabealho HTTP

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 54


Conexes HTTP
HTTP no persistente
No mximo, um objeto enviado sobre uma conexo TCP
O HTTP/1.0 utiliza HTTP no persistente
HTTP persistente
Mltiplos objetos podem ser enviados sobre uma conexo TCP
entre o cliente e o servidor
O HTTP/1.1 utiliza conexes persistentes em seu modo padro
Evita-se o tempo necessrio para incio e trmino de conexes
TCP e um possvel overhead para gerenciamento das conexes
Sem pipeline: cliente envia nova requisio pela conexo, aps o
recebimento da resposta (contedo web)
Com pipeline: cliente pode enviar requisies subsequentes,
mesmo que no tenha recebido todo o contedo anteriormente
solicitado

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 55


Conexes HTTP
Conexes HTTP persistentes e com pipeline
aumentam o desempenho da interao
cliente-servidor HTTP, mas ainda no
permitem o carregamento concorrente de
contedo
Na prtica, os browsers estabelecem vrias
conexes com o servidor para requisitar objetos
web concorrentemente
Exemplo de configurao de browsers (Firefox
2.0.3) Mximo de conexes 24
Mx. conexes por servidor 8
Mx. requisies por
4
pipelining
Timeout de conexes 300 s
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 56
Estado na interao web
HTTP no possui estado (stateless)
O que acontece nas seguintes situaes?
Usurio acessa pgina web protegida, mas s
precisa digitar login/senha uma vez
Browser envia login/senha em toda requisio,
mantendo em memria o ltimo login feito pelo
usurio. Falsa noo de estado!
Cliente interrompe download de objeto web e
mais tarde continua de onde havia parado
Cliente armazena ltimo byte baixado. Nas
requisies subsequentes ele utiliza GET parcial,
informando a regio (byte origem e byte fim) do
objeto requisitado
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 57
Estado na interao web
Mecanismos para manuteno de estado em interaes
na web
Cookies
Sesses do lado do servidor
Variveis escondidas em formulrios
Parmetros codificados nas URLs
Elementos de cookies
Linha de cabealho do cookie na mensagem HTTP response
Linha de cabealho do cookie na mensagem HTTP request
Arquivo de cookies mantido no host do cliente e mantido pelo
browser do usurio
Banco de dados no servidor, responsvel por associaes entre
cookies e entradas em um banco de dados

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 58


Estado no interao web
Cookies
Cliente Servidor
en
Cookie file usual HTTP request msg de trad
servidor da a n
ebay: 8734 usual HTTP response + cria o ID 1678 do o
s b ba
Set-cookie: 1678 para o usurio ac nc
ke o
nd
Cookie file
usual HTTP request msg
amazon: 1678 especificao
cookie: 1678 c esso
ebay: 8734 do cookie a
usual HTTP response msg

o s
es
Uma semana depois:

ac
Cookie file usual HTTP request msg
especificao
amazon: 1678 cookie: 1678
do cookie
ebay: 8734 usual HTTP response msg

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 59


Caching de objetos
Podem ser implementados tanto no cliente como
em servidor proxy (a ser discutido mais adiante)
Qual objeto deve ser carregado do cache, ao invs
do servidor?
Quando foi a ltima modificao no objeto? Cabealho
Last-modified!
Objetos modificados recentemente so bons candidatos a
serem sempre recarregados.
Tag HTML permite indicar quando pginas web sempre
expiram ou qual a sua data de expirao
Implementao de caching baseada fortemente
no GET condicional
GET se modificado desde data X
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 60
Caching de objetos
GET condicional
Cliente: especifica Cliente Servidor
data da verso HTTP request msg
armazenada no If-modified-since: Objeto
pedido HTTP <date> no
If-modified-since: modificado
<date> HTTP response
HTTP/1.0
Servidor: resposta 304 Not Modified
no contm objeto
se a cpia HTTP request msg
atualizada: If-modified-since:
HTTP/1.0 304 Not <date> Objeto
modificado
Modified
HTTP response
HTTP/1.1 200 OK
<data>

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 61


Roteiro

Caractersticas, Arquitetura e Conceitos


Bsicos
DNS Domain Name System
HTTP WWW
Servidores Proxy
Programao com Sockets
Requisitos de aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 62


Programao de sockets
Objetivo: aprender a construir aplicaes cliente-
servidor que se comunicam usando sockets
Socket API
Introduzida no BSD4.1 UNIX, 1981
Explicitamente criados, usados e liberados pelas
aplicaes
Paradigma cliente-servidor
Dois tipos de servio de transporte via socket API:
Datagrama no confivel
Confivel, orientado a cadeias de bytes
Socket
Uma interface local, criada por aplicaes, controlada pelo
OS (uma porta) na qual os processos de aplicao
podem tanto enviar quanto receber mensagens de e para
outro processo de aplicao (local ou remoto)

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 63


Programao de sockets
com TCP
Socket: uma porta entre o processo de aplicao
e o protocolo de transporte fim-a-fim (UDP or TCP)
Servio TCP: transferncia confivel de bytes de
um processo para outro

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 64


Programao de sockets
com TCP
Cliente deve contatar o servidor
Processo servidor j deve estar em execuo
Servidor deve ter criado socket (porta) que aceita o contato do cliente
Cliente contata o servidor
Criando um socket TCP local
Especificando endereo IP e nmero da porta do processo servidor
Quando o cliente cria o socket: cliente TCP estabelece conexo com o
TCP do servidor
Quando contatado pelo cliente, o TCP do servidor cria um novo socket
para o processo servidor comunicar-se com o cliente
Permite ao servidor conversar com mltiplos clientes
Nmeros da porta de origem so usados para distinguir o cliente
Ponto de vista da aplicao
TCP fornece a transferncia confivel, em ordem de bytes (pipe) entre o
cliente e o servidor

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 65


Chamadas de Sistema
socket() criar um socket
bind() associa uma porta com um socket
connect() estabelece uma conexo por um socket a um
destino
listen() solicita a espera por conexes/pacotes em uma
certa porta
accept() aceita conexes recebidos em uma porta
send() / recv() envia ou recebe bytes em uma conexo
(TCP)
sendto() / recvfrom() envia ou recebe bytes em um
socket orientado a datagramas (UDP)
close() solicita o fechamento do socket (sempre
unilateral)

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 66


Velocidade de
Transmisso
Velocidade do meio
Efetiva na camada de transporte, e no na
camada de enlace
Capacidade de transmisso (envio de
send()) no socket
Capacidade de recepo (invocao de
recv()) no socket
Tamanho dos buffers (em teoria)
Qual o efeito de um buffer muito pequeno?
Qual o efeito de um buffer infinito?

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 67


Jargo stream
Um stream uma seqncia de caracteres que
fluem para dentro ou para fora de um processo
Um stream de entrada agregado a alguma fonte
de entrada para o processo, ex.: teclado ou socket
Um stream de sada agregado a uma fonte de
sada, ex.: monitor ou socket
No TCP, antes do incio de uma conexo,
necessrio o handshake, com o qual cliente TCP e
servidor TCP se preparam para uma conversa.
Handshake transparente para aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 68


Programao de sockets
com TCP
Exemplo de aplicao
cliente-servidor:
1. Cliente l linha da entrada-
padro do sistema
(inFromUser stream), envia
para o servidor via socket h ak
e
ds
(outToServer stream) ha
n
ay
2. Servidor l linha do socket ree
-w

Th
3. Servidor converte linha para
letras maisculas e envia de
volta ao cliente
4. Cliente l a linha modificada
atravs do (inFromServer
stream)

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 69


Interao cliente-servidor
TCP
Servidor Cliente
rodando em hostid
Cria socket port=x,
para requisio entrante:
welcomeSocket =
ServerSocket()
configurao da
Criar socket conectado a
Esperar por requisio conexo TCP
hostid, port=x
de conexo entrante: clientSocket =
connectionSocket = Socket()
welcomeSocket.accept
()
Enviar requisio usando
clientSocket
Ler requisio de
connectionSocket

Escrever resposta para Ler resposta de


connectionSocket clientSocket

Fechar
Fechar clientSocket
connectionSocket

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 70


Exemplo: cliente Java
(TCP)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exceptio
{
String sentence;
String modifiedSentence;
Cria BufferedReader inFromUser =
stream de entrada new BufferedReader(new InputStreamReader(System.
Cria Socket clientSocket = new Socket("hostname", 6789);
socket cliente,
conecta ao servidor DataOutputStream outToServer =
Cria new DataOutputStream(clientSocket.getOutputStream
stream de sada
ligado ao socket

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 71


Exemplo: cliente Java
(TCP)
Cria BufferedReader inFromServer =
stream de entrada new BufferedReader( new
ligado ao socket InputStreamReader(clientSocket.getInputStream()

sentence = inFromUser.readLine();
Envia linha
para o servidor outToServer.writeBytes(sentence + '\n');

L linha modifiedSentence = inFromServer.readLine();


do servidor
System.out.println("FROM SERVER: " + modifiedSen

clientSocket.close();

}
}
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 72
Exemplo: servidor Java
(TCP)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main( String argv[]) throws Exception
{
String clientSentence;
Cria String capitalizedSentence;
socket de aceitao ServerSocket welcomeSocket = new ServerSocket(6789
na porta 6789
while (true) {
Espera, no socket
de aceitao, por Socket connectionSocket = welcomeSocket.accept()
contato do cliente
BufferedReader inFromClient =
Cria stream de new BufferedReader( new
entrada ligado InputStreamReader(connectionSocket.getInputStre
ao socket

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 73


Exemplo: servidor Java
(TCP)
Cria stream de
sada ligado ao DataOutputStream outToClient =
socket new DataOutputStream(connectionSocket.getOutputStr
L linha do
socket clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n


Escreve linha
para o socket outToClient.writeBytes(capitalizedSentence);
}
}
} Fim do while loop,
retorne e espere por
outra conexo do cliente

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 74


Programao de sockets
com UDP
UDP: no h conexo entre o cliente e o
servidor
No existe apresentao
Transmissor envia explicitamente endereo IP e
porta de destino em cada mensagem
Servidor deve extrair o endereo IP e porta do
transmissor de cada datagrama recebido
UDP: dados transmitidos podem ser recebidos
fora de ordem ou perdidos

Ponto de vista da aplicao


UDP fornece a transferncia no confivel de grupos
de bytes (datagramas) entre o cliente e o servidor

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 75


Interao cliente-
servidor: UDP

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 76


Exemplo: cliente Java
(UDP)

Lado cliente Lado servidor

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 77


Exemplo: cliente Java
(UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main (String args[]) throws
Exception
{
Cria BufferedReader inFromUser =
stream de entrada new BufferedReader( new
InputStreamReader(System.in));
Cria
socket cliente DatagramSocket clientSocket = new
DatagramSocket();
Translada
nome do InetAddress IPAddress =
hospedeiro para InetAddress.getByName("hostname");
endereo IP byte[] sendData = new byte[1024];
usando DNS byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 78
Exemplo: cliente Java
(UDP)
Cria datagrama com
dados a enviar,
tamanho, endereo DatagramPacket sendPacket =
new DatagramPacket(sendData,
IP porta sendData.length, IPAddress, 9876);
clientSocket.send(sendPacket);
Envia datagrama DatagramPacket receivePacket =
para servidor new DatagramPacket(receiveData,
receiveData.length);

L datagrama clientSocket.receive(receivePacket);
do servidor
String modifiedSentence =
new String(receivePacket.getData());
System.out.println("FROM SERVER:" +
modifiedSentence);
clientSocket.close();
}
}
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 79
Exemplo: servidor Java
(UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main (String args[]) throws Exception
Cria{
socket datagrama
na porta 9876 DatagramSocket serverSocket = new DatagramSocket(
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while (true)
{
Cria espao para
DatagramPacket receivePacket =
datagramas recebidos new DatagramPacket(receiveData, receiveData.len
serverSocket.receive(receivePacket);
Recebe
datagrama
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 80
Exemplo: servidor Java
(UDP)
Obtm endereo
IP String sentence = new String(receivePacket.getData());
e nmero da InetAddress IPAddress = receivePacket.getAddress();
porta
do transmissor int port = receivePacket.getPort();
String capitalizedSentence = sentence.toUpperCase
sendData = capitalizedSentence.getBytes();
Cria datagrama DatagramPacket sendPacket =
para enviar ao cliente new DatagramPacket(sendData, sendData.length, IPAddr
port);
Escreve o serverSocket.send(sendPacket);
datagrama para }
dentro do socket}
}
Termina o while loop,
retorna e espera por
outro datagrama
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 81
Roteiro

Caractersticas, Arquitetura e Conceitos


Bsicos
DNS Domain Name System
HTTP WWW
Servidores Proxy
Programao com Sockets
Requisitos de aplicaes

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 82


De qual servio de transporte
uma aplicao necessita?
Perda de dados
Algumas aplicaes (ex.: udio) podem tolerar alguma
perda
Outras aplicaes (ex.: transferncia de arquivos, telnet)
exigem transferncia de dados 100% confivel
Temporizao
Algumas aplicaes (ex.: telefonia Internet, jogos
interativos) exigem baixos atrasos para serem efetivos
Banda passante
Algumas aplicaes (ex.: multimdia) exigem uma banda
mnima para serem efetivas
Outras aplicaes (aplicaes elsticas) melhoram
quando a banda disponvel aumenta

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 83


Requisitos de transporte
de aplicao comuns
Aplicao Perdas Banda Sensvel ao
atraso
file transfer sem perdas elstica
e-mail sem perdas elstica no
Web documents sem perdas elstica no
real-time udio/vdeo tolerante adio: 5 Kb-1 no
Mb sim, 100s mseg
stored udio/video tolerante vdeo:10 Kb-5
jogos interativos tolerante Mb sim, segundos
e-business sem perda igual anterior sim, 100s mseg
kbps
sim
elstica

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 84


Servios dos protocolos
de transporte da Internet
Servio TCP:
Orientado conexo: conexo requerida entre processos
cliente e servidor
Transporte confivel entre os processor de envio e recepo
Controle de fluxo: o transmissor no sobrecarrega o receptor

Controle de congestionamento: protege a rede do excesso


de trfego
No oferece: garantias de temporizao e de banda mnima
Servio UDP:
Transferncia de dados no confivel entre os processos
transmissor e receptor
No oferece: estabelecimento de conexo, confiabilidade,
controle de fluxo e de congestionamento, garantia de
temporizao e de banda mnima.

2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 85


Aplicao e protocolos
de transporte da Internet
Protocolo de Protocolo de
Aplicao aplicao transporte

e-mail smtp [RFC 821] TCP


acesso de terminais remotos telnet [RFC 854] TCP
Web http [RFC 2068] TCP
transferncia de arquivos ftp [RFC 959] TCP
streaming multimdia RTP ou TCP ou UDP
proprietrio
servidor de arquivos remoto (ex.: TCP ou UDP
telefonia Internet RealNetworks) tipicamente UDP
NFS
RTP ou
proprietrio
(ex.: Vocaltec)
2006 Vagner Sacramento / Ricardo Couto Antunes da Rocha 86

Vous aimerez peut-être aussi