Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Reitor
Pe. Marcelo Fernandes de Aquino, SJ
Vice-reitor
Pe. Jos Ivo Follmann, SJ
Editora Unisinos
Diretor
Pe. Pedro Gilberto Gomes, SJ
Telef.: 51.35908239
Fax: 51.35908238
editora@unisinos.br
REDES DE COMPUTADORES
[Conceitos, aplicaes e tipos de transporte]
Mateus Raeder
Editora Unisinos
2010
do autor, 2010
Raeder, Mateus.
ISBN 978-85-7431-401-3
CDD 004.6
CDU 004.7
Sobre o autor
Mateus Raeder. Graduou-se no curso de Bacharelado em Cincia da Computao pela Pontifcia
Universidade Catlica do Rio Grande do Sul (PUCRS) no ano de 2006. Em 2008, obteve o ttulo
de Mestre em Cincia da Computao pela PUCRS. Doutorando em Cincia da Computao pela
PUCRS. professor da UNISINOS desde o primeiro semestre de 2009, lecionando disciplinas
como Laboratrio I, Programao II, Redes Avanadas, Programao de Alto Desempenho e
Redes de Computadores.
APRESENTAO
Este livro Redes de Computadores: conceitos, aplicaes e tipos de
transporte objetiva introduzir o estudo s redes de computadores e sua essncia. Assim sendo, a obra traz desde alguns aspectos bsicos, como classificaes
e meios de transmisso nas redes, at caractersticas mais avanadas, como o
funcionamento dos protocolos mais frequentemente usados. O contedo apresentado foi baseado em alguns estudos e autores importantes e de excelente
referncia na rea de Redes, o que garante a qualidade do contedo.
O leitor perceber que a linguagem bastante didtica e de fcil
entendimento, apresentando exemplos e situaes do dia a dia (como, por
exemplo, o envio de e-mails, a transmisso de arquivos e o acesso a pginas
na Internet).
O livro est organizado de forma gradativa e de maneira complementar, procurando sempre intercalar um assunto no outro. Comea com um
estudo sobre aplicaes e seus principais protocolos, passando pelo entendimento de como os envios de mensagens pela rede so tratados, finalizando
com uma classe de aplicaes utilizada com grande frequncia pelos usurios
da Internet (transmisso de udio e vdeo).
A principal expectativa que a linguagem didtica utilizada, em conjunto com a sequncia do contedo abordado, possa auxiliar o leitor no entendimento da mensagem passada.
SUMRIO
Capitulo 1: Introduo s Redes de Computadores........................ 9
1 Camada de Aplicao..................................................................................... 25
1.1 Funes da Camada de Aplicao....................................................... 25
1.2 Programao em sockets com Java........................................................ 26
1.3 HTTP........................................................................................................ 28
1.3.1 Mensagens HTTP........................................................................... 30
1.3.2 Cookies.............................................................................................. 31
1.3.3 GET condicional............................................................................. 32
1.4 FTP............................................................................................................ 32
1.5 DNS.......................................................................................................... 33
1.6 Protocolos de e-mail................................................................................ 35
1.6.1 SMTP............................................................................................... 35
1.6.2 POP e IMAP.................................................................................... 37
1.7 Consideraes finais............................................................................... 38
CAPTULO 3: Camada de transporte..............................................................39
1 Camada de transporte.................................................................................... 39
1.1 UDP.......................................................................................................... 40
1.2 TCP........................................................................................................... 42
1.2.1 Go-Back-N........................................................................................ 45
1.2.2 Pacote TCP...................................................................................... 47
1 P2P..................................................................................................................... 55
1.1 Elementos fundamentais................................................................. 56
1.2 Arquiteturas....................................................................................... 56
1.3 Pesquisa e acesso............................................................................... 57
1.4 Consideraes finais......................................................................... 58
CAPTULO 5: Multimdia..........................................................................................59
1 Multimida....................................................................................................... 59
1.1 RTSP......................................................................................................... 62
1.2 RTP........................................................................................................... 63
1.3 RTCP......................................................................................................... 64
1.4 Consideraes finais............................................................................... 65
Referncias. .................................................................................................... 66
Captulo 1
Introduo s Redes de Computadores
10
MATEUS RAEDER
Embora seja amplamente utilizada por pessoas para as mais diversas finalidades (acesso a informaes remotas, comunicao, diverso), a
utilizao das redes ultrapassou diversas barreiras. Empresas de todos os
ramos as utilizam para a comunicao entre suas diversas sedes, monitorando, por exemplo, estoques em todas as suas unidades. Agregado a todo este
crescimento, as redes trazem uma enorme liberdade de expresso, trazendo
tona discusses do que pode ou no ser compartilhado, o que agride ou
no aos princpios etc. Apesar de ser uma questo de extrema importncia,
no vamos entrar nesta discusso, pois foge do escopo principal do estudo.
A seguir, comeamos a estudar os principais aspectos das redes de
computadores: como so formadas, classificaes mais utilizadas, meios de
transmisso entre os computadores, protocolos de rede e atrasos.
1.1 Elementos principais e classicao
Em toda rede existem algumas entidades que realizam papis fundamentais para uma comunicao correta: o transmissor, o receptor, o dado, o
canal de comunicao e a interface de rede. A Figura 2 ilustra estas entidades
e sua distribuio bsica em uma rede.
UNISINOS
11
INTRODUO
REDES
DE
COMPUTADORES
O primeiro deles trata-se do Transmissor, tambm chamado de Origem. Este o componente que deseja enviar alguma informao pela rede.
Esta mensagem contm os Dados que sero enviados para o Receptor, ou destino, atravs do Canal de Comunicao. O ltimo componente a Interface
de Rede. Este componente responsvel pela conexo fsica dos dispositivos
(transmissor e receptor) ao canal de comunicao, colocando os dados da rede
na origem e retirando-os do destino.
Os transmissores e receptores tambm conhecidos como hosts geralmente realizam os papis de enviar e receber dados, sendo comumente dinmicos, pois em um momento podem estar tanto enviando quanto recebendo
dados. Cada um deles possui uma identificao nica na rede. similar ao
que acontece com as pessoas: cada uma possui seu prprio CPF e/ou RG, que
a identifica unicamente. No caso das redes de computadores, cada host possui
um endereo IP nico.
As redes so, ento, comumente classificadas de acordo com a distncia entre os hosts. A Tabela 1 apresenta uma possvel classificao das redes de
computadores.
Abrangncia
Localizados no mesmo
10 m
Sala
100 m
Prdio
1 km
Campus
10 km
Cidade
100 km
Estado/Pas
1.000 km
Continente
10.000 km
Planeta
Classicao
UNISINOS
12
MATEUS RAEDER
UNISINOS
13
INTRODUO
REDES
DE
COMPUTADORES
14
MATEUS RAEDER
Entre os hosts, existem os canais de comunicao (ou links), que a partir deste momento tambm sero chamados de enlace. Estes enlaces podem
ser cabos de fibra tica, cabos coaxiais e outros meios, que tambm sero estudados mais adiante.
Os hosts ainda so, geralmente, conectados por equipamentos que
comutam (trocam) as informaes de um host para outro. So os roteadores
(routers). Estes equipamentos so utilizados para encaminhar os dados entre
um enlace e outro por toda a rede, at que as informaes cheguem ao seu
destino.
Conforme dito anteriormente, a Internet uma rede de redes (a rede
mundial de computadores) que interliga redes pblicas e privadas. A Internet pblica esta rede discutida anteriormente, na qual todos os dispositivos
podem ser acessados pelos demais. A Internet privada a chamada Intranet.
Neste tipo de rede, os computadores no so acessveis por mquinas externas. So extremamente utilizadas por corporaes, rgos governamentais e
instituies de todos os setores. A Intranet utiliza as mesmas tecnologias (roteadores, hosts, padres, protocolos) que a Internet.
Para as aplicaes de rede (aplicaes distribudas), existem dois tipos de servios prestados: um servio orientado conexo e um servio no
orientado conexo. A principal diferena entre estes servios que quando
se utiliza um servio orientado conexo, h a garantia de entrega dos dados
corretamente ao destino, diferentemente dos servios no orientados conexo. Estes tipos de servio tambm sero estudados mais detalhadamente nos
captulos que seguem.
Para guiar a comunicao entre os hosts, o modelo de comunicao
que predomina na Internet o modelo cliente/servidor. Neste modelo, os
hosts presentes na rede podem ser divididos em duas categorias principais:
clientes e servidores. Os clientes so classicamente estaes de trabalho comuns, que solicitam um determinado servio aos hosts servidores. Por sua
vez, os servidores so mquinas mais potentes, que tm a funo de prestar
determinados servios para os clientes. Este modelo (que pode ser visualizado na figura 7) amplamente utilizado por inmeras aplicaes populares,
tais como a Web, o e-mail, grupos de discusso, transferncia de arquivos,
login remoto etc.
15
INTRODUO
REDES
DE
COMPUTADORES
UNISINOS
16
MATEUS RAEDER
Os cabos de par tranado so divididos em dois tipos: sem blindagem (UTP - Unshielded Twisted Pair) e com blindagem (STP - Shielded Twisted
Pair), sendo os sem blindagem os mais utilizados. So formados por dois
fios de cobre encapados e enrolados de forma helicoidal (figura 10). So enrolados desta maneira como uma forma de diminuir a interferncia eltrica
entre os fios.
17
INTRODUO
REDES
DE
COMPUTADORES
Em redes de computadores temos o mesmo caso, porm, com mquinas ao invs de pessoas (figura 13). Toda a comunicao presente na Internet
comandada por protocolos que definem o formato das mensagens, a ordem
que elas devem chegar ao destino, o que deve ser feito em cada situao, alm
de outros controles.
UNISINOS
18
MATEUS RAEDER
Na comunicao entre hosts, para que as mensagens cheguem ao destino, informaes de controle so adicionadas a cada mensagem enviada. Assim, para que um protocolo funcione corretamente e atenda as suas funes,
necessrio que os dois lados da comunicao (origem e destino) entendam
as mensagens trocadas da mesma maneira, e que as respondam tambm de
uma forma legvel para ambos. A adio destas informaes de controle
chamada de overhead. Quanto mais overhead for includo nas mensagens que
trafegam na rede, mais lenta a comunicao. Resumidamente, os protocolos
so responsveis por definir:
o tipo das mensagens trocadas entre as mquinas
a sintaxe das mensagens (definindo o formato de cada um dos campos)
a semntica dos campos (o que cada campo significa)
as regras de quando e como as mensagens so enviadas
1.4.1 Protocolos hierrquicos
As redes de computadores tm evoludo constantemente. Um dos aspectos importantes que surgiu juntamente com esta evoluo a organizao
dos protocolos de uma maneira estruturada, separando os componentes (protocolos) em camadas.
Mas qual o benefcio de uma estrutura de protocolos organizada em
camadas? O principal objetivo desta modularizao isolar as camadas superiores dos detalhes de implementao das camadas inferiores, possibilitando,
assim, que funcionalidades de uma camada sejam substitudas e alteradas
sem que isso influencie nas demais camadas. Ou seja, tornar cada camada
independente das demais, de maneira transparente para o usurio.
Cada camada em uma rede de computadores realiza suas prprias
funes, e denominada camada de nvel n. Como todos os hosts implementam os mesmos protocolos, as camadas de mesmo nvel n em uma mquina
trocam informaes entre si de acordo com um determinado protocolo. Entretanto, as informaes no so transmitidas diretamente da camada n da
mquina origem para a camada n da mquina destino.
Cada camada repassa dados e informaes para a camada imediatamente inferior. As entidades n utilizam servios do nvel n-1 (providos pelos nveis inferiores) e fornecem servios ao nvel n+1. Na Figura
14 temos um exemplo da comunicao entre os protocolos. Perceba que uma
camada no nvel n no se comunica diretamente com a sua correspondente
na mquina destino, passando pelos protocolos mais abaixo na origem e chegando ao destino, a partir do qual realiza o caminho inverso.
UNISINOS
19
INTRODUO
REDES
DE
COMPUTADORES
UNISINOS
20
MATEUS RAEDER
UNISINOS
21
INTRODUO
REDES
DE
COMPUTADORES
22
MATEUS RAEDER
UNISINOS
23
INTRODUO
REDES
DE
COMPUTADORES
Quando um pacote chega a um n, ele examinado para determinar para onde deve ser encaminhado. O tempo necessrio para fazer esta
verificao o atraso de processamento (Dproc). Alm disso, parte do
atraso de processamento o tempo gasto para verificar a ocorrncia de erros
nos bits do pacote. Logo aps estes processos, o pacote enviado para uma
fila de sada, na qual encontram-se todos os pacotes que esto prontos para
serem enviados ao enlace. O tempo que o pacote espera na fila para ser
enviado para a rede o atraso de enfileiramento (Dqueue). Este atraso depende, obviamente, da quantidade de pacotes que j se encontram na fila
aguardando o momento da transmisso. Quanto mais trfego, maior ser
o atraso Dqueue. Se no houver pacotes na fila, o atraso de enfileiramento
do pacote zero.
O pacote, em algum momento, torna-se o prximo a ser enviado.
A partir da, calculado o prximo atraso: o de transmisso (Dtrans). Este
atraso a quantidade de tempo necessria para retirar o pacote da fila e
coloc-lo no enlace, ou seja, o tempo necessrio para colocar todos os
bits do pacote para o canal de comunicao. Mas cuidado! No se refere
ao tempo de transmisso do pacote para o prximo n, mas sim o tempo
de retirar o pacote da fila. Assim sendo, considere um pacote de L bits de
comprimento. Se a taxa de transmisso do enlace denotada por R bits por
segundo (bps), temos que: Dtrans = L/R segundos.
Assim que um bit do pacote empurrado para o enlace, ele no fica
esperando os demais, e comea a ser imediatamente propagado para o prximo n pelo enlace. O tempo necessrio para propagar um bit do pacote
para o prximo n o atraso de propagao (Dprop). A medida deste atraso
depende muito do meio fsico utilizado no enlace (fibra tica, fio de cobre
etc), e calculada como a distncia entre os dois ns (de onde o pacote est
saindo e para onde deve chegar) dividida pela velocidade de propagao do
enlace. Deste modo, para ns a uma distncia de D metros, interligados por
um enlace com velocidade de propagao de S metros por segundo, temos
que: Dprop = D/S segundos.
de extrema importncia perceber a diferena entre o atraso de
transmisso e o atraso de propagao. No primeiro (Dtrans), o atraso a
quantidade de tempo para que o n empurre todos os bits do pacote para o
enlace, enquanto no segundo (Dprop) o tempo que um bit leva para propagar de um n a outro.
A soma destes atrasos resulta no atraso nodal total (Dnodal), que
dado pela frmula: Dnodal = Dproc + Dqueue + Dtrans + Dprop.
O atraso fim a fim (desde o host origem do pacote at o host destino)
a soma de todos os atrasos nodais sofridos pelo pacote no percurso.
1.6 Consideraes nais
Vimos at agora conceitos iniciais e importantes sobre redes de
computadores. Seus componentes principais, tipos de classificao, meios
de transmisso mais utilizados e algumas caractersticas de cada um deles. Ainda neste captulo, falamos sobre protocolos, definindo o que so,
para que servem e como so organizados. Estudamos sobre o modelo de
referncia OSI, e sua importncia na criao dos protocolos e na diviso em
camadas utilizada na Internet. Aprendemos, tambm, a calcular o atraso sofrido pelas mensagens na rede, relatando os tipos importantes de atraso e o
motivo de existirem.
A partir deste ponto, vamos comear a estudar as duas camadas superiores da pilha de protocolos TCP/IP: a camada de aplicao e a camada
de transporte. No estudo de cada uma destas camadas, sero estudados os
principais protocolos existentes em detalhes.
UNISINOS
Captulo 2
Camada de Aplicao
abemos que a pilha de protocolos da Internet dividida em camadas, cada uma delas com suas funes
especficas. Neste captulo, comeamos a estudar em detalhes a Camada de Aplicao. So apresentados
os principais protocolos desta camada, dentre eles: HTTP, FTP, SMTP, POP, IMAP e DNS.
O principal intuito deste captulo o aprendizado tanto terico quanto prtico destes protocolos. Alm
disso, a programao de aplicaes de rede com sockets, em Java, abordada.
1 Camada de aplicao
1.1 Funes da Camada de Aplicao
A camada de Aplicao situa-se no ltimo nvel da pilha de protocolos da Internet, sendo a mais prxima dos usurios. Geralmente, cada camada
possui poucos protocolos principais (1 ou 2). Isso no ocorre na camada de
Aplicao, na qual existem diversos protocolos, um para cada tipo de servio,
podendo, ainda, um determinado servio fazer uso de mais de um protocolo
de Aplicao (como o servio de e-mail, por exemplo, que utiliza ou pode
utilizar os protocolos SMTP, POP e IMAP).
Na camada de aplicao encontramos a parte principal das redes de
computadores: de nada serviria a implantao de uma rede se nenhuma aplicao fosse utiliz-la. Estas aplicaes, que so distribudas em diversos hosts, comunicam-se atravs de troca de mensagens, e os protocolos do nvel de Aplicao
so os responsveis por detalhar desta comunicao, no que tange a aspectos de
controle e formato das mensagens trocadas entre as aplicaes.
Entretanto, importante ressaltar que os protocolos da camada de Aplicao no so a aplicao, mas sim uma parte fundamental delas, definindo as
mensagens que sero enviadas e cada ao que deve ser tomada em determinadas situaes.
Vamos chamar um determinado programa que est sendo executado
em um host de processo. Dentro do mesmo host, a comunicao entre dois
processos definida pelo sistema operacional (interprocess communication). J
processos em hosts diferentes utilizaro protocolos da camada de Aplicao
para se comunicarem.
Entre o usurio e a aplicao de rede existe a figura do Agente de Usurio (User Agent UA), que a interface entre o usurio e a aplicao de rede. Como
exemplos de agentes de usurio, podemos citar os browsers (que so os UA da
aplicao Web), os leitores de e-mail (que so os UA de correio) e os tocadores de
mdia (que so os UA das aplicaes de streaming de udio e vdeo).
O paradigma que mais utilizado na Internet o paradigma cliente/
servidor. Nele existem duas figuras principais:
26
MATEUS RAEDER
cliente: que solicita um determinado servio (por exemplo, leitores de
correio eletrnico)
servidor: que recebe um determinado pedido, executa este pedido e responde (por exemplo, servidores de correio eletrnico)
Existe uma interface de programao de aplicaes (Application Program Interface - API), que define a comunicao entre a aplicao e a camada
de transporte. Para aplicaes da Internet, vamos utilizar sockets. Na rede de
computadores, dois processos, em locais diferentes ou no, comunicam-se um
com o outro atravs do recebimento e do envio de dados atravs de um socket.
Na prxima seo, estudaremos mais sobre sockets, apresentando como criar
uma aplicao que permita a comunicao entre duas mquinas da rede com
a utilizao da linguagem Java.
1.2 Programao em sockets com Java
Vamos, neste captulo, aprender a criar aplicaes cliente/servidor
que se comunicam em rede atravs de sockets. A linguagem de programao
que iremos utilizar a Java.
Um socket um mecanismo que permite que um host envie uma mensagem e outro host receba. Mais especificamente, um host grava informaes em um
socket, e outro retira estas informaes do socket. Para isto, devemos definir uma
porta de comunicao, que por onde os dados iro entrar no host destino.
Vamos criar uma aplicao simples, na qual o cliente envia uma mensagem de texto para o servidor, que a imprime e retorna uma resposta de
agradecimento, que ser impressa no cliente.
O cliente l uma linha de entrada digitada pelo usurio via teclado e
envia para o servidor via socket. O servidor, ento, processa os dados (neste
caso simplesmente imprime a mensagem) e retorna para o cliente uma resposta, tambm atravs do socket. O cliente l a mensagem de resposta do servidor e exibe-a na tela.
O servio que vamos utilizar aqui orientado conexo (usando
TCP), embora seja possvel a criao de sockets que utilizem o protocolo UDP
(ambos os protocolos sero estudados no decorrer dos captulos). Veja abaixo
o cdigo-fonte da classe que far o papel de servidor na aplicao.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
import java.io.*;
import java.net.*;
class Servidor {
public static void main(String argv[]) throws Exception
{
String mensagemRecebida;
String mendagemEnviada = Obrigado!;
ServerSocket serverSocket = new ServerSocket(6789);
while(true) {
Socket meuSocket = serverSocket.accept();
BueredReader entrada = new BueredReader(new
InputStreamReader(meuSocket.getInputStream()));
DataOutputStream saida = new
DataOutputStream(meuSocket.getOutputStream());
}
}
mensagemRecebida = entrada.readLine();
System.out.println(Cliente enviou: + mensagemRecebida);
saida.writeBytes(mendagemEnviada);
}
UNISINOS
27
CAMADA
DE
APLICAO
import java.io.*;
import java.net.*;
class Cliente {
public static void main(String argv[]) throws Exception
{
String mensagemParaServidor;
String respostaServidor;
BueredReader digitado =
new BueredReader(new InputStreamReader(System.in));
Socket meuSocket = new Socket(IP_Servidor, 6789);
DataOutputStream saida =
new DataOutputStream(meuSocket.getOutputStream());
BueredReader entrada =
new
BueredReader(new
InputStreamReader(meuSocket.getInputStream()));
}
}
mensagemParaServidor = digitado.readLine();
saida.writeBytes(mensagemParaServidor + \n);
respostaServidor = entrada.readLine();
System.out.println(Servidor enviou: + respostaServidor);
meuSocket.close();
O cliente cria um uxo de entrada do usurio na linha 9, que servir para ler
a frase que ser enviada para o servidor. na linha 12 que o socket cliente criado.
Repare que no somente a porta informada, mas tambm o endereo IP, no formato
de uma String. Esta linha a responsvel por solicitar a conexo no cliente de IP IP_
Servidor na porta determinada (no caso, 6789). Conforme vimos no cdigo anterior,
o servidor est aguardando uma conexo exatamente nesta porta. As prximas linhas
so anlogas ao cdigo do servidor, criando o uxo de sada e o uxo de entrada do
cliente, ambos ligados ao socket. A linha 21 a leitura da linha do usurio, e na linha
22 o cliente de fato escreve no socket a informao que o servidor deve ler (perceba
que o servidor est bloqueado no readLine(), aguardando esta escrita). Logo em
seguida, a vez do cliente ficar bloqueado, aguardando uma resposta do servidor (linha 23). Quando a resposta finalmente chega, a mensagem exibida
na tela e o socket fechado (linhas 24 e 25, respectivamente).
A partir desta simples aplicao, vrios exemplos podem ser criados
e analisados. Cabe ressaltar que a utilizao de sockets em Java no permite
apenas o envio de textos simples, mas tambm permite o envio de classes
inteiras e objetos mais complexos. Tudo depende do que o usurio deseja implementar.
UNISINOS
28
MATEUS RAEDER
2.3 HTTP
O primeiro protocolo da camada de Aplicao que vamos abordar trata-se do protocolo HTTP (HyperText Transfer Protocol), que define as
regras de comunicao na World Wide Web (WWW ou simplesmente Web).
Antes de falarmos especificamente sobre o HTTP, apresentaremos alguns
aspectos importantes.
A comunicao na Web feita atravs de pginas, que so arquivos
descritos atravs da linguagem HTML (HyperText Markup Language). Tratase de uma linguagem simples para hipertexto, que comeou como uma verso de SGML (Standard Generalized Markup Language). Uma pgina HTML
construda basicamente por cadeias de texto, formadas por tags inseridas
no corpo do arquivo entre os caracteres < (menor) e > (maior). Alguns exemplos de tags HTML so:
<b> texto </b>: formata o texto em negrito
<i> texto </i>: formata o texto em itlico
<h1 align=center> texto </h1>: centraliza o texto
<img src=caminho do arquivo>: insere uma imagem (mais especificamente o arquivo referenciado no caminho indicado)
A verso 1.0 do HTTP definida na RFC 1945, e a verso 1.1 na RFC 2068
Alm destas, existem diversas outras tags que formatam textos e inserem objetos na pgina (listas, tabelas, frames, imagens, vdeos, sons etc.).
Assim, uma pgina Web consiste de vrios objetos referenciados
por uma URL (Universal Resource Locator). Esta URL tem duas partes: o nome
do hospedeiro e o nome do caminho. Estas pginas so armazenadas em
servidores Web. Para visualizar tais pginas, existe a figura do agente de
usurio, que chamado de Browser. Exemplos de browsers so o Internet
Explorer e o Firefox.
O protocolo HTTP opera com o modelo cliente/servidor. O cliente
o lado que solicita e recebe os objetos Web armazenados no servidor. O servidor, por sua vez, recebe os pedidos dos clientes e envia os objetos referenciados como resposta. o HTTP1 que controla as regras desta comunicao
entre cliente e servidor.
O protocolo da camada de Transporte utilizado pelo HTTP o TCP2.
O fluxo da comunicao do HTTP ocorre basicamente com os passos a seguir:
o cliente abre uma conexo TCP com o servidor (atravs do socket)
na porta 80
o servidor aceita a conexo TCP solicitada
cliente e servidor trocam mensagens HTTP (ou seja, o agente de
usurio troca mensagens com o servidor Web)
a conexo encerrada
Suponha que o usurio digita a URL www.inf.unisinos.br/index.html
no seu browser. Suponha, ainda, que esta HTML possui quatro imagens referenciadas. A figura 21 ilustra o fluxo de mensagens trocadas entre cliente
e servidor.
Perceba que uma conexo aberta para cada objeto solicitado. Assim,
seriam nove conexes abertas e encerradas: uma para a solicitao do objeto
inicial (index.html) e oito para os objetos referenciados (no caso, as imagens
presentes no arquivo). Este o procedimento realizado no HTTP/1.0. O servidor analisa o pedido, responde e encerra a conexo, utilizando dois RTTs3 para
cada objeto (um para iniciar a conexo e um para receber a resposta). Logo, o
tempo de transmisso do arquivo dado por dois 2RTT + tempo de transmisso, conforme ilustra a figura 22.
UNISINOS
29
CAMADA
DE
APLICAO
30
MATEUS RAEDER
realizados anteriormente pelo cliente. Tal fato acrescentaria certa complexidade ao protocolo, uma vez que os estados guardados pelo cliente e pelo servidor deveriam ser, necessariamente, os mesmos guardados pelo servidor caso
um dos lados casse, por exemplo.
1.3.1 Mensagens HTTP
Existem dois tipos de mensagens HTTP: requisio e resposta. Ambas
utilizam o formato ASCII, um formato legvel por humanos. A figura 23 mostra o formato geral de uma mensagem HTTP de requisio.
UNISINOS
31
CAMADA
DE
APLICAO
1.3.2 Cookies
O protocolo HTTP faz uso dos chamados cookies, que so utilizados
para guardar as informaes dos usurios. Os cookies so definidos na RFC
2109. Por exemplo, um usurio entra em um determinado site que utiliza o
mecanismo de cookies. O servidor ir incluir em sua mensagem de resposta a
UNISINOS
32
MATEUS RAEDER
33
CAMADA
DE
APLICAO
USER nome: informa o nome de usurio para autenticao
PASS senha: informa a senha do usurio para autenticao
lIST: lista os arquivos que se encontram no diretrio corrente
RETR arquivo: recupera o arquivo remoto
STOR arquivo: armazena o arquivo no host remoto
Como resposta a estes comandos, as mensagens de resposta so na
forma cdigo e frase (como no HTTP). Alguns exemplos so:
331 username OK, password required: indica que o usurio indicado foi
aceito, e que o mesmo necessita informar senha.
125 data connection already open, transfer starting: informa que os dados j podem comear a ser transferidos, pois a conexo de dados j foi
estabelecida
425 cant open data connection: ocorreu um erro na abertura da conexo
de dados.
Diferentemente do HTTP, o servidor FTP consegue armazenar informaes de estado, como por exemplo, o diretrio em que o usurio encontrase e a autenticao previamente realizada por ele.
1.5 DNS
Cada dispositivo conectado Internet possui um identificador nico, chamado endereo IP (Internet Protocol). Este identificador utilizado para
enderear as mensagens enviadas, e so compostos por nmeros. Por exemplo, o host www.unisinos.br possui o endereo 200.188.161.4 (utilizando IPv4).
Obviamente, muito mais fcil e intuitivo para ns humanos lembrar-nos do
nome (hostname) www.unisinos.br do que do seu endereo IP. Imagine se fosse
necessrio que soubssemos o endereo IP de todos os sites que acessamos no
dia a dia.
Entretanto, este endereo o que vai informar a exata localizao
de determinado host na Internet, e um mapeamento necessrio, ou seja, a
transformao (ou traduo) do hostname para o seu respectivo endereo IP.
Este servio de traduo de nomes de responsabilidade do DNS (Domain
Name Server). O DNS utiliza o protocolo UDP1 e trabalha por padro na porta
53. Podemos ver o DNS como um conjunto de bancos de dados que esto
distribudos em diversos servidores ao redor do mundo. Nestes servidores
(chamados servidores DNS) encontram-se as informaes de qual IP est
associado a cada hostname.
O funcionamento do DNS d-se como segue:
suponha que o usurio deseja acessar o site www.unisinos.br
para que a mensagem de requisio HTTP chegue ao seu destino,
necessrio a obteno do endereo IP de www.unisinos.br
o host do usurio roda, ento, o lado cliente do DNS, enviando
ao servidor uma consulta informando o nome do host que deseja
traduzir (no caso, www.unisinos.br)
o cliente recebe como resposta o endereo IP do host desejado
Para a resoluo dos nomes, o DNS utiliza uma estrutura hierrquica de servidores. Estes servidores so de 3 tipos: servidores de nomes
locais, servidores de nomes raiz e servidores de nomes com autoridade.
Os servidores de nomes locais so aqueles que esto mais prximos
do cliente, e o primeiro servidor a ser consultado. Quando este servidor
no sabe resolver o nome solicitado, uma consulta ao servidor de nomes
raiz realizada. Se este servidor tambm no consegue resolver o hostname
solicitado, um servidor de nomes com autoridade utilizado. Todo host
UNISINOS
34
MATEUS RAEDER
35
CAMADA
DE
APLICAO
Os agentes de usurio so os conhecidos leitores de e-mail. So as aplicaes sobre as quais o usurio interage, compondo, editando, lendo mensagens de correio. Como exemplos, podemos citar o Outlook Express, Evolution, Pegasus, Thunderbird, dentre outros. Estas aplicaes fazem o papel
de cliente do correio eletrnico. Entretanto, as mensagens no so enviadas
diretamente para os agentes de usurio. Quando uma mensagem chega ou
enviada, elas ficam armazenadas nos agentes de transporte, que so os servidores de correio.
1.6.1 SMTP
Servidores de correio armazenam as mensagens recebidas em uma
fila de mensagens que sero posteriormente entregues ao usurio. Alm
disso, armazenam as mensagens que o usurio deseja mandar (que foram
enviadas atravs do agente de usurio) em uma fila de sada. Neste contexto, quando um servidor de correio deseja enviar uma mensagem para
outro servidor de correio, utilizado o protocolo SMTP (Simple Mail Transfer Protocol). O papel de cliente executado pelo servidor que enviar a
mensagem, e o papel de servidor ser realizado pelo servidor que receber
a mensagem.
O SMTP5 utiliza TCP para a transferncia dos dados, e a conexo feita
na porta 25. o protocolo que faz a transferncia direta entre o servidor remetente
e o servidor receptor, no havendo servidores intermedirios no caminho. O SMTP
permite o envio de mensagens de texto simples, em ASCII de 7 bits.
UNISINOS
5
O protocolo SMTP definido na RFC 822
36
MATEUS RAEDER
A transferncia do e-mail realizada em trs fases: handshaking, transferncia das mensagens e encerramento. Estas fases podem ser visualizadas
na figura 29.
Primeiramente ocorre o cumprimento inicial, onde o servidor conhece o cliente e autentica o destinatrio da mensagem, caso este exista no servidor. Logo aps, o cliente avisa que comear a enviar seus dados. O servidor,
ento, informa ao cliente que escreva sua mensagem, terminando com um
caractere . (ponto) em uma linha separada. com este caractere que o servidor sabe que a mensagem foi completamente redigida. Depois desta fase de
transferncia do e-mail, finalizada a conexo.
Dentro da fase de transferncia, existem dados de cabealho que podem ser informados na mensagem. A figura 30a mostra o formato geral do
e-mail. Primeiramente existe o cabealho, no qual so inseridas as informaes, tais como To:, From: e Subject: (figura 30b). No corpo da mensagem,
apenas caracteres ASCII, finalizando com um caractere . (ponto) em uma
nica linha (conforme dito anteriormente).
Porm, estamos acostumados a enviar imagens, vdeos, sons e qualquer formato multimdia por e-mail, no somente mensagens de texto. Para
que isso seja possvel, cabealhos extras so adicionados nas mensagens. So
extenses para multimdia (MIME Multimedia Mail Extension, definidas nas
RFCs 2045 e 2056).
UNISINOS
37
CAMADA
DE
APLICAO
Com a utilizao destas extenses, quando se deseja enviar uma imagem, por exemplo, a mensagem fica conforme mostra a figura 31. Podemos,
inclusive, enviar mais de um objeto, utilizando o tipo Multipart, ilustrado na
figura 32.
Entre os tipos possveis, temos Text, Image, Video, Audio e Application, que so outros dados que necessitam de outra aplicao para serem
lidos, como por exemplo, documentos do Microsoft Word.
1.6.2 POP e IMAP
O protocolo SMTP envia mensagens de um servidor de correio para
outro. Entretanto, para que o usurio leia as suas mensagens, necessria a
utilizao de um protocolo de acesso ao correio. Os protocolos mais conhecidos para recuperao de mensagens dos servidores de correio so o POP (Post
Oce Protocol) e o IMAP (Internet Mail Access Protocol). O POP utiliza a porta
100 e definido na RFC 1939, enquanto o IMAP utiliza a porta 143 e definido
na RFC 1730.
O protocolo POP caracteriza-se por retirar as mensagens do servidor,
armazenando-as na mquina que acessou o correio. Possui uma fase de autorizao, com comandos para informar nome de usurio e senha. Logo aps,
comea a fase de transao, na qual possvel listar as mensagens, recuperlas do servidor, apag-las e terminar a conexo. Estes passos podem ser acompanhados na figura 33.
UNISINOS
38
MATEUS RAEDER
UNISINOS
Captulo 3
Camada de transporte
1. Camada de transporte
Quando o usurio utiliza uma aplicao de rede, dados so transportados de um host para outro. Para que haja esta comunicao, a camada de
Transporte responsvel pela transmisso lgica dos dados. A transmisso
fsica realizada pela camada de Enlace da pilha de protocolos da Internet.
Entretanto, a camada de Transporte parte da hiptese de que o Enlace no
capaz de controlar o transporte. Logo, os protocolos de Transporte tratam
deste envio de maneira lgica, e no de maneira fsica. A transmisso fsica
dos dados no ser foco do nosso estudo.
A camada abaixo do Transporte (a camada de Rede) no faz distino
sobre qual aplicao (processo) do usurio deve receber as informaes. Esta
camada sabe apenas para qual host a mensagem deve ser endereada. Como
os sistemas operacionais executam vrias tarefas ao mesmo tempo (multitarefas), existem vrios aplicativos enviando e recebendo mensagens. Assim,
para que um determinado aplicativo converse com outro aplicativo no outro
host, os protocolos de Transporte acrescentam o mecanismo de portas. Cada
porta significa um local diferente no host, ou seja, cada porta identifica um
processo, um aplicativo sendo executado.
Ento, os aplicativos que fazem uso da rede comunicam-se atravs de
portas. Isto implica no fato de que o processo transmissor deve conhecer no
somente o endereo IP do host com o qual est se comunicando, mas tambm
deve conhecer a porta que est sendo utilizada pelo processo na outra mquina. Cada porta definida como um nmero inteiro e positivo.
O que acontece pode ser exemplificado com a Figura 34. Nela, percebemos que a mensagem que sobe na pilha de protocolos chega at o Transporte e, de acordo com a porta informada, esta mensagem entregue a um determinado processo. o que chamamos de Multiplexao e Demultiplexao.
Multiplexar o fato de o host origem acrescentar informaes na mensagem
que identificam corretamente em que porta encontra-se o processo que vai receber a mensagem. Demultiplexar o fato de o host destino direcionar (entregar) cada mensagem para o processo adequado, de acordo com a informao
de porta que a mensagem carrega.
So dois os tipos de transmisso na camada de Transporte: orientada
e no orientada a conexo. Ao utilizar um servio orientado conexo, tem-se
a garantia da entrega de todos os dados, sem erros e exatamente na mesma
ordem que foram enviados pelo remetente. J quando se utiliza um servio de
transporte no orientado a conexo, no h esta garantia.
40
MATEUS RAEDER
1.1 UDP
O protocolo UDP (User Datagram Protocol) um protocolo de transporte no orientado conexo. Conforme dito anteriormente, este protocolo
caracteriza-se por no ser confivel, no mantendo uma conexo entre o remetente e o destinatrio. Trata-se de um protocolo que oferece apenas a principal funo da camada de Transporte: entrega dos dados de um processo do
host origem (executando em determinada porta) para outro processo do host
destino (tambm rodando em determinada porta). Com isto, o UDP permite
a distino entre os vrios processos dos hosts (ou seja, faz multiplexao e
demultiplexao).
Se uma aplicao utiliza o protocolo UDP, ela deve estar preparada
para eventuais perdas de mensagens, mensagens duplicadas, mensagens com
atraso, erros no envio etc., pois nada disso ser tratado pela camada de Transporte utilizando UDP.
As mensagens enviadas entre duas aplicaes que utilizam o protocolo UDP so os chamados Datagramas. Quando a aplicao da camada de Aplicao envia uma mensagem pela rede, esta mensagem passa para a camada
de Transporte, e o protocolo UDP acrescenta a ela algumas informaes que se
encontram no cabealho UDP (figura 35).
UNISINOS
41
CAMADA
DE TRANSPORTE
O datagrama UDP possui duas partes: cabealho e dados. No cabealho UDP existem os seguintes campos: porta origem, porta destino,
tamanho e checksum.
As portas origem e destino so nmeros de 16 bits utilizados para
entregar os datagramas para os respectivos programas, ou seja, multiplexar e demultiplexar.
O campo tamanho representa o tamanho total do datagrama, o que
inclui o cabealho e a rea de dados.
O prximo campo o checksum. uma soma de verificao que serve para verificar se o datagrama est correto. Mas, como dissemos antes,
o protocolo UDP no recupera erros, sendo a funo do clculo do checksum somente verificar se algum erro ocorreu. Caso algum problema tenha
acontecido com a mensagem, o UDP nada faz, simplesmente descarta o
datagrama, sem a responsabilidade de avisar ao remetente que sua mensagem no ser entregue. Entretanto, nem todas as mensagens enviadas
atravs do UDP precisam realizar este clculo do checksum. Logo, o checksum do UDP opcional, e isto indicado com o preenchimento do campo
com zeros. Isto , se o remetente preencher todos os bits do checksum com
valor 0, indicar para o destinatrio que ele no deve realizar a soma de
verificao. Esta soma de verificao realizada da mesma maneira do que
no protocolo TCP, e vamos detalh-la mais abaixo.
Finalmente, a ltima parte do datagrama UDP so os dados. Esta
rea possui as informaes do host origem que devem ser entregues ao host
destino.
O clculo da soma de verificao (checksum) opcional no UDP,
mas obrigatrio no TCP (protocolo de Transporte que estudaremos mais
adiante). Para calcular o checksum, UDP e TCP utilizam mais informaes
do que as que existem em seus cabealhos. criado um pseudocabealho
(pseudoheader) para realizar o clculo. O pseudoheader (figura 36) criado
utilizando informaes da camada abaixo do Transporte (Rede).
UNISINOS
42
MATEUS RAEDER
O nico campo do pseudoheader que extrado do cabealho dos protocolos de transporte o tamanho. Os demais campos so: IP origem (que
identifica o endereo IP do host que est enviou a mensagem), IP destino (que
identifica o endereo IP do host que deve receber a mensagem), um campo
preenchido com zeros, somente para completar o tamanho do pseudoheader e
protocolo, que identifica qual protocolo sendo utilizado.
O checksum calculado utilizando todos os objetos: o pseudoheader, o
cabealho do protocolo e os dados. Entretanto, importante percebermos que
o pseudoheader no percorre a rede! Ele criado na origem, o checksum calculado e a mensagem enviada sem o pseudoheader. Quando a mensagem chegar ao destino, este criar um pseudoheader e realizar o clculo do cheksum.
O processo de clculo d-se como segue: o remetente soma todos os
valores dos campos, agrupados de 16 em 16 bits (pois o tamanho do checksum).
Realiza-se o complemento de 1 no resultado encontrado, ou seja, inverte-se os
bits. Este valor colocado no campo checksum do cabealho da mensagem. No
destino, o mesmo clculo realizado (tambm com o pseudoheader). Se o resultado da soma encontrado no destino for zero, significa que no houve erros na
mensagem e ela est intacta. Caso contrrio, algum erro ocorreu e a mensagem
ser tratada de acordo com o protocolo que est sendo utilizado (no UDP ser
descartada, enquanto no TCP ser tratada, por exemplo).
O protocolo UDP extremamente simples, uma vez que simplesmente entrega os dados para o destinatrio, sem nenhum controle de mensagens a
serem retransmitidas caso tenham ocorrido erros, sem lidar com a ordem que
as mensagens chegam. um protocolo de fcil implementao, utilizado por
aplicaes que no necessitam de segurana nos dados enviados.
Aplicaes que frequentemente enviam seus dados atravs do protocolo UDP so comumente aplicaes de tempo real, como Voz sobre IP (VoIP),
aplicaes de videoconferncia, transmisses ao vivo etc. Para estas aplicaes, mais vantajoso perder alguns pedaos mnimos que no afetam drasticamente o funcionamento da aplicao do que gastar muito tempo corrigindo
eventuais erros, o que atrasaria bastante a transmisso.
1.2 TCP
Ao contrrio do UDP, o protocolo TCP (Transmission Control Protocol)
orientado a conexo, e implementa as funcionalidades que no so implementadas no UDP. O TCP oferece:
controle erros
retransmisso de mensagens erradas
controle de fluxo
controle de congestionamento
sequenciamento das mensagens
Para isto, diversas informaes devem ser introduzidas nas mensagens, acarretando um maior volume de dados trafegando na rede (pois h
muito overhead) e tornando o protocolo TCP mais complexo do que o protocolo
UDP. As mensagens enviadas utilizando TCP so chamadas de pacotes.
O TCP possui quatro caractersticas que se destacam:
Orientao de streams: os dados enviados so um fluxo de bits, e o
destinatrio recebe este fluxo exatamente na mesma ordem que foram enviados;
Circuito virtual: para que a comunicao acontea, ela deve ser previamente autorizada por ambos os hosts. Quando uma conexo est aberta,
ento, os protocolos os hosts distintos continuam se comunicando para
controlar e corrigir erros;
UNISINOS
43
CAMADA
DE TRANSPORTE
Transmisso buerizada: os processos no host origem de uma mensagem podem enviar a quantidade de dados que desejarem, repassando
estes dados para o protocolo. O protocolo, ento, pode dividir o fluxo de
dados em quantas partes desejar para realizar a transmisso;
Conexo full-duplex: quando uma conexo aberta entre dois hosts A
e B (previamente autorizada por ambos) a transmisso de dados pode
ocorrer tanto de A para B quanto de B para A.
Neste protocolo, existe a garantia de que os fluxos enviados chegaro
sem perdas, sem erros e sem duplicao ao seu destino. Para isto, o TCP utiliza
uma tcnica chamada Positive Acknowledgement with Retransmission (Confirmao Positiva com Retransmisso). Esta tcnica determina que um destinatrio envie uma mensagem de confirmao para informar ao remetente que a
mensagem chegou corretamente ao seu destino. Esta mensagem de confirmao ser chamada de ACK.
A cada envio de uma mensagem, o host remetente armazena um registro, que serve para aguardar a confirmao de cada pacote enviado. A Figura 37 apresenta um envio de dois pacotes com o protocolo TCP.
44
MATEUS RAEDER
45
CAMADA
DE TRANSPORTE
46
MATEUS RAEDER
Figura 41: Exemplo de uma falha no envio com Go-Back-N e janela de tamanho 4
Os quatro primeiros pacotes dentro da janela so enviados. Entretanto, o pacote 3 no chega ao destino, e este host enviar um ACK 2
confirmando apenas o recebimento dos pacotes 1 e 2. Perceba que o pacote 4 chega corretamente ao destino, mas descartado, pois o pacote que
deveria chegar era o pacote 3, para garantir a ordem de entrega. Quando
o ACK 2 chega ao host origem, a janela desliza at o primeiro pacote no
confirmado (no caso, o pacote 3). A janela, neste caso, desliza em duas
posies, travando no pacote 3, para aguardar a confirmao. Agora, os
pacotes 5 e 6 esto dentro da janela e podem ser enviados. Porm, quando
chegam ao destino, estes dois pacotes sero descartados pelo mesmo motivo que o pacote 4 foi descartado anteriormente. No host origem, o timer
do pacote 3 expira, indicando que este pacote deve ser reenviado. Assim, o
host origem reenvia todos os pacotes da janela, pois sabe que estes pacotes
no foram entregues ao destino. Os pacotes, finalmente, chegam ao host
destino, que envia um ACK 6, fazendo com que a janela deslize e permita o
UNISINOS
47
CAMADA
DE TRANSPORTE
envio dos pacotes 7, 8, 9 e 10. O host destino envia o ACK 10, confirmando
o recebimento de todos os pacotes.
Com um mecanismo de janela ajustado de maneira adequada, a rede
no fica to ociosa, possuindo mais pacotes trafegando entre os hosts. Este
mecanismo continua garantindo a transferncia confivel dos dados, com
uma eficincia maior do que a simples confirmao positiva. O mecanismo
Go-Back-N padro do protocolo TCP.
Conforme o tempo passa, mudanas ocorrem na rede e na capacidade
de recebimento do destino. O TCP permite que o tamanho da janela de envio
seja alterado com o passar do tempo. A cada ACK recebido, o host destino
envia junto a informao de quantos pacotes o receptor est apto a receber.
Desta maneira, o remetente atualiza a sua janela de acordo com a capacidade
informada pelo receptor.
Esta possibilidade de janelas variveis melhora o controle de fluxo
para a comunicao. Controle este essencial para hosts com capacidades e
velocidades de processamento diferentes, utilizando a rede de maneira mais
adequada.
1.2.2 Pacote TCP
A unidade de transferncia entre dois hosts que utilizam o protocolo
de Aplicao so encapsuladas em um pacote, que acrescenta diversas informaes de controle para a confiabilidade do TCP. O pacote TCP pode ser visualizado na Figura 42, e composto de duas partes: cabealho e dados.
Alguns campos representam as mesmas informaes presentes do
cabealho UDP: as portas origem e destino e o checksum. Cabe lembrar que
o clculo do checksum obrigatrio no TCP, para garantir que as informaes
que chegam so as mesmas que foram enviadas. Os demais campos do cabealho so explicados a seguir.
O nmero de sequncia representa a identificao da ordem do pacote em relao aos demais, garantindo que os pacotes sero entregues para o
processo no host destino ordenadamente.
O nmero ACK indica qual pacote est sendo confirmado. Por exemplo, quando o destino confirma o recebimento do pacote 7, o valor deste campo ser o nmero de sequncia do pacote 7.
48
MATEUS RAEDER
49
CAMADA
DE TRANSPORTE
UNISINOS
50
MATEUS RAEDER
51
CAMADA
DE TRANSPORTE
O handshaking tem duas funes principais na conexo TCP. Primeiramente, garante que os dois lados esto prontos para receber e enviar mensagens. Tambm permite que um host conhea o nmero de sequncia inicial
do outro. Este ltimo aspecto muito importante, pois quando a mquina
A envia uma mensagem para a mquina B, fundamental que a mquina B
saiba qual o nmero de sequncia desta mensagem, para garantir a ordenao e controlar eventuais erros e duplicaes de mensagens, assim como as
retransmisses necessrias.
O primeiro host envia seu nmero de sequncia na primeira via do
handshaking, juntamente com o bit SYN. O outro host, ao receber este pacote,
guarda o nmero de sequncia do fluxo que vem daquele host e responde com
o seu nmero de sequncia juntamente com os bits SYN e ACK setados. O host
que realizou a abertura ativa, ento, guarda o nmero de sequncia do fluxo
vindo do outro host e confirma o recebimento.
Outra informao importante trocada na abertura da conexo o tamanho da janela. Da mesma forma que os nmeros de sequncia iniciais, o
tamanho da janela informado no handshaking inicial.
1.2.4 Encerramento da conexo
As conexes no TCP so full-duplex. Desta maneira, cada host deve encerrar o seu lado da conexo, no sendo necessrio o encerramento dos dois
lados simultaneamente (figura 45).
Quando a aplicao que utiliza o protocolo TCP no possui mais nenhum dado para enviar para a aplicao do outro host, ela inicia o processo
de encerramento do seu lado da conexo. Analise a figura 45. Para que o host
A finalize seu lado da conexo, ele envia um pacote com o bit FIN setado. O
host B recebe este pacote e confirma o recebimento com um ACK. Entretanto,
isto significa que o host A no deseja mais enviar dados para o host B, mas o
contrrio no verdade. O host B, ento, pode continuar enviando dados para
o host A, que somente envia pacotes de confirmao. Quando o host B deseja
finalizar o seu lado da conexo, ele envia uma mensagem de finalizao (com
o bit FIN setado) e o host A confirma com o ACK final. Neste momento, a conexo est completamente encerrada.
UNISINOS
52
MATEUS RAEDER
UNISINOS
53
CAMADA
DE TRANSPORTE
UNISINOS
54
MATEUS RAEDER
UNISINOS
Captulo 4
P2P
1. P2P
Comumente as aplicaes da Web (como correio eletrnico, servidor
de nomes, transferncia de arquivos, dentre outras, utilizam o paradigma
cliente/servidor. Existem servidores centralizados que executam determinados pedidos (servios) dos diversos clientes distribudos. Este paradigma traz
a ideia de que a maioria (clientes) usa o que a minoria (servidores) tem.
Entretanto, o constante crescimento do nmero de usurios que fazem o papel de cliente causa uma elevada utilizao dos servidores, que necessitam cada vez mais de poder de processamento e largura de banda para
executarem suas funes de maneira eficiente.
Diferentemente desta arquitetura, surge a arquitetura P2P (Peer-ToPeer). Nestas aplicaes, todos os usurios (hosts que participam da rede) realizam tanto a funo de cliente quanto a funo de servidor, ou seja, mquinas
que solicitam e fornecem servios umas s outras. Este tipo de arquitetura
caracteriza-se por no haver um servidor centralizado, eliminando problemas
causados pelas falhas de servidores. No possuem uma organizao hierrquica, e um usurio pode participar da rede desde que fornea acesso aos
recursos que ele possui.
Assim sendo, sistemas P2P no possuem uma coordenao centralizada, tendo todos os recursos acessveis por qualquer componente da rede.
O principal objetivo deste tipo de arquitetura claramente visvel: compartilhamento de recursos (informaes, processamento, arquivos etc.).
Existem quatro tipos principais de aplicaes P2P, classificadas em:
Mensagem instantnea: permite aos usurios o envio de mensagens em tempo real para os demais participantes. Exemplos deste
tipo de aplicao so o MSN e o ICQ;
Compartilhamento de arquivos: permite aos usurios a transferncia de arquivos de uma mquina para a outra diretamente. Exemplos deste tipo de aplicao so o Emule e o LimeWire;
Computao distribuda: permite aos usurios utilizarem recursos computacionais ociosos. Exemplos deste tipo de aplicao so
SETI@Home e DNS;
Trabalhos colaborativos: permite aos usurios melhorar a produtividade de grupos que compartilham dos mesmos interesses, suportando alguns aspectos como: calendrio, espao de trabalho, listas
de discusso, gerncia de documentos, videoconferncia etc. Exemplos deste tipo de aplicao so LotusNotes e Groove.
56
MATEUS RAEDER
A popularidade dos sistemas P2P cresceu rapidamente, principalmente a partir do ano 2000, chegando a ultrapassar os servios de e-mail e FTP,
igualando-se muito a utilizao da prpria Web. Alguns pontos ilustram o
porqu deste crescimento, tais como o custo de compartilhamento minimizado, maior autonomia e colaborao entre os hosts participantes. Alm disso,
elimina o ponto nico de falha presente em arquiteturas cliente/servidor.
1.1 Elementos fundamentais
Os sistemas P2P possuem os chamados peers. Cada peer o nodo, um
host no sistema P2P. Cada peer possui uma identificao nica, e pode pertencer a um ou mais grupos, chamados PeerGroups. Estes peers podem se comunicar tanto com peers do seu grupo quanto com peers de outros grupos
diferentes. Os peers podem ser classificados como:
Peer simples: um nodo comum, que fornece e solicita recursos
para a rede;
Peer Rendezvous: um peer que auxilia na localizao dos peers e
dos recursos disponveis na rede;
Peer Router: um peer que auxilia os peers a comunicarem-se atravs
de um rewall, por exemplo.
Os PeerGroups agrupam peers que possuem os mesmos interesses, podendo fornecer determinados servios somente aos seus integrantes, no possibilitando acesso direto a peers que no participam do grupo.
Os servios oferecidos pelos peers so basicamente quaisquer servios
que eles possam realizar, como transferncia de arquivos, execuo de algoritmos etc.
1.2 Arquiteturas
Com a evoluo dos sistemas P2P, alguns diferentes tipos de arquitetura foram sendo criados, com o objetivo de aumentar a confiabilidade e facilitar
a descoberta de recursos, uma vez que o nmero de usurios cresceu muito, o
que passou a dificultar alguns aspectos da comunicao direta entre os hosts.
Duas principais arquiteturas so vistas em sistemas P2P: descentralizada e semicentralizada (ou parcialmente centralizada). Na arquitetura descentralizada no existe a figura de um n central, sendo todos os ns da rede
do mesmo nvel. a arquitetura bsica de sistemas P2P, na qual os ns compartilham seus recursos, e eles mesmos gerenciam os recursos e o trfego da
rede (figura 47).
UNISINOS
57
P2P
Assim, as funes dos peers simples (inferiores) so as mesmas da arquitetura descentralizada, diferenciando apenas no fato de que os servios
so geralmente feitos para os SuperPeers, ou seja, os peers inferiores enviam
os pedidos aos SuperPeers, que, por sua vez, recebem estes pedidos e encaminham-nos para os peers inferiores que possuem os recursos. Os SuperPeers,
ento, mantm um controle dos peers e dos recursos presentes na rede.
1.3 Pesquisa e acesso
Os sistemas P2P permitem que os peers busquem por recursos e/ou
servios compartilhados, assim como a maneira de acess-los. Podemos
classificar os sistemas P2P quanto ao tipo de busca que realiza. Os principais so: centralizada, inundao (ooding) e hash distribuda.
Nos sistemas que utilizam busca centralizada, existe a presena
de um ponto central de buscas. Quando um n entra nesta rede, ele deve
conectar-se ao centralizador e inform-lo dos recursos disponveis. Os ns,
ento, pesquisam no centralizador em qual(ais) peer(s) a informao desejada
pode ser encontrada. O centralizador ir informar o peer que possui determinado recurso, e a comunicao entre eles ocorre diretamente (figura 49).
Como qualquer sistema centralizado, este tipo de busca passvel de falhas
e possui um desempenho baixo, pois diversas consultas sero realizadas ao
mesmo servidor, que se torna um gargalo no sistema como um todo. Apesar
disto, trata-se de um sistema de busca de fcil implementao.
UNISINOS
58
MATEUS RAEDER
UNISINOS
Captulo 5
Multimdia
1. Multimdia
Aplicaes que so capazes de transmitir contedos multimdia so
cada vez mais utilizadas na Internet. Estas aplicaes executam em um determinado host e transferem udio e vdeo, e s tornaram-se possveis por causa
do crescimento da utilizao das redes de computadores.
Alguns exemplos destas aplicaes so: teleconferncias, sites de transmisso de vdeos (como o YouTube, por exemplo), rdios e televiso online,
aprendizado a distncia, telefonia IP etc. Este tipo de aplicao sensvel ao
atraso, mas pode tolerar algumas perdas sem que estas afetem a execuo
como um todo. As aplicaes multimdia so comumente dividas em trs
grandes grupos principais: fluxo contnuo armazenado, fluxo contnuo ao
vivo e tempo real.
Na primeira classe de aplicaes fluxo contnuo armazenado , a
mdia j se encontra previamente armazenada em um servidor. A qualquer
momento, um cliente solicita os arquivos multimdia (udio e vdeo) que deseja receber.
Neste caso, a mdia j foi pr-gravada e est armazenada no servidor.
Isso permite que o usurio possa pausar, voltar e avanar a mdia no momento que bem entender. Outro ponto importante o fluxo contnuo, no qual o
cliente pode comear a reproduzir a mdia antes mesmo que ela chegue por
completo. O cliente j comea a reproduzir o vdeo enviado antes mesmo que
ele tenha sido completamente transmitido.
A reproduo nestes casos deve ser contnua, ou seja, quando a reproduo comea, esta deve prosseguir normalmente sem qualquer interrupo.
Isto , todos os dados devem ser recebidos em um tempo adequado para que
possam ser reproduzidos corretamente pelo cliente.
As aplicaes de fluxo contnuo ao vivo assemelham-se s transmisses de televiso e rdio. Neste tipo de aplicao, no existe uma mdia previamente gravada (como ocorre na outra classe vista anteriormente). Uma vez
que no h fluxo armazenado, no possvel adiantar a reproduo para uma
parte mais a frente da mdia. Contudo, este tipo de mdia armazenado localmente, e algumas aplicaes podem prover recursos para pausar e retroceder
a reproduo. Os atrasos nesta classe de aplicaes causam mais problemas
para os usurios do que em aplicaes de mdia armazenada.
A ltima classe trata-se das aplicaes de udio e vdeos interativos
de tempo real. Nesta classe, a comunicao entre os usurios realizada em
tempo real, como uma conversa atravs de telefonia pela Internet ou uma
60
MATEUS RAEDER
videoconferncia. Os usurios podem se movimentar e falar a qualquer instante, o que faz com que os atrasos neste tipo de aplicao devam ser muito
pequenos, pois acarretam em dificuldades na comunicao.
As aplicaes multimdia so tolerantes a falhas, mas so extremamente sensveis ao atraso em alguns casos. Dentre os principais tipos de atraso, esto o Jitter e o Skew.
O primeiro deles (jitter) a variao do atraso dos pacotes que esto
no mesmo fluxo. Os pacotes no levam o mesmo tempo para serem transmitidos pela rede, principalmente por ocasionais congestionamentos ou at
mesmo pulsos eletromagnticos que possam causar algum dano aos pacotes,
gerando perda. O jitter , ento, o desvio padro do tempo de envio de dois
pacotes, a variao do atraso. Por exemplo, 5 pacotes consecutivos so enviados do host origem com 5 milissegundos de diferena. No receptor, entretanto, a diferena de chegada entre um pacote e outro pode ser maior ou menor
do que este valor.
Para amenizar este atraso, as aplicaes retardam a reproduo das
pores de mdia. Desta maneira, uma parte da mdia armazenada no cliente, compensando a variao do atraso (jitter) que a rede provoca.
Outro atraso refere-se ao atraso em mdias que envolvem udio e vdeo que devem ser sincronizados, chamado de skew. Ningum gostaria de ver
um vdeo de um jogo de futebol, por exemplo, e ouvir o som 5 ou 6 segundos
aps a imagem ter passado. Deve-se determinar qual o atraso aceitvel para a
chegada de cada um dos pacotes de vdeo e de udio.
Na Internet atual, no h uma distino entre pacotes contendo udio
e vdeo em tempo real. Os pacotes que contm este tipo de mdia so tratados
exatamente como os demais. Alguns esforos vm sendo realizados para que
possam ser providos servios diferenciados que garantam a qualidade de servio (QoS) para este tipo de dado.
Por enquanto, a implementao de um buer do lado do cliente (para
armazenar parte dos dados e retardar a reproduo), a utilizao do protocolo
de transporte UDP e o envio de informaes redundantes so alguns exemplos
do que pode ser feito para minimizar os efeitos de erros e atrasos, melhorando
o servio para esta classe de aplicaes.
A popularidade das aplicaes de udio e vdeo de fluxo contnuo na
Internet aumentou consideravelmente. Dois aspectos que esto amplamente relacionados com este crescimento so o custo de armazenamento minimizado,
pois h muito mais multimdia armazenada na Internet, e a melhoria na prpria Internet (as velocidades de acesso residencial, por exemplo, tornaram-se
cada vez maiores).
Geralmente, a multimdia solicitada atravs de um cliente Web (browser). A reproduo, no entanto, no est integrada com os browsers, e necessria
uma aplicao auxiliar que ir reproduzir a mdia no cliente. Estas aplicaes
so chamadas de transdutores, sendo alguns dos mais comuns o Real Player e o
Windows Media Player. Estes aplicativos realizam funes alm de reproduzir,
tais como descomprimir o contedo, remover o jitter e oferecer uma interface
grfica para que o usurio possa acessar as opes de controle sobre a mdia.
Dentro da janela do browser, a interface do transdutor pode ser inserida com a
utilizao de certos programas especiais, chamados de plug-ins.
Quando um cliente solicita os arquivos de udio e vdeo, estes arquivos
podem ser acessados atravs de servidores Web tradicionais ou servidores especiais para fluxo contnuo.
Quando uma mdia est armazenada em um servidor Web tradicional,
trata-se de um objeto comum, assim como um JPEG. Suponhamos que o cliente
solicite um arquivo de vdeo. Uma conexo TCP criada entre o cliente e o
servidor, e uma requisio HTTP realizada para aquele objeto. No cabealho
do arquivo (enviado pelo servidor como resposta), existe a informao de como
UNISINOS
61
MULTIMDIA
O servidor pode, ainda, informar um metarquivo, que contm as informaes sobre o arquivo a ser entregue (figura 51). O usurio, ao clicar no
link correspondente ao arquivo, recebe o metarquivo, que repassado para
o transdutor correspondente (de acordo com o tipo de mdia). O transdutor,
ento, vai estabelecer uma conexo TCP com o servidor Web requisitando o
arquivo desejado. O arquivo, ento, enviado dentro de uma resposta HTTP.
Quando h um servidor de fluxo contnuo (no um servidor Web), outros protocolos que no TCP podem ser utilizados entre o servidor e o reprodutor. O cliente requisita o arquivo de descrio atravs do browser (utilizando
HTTP) para um servidor Web. Este arquivo repassado para o transdutor correspondente, que se comunica diretamente com o servidor de fluxo contnuo
(figura 52).
UNISINOS
62
MATEUS RAEDER
Nas prximas sees, vamos estudar alguns protocolos importantes para o controle da mdia a ser enviada e reproduzida. So eles: RTSP,
RTP e RTCP.
1.1 RTSP
O protocolo RTSP (Real Time Streaming Protocol) data de 1996, e
trata-se de uma especificao do IETF (Internet Engineering Task Force) para
o controle de transmisso de multimdia na Internet. um protocolo da
camada de Aplicao que funciona fora de banda (assim como o FTP): as
mensagens do protocolo so enviadas em uma banda e a mdia em si
enviada em outra.
Neste protocolo, o cliente pode controlar a reproduo da mdia
conforme a sua vontade. A transmisso, ento, controlada pelo transdutor.
O RTSP pode rodar tanto sobre o protocolo UDP quanto sobre o protocolo TCP,
na porta 544.
O RTSP funciona da seguinte maneira: o metarquivo enviado para o
cliente Web, que dispara a execuo do transdutor. Este, por sua vez, estabelece uma conexo de controle RTSP e uma conexo de dados com o servidor de
mdia (figura 53).
Acompanhando a figura 53 percebemos que o transdutor envia o
comando RTSP SETUP, e receber como resposta um RTSP SETUP do servidor. Em seguida, um comando RTSP PLAY enviado para o servidor, que
responde com o mesmo comando. O servidor comea a descarregar a mdia, e as operaes continuam sendo trocadas no decorrer da execuo, de
acordo com o que o usurio deseja. A sesso encerrada com a utilizao
da operao TEARDOWN. A tabela 2 apresenta as operaes suportadas pelo
protocolo RTSP.
OPTIONS
SETUP
PLAY
PAUSE
63
MULTIMDIA
1.2 RTP
O protocolo RTP (Real-time Transport Protocol) utilizado para fluxos
de mdia de aplicaes em tempo real, como Voz sobre IP, por exemplo.
especificado na RFC 1889, e as verses mais recentes so definidas nas RFCs
3550 e RFC 3551. o principal protocolo para o transporte de mdia em tempo
real. Alguns autores dizem que o RTP um protocolo da camada de Aplicao, enquanto outros defendem que um protocolo da camada de Transporte.
Comumente, este protocolo colocado na pilha de protocolos separadamente,
conforme mostra a figura 54.
As principais caractersticas do RTP so: aplicar nmeros de sequncia aos pacotes para reconstituir as informaes enviadas, identificar o tipo da
carga que est sendo enviada e adicionar marcas de tempo.
UNISINOS
64
MATEUS RAEDER
O RTP especifica uma estrutura (cabealho) para os pacotes que transportam udio e vdeo. Os principais campos do cabealho RTP podem ser
visualizados na Figura 55.
O campo tipo de carga til possui 7 bits, e indica a codificao utilizada. atravs deste campo que eventuais mudanas na codificao so
informadas ao receptor. O nmero de sequncia utilizado para detectar
perdas e restaurar a sequncia dos pacotes. Para verificar se o pacote foi
afetado pelo jitter (podendo remov-lo para sincronizar a reproduo), o
instante de tempo do primeiro byte marcado no campo marca de tempo.
A fonte de um fluxo RTP identificada no campo identicador de sincronizao da fonte (SSRC).
Utilizando o protocolo RTP, o remetente envia as pores dos dados de udio com o cabealho RTP acrescentado. Os pacotes RTP so encapsulados em datagramas UDP, e no lado receptor, a aplicao extrai a
poro de udio, utilizando campos do cabealho para decodificar e reproduzir a poro de udio de maneira correta.
Para reduzir os gastos de envio, uma das funes do protocolo
comprimir o cabealho, enfatizando os dados da mensagem. Aplicaes
que exemplificam a utilizao do RTP so: MSN, Skype, videoconferncia e
Windows Media Player.
1.3 RTCP
Em conjunto com o RTP, o protocolo RTCP (Real-time Transport Control Protocol) prov funes de controle e de identificao dos participantes
da comunicao. Esta funo realizada atravs de feedbacks de qualidade
do servio que est sendo prestado, objetivando a transmisso para diversos usurios.
Os participantes de uma sesso RTP enviam, periodicamente, pacotes de controle RTCP para todos os participantes. Estes pacotes contm
relatrios com estatsticas teis para as aplicaes, tais como o nmero de
pacotes enviados, nmero de pacotes perdidos, variao do atraso entre as
chegadas dos pacotes etc. Desta forma, o remetente pode modificar suas
taxas de transmisso baseado nestas informaes de controle.
Ao entrar em uma sesso RTP, os participantes devem enviar um
pacote RTCP, que ser til para que todos saibam a quantidade de participantes presentes, quantidade esta que ser impactante no tempo de envio
dos seus pacotes de controle. Isto feito para no sobrecarregar a rede,
mantendo a escalabilidade da sesso.
Os pacotes RTCP possuem um cabealho e devem ser compostos
por, no mnimo, dois pacotes. O primeiro deles sempre ser ou um SR
(Sender Report) ou um RR (Receiver Report). O RTCP possui 5 tipos de pacote, a saber: SR (Sender Report), RR (Receiver Report), SDES (Source Description
Items), BYE e APP.
Este protocolo usado por aplicaes de tempo real que desejam
manter certo controle sobre a qualidade do servio que est sendo executado, como as de videoconferncia, por exemplo, que necessitam sincronia
entre o udio e o vdeo.
UNISINOS
65
MULTIMDIA
UNISINOS
66
MATEUS RAEDER
REFERNCIAS BIBLIOGRFICAS
COMER, D. E. Redes de Computadores e Internet. Porto Alegre: Bookman, 2001, 522p.
. Computer networks and internets. 5. ed. Upper Saddle River: Prentice
Hall, 2009. 600 p.
. Interligao em Redes com TCP/IP, Vol I, 3a Edio, Editora Campus, 2006.
FALBRIARD, C. Protocolos e aplicaes para redes de computadores. So Paulo:
rica, 2002. 228 p.
FOROUZAN, B. A. Comunicao de dados e redes de computadores. 3. ed. Porto
Alegre: Bookman, 2006. 840 p.
JACOBSON, V. Congestion avoidance and control. In: Prodeedings of SIGCOMM88
(Stanford, CA, Aug.1988), ACM.
KUROSE, J.; ROSS, K. Redes de Computadores e Internet: uma abordagem topdown. So Paulo: Pearson, 2005, 3ed, 633p.
TANENBAUM, A. C. Redes de Computadores. 4ed., Rio de Janeiro: Campus, 2003, 950p.
TITTEL, E. Teoria e problemas de rede de computadores. Porto Alegre: Bookman,
2003. 264 p.
TORRES, G. Redes de computadores: curso completo. Rio de Janeiro: Axcel Books,
2001. 664 p.
UNISINOS