Você está na página 1de 7

Agenda

Arquiteturas de aplicao
Comunicao entre processos
Protocolos da camada de aplicao

Redes de Comunicao
- Camada de Aplicao -

P2P
HTTP
SMTP
DNS

Prof. Juliano F. Kazienko

Juliano F. Kazienko
kazienko@unipampa.edu.br

Arquiteturas de Aplicao

Arquiteturas de Aplicao

Cliente-Servidor
Peer-to-Peer (P2P)
Arquiteturas hbridas
Mtricas

Cliente-Servidor
Servidor sempre ligado com IP conhecido
Escalabilidade
Ex.: aplicao Web

P2P

No h servidor sempre ligado


Pares com conexo intermitente
IPs variveis por conexo
O par pode ser cliente e servidor
Participantes compartilham recursos de hardware prprios como
memria, poder de processamento, capacidade de armazena
mento, banda de rede, etc.
Segurana e incentivos (usurios participativos)
Ex.: Telefonia por Internet, Compartilhamento de arquivos na
Internet (Gnutella)

Tolerncia a falhas
Escalabilidade, etc.
Servidor

Cliente

Servidor
Web com
acesso a
Banco de
Dados

Realiza consulta

Resultado

Juliano F. Kazienko
kazienko@unipampa.edu.br

Arquiteturas de Aplicao
Arquiteturas hbridas
P2P
Cliente-servidor

"Uma rede cliente-servidor possui uma


arquitetura distribuda com um sistema
de alta performace , o servidor, e vrios
clientes , de menor performace . O
servidor uma unidade central de
registro e tambm o nico provedor de
servio e contedo. Um cliente somente
faz requisies de contedo ou
execuo de servios ao servidor, sem
compartilhar nenhum de seus prprios
recursos."

"Uma arquitetura de rede distribuda pode


ser classificada como P2P 'pura', se em
primeiro lugar for P2P conforme a
[Schollmeier, 2001]
definio anterior e em segundo lugar se
qualquer entidade terminal da rede puder
ser individualmente removida sem que a
rede sofra qualquer perda em termos de
"Uma arquitetura de rede distribuda deve ser
'servio'."
classificada como P2P 'hbrida' se em primeiro
[Schollmeier, 2001]
lugar for P2P conforme a primeira definio e
em segundo lugar tiver a necessidade de uma
entidade central para prover parte dos servios
da rede."

Juliano F. Kazienko
kazienko@unipampa.edu.br

Comunicao entre
Processos
Programas so processos (SO) que se
comunicam
Processo Cliente
Inicia a comunicao. Ex: navegador

Processo Servidor
Espera ser contatado para iniciar a sesso

Sockets
Identificao de uma comunicao entre
processos (conexo TCP)

[Schollmeier, 2001]

Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

Comunicao entre
Processos

SYN Flooding
SYN

Host:
Processo
Servidor

Host:
Processo
Cliente

Usurio

SYN
Atacante

processo

controlado pelo
desenvolvedor da
aplicao

SYN-ACK

processo

SYN-ACK
Usurio

socket

socket
Internet

TCP com
buffers,
variveis

?
Servidor

ACK
Usurio

TCP com
buffers,
variveis

Servidor

Servidor

Servidor

SYN

Servidor

?
Usurio

controlado
pelo SO

(a) Conexo Cliente-Servidor Nomal

(b) Conexo com SYN Flooding

Adaptado de [Kurose and Ross, 2010]

Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

Programando com Sockets

Cliente Java (TCP)


import java.io.*;
import java.net.*;

Um fluxo (stream) uma sequncia de


caracteres que fluem de/ou para um
processo.

class ClienteTCP {

Um fluxo de entrada conectado a alguma


fonte de entrada para o processo, por
exemplo, teclado ou socket.
Um fluxo de sada conectado a uma fonte
de sada, por exemplo, um monitor ou um
socket

Cria
fluxo de entrada
do teclado
Cria
socket de cliente,
conexo ao servidor
Cria
fluxo de sada
ligado ao socket

Programao de aplicaes com o TCP


Juliano F. Kazienko
kazienko@unipampa.edu.br

Cliente Java (TCP)

Cria socket
para recepo
na porta 6789

paraServidor.writeBytes(frase + '\n');
fraseModificada = doServidor.readLine();
System.out.println(Do Servidor: " + fraseModificada);
socketCliente.close();

Juliano F. Kazienko
kazienko@unipampa.edu.br

Aguarda, no socket
para recepo, o
contato do cliente
Cria fluxo de
entrada, ligado
ao socket

}
}

Socket socketCliente = new Socket(localhost", 6789);


DataOutputStream paraServidor =
new DataOutputStream(socketCliente.getOutputStream());
Juliano F. Kazienko
kazienko@unipampa.edu.br

class ServidorTCP {

frase = doUsuario.readLine();

L linha
do servidor

BufferedReader doUsuario =
new BufferedReader(new InputStreamReader(System.in));

import java.io.*;
import java.net.*;

BufferedReader doServidor =
new BufferedReader(new
InputStreamReader(socketCliente.getInputStream()));

Envia linha
ao servidor

public static void main(String argv[]) throws Exception


{
String frase;
String fraseModificada;

10

Servidor Java (TCP)

Mtodo bloqueante:
fica parado esperando
msg do servidor

Cria
fluxo de entrada
ligado ao socket

11

Mtodo bloqueante:
fica parado esperando
msg do cliente

public static void main(String argv[ ]) throws Exception


{
String fraseCliente;
Stringf fraseMaiusculas;
ServerSocket socketRecepcao = new ServerSocket(6789);
while(true) {
Socket socketConexao = socketRecepcao.accept();
BufferedReader doCliente =
new BufferedReader(new
InputStreamReader(socketConexao.getInputStream()));
Juliano F. Kazienko
kazienko@unipampa.edu.br

12

Protocolos

Servidor Java (TCP)


Cria fluxo
de sada, ligado
ao socket

DataOutputStream paraCliente =
new DataOutputStream(socketConexao.getOutputStream());

L linha
do socket

fraseCliente= doCliente.readLine();

HTTP [RFC 1945] [RFC 2616]


DNS [RFC 1034]
SMTP [RFC 5321], etc.

fraseMaiusculas= fraseCliente.toUpperCase() + '\n';


Escreve linha
ao socket

paraCliente.writeBytes(fraseMaiusculas);
}

Protocolos proprietrios

}
}

Definem tipos de msgs trocadas. Ex.: req./resp.


Campos das msgs e suas sintaxes
Protocolos de domnio pblico

KazaA
Skype

Final do lao while,


volta ao incio e aguarda
conexo de outro cliente
Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

13

Protocolo

Servio/Aplicao/Protocolo

Oi

Alice

Cliente
Oi

TCP connection
req.

Bob

TCP connection
reply.

Horas?

Servios
Servi
dor

Get http://www.google.com

15:30

<arquivo>

14

correio eletrnico
acesso terminal remoto
WWW
transferncia de arquivos
Multimdia em tempo real
telefonia Internet

Protocolo da
camada de aplic.

Protocolo de
transporte usado

SMTP [RFC 5321]


telnet [RFC 854]
HTTP [RFC 2616]
FTP [RFC 959]
HTTP (ex.: Youtube)
RTP
proprietrio
(ex: Skype)

TCP
TCP
TCP
TCP
TCP ou UDP
tipicamente UDP

Adaptado de [Kurose and Ross, 2010]

Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

15

HTTP

HTTP: Interao Cliente/Serv.

Protocolo de Transferncia de Hipertexto


Define a estrutura das msgs trocadas entre
cliente e servidor
Cliente universal: navegador Web
Pgina Web formada por objetos

Modelo cliente/servidor
ido
http
Windows
r es
Internet Explorer posta
http

ttp
oh
p
did
h tt
pe
ta
s
po
res

URL
Cada objeto enderevel por um URL
http://www.unipampa.edu.br/alegrete/logo.gif

Mquina
Servidora
executando
Apache

Linux executa
Firefox

nome do caminho

Juliano F. Kazienko
kazienko@unipampa.edu.br

Cliente: Browser que


pede, recebe, visualiza
objetos Web atravs
Servidor: servidor Web
envia objetos em
resposta a pedidos

ped

Arquivo HTML
Imagens. Ex.: JPEG, GIF.

nome do hospedeiro

16

Adaptado de [Kurose and Ross, 2010]


17

O HTTP um
protocolo sem estado
no mantm informao
sobre clientes e suas
requisies. Por isso
denominado assim

Juliano F. Kazienko
kazienko@unipampa.edu.br

18

Formato de Mensagem HTTP

Conexes HTTP

Dois tipos de mensagem HTTP:

HTTP no persistente

Pedido
Resposta

No mximo um objeto enviado numa


conexo TCP
HTTP 1.0 usa o HTTP no persistente

mensagem de pedido HTTP (ASCII)

HTTP persistente

linha do pedido
(comandos GET,
POST, HEAD)

Mltiplos objetos podem ser enviados sobre


uma nica conexo TCP entre cliente e
servidor
HTTP 1.1 usa conexes persistentes por
padro
Uso de Cookies
Juliano F. Kazienko
kazienko@unipampa.edu.br

linhas do
cabealho

19

Mensagem de pedido
HTTP: formato geral

21

Juliano F. Kazienko
kazienko@unipampa.edu.br

22

Mantendo o Estado da
Conexo com Cookies

Arquivos pequenos gravados no cliente


Contm informaes sobre as sesses do
navegador
Uso de cookies (RFC 2965)

Tecnologia com quatro componentes


Linha de cabealho de cookie na msg. de
resposta HTTP
Linha de cabealho de cookie na msg. de
pedido HTTP
Arquivo de cookie mantido no sistema final do
usurio e gerenciado pelo navegador do
usurio
BD de apoio no site WEB

Manuteno da persistncia da sesses HTTP


Viabiliza sesso de usurio sobre HTTP sem estado
Restrio de acesso
Identificao do usurio / contedo
Ex.: Comrcio eletrnico, Internet Banking, Redes
sociais, etc.
Juliano F. Kazienko
kazienko@unipampa.edu.br

20

GET, PUT, POST, etc.


PUT realiza o upload de arquivo contido
no corpo da mensagem para o caminho
especificado no campo URL
POST passa dados preenchidos na
pgina para o servidor
DELETE Exclui arquivo especificado no
campo URL

Cookies

Juliano F. Kazienko
kazienko@unipampa.edu.br

Tipos de mtodos

Fica vazio com o mtodo GET, mas povoado com


o mtodo POST. Ex: Preenchimento de
formulrio ou campos em um site de busca.
Juliano F. Kazienko
kazienko@unipampa.edu.br

GET /somedir/page.html HTTP/1.0


Host: www.someschool.edu
User-agent: Mozilla/4.0
Connection: close
Accept-language:fr

23

Juliano F. Kazienko
kazienko@unipampa.edu.br

24

Estado da Conexo: Cookies


cliente

servidor
msg usual pedido http

arquivo de
Cookies

resposta usual http +

ebay: 8734

servidor
cria a ID 1678
para o usurio

en
de trada
ap
oio no B
D

Set-cookie: 1678

arquivo de
Cookies

msg usual pedido http

cookie: 1678

amazon: 1678
ebay: 8734

ao especfica
do cookie

acesso

resposta usual http

uma semana depois:

cookie: 1678

arquivo de
Cookies
amazon: 1678
ebay: 8734

Instalado por ISPs, universidades, etc.

ao
especfica
do cookie

resposta usual http

Cache Web ou Servidor Proxy


Atende requisies HTTP em nome de um
servidor Web de origem
Motivao
Reduo do tempo de resposta (desempenho)
Reduo do trfego em uma instituio

so
es
ac

msg usual pedido http

Caches Web

t
Juliano F. Kazienko
kazienko@unipampa.edu.br

Adaptado de [Kurose and Ross, 2010]

25

Juliano F. Kazienko
kazienko@unipampa.edu.br

26

Cache Institucional

Proxy: Funcionamento

Servidores
de origem
cliente e
servidor

Internet

enlace de acesso
1,5 Mbps
rede da
instituio

LAN 10 Mbps

cache
institucional

Navegadores
apontam para o
servidor proxy

[Kurose and Ross, 2010]


Juliano F. Kazienko
kazienko@unipampa.edu.br

27

Correio Eletrnico

28

SMTP

Componentes

Porta 25
Utiliza TCP para a transferncia confivel
de msgs. do correio do cliente ao servidor
Transferncia direta

Agentes de usurio
Servidores de correio
Caixa de correio (chegada)
Fila de mensagens (sada)

Simple Mail Transfer Potocol - SMTP [RFC 5321]

Servidor remetente ao servidor receptor

SMTP

Fases da transferncia

Transfere mensagens
Servidor de correio remetente
Servidor de correio destinatrio

Handshaking (cumprimento)
Transferncia das mensagens
Encerramento

POP3 e IMAP
Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

29

Juliano F. Kazienko
kazienko@unipampa.edu.br

30

Protocolos de Acesso
ao Correio
Alice

agente
de
usurio

SMTP

SMTP

servidor de correio
do remetente

POP3 ou
IMAP

agente
de
usurio

Protocolos de Acesso
Bob

servidor de correio
do receptor

SMTP
entrega/armazenamento no servidor do receptor

Protocolos de acesso ao correio

POP (porta 110)


Post Office Protocol [RFC 1939]
Mensagens so baixadas no cliente
E se Bob mudar de cliente?
IMAP (porta 143)
Internet Mail Access Protocol [RFC 1730]
Mensagens so armazenadas no servidor

Bob no
poder
reler as
mensagens

Suporta operao on-line e off-line


Cliente pode armazenar cpias locais temporrias

POP
IMAP
HTTP

Permite organizao das msgs em pastas


HTTP (Hotmail, Yahoo, Google, etc.)
Juliano F. Kazienko
kazienko@unipampa.edu.br

31

Domain Name System (DNS)


BD distribudo e hierrquico (Servs. DNS)
Protocolo p/ consulta ao BD distribudo

moita.unipampa.edu.br
www.unipampa.edu.br, www.unipampa.edu.br

Traduz
Ex.: Uso indevido de domnio para envio de spams

Usado por HTTP, SMTP, FTP


Mais atraso...
Entidade registradora
33

Abordagem Centralizada

Servidores Web replicados


Conjunto de IPs associados a um mesmo nome
cannico
Balanceamento de carga
Tolerncia a falhas
Ex.: DNS Round Robin (rodzio)
Juliano F. Kazienko
kazienko@unipampa.edu.br

34

Abordagem Distribuda
Nenhum servidor de nomes tem todos
mapeamentos para todos os hospedeiros da
Internet
Tipos de servidores DNS

Problemas

Juliano F. Kazienko
kazienko@unipampa.edu.br

nome
cannico

Distribuio de carga

Nomes -> endereos IP


Endereos IP -> Nomes (DNS Reverso)

Ponto nico de falha


Volume de trfego
BD centralizado distante
Manuteno

32

Servios Providos
Traduo de nomes
Apelidos

Sistema de Nomes de Domnio

Juliano F. Kazienko
kazienko@unipampa.edu.br

Juliano F. Kazienko
kazienko@unipampa.edu.br

SN Raiz: 13 servidores
SN de Alto Nvel (TLD): .com .org .edu .gov e .uk .br
SN com autoridade: empresas que possuem
hospedeiros acessados publicamente. Ex: amazon.com
SN Local: ISPs, universidade, depto. acadmico,
residencial (pode estar na mesma LAN)

No usada
pelo DNS

35

Juliano F. Kazienko
kazienko@unipampa.edu.br

36

Interao entre Servidores

Consulta e Resposta
SNs armazenam Registros de Recursos
(RR)
Sintaxe (Name, Value, Type, TTL)
Ex.: O servidor TLD edu no sabe como
obter um endereo IP Nome do servidor de nomes

O host cis.poly.edu
quer obter o IP de
gaia.cs.umass.edu
As 8 msgs de
consulta podem ser
reduzidas

com autoridade que sabe

Passo 5 Domnio
obter o IP p/ o domnio
(umass.edu, dns.umass.edu, NS)
(dns.umass.edu, 128.119.40.111, A)

Cache DNS
[Kurose and Ross, 2010]
Juliano F. Kazienko
kazienko@unipampa.edu.br

Mensagens DNS

37

Nome de
Hospedeiro

Juliano F. Kazienko
kazienko@unipampa.edu.br

Endereo IP para o Nome


de Hospedeiro
38