Você está na página 1de 6

Capítulo 2 - Camada de aplicação

Introdução à camada de Aplicação Princípios, arquiteturas, serviços de transporte;


Protocolos abordados no capítulo. A Web e o protocolo HTTP. Programação com sockets
UDP/TCP. Correio Eletrônico; DNS - Domain Name System. Aplicações P2P; Streaming de
vídeo e CDN.

O que é a camada de aplicação? A camada de aplicação é a primeira camada da pilha,


existindo apenas na borda(nos dispositivos finais, inclusive os hospedeiros), não no núcleo
da rede. Alguns exemplos de aplicações de rede são o e-mail, mensagens instantâneas,
aplicações web, streaming de vídeo, telefonia via Internet, videoconferência, login
remoto(telnet e ssh), etc. Essa é a primeira camada é a primeira a receber o pacote e
encaminhar às outras camadas.

Arquiteturas de Aplicação
As aplicações podem estar organizadas de maneiras diferentes, o que dá origem a três
arquiteturas distintas, sendo elas as seguintes:
Cliente-servidor: o servidor será executado em um hospedeiro e fica escutando requisições
em um IP permanente e em uma porta específica; já o cliente inicia sessões com o servidor,
realizando requisições, podendo ter endereços dinâmicos. Alguns exemplos de protocolos
baseados nessa arquitetura são HTTP, IMAP, FTP.
Peer-to-peer(P2P): nem sempre existirá um único servidor, por isso os pares de
hospedeiros se comunicam entre si. Assim, em um momento um hospedeiro pode atuar
realizando requisições(como um cliente), no outro, pode atuar dando respostas(como um
servidor). Nesse sentido, todos hospedeiros oferecem serviços, havendo endereços
dinâmicos, o que torna o gerenciamento dessa rede um pouco mais complexo, visto que
será necessário ficar verificando quem fornecerá dado serviço. Alguns exemplos de
utilização dessa arquitetura são o BitTorrent e o Skype. Nesta arquitetura, pares solicitam
serviço de outros pares e fornecem serviço em troca de outros pares, o que traz uma
escalabilidade automática - novos pares trazem nova capacidade de serviço, bem como
novas demandas de serviço
Híbrida de cliente-servidor e P2P: é a arquitetura que faz uso das outras duas supracitadas;
No geral, aplicações de mensagem instantâneas fazem uso desse modelo, em que um
usuário(hospedeiro) vai até um servidor e busca um determinado endereço de um um outro
usuário(Client-server), então ele se conecta diretamente com esse outro usuário deste
endereço(P2P).

Obs.: a arquitetura de aplicação é diferente da arquitetura de redes(TCP e OSI).

Sockets
São uma abstração de programação que permite a comunicação entre processos(programa
em execução em um host) - que possibilita a passagem de mensagens - através da rede.
Eles funcionam como a porta de saída de uma casa, estando entre a camada de aplicação
e a camada de transporte. Assim, para que as mensagens saiam da aplicação do
hospedeiro, elas acessam uma porta de saída específica. Tais portas vão variar de acordo
com o tipo de processo. Existem portas padrão para cada serviço, tais como a 8080(HTTP),
25(correio SMTP). Vale ressaltar que o IP pode continuar o mesmo, enquanto as portas irão
variar de acordo com o processo a ser executado. Sabendo que um computador pode ter
vários programas em execução, faz-se necessário identificar com qual programa deseja-se
fazer uma comunicação, o que é feito graças ao socket. A composição IP + porta do
processo caracteriza um identificador.

Exemplo:

Protocolos da Camada de Aplicação


Os protocolos da camada de aplicação nos permitem definir o tipo da mensagem(se é
request ou é response), a sintaxe da mensagem(quais os campos da mensagem), a
semântica da mensagem(significado das informações nos campos) e as regras(para
quando e como os processos enviam e respondem às mensagens). Há dois principais tipos
de protocolos na camada de aplicação, sendo eles os seguintes:
Protocolo de domínio público(aberto): providos com RFCs(Request for Comments),
disponíveis para quaisquer interessados de maneira gratuita, recomendados para
interoperabilidade, tais como HTTP e SMTP;
Protocolos proprietários(fechado): são feitos para ambiente específicos (daí o seu nome),
pois ele apenas pode comunicar com uma plataforma padrão, assim o desenvolvimento e a
manutenção do protocolo é o domínio exclusivo do proprietário. Um exemplo desse
protocolo é o NETBIOS.

Serviços de transporte que uma aplicação necessita


Transferência confiável de dados: alguns aplicativos (por exemplo, transferência de
arquivos, transações na web) exigem transferência de dados 100% confiável, já outros
aplicativos (por exemplo, áudio) podem tolerar alguma perda.
Temporização: alguns aplicativos (por exemplo, telefonia pela Internet, jogos interativos,
aplicativos baseados em FTP) requerem um atraso baixo para serem “ eficazes”, enquanto
outros não dependem disso, como lives(já que, mesmo que a largura de banda seja muito
boa, a live não vai acontecer mais rapidamente)
Taxa de transferência: alguns aplicativos (por exemplo, multimídia) exigem uma quantidade
mínima de taxa de transferência para serem "eficazes", outros aplicativos (“aplicativos
elásticos”) fazem uso de qualquer taxa de transferência que obtenham
Segurança: criptografia, integridade de dados, …
Alguns serviços de protocolos de transporte:

Aplicações Web e protocolo HTTP:

A requisição de páginas web funciona graças ao protocolo HTTP, comumente em uma


arquitetura cliente-servidor.

O HTTP pode funcionar por meio de dois tipos de conexões, sendo elas as seguintes:
Não persistente: UM objeto é enviado sobre uma conexão TCP, então a comunicação
termina.
Persistente: múltiplos objetos podem ser enviados em uma mesma conexão até que todos
os itens da página sejam enviados. Nesse tipo de conexão, pode ou não acontecer o
paralelismo. Quando ele não acontece, só se requisita um novo objeto quando houver a
confirmação de que o item anterior foi recebido. Com o paralelismo, há requisição paralela
de diversos objetos.
O HTTP funciona com responses de diversos tipos, como 200, 400, etc. As requests, por
sua vez, funcionam como GET, POST, PUT, etc.
Cookies: servidores http não controlam sozinho as últimas sessões que ele realizou. Com a
utilização de cookies, torna-se possível monitorar o estado, isto é, torna-se possível
registrar determinadas informações. Assim, da próxima vez que um usuário for fazer uma
requisição a um servidor, essa requisição levará informações acerca da requisição anterior.

Cache Web: funcionam graças ao proxys(servidor que fica entre o servidor de origem e o
cliente). Esse servidor de cache armazena URLs e informações de páginas que costumam
ser bastante acessadas. Nesse sentido, se uma página não foi modificada, não tem motivo
de entrar em contato com servidor de origem, podendo acessar informações do próprio
servidor de cache.

Aplicações Cliente-servidor:
- FTP: Protocolo de transferência de arquivos entre sistemas de arquivo local e
remoto, do servidor para o cliente. O FTP vai atuar tanto no cliente, quanto no
servidor. Há duas conexões TCP que auxiliam no processo de transferência de
arquivo, sendo a primeira das conexões, a conexão de controle que roda na porta
21, responsável por informar nome, login, senha e comandos. A segunda conexão,
por sua vez, roda na porta 20 e é responsável por transportar o arquivo
propriamente dito. O FTP possui algumas respostas e comandos para que possa
funcionar, sendo eles os seguintes: USER(informa o usuário), PASS(informa senha
do usuário), LIST(llist ao conteúdo do diretório), RETR(copia o arquivo remoto para o
atual), STOR(faz o upload no diretório remoto), 331(usuário ok), 125(conexão de
dados aberta e iniciando transferência), 452(erro ao transferir o arquivo);

- Email/correio eletrônico: é um serviço composto por agentes de usuário(softwares


de e-mail, como o outlook ou os próprios browsers que fazem essa interface com o
usuário, servidores(responsáveis por armazenar os conteúdos que recebem e
encaminham e-mails às contas), protocolos(protocolos que permitem acessar o
e-mail que chega a determinado servidor, como os protocolos SMTP, POP, IMAP e
HTTP).

- SMTP: protocolo de transferência de mensagens, que tem auxílio do TCP(mais


confiável), que ouve em uma porta 25, com conexões persistentes. Os agentes de
usuário utilizam o SMTP para enviar mensagens do servidor.
O fluxo de e-mail é: o usuário escreve o seu e-mail no agente de usuário, o e-mail
passa para o servidor local de correio eletrônico, se encaminha para o servidor de
destino e é entregue ao agente de destino. A comunicação entre isso é feita,
geralmente, por SMTP.
- Formatos de mensagem de correio:

Além do SMTP, podem ser utilizados outros protocolos para que o usuário de origem
tenha as suas mensagens “descarregadas” no agente, como o POP3, IMAP ou
HTTP(como o gmail).

DNS:
O DNS, diretório da internet, serve para identificar o nome do hospedeiro em um endereço
IP, sendo uma espécie de tradutor. Ele é um banco de dados distribuído executado em uma
hierarquia de serviços DNS, bem como é um protocolo de camada de aplicação que permite
que os hospedeiros consultem o banco de dados distribuído.
O DNS provê alguns outros serviços, tais como dar um apelido "fácil" de ser memorizado a
um hospedeiro(aliasing) e os servidores de correio, bem como permite um balanceamento
de carga.
É importante ressaltar que nenhum servidor DNS isolado tem todos os mapeamentos para
todos os hospedeiros da internet, por isso os mapeamentos são distribuídos em diferentes
bancos de dados.

Acesso interativo:
O acesso ao DNS pode ser feito de maneira interativa, com uma mensagem indo para um
servidor dns local, vai até o dns raiz, retorna ao dns local, vai até o dns(TLD, contendo os
endereços do .com, .org, .edu), retorna uma outra mensagem até que se consiga chegar ao
endereço do hospedeiro.

Acesso recursivo:
O acesso ao DNS também pode ser feito de maneira recursiva, em que faz-se a pergunta
para o servidor local, o servidor local envia ao dns raiz, o dns raiz passa para um outro
servidor, e isso é feito até que se chegue a resposta ao hospedeiro que fez a pergunta.

Registros e mensagens no DNS:


As mensagens são registradas no servidor em tuplas, as quais possuem em si o nome do
servidor(ex.: www.cin.ufpe.br), o value(endereço IP do servidor), o type(dizer que ele é um
servidor) e o TLL(tempo que esse registro vai valer)

Aplicações P2P:
Pode acontecer de em algumas arquiteturas P2P existirem servidores(rastreadores) que
ficam informando quais hospedeiros estão atuando como fornecedores de arquivos em
determinados momentos, em uma atuação parecida com a que o DNS faz.

A distribuição de arquivos em uma arquitetura do tipo cliente-servidor custa um tempo


linear(cresce conforme o número de requisições feitas no mesmo servidor), enquanto uma
arquitetura P2P tende a não crescer linearmente, já que no P2P se torna mais estável em
virtude a distribuição de requisições para vários "servidores".
Essa distribuição no P2P é feita graças ao banco de dados distribuído DHTs(Distributed
hash tables).

Você também pode gostar