Camada de Aplica - PowerPoint PPT Presentation

About This Presentation
Title:

Camada de Aplica

Description:

Camada de Aplica o Teleprocessamento e Redes Instituto de Inform tica UFG Prof. F bio M. Costa (s baseados em [Kurose&Ross2003]) Parte 2: Camada de ... – PowerPoint PPT presentation

Number of Views:84
Avg rating:3.0/5.0
Slides: 95
Provided by: Wagner51
Category:

less

Transcript and Presenter's Notes

Title: Camada de Aplica


1
Camada de Aplicação
  • Teleprocessamento e Redes
  • Instituto de Informática UFG
  • Prof. Fábio M. Costa
  • (slides baseados em KuroseRoss2003)

2
Parte 2 Camada de Aplicação
  • Nossos objetivos
  • conceitual, aspectos de implementação de
    protocolos de aplicação para redes
  • paradigma cliente-servidor
  • modelos de serviço
  • aprenda sobre protocolos examinando algumas
    aplicações populares
  • Outros objetivos do capítulo
  • protocolos específicos
  • http
  • ftp
  • smtp
  • pop
  • dns
  • programação de aplicações de rede
  • socket API

3
Aplicações e Protocolo de Aplicação
  • Aplicação processos distribuídos que comunicam
    entre si
  • rodam nos computadores (hosts) da rede como
    programas de usuário
  • trocam mensagens entre si para realização da
    aplicação
  • e.x., email, ftp, Web
  • Protocolos de aplicação
  • fazem parte das aplicações
  • definem mensagens trocadas e as ações tomadas
  • usam serviços de comunicação das camadas
    inferiores

4
Aplicações de Rede
  • agente usuário software que interfaceia com o
    usuário de um lado e com a rede de outro.
  • implementa protocolo da camada de aplicação
  • Web browser
  • E-mail leitor de correio
  • streaming áudio/vídeo media player
  • Processo programa executando num host.
  • dentro do mesmo host interprocess
    communication (definido pelo SO).
  • processos executando em diferentes hosts se
    comunicam com um protocolo da camada de aplicação

5
Paradigma Cliente-Servidor
  • Aplicações de rede típicas têm duas partes
    cliente and servidor
  • Cliente
  • inicia comunicação com o servidor (fala
    primeiro)
  • tipicamente solicita serviços do servidor,
  • Web cliente implementado no browser e-mail
    leitor de correio
  • Servidor
  • fornece os serviços solicitados pelo cliente
  • e.x., Web server envia a página Web solicitada,
    servidor de e-mail envia as mensagens, etc.

6
Interfaces de Programação
  • API application programming interface
  • define a interface entre a camada de aplicação e
    de transporte
  • socket Internet API
  • dois processos se comunicam enviando dados para o
    socket e lendo dados de dentro do socket
  • Q Como um processo identifica o outro
    processo com o qual ele quer se comunicar?
  • IP address do computador no qual o processo
    remoto executa
  • port number - permite ao computador receptor
    determinar o processo local para o qual a
    mensagem deve ser entregue.

7
Serviços de Transporte
  • Banda Passante
  • algumas aplicações (e.x., multimedia) exigem uma
    banda mínima para serem utilizáveis
  • outras aplicações (aplicações elásticas)
    melhoram quando a banda disponível aumenta
  • Perda de dados
  • algumas aplicações (e.x., aúdio) podem tolerar
    alguma perda
  • outras aplicações (e.x., transferência de
    arquivos, telnet) exigem transferência de dados
    100 confiável
  • Temporização
  • algumas aplicações (e.x., telefonia Internet,
    jogos interativos) exigem baixos atrasos para
    operarem

8
Requisitos de Transporte de Aplicações Comuns
Sensível ao Atraso não não não sim, 100s
msec sim, segundos sim, 100s msec sim
Applicação transf. de arquivos e-mail documentos
Web áudio/vídeo tempo real áudio/vídeo
armazenado jogos interativos comércio eletrônico
Perdas sem perdas sem perdas tolerante tolerante
tolerante tolerante sem perda
Banda elástica elástica elástica aúdio
5Kb-1Mb vídeo10Kb-5Mb igual à anterior Kbps
elástica
9
Serviços de Transporte da Internet
  • serviço TCP
  • orientado á conexão conexão requerida entre
    cliente e servidor
  • transporte confiável dados perdidos na
    transmissão são recuperados
  • controle de fluxo compatibilização de velocidade
    entre o transmissor e o receptor
  • controle de congestionamento protege a rede do
    excesso de tráfego
  • não oferece garantias de temporização e de banda
    mínima
  • serviço UDP
  • transferência de dados não confiável entre os
    processos transmissor e receptor
  • não oferece estabelecimento de conexão,
    confiabilidade, controle de fluxo e de
    congestionamento, garantia de temporização e de
    banda mínima.

10
Aplicações e Protocolos de Transporte da Internet
Protocolo de Aplicação smtp RFC 821 telnet
RFC 854 http RFC 2068 ftp RFC 959 RTP ou
proprietario (e.g. RealNetworks) NFS RTP ou
proprietary (e.g., Vocaltec)
Protocolo de Transporte TCP TCP TCP TCP TCP ou
UDP TCP ou UDP tipicamente UDP
Aplicação e-mail acesso de terminais remotos Web
transferência de arquivos streaming
multimedia servidor de arquivos remoto telefonia
Internet
11
Protocolo HTTP
  • HTTP HyperText Transfer Protocol
  • protocolo da camada de aplicação da Web
  • modelo cliente/servidor
  • cliente browser que solicita, recebe e apresenta
    objetos da Web
  • server envia objetos em resposta a pedidos
  • http1.0 RFC 1945
  • http1.1 RFC 2068

http request
PC rodando Explorer
http response
http request
Servidor rodando NCSA Web server
http response
Mac rodando Netscape Navigator
12
Protocolo HTTP
  • http é stateless
  • o servidor não mantém informação sobre os pedidos
    passados pelos clientes
  • http - protocolo de transporte TCP
  • cliente inicia conexão TCP (cria socket) para o
    servidor na porta 80
  • servidor aceita uma conexão TCP do cliente
  • mensagens http (mensagens do protocolo de camada
    de aplicação) são trocadas entre o browser
    (cliente http) e o servidor Web (servidor http)
  • A conexão TCP é fechada
  • Protocolos que mantém informações de estado são
    complexos!
  • necessidade de organizar informações passadas
  • se ocorrer um queda do sistema, as informações
    podem ser perdidas ou gerar inconsistências entre
    o cliente e o servidor

13
Exemplo de Operação
  • Usuário entra com a URL www.someSchool.edu/someDe
    partment/home.index

(contém referência a 10 imagens jpeg)
  • 1a. cliente http inicia conexão TCP ao servidor
    http (processo) em www.someSchool.edu. Porta 80
    é a default para o servidor http .

1b. servidor http no host www.someSchool.edu
esperando pela conexão TCP na porta 80. aceita
conexão, notificando o cliente
2. cliente http client envia uma mensagem de
requisição http (contendo a URL) para o socket da
conexão TCP
3. servidor http recebe mensagem de pedido,
constrói a mensagem de resposta contendo o objeto
solicitado (someDepartment/home.index), envia
mensagem para o socket
tempo
14
Exemplo (cont.)
4. servidor http fecha conexão TCP.
  • 5. cliente http recebe mensagem de resposta
    contendo o arquivo html, apresenta o conteúdo
    html. Analisando o arquivo html encontra 10
    objetos jpeg referenciados

tempo
6. Passos 1-5 são repetidos para cada um dos 10
objetos jpeg.
15
Conexões persistentes e não-persistentes
  • Persistente
  • modo default para htp/1.1
  • na mesma conexão TCP são trazidos vários objetos
  • o cliente envia pedido para todos os objetos
    referenciados tão logo ele recebe a página HTML
    básica.
  • poucos RTTs, menos slow start.
  • Não-persistente
  • http/1.0 servidor analisa pedido, envia resposta
    e fecha a conexão TCP
  • 2 RTTs para obter um objeto
  • Conexão TCP
  • solicitação e transferência do objeto
  • cada transferência sofre por causa do mecanismo
    de slow-start do TCP
  • muitos browsers abrem várias conexões paralelas

16
Formato das Mensagens
  • dois tipos de mensagens HTTP request, response
  • mensagem de requisição http (request)
  • ASCII (formato legível para humanos)

linha de pedido (comandos GET, POST, HEAD )
GET /somedir/page.html HTTP/1.0 User-agent
Mozilla/4.0 Accept text/html, image/gif,
image/jpeg Accept-languagefr (extra carriage
return, line feed)
linhas de cabeçalho
Carriage return, line feed indica fim da
mensagem
17
HTTP request formato geral
18
Formatos HTTP response
linha de status (protocolo código de status
frase de status)
HTTP/1.0 200 OK Date Thu, 06 Aug 1998 120015
GMT Server Apache/1.3.0 (Unix) Last-Modified
Mon, 22 Jun 1998 ... Content-Length 6821
Content-Type text/html data data data data
data ...
linhas de cabeçalho
dados, e.x., arquivo html
19
HTTP response formato geral
version
status
phrase
20
Códigos de status das respostas
  • 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

21
HTTP Cliente faça você mesmo!
  • 1. Telnet para um servidor Web

Abre conexão TCP para a porta 80 (porta default
do servidor http) em www.eurecom.fr. Qualquer
coisa digitada é enviada para a porta 80 em
www.eurecom.fr
telnet www.eurecom.fr 80
  • 2. Digite um pedido GET http

Digitando isto (tecle carriage return duas
vezes), você envia este pedido HTTP GET mínimo
(mas completo) ao servidor http
GET /ross/index.html HTTP/1.0
3. Examine a mensagem de resposta enviada pelo
servidor http!
22
HTML (HyperText Markup Language)
  • HTML uma linguagem simples para hipertexto
  • começou como versão simples de SGML
  • construção básica cadeias (strings) de texto
    anotadas
  • Construtores de formato operam sobre cadeias
  • ltbgt .. lt/bgt bold (negrito)
  • ltH1 ALIGNCENTERgt ..título centrado .. lt/H1gt
  • ltBODY bgcolorwhite textblack linkred ..gt ..
    lt/BODYgt
  • vários formatos
  • listas de bullets, listas ordenadas, listas de
    definição
  • tabelas
  • frames

23
Encadeamento de referências
  • Referências ltA HREFLinkRefgt ... lt/Agt
  • a componentes do documento localltA
    HREFimportantegt clique para uma dica lt/Agt
  • a documentos no servidor localltA
    HREF../index.htmgt voltar ao sumário lt/Agt
  • a documentos em outros servidoresltA
    HREFhttp//www.ufg.brgt saiba mais sobre a UFG
    lt/Agt
  • Multimídia
  • imagem embutida ltIMG SRCeclipsegt
  • imagem externa ltA HREFeclipse.gifgt imagem
    maior lt/Agt
  • vídeo Mpeg ltA HREFByeByeBrasil.mpggt um bom
    filme lt/Agt
  • som ltA HREFhttp//www.sons.br/aniv.augt feliz
    aniversário lt/Agt

24
Formulários e interação bidirecional
  • Formulários transmitem informação do cliente ao
    servidor
  • HTTP permite enviar formulários ao servidor
  • Resposta enviada como página HTML dinâmica
  • Formulários processados usando scripts CGI
    (programas que executam no servidor WWW)
  • CGI - Common Gateway Interface
  • scripts CGI escondem acesso a diferentes serviços
  • servidor WWW atua como gateway universal
  • Outras tecnologias ASP, JSP, PHP, ...

25
Interação usuário-servidor autenticação
  • Meta da autenticação controle de acesso aos
    documentos do servidor
  • sem estado cliente deve apresentar autorização
    com cada pedido
  • autorização tipicamente nome, senha
  • authorization linha de cabeçalho no pedido
  • se não for apresentada autorização, servidor nega
    accesso, e coloca no cabeçalho da resposta
  • WWW authenticate

servidor
cliente
msg de pedido http comum
401 authorization req. WWW authenticate
Browser guarda nome e senha para evitar que sejam
pedidos ao usuário a cada acesso.
26
Cookies
cliente
servidor
  • gerados e lembrados pelo servidor, usados mais
    tarde para
  • autenticação
  • lembrar preferencias dos usuários ou prévias
    escolhas
  • servidor envia cookie ao cliente na resposta
    HTTP
  • Set-cookie 1678453
  • cliente apresenta o cookie em pedidos posteriores
  • cookie 1678453

Gera resposta ID único (uid) p/ cookie
usual http request msg
usual http response Set-cookie uid
ação específica do cookie
ação específica do cookie
27
Conditional GET armazenando no cliente
servidor
cliente
  • Razão não enviar objeto se a versão que o
    cliente já possui está atualizada.
  • cliente especifica data da versão armazenada no
    pedido HTTP
  • If-modified-since ltdategt
  • servidor resposta não contém objeto se a cópia
    do cliente está atualizada
  • HTTP/1.0 304 Not Modified

http request msg If-modified-since ltdategt
objeto não modificado
http request msg If-modified-since ltdategt
objeto modificado
http response HTTP/1.1 200 OK ltdatagt
28
ftp o protocolo de transferência de arquivos
transferência de arquivos
user at host
sistema de arquivos remoto
  • transferência de arquivos de e para o computador
    remoto
  • modelo cliente servidor
  • cliente lado que inicia a transferência (seja de
    ou para o lado remoto)
  • servidor host remoto
  • ftp RFC 959
  • ftp servidor porta 21

29
ftp controle separado, conexões de dados
  • cliente ftp contata o servidor ftp na porta 21,
    especificando TCP como protocolo de transporte
  • duas conexões TCP paralelas são abertas
  • controle troca de comandos e respostas entre
    cliente e servidor.
  • controle out of band
  • dados dados do arquivo trocados com o servidor
  • servidor ftp mantém o estado diretório
    corrente, autenticação anterior

30
ftp comandos, respostas
  • Exemplos de comandos
  • Enviados em texto ASCII através do canal de
    controle
  • USER username
  • PASS password
  • LIST retorna listagem dos arquivos no diretório
    atual
  • RETR filename recupera (obtém) o arquivo (GET)
  • STOR filename armazena o arquivo no host remoto
    (PUT)
  • Exemplos de códigos de retorno
  • código de status e frase (como no http)
  • 331 Username OK, password required
  • 125 data connection already open transfer
    starting
  • 425 Cant open data connection
  • 452 Error writing file

31
Correio Eletrônico
fila de saída de mensagem
caixa postal
  • Três componentes principais
  • agentes de usuário
  • servidores de correio
  • simple mail transfer protocol smtp
  • Agente de usuário
  • leitor de correio
  • composição, edição, leitura de mensagens de
    correio
  • ex., Eudora, Outlook, elm, Netscape Messenger
  • mensagens que chegam e saem são armazenadas em
    filas no servidor

32
Correio eletrônico servidores de correio
  • Servidores de Correio
  • caixa postal contém mensagens que chegaram (ainda
    não lidas) para o usuário
  • fila de mensagens contém as mensagens de correio
    a serem enviadas
  • protocolo smtp permite aos servidores de correio
    trocarem mensagens entre eles
  • cliente servidor de correio que envia
  • servidor servidor de correio que recebe

33
Correio Eletrônico smtp RFC 821
  • usa TCP para transferência confiável de mensagens
    de correio do cliente para o servidor, através da
    porta 25
  • transferência direta do servidor que envia para
    o servidor que recebe
  • três fases de trasnferência
  • handshaking (apresentação)
  • transferência de mensagens
  • fechamento
  • interação comando/resposta
  • comandos texto ASCII
  • resposta código de status e frase
  • mensagens devem ser formatadas em código ASCII de
    7 bits

34
Exemplo de interação SMTP
S 220 hamburger.edu C HELO crepes.fr
S 250 Hello crepes.fr, pleased to meet
you C MAIL FROM ltalice_at_crepes.frgt
S 250 alice_at_crepes.fr... Sender ok C RCPT
TO ltbob_at_hamburger.edugt S 250
bob_at_hamburger.edu ... Recipient ok C DATA
S 354 Enter mail, end with "." on a line
by itself C Do you like ketchup? C
How about pickles? C . S 250
Message accepted for delivery C QUIT
S 221 hamburger.edu closing connection
35
Tente o SMTP você mesmo
  • telnet ltnome do servidorgt 25
  • veja resposta 220 do servidor
  • envie comandos HELO, MAIL FROM, RCPT TO, DATA,
    QUIT
  • como no exemplo anterior
  • a seqüência acima permite enviar um e-mail sem
    usar o agente de usuário do rementente

36
SMTP palavras finais
  • Comparação com http
  • http modelo pull
  • email modelo push
  • ambos usam comandos e respostas em ASCII,
    interação comando / resposta e códigos de status
  • http cada objeto encapsulado na sua própria
    mensagem de resposta
  • smtp múltiplos objetos são enviados numa
    mensagem multiparte
  • SMTP usas conexões persistentes
  • SMTP exige que as mensagens (cabeçalho e corpo)
    estejam em ASCII de 7 bits
  • algumas seqüências de caracteres não são
    permitidas no corpo das mensagens (ex.,
    CRLF.CRLF). Assim mensagens genéricas têm que ser
    codificadas (usualmente em base-64 ou quoted
    printable)
  • Servidor SMTP usa CRLF.CRLF para indicar o final
    da mensagem

37
Formato das Mensagens
  • smtp protocolo para trocar mensagens de e-mail
  • RFC 822 padrão para mensagens do tipo texto
  • linhas de cabeçalho, e.g.,
  • To
  • From
  • Subject
  • não confudir com os comandos SMTP !
  • corpo
  • a mensagem, ASCII somente com caracteres

cabeçalho
linha em branco
corpo da mensagem
38
Formato das Mensagens extensões multimedia
  • MIME multimedia mail extension RFC 2045, 2056
  • linhas adicionais no cabeçalho declaram o tipo de
    conteúdo MIME

versão de MIME utilizada
método usado para codificar dados
tipo, subtipo e declaração de parâmetro dos dados
multimídia
dados codificados
39
Tipos MIMEContent-Type type/subtype parâmetros
  • Text
  • exemplo de subtipos plain, html
  • Image
  • exemplo de subtipos jpeg, gif
  • Audio
  • exemplo de subtipos basic (codificado 8-bit
    m-law ), 32kadpcm (codificação 32 kbps)
  • Video
  • exemplo de subtipos mpeg, quicktime
  • Application
  • outros dados que devem ser processados pelo
    leitor antes de serem apresentados visualmente
  • exemplo de subtipos msword, octet-stream

40
Tipo Multiparte Mensagens com múltiplos objetos
de tipos diferentes
From alice_at_crepes.fr To bob_at_hamburger.edu
Subject Picture of yummy crepe. MIME-Version
1.0 Content-Type multipart/mixed
boundary98766789 --98766789 Content-Transfer-En
coding quoted-printable Content-Type
text/plain Dear Bob, Please find a picture of a
crepe. --98766789 Content-Transfer-Encoding
base64 Content-Type image/jpeg base64 encoded
data ..... .........................
......base64 encoded data --98766789--
delimitador
1a. parte texto
2a. parte imagem
41
Formato das mensagens recebidas
  • Servidor de correio do destino (que recebe a
    mensagem) adiciona a linha de cabeçalho Received

42
Protocolos de acesso ao correio
SMTP
POP3 or IMAP
servidor de correio do destino
  • SMTP entrega e armazena as mensagens no servidor
    do destino
  • Protocolo de acesso recupera mensagens do
    servidor
  • POP Post Office Protocol RFC 1939
  • autorização (agente lt--gtservidor) e download
  • IMAP Internet Mail Access Protocol RFC 1730
  • mais recursos (mais complexo)
  • permite a manipulação de mensagens armazenadas no
    servidor (ex. organizá-las em diretórios)
  • HTTP Hotmail , Yahoo! Mail, etc.

43
protocolo POP3
S OK POP3 server ready C user alice S OK
C pass hungry S OK user successfully logged
on
  • fase de autorização
  • comandos do cliente
  • user declara nome do usuário
  • pass password
  • respostas do servidor
  • OK
  • -ERR
  • fase de transação
  • list lista mensagens e tamanhos
  • retr recupera mensagem pelo número
  • dele apaga
  • quit

C list S 1 498 S 2 912
S . C retr 1 S (blah blah blah
... S .....................) S .
C dele 1 C retr 2 S (blah blah
blah ... S .....................) S .
C dele 2 C quit S OK POP3
server signing off
44
DNS Domain Name System
  • Pessoas muitos identificadores
  • RG, nome, passaporte
  • Hosts e roteadores na Internet
  • endereços IP (32 bit) - usados para endereçar
    datagramas
  • nome, ex., gaia.cs.umass.edu - usados por
    humanos
  • Q Como relacionar nomes com endereços IP?
  • Domain Name System
  • base de dados distribuída implementada numa
    hierarquia de muitos servidores de nomes
  • protocolo de camada de aplicação host, roteadores
    se comunicam com servidores de nomes para
    resolver nomes (tradução nome/endereço)
  • nota função interna da Internet, implementada
    como um protocolo da camada de aplicação
  • complexidade na borda da rede

45
Servidores de Nomes DNS
  • Nenhum servidor tem todos os mapeamentos de
    nomes para endereços IP
  • servidores de nomes locais
  • cada ISP ou empresa tem um servidor de nomes
    local (default)
  • Consultas dos computadores locais ao DNS vão
    primeiro para o servidor de nomes local
  • servidor de nomes autoritativo
  • para um computador armazena o nome e o endereço
    IP daquele computador
  • pode realizar mapeamentos de nomes para endereços
    para aquele nome de computador
  • Porque não centralizar o DNS?
  • ponto único de falha
  • volume de tráfego
  • base de dados distante
  • manutenção
  • Não cresce junto com a rede!
  • isto é não seria escalável

46
DNS Servidores de Nomes Raiz
  • são contactados pelos servidores de nomes locais
    que não podem resolver um nome
  • servidor de nomes raiz
  • busca servidores de nomes autoritativos se o
    mapeamento do nome não for conhecido
  • obtém o mapeamento
  • retorna o mapeamento para o servidor de nomes
    local

existem 13 servidores de nomes raiz no mundo
(2002)
47
DNS exemplo simples
servidor de nomes raiz
2
4
  • host surf.eurecom.fr quer o endereço IP de
    gaia.cs.umass.edu
  • 1. contacta seu servidor DNS local,
    dns.eurecom.fr
  • 2. dns.eurecom.fr contata o servidor de nomes
    raiz, se necessário
  • 3. o servidor de nomes raiz contata o servidor de
    nomes autoritativo, dns.umass.edu, se necessário

3
5
servidor de nomes autoritativo dns.umass.edu
1
6
computador solicitante surf.eurecom.fr
gaia.cs.umass.edu
48
DNS exemplo
servidor de nomes raiz
  • Servidor de nomes raiz
  • pode não conhecer o servidor de nomes
    autoritativo para um certo nome
  • pode conhecer servidor de nomes intermediário
    aquele que deve ser contactado para encontrar o
    servidor de nomes autoritativo

6
2
3
7
servidor de nomes intermediário dns.umass.edu
5
4
1
8
servidor de nomes autoritativo dns.cs.umass.edu
computador solicitante surf.eurecom.fr
gaia.cs.umass.edu
49
DNS consultas encadeadas
servidor de nomes raiz
consulta encadeada
  • consulta recursiva
  • transfere a tarefa de resolução do nome para o
    servidor de nomes consultado
  • carga pesada?
  • consulta encadeada
  • servidor contactado responde com o nome de outro
    servidor de nomes para contato
  • Eu não sei isto ,mas pergunte a este servidor

2
3
4
servidor de nomes intermediário dns.umass.edu
7
5
6
1
8
servidor de nomes autoritativo dns.cs.umass.edu
computador solicitante surf.eurecom.fr
gaia.cs.umass.edu
50
DNS armazenando e atualizando registros
  • Uma vez que um servidor de nomes apreende um
    mapeamento, ele armazena o mapeamento num
    registro do tipo cache
  • registro da cache tornam-se obsoletos
    (desapareçem) depois de um certo tempo
  • Tradicionalmente registros são armazenados
    estaticamente
  • ex. a partir de um arquivo de configuração
  • RFC 2136 mecanismos de atualização dinâmica
    estão sendo projetados pelo IETF
  • Dynamic DNS updates adicionar ou remover
    registros dinamicamente
  • http//www.ietf.org/html.charters/dnsind-charter.h
    tml

51
registros do DNS
  • DNS base de dados distribuída que armazena
    registros de recursos (RRs)
  • TypeA
  • name é o nome do computador
  • value é o endereço IP
  • TypeCNAME
  • name é um apelido para algum nome canônico (o
    nome real)
  • Ex. www.ibm.com é realmente
  • servereast.backup2.ibm.com
  • value é o nome canônico
  • TypeNS
  • name é um domínio (ex. foo.com)
  • value é o endereço IP do servidor de nomes
    autoritativo para este domínio
  • TypeMX
  • value é o nome canônico do servidor de correio
    associado com name

52
DNS protocolo e mensagens
  • protocolo DNS mensagen de consulta e resposta ,
    ambas com o mesmo formato de mensagem
  • cabeçalho da mensagem
  • identificação número de 16 bit para a consulta,
    resposta usa o mesmo número
  • flags
  • consulta ou resposta
  • recursão desejada
  • recursão disponível
  • resposta é autoritativa

53
DNS protocolo e mensagens
Campos de nome e tipo para uma consulta
RRs de resposta a uma consulta
registros para servidores autoritativos
informação adicional que pode ser útil Ex. se
answer é do tipo MX, additional info poderá
conter um RR do tipo A com o endereço IP do
servidor de e-mail
54
Programação de Sockets
Objetivo aprender a construir aplicações
cliente/servidor que se comunicam usando sockets
  • API de Sockets
  • introduzida no BSD4.1 UNIX, 1981
  • sockets são explicitamente criados, usados e
    liberados pelas aplicações
  • paradigma cliente/servidor
  • dois tipos de serviço de transporte via socket
    API
  • datagrama não confiável
  • confiável, orientado a fluxo de bytes

55
Programação de Sockets com TCP
  • Socket uma porta entre o processo de aplicação e
    o protocolo de transporte fim-a-fim (UDP ou TCP)
  • serviço TCP transferência confiável de bytes de
    um processo para outro

controlado pelo criador da aplicação
controlado pelo criador da aplicação
controlado pelo sistema operacional
controlado pelo sistema operacional
internet
host ou servidor
host ou servidor
56
Programação de Sockets com TCP
  • Cliente deve contactar o servidor
  • processo servidor já deve estar executando antes
    de ser contactado
  • servidor deve ter criado um socket (porta) que
    aceita o contato do cliente
  • Como o cliente contacta o servidor
  • criando um socket TCP local
  • especificando endereço IP e número da porta do
    processo servidor
  • Quando o cliente cria o socket cliente TCP
    estabelece conexão com o TCP do servidor
  • Quando contactado pelo cliente, o TCP do
    servidor cria um novo socket para o processo
    servidor comunicar-se com o cliente
  • permite ao servidor conversar com múltiplos
    clientes

TCP fornece a transferência confiável (fluxo de
bytes ordenados) (pipe) entre o cliente e
o servidor
57
Programação de Sockets com TCP
teclado
monitor
  • Exemplo de aplicação cliente-servidor
  • cliente lê uma linha da entrada padrão do sistema
    (stream inFromUser) , envia para o servidor via
    socket (stream outToServer)
  • servidor lê a linha do socket
  • servidor converte linha para letras maiúsculas e
    envia de volta ao cliente
  • cliente lê a linha modificada através do sockete
    (stream inFromServer)

input
inFromUser
stream
processo cliente
stream de entrada seqüência de bytes para
dentro do processo
stream de saída seqüência de bytes para fora
do processo
input
output
inFromServer
outToServer
stream
stream
TCP socket cliente
clientSocket
TCP
socket
para rede
da rede
58
Interação Cliente/servidor TCP
Servidor (executando em hostid)
Cliente
59
Exemplo cliente Java (TCP)
import java.io. import java.net. class
TCPClient public static void main(String
argv) throws Exception String
sentence String modifiedSentence
BufferedReader inFromUser new
BufferedReader(new InputStreamReader(System.in))
Socket clientSocket new
Socket("hostname", 6789)
DataOutputStream outToServer new
DataOutputStream(clientSocket.getOutputStream())

Cria stream de entrada
Cria socket cliente, conecta ao servidor
Cria stream de saída ligada ao socket
60
Exemplo cliente Java (TCP), cont.
BufferedReader inFromServer
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()))
sentence inFromUser.readLine()
outToServer.writeBytes(sentence '\n')
modifiedSentence inFromServer.readLine()
System.out.println("FROM SERVER "
modifiedSentence) clientSocket.close()

Cria stream de entrada ligada ao socket
Envia linha para o servidor
Lê linha do servidor
61
Exemplo servidor Java (TCP)
import java.io. import java.net. class
TCPServer public static void main(String
argv) throws Exception String
clientSentence String capitalizedSentence
ServerSocket welcomeSocket new
ServerSocket(6789) while(true)
Socket connectionSocket
welcomeSocket.accept()
BufferedReader inFromClient new
BufferedReader(new
InputStreamReader(connectionSocket.getInputStream(
)))
Cria socket de aceitação na porta 6789
Espera, no socket de aceitação por contato do
cliente
Cria stream de entrada, ligado ao socket
62
Exemplo servidor Java (cont)
DataOutputStream outToClient
new DataOutputStream(connectionSocket.get
OutputStream()) clientSentence
inFromClient.readLine()
capitalizedSentence clientSentence.toUpperCase()
'\n' outToClient.writeBytes(capit
alizedSentence)
Cria stream de saída, ligado ao socket
Lê linha do socket
Escreve linha para o socket
Fim do while loop, retorne e espere por outra
conexão do cliente
63
Programaçaõ de Sockets com UDP
  • UDP não há conexão entre o cliente e o servidor
  • não existe apresentação (handshaking)
  • transmissor envia explicitamente endereço IP e
    porta de destino em cada mensagem
  • servidor deve extrair o endereço IP e porta do
    transmissor de cada datagrama recebido
  • UDP dados transmitidos podem ser recebidos foram
    de ordem ou perdidos

UDP fornece a transferência não confiável de
grupos de bytes (datagramas) entre o cliente e
o servidor
64
Interação Cliente/servidor UDP
Servidor (executando em hostid)
Cliente
Cria endereço (hostid, portx), envia datagrama
de pedido usando clientSocket
65
Exemplo cliente Java (UDP)
teclado
monitor
stream de entrada
inFromUser
processo cliente
Process
Entrada recebe pacote (TCP receberia byte
stream)
Saída envia pacote (TCP enviaria byte stream)
sendPacket
receivePacket
pacote UDP
pacote UDP
socket UDP cliente
clientSocket
UDP
socket
para rede
da rede
66
Exemplo cliente Java (UDP)
import java.io. import java.net. class
UDPClient public static void main(String
args) throws Exception
BufferedReader inFromUser new
BufferedReader(new InputStreamReader(System.in))
DatagramSocket clientSocket new
DatagramSocket() InetAddress IPAddress
InetAddress.getByName("hostname")
byte sendData new byte1024 byte
receiveData new byte1024 String
sentence inFromUser.readLine() sendData
sentence.getBytes()
Cria stream de entrada
Cria socket cliente
Traduz nome do host para endereço IP usando DNS
67
Exemplo cliente Java (UDP), cont.
Cria datagrama com dados a enviar, tamanho,
endereço IP e porta
DatagramPacket sendPacket new
DatagramPacket(sendData, sendData.length,
IPAddress, 9876) clientSocket.send(send
Packet) DatagramPacket receivePacket
new DatagramPacket(receiveData,
receiveData.length) clientSocket.receiv
e(receivePacket) String
modifiedSentence new
String(receivePacket.getData())
System.out.println("FROM SERVER"
modifiedSentence) clientSocket.close()

Envia datagrama para servidor
Lê datagrama do servidor
68
Exemplo servidor Java (UDP)
import java.io. import java.net. class
UDPServer public static void main(String
args) throws Exception
DatagramSocket serverSocket new
DatagramSocket(9876) byte
receiveData new byte1024 byte
sendData new byte1024 while(true)
DatagramPacket
receivePacket new
DatagramPacket(receiveData, receiveData.length)
serverSocket.receive(receivePacket)
Cria socket datagrama na porta 9876
Cria espaço para datagramas recebidos
Recebe datagrama
69
Exemplo servidor Java, (cont.)
String sentence new
String(receivePacket.getData())
InetAddress IPAddress receivePacket.getAddress()
int port receivePacket.getPort()
String capitalizedSentence
sentence.toUpperCase() sendData
capitalizedSentence.getBytes()
DatagramPacket sendPacket new
DatagramPacket(sendData, sendData.length,
IPAddress, port)
serverSocket.send(sendPacket)

Obtém endereço IP e número da porta do
transmissor
Cria datagrama para enviar ao cliente
Escreve o datagrama para dentro do socket
Termina o while loop, retorna e espera por outro
datagrama
70
Programação de Sockets referências
  • tutorial sobre sockets em linguagem C
    (audio/slides)
  • Unix Network Programming (J. Kurose),
  • http//manic.cs.umass.edu
  • Tutoriais sobre sockets em Java
  • Socket Programming in Java a tutorial,
  • http//www.javaworld.com/javaworld/jw-12-1996/jw-1
    2-sockets.html

71
Construção de um Servidor Web Simplificado
  • Ingredientes Protocolo HTTP Sockets
  • Funcionalidade
  • Trata apenas uma requisição HTTP
  • Aceita e interpreta a requisição
  • Obtém o arquivo requisitado a partir do sistema
    de arquivos local (do servidor Web)
  • Cria uma mensagem de resposta HTTP Linhas de
    cabeçalho arquivo requisitado
  • Envia a resposta diretamente para o cliente
  • Fecha conexão e termina

72
Construção de um Servidor Web Simplificado
  • Cliente Navegador Web padrão
  • Netscape, IE, Konqueror, etc.
  • Exemplo de requisição
  • URL http//somehost.somewhere.br6789/somefile.ht
    ml
  • host e porta usados p/ estab. conexão com
    servidor
  • Requisição
  • GET /somefile.html HTTP/1.0

73
WebServer.java (1)
  • import java.io.
  • import java.net.
  • import java.util.
  • class WebServer
  • public static void main (String argv) throws
    Exception
  • String requestMessageLine
  • ServerSocket listenSocket new
    ServerSocket(6789)
  • Socket connectionSocket listenSocket.accept()
  • BufferedReader inFromClient
  • new BufferedReader (new InputStreamReader(
  • connectionSocket.getInputStream()))

Socket para espera de conexões
Socket de conexão c/ cliente
Stream para receber dados via socket
74
WebServer.java (2)
Stream para enviar dados através do socket
  • DataOutputStream outToClient
  • new DataOutputStream(
  • connectionSocket.getOutputStream())
  • requestMessageLine inFromClient.readLine()
  • StringTokenizer tokenizedLine
  • new StringTokenizer( requestMessageLine)
  • if (tokenizedLine.nextToken().equals(GET))
  • fileName tokenizedLine.nextToken()
  • if (fileName.startsWith(/) true)
  • fileName fileName.substring(1)
  • File file new File(fileName)
  • int numOfBytes (int) file.length()

Lê requisição do cliente
Separa os tokens da requisição
Verifica se comando é GET
Obtém o nome do arquivo
Obtém o tamanho do arquivo
75
WebServer.java (3)
Lê o arquivo requisitado
  • FileInputStream inFile new
    FileInputStream(fileName)
  • byte fileInBytes new bytenumOfBytes
  • inFile.read(fileInBytes)
  • outToClient.writeBytes(
  • HTTP/1.0 200 Document Follows\r\n)
  • if (fileName.endsWith(.jpg))
  • outToClient.writeBytes(Content-Type
  • image/jpeg\r\n)
  • if (fileName.endsWith(.gif))
  • outToClient.writeBytes(Content-Type
  • image/gif\r\n)

Envia a primeira linha do cabeçalho da resposta
Segunda linha (content-type) depende do tipo do
arquivo requisitado (jpeg ou gif)
76
WebServer.java (4)
Envia o arquivo requisitado
Envia a 3a. linha do cabeçalho
  • outToClient.writeBytes(Content-Length
  • numOfBytes \r\n)
  • outToClient.writeBytes(\r\n)
  • outToClient.write(fileInBytes, 0, numOfBytes)
  • connectionSocket.close()
  • else System.out.println(Bad Request Message)

Linha em branco para separar o cabeçalho do corpo
da msg
Fecha a conexão com o cliente
77
WebServer.java O que Falta?
  • Aceitar múltiplas requisições
  • Cada requisição processada por uma thread
    diferente
  • Tratar outros tipos de conteúdo (linha de
    cabeçalho Content-type)
  • Suporte para demais comandos (POST, HEAD)
  • Suporte para demais tipos de mensagem de resposta
    (Bad request, Not found, etc.)
  • O que mais?

78
Distribuição de Conteúdo
  • Web Caches (ou Web Proxies)
  • Redes de Distribuição de Conteúdo (CDNs)
  • Redes Peer-to-Peer

79
Web Caches (proxy server)
Objetivo atender o cliente sem envolver o
servidor Web originador da informação
servidor original
  • usuário configura o browser acesso à Web é
    feito através de um proxy
  • cliente envia todos os pedidos http para o proxy
  • se o objeto existe no proxy (web cache) proxy
    retorna o objeto
  • caso contrário, o proxy solicita o objeto ao
    servidor original e então envia o objeto ao
    cliente.
  • proxy guarda o objeto em sua cache

Proxy server
cliente
cliente
servidor original
80
Porque Web Caching?
  • armazenamento está perto do cliente (ex., na
    mesma rede)
  • menor tempo de resposta
  • reduz o tráfego para servidores distantes
  • links externos podem ser caros e facilmente
    congestionáveis

81
Análise simplificada
servidores originais
Internet pública
  • Tamanho médio dos objetos requisitados 100.000
    bits
  • 15 requisições / segundo
  • Atraso da Internet 2s
  • Atraso total
  • LAN acesso Internet
  • Intensidade de tráfego na LAN
  • Intens. de tráf. no acesso
  • Congestionamento no enlace de acesso atraso
    crescente

enlace de acesso 1.5 Mbps
rede institucional
10 Mbps LAN
(15 reqs/s) . (100kbits/req)/(10Mbps) 0,15
(15 reqs/s) . (100kbits/req)/(1,5Mbps) 1
82
Análise Com o Proxy
servidores originais
  • Taxa de acerto 0,4
  • 40 dos acessos via proxy
  • Atraso da LAN (0,01s)
  • 60 dos acessos servidor original
  • Intes. tráf. no acesso 0,6
  • Atraso 2,01s
  • Atraso médio
  • Na média, melhor do que um simples upgrade da
    largura de banda do enlace de acesso (e.g.,
    para 10Mbps)
  • Verificar!

Internet pública
enlace de acesso 1.5 Mbps
rede institucional
10 Mbps LAN
0,4(0,01s) 0,6(2,01s) 1,2s
cache institucional
83
Caches Cooperativas
servidor original
cache nacional
  • Múltiplos níveis de caches
  • institucional, ISP, nacional
  • Caches de mais alto nível
  • população de usuários maior
  • maior taxa de acerto
  • ICP Internet Caching Protocol
  • uma forma eficiente para uma cache consultar
    outra se esta possui o objeto

cache do ISP
cache institucional
cliente
84
Caches Cooperativas
  • Outra técnica Cluster de caches
  • cada cache um sub-conjunto dos objetos
  • cliente (navegador) mapeia a URL sobre uma tabela
    de espalhamento (hash), que determina qual das
    caches deve ser consultada
  • CARP Cache Array Routing Protocol

cluster de caches
hash(URL)
cliente
85
Outros Meios de Distribuição de Conteúdo
  • Redes de Distribuição de Conteúdo
  • Seção 2.9.2, KR 2nd Edition (em Inglês)
  • Compartilhamento de arquivos em redes de
    sobreposição (overlay networks) do tipo
    Peer-to-Peer
  • Seção 2.9.3, KR 2nd Edition (em Inglês)

86
Redes de Distribuição de Conteúdo
  • Contrastando as Abordagens
  • Web Caches o provedor de acesso (ISP) arca com
    os custos de uma maior eficiência de acesso à Web
    para seus clientes
  • CDNs - Um modelo diferente
  • Provedor de conteúdo contrata uma empresa de
    distribuição de conteúdo, a qual mantém a rede de
    distribuíção
  • Custo fica sob a responsabilidade do provedor de
    conteúdo

87
Redes de Distribuição de Conteúdo
servidor original
  • Provedor envia conteúdo para o nodo de
    distribuição da CDN
  • CDN replica o conteúdo nos seus diversos
    servidores de distribuição
  • Requisições de usuários são servidas pelo
    servidor com o melhor tempo de resposta
  • mais próximo do usuário

nodo de distribuição
servidor de distribuição na Am. do Norte
servidor de distribuição na Am. do Sul
servidor de distribuição na Europa
88
Redes de Distribuição de Conteúdo
  • Como o navegador sabe qual o servidor de
    distribuição com o melhor tempo de resposta?
  • Provedor original do conteúdo serve a página
    principal do site
  • Demais páginas são marcadas com o nome de domínio
    da CDN
  • serão servidas pela CDN
  • Requisições do cliente são redirecionadas pelo DNS

Página principal (index.html)
Objeto referenciado http//www.cdn.com/www.foo.com
/img.gif
Objeto referenciado http//www.cdn.com/www.foo.com
/filme.mpeg
Distribuído pelo servidor original
Distribuído pela CDN
89
Redes de Distribuição de Conteúdo
  • Redirecionamento via DNS
  • CDN configura o servidor de DNS autoritativo para
    responder de acordo com o IP do cliente
  • Tomando como base
  • tabelas de roteamento da Internet
  • estatísticas de desempenho da rede

90
Redes Peer-to-Peer
  • Idéia geral
  • Não há um servidor (ou servidores) de conteúdo
    centralizado
  • Alto nível de escalabilidade
  • Cada computador ligado à rede é capaz de prover e
    requisitar conteúdo
  • Exemplo
  • Compartilhamento de arquivos MP3 em redes como
    Napster, Kazaa, Gnutella

91
Redes de Sobreposição (Overlay)
  • Uma rede lógica construída sobre a Internet
  • Conecta os vários computadores em uma rede
    peer-to-peer
  • Estrutura altamente dinâmica nodos podem ser
    inseridos ou removidos a todo tempo

92
Redes Peer-to-Peer
  • Problema básico Descobrir quais peers contêm o
    conteúdo desejado
  • Diretório Centralizado (ex. Napster)
  • Diretório Distribuído (ex. KaZaA)
  • Inundação de consultas (query flooding)

93
Parte 2 Sumário
  • Nosso estudo das aplicações está agora completo!
  • exigências dos serviços de aplicação
  • confiabilidade, banda passante, atraso
  • paradigma cliente-servidor
  • modelo do serviço de transporte da Internet l
  • orientado à conexão, confiável TCP
  • não confiável, datagramas UDP
  • protocolos especificos
  • http
  • ftp
  • smtp, pop3
  • dns
  • programação de sockets
  • implementação cliente/servidor
  • usando sockets tcp, udp

94
Parte 2 Sumário
  • Mais importante características dos protocolos
  • tipica troca de mensagens comando/resposta
  • cliente solicita informação ou serviço
  • servidor responde com dados e código de status
  • formatos das mensagens
  • cabeçalhos campos que dão informações sobre os
    dados
  • dados informação sendo comunicada
  • controle vs. dados
  • in-band, out-of-band
  • centralizado vs. descentralizado
  • stateless vs. stateful
  • transferência de mensagens confiável vs. não
    confiável
  • complexidade na borda da rede
  • segurança autenticação
Write a Comment
User Comments (0)
About PowerShow.com