Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Sumário 
 
Unidade I ................................................................................................................................ 4 
Introdução ......................................................................................................................... 4 
WANET ou MANET ........................................................................................................... 5 
Desafios e benefícios ...................................................................................................... 6 
Requisitos técnicos ......................................................................................................... 6 
Aplicações ......................................................................................................................... 6 
Roteamento em redes ad hoc ........................................................................................ 7 
Manutenção de rotas ..................................................................................................... 11 
Considerações finais ..................................................................................................... 12 
Referências...................................................................................................................... 14 
Unidade II ............................................................................................................................. 15 
Introdução ....................................................................................................................... 15 
Aplicações ....................................................................................................................... 16 
Estado de pesquisa em redes sobrepostas .............................................................. 17 
Resiliência e multicast .................................................................................................. 18 
Protocolos P2P ............................................................................................................... 19 
Redes sobrepostas e sistemas P2P ........................................................................... 21 
Considerações finais ..................................................................................................... 22 
Referências...................................................................................................................... 23 
Unidade III ............................................................................................................................ 25 
Redes virtuais privadas ................................................................................................ 25 
Protocolos de encapsulamento VPN .......................................................................... 28 
PPTP ................................................................................................................................. 28 
L2TP .................................................................................................................................. 29 
SSTP ................................................................................................................................. 30 
Escolhendo entre protocolos de encapsulamento .................................................. 31 
Firewalls ........................................................................................................................... 31 
Considerações finais ..................................................................................................... 35 
Referências...................................................................................................................... 37 
Unidade IV ........................................................................................................................... 38 
Introdução ....................................................................................................................... 38 
Segurança de redes 802.11 .......................................................................................... 38 
Segurança do WAP 2.0 .................................................................................................. 41 
Segurança do Bluetooth ............................................................................................... 42 
Protocolos de autenticação ......................................................................................... 43 
Autenticação baseada em uma chave secreta compartilhada .............................. 44 
Autenticação com a criptografia de chave pública ................................................. 49 
Considerações finais ..................................................................................................... 50 
Referências...................................................................................................................... 52 
Unidade V ............................................................................................................................ 53 
Qualidade de Serviço .................................................................................................... 53 
Requisitos ........................................................................................................................ 53 
Técnicas para buscar a qualidade de serviço .......................................................... 55 
Superdimensionamento ................................................................................................ 55 
Armazenamento em buffers ......................................................................................... 55 
Moldagem de tráfego ..................................................................................................... 56 
O algoritmo de balde furado ........................................................................................ 57 
Reserva de recursos ...................................................................................................... 59 
Controle de admissão ................................................................................................... 60 
Roteamento proporcional ............................................................................................. 62 
Programação de pacotes .............................................................................................. 63 
Considerações finais ..................................................................................................... 64 
Referências...................................................................................................................... 66 
 
 
Unidade I 
 
Introdução 
 
Ad hoc é uma expressão em Latin que significa, literalmente, “para isso”. No 
idioma inglês, geralmente significa uma solução designada para uma tarefa ou 
problema específico, não generalizável e que não tem intenção de ser 
adaptado para outros propósitos. 
No contexto de ad hoc networks, ou redes descentralizadas, a expressão se 
encaixa como um verbo, descrevendo um método temporário, provisório ou 
improvisado de resolver um determinado problema. Pode ser descrito como um 
protocolo de rede feito à mão. Em resumo, uma rede ad hoc se refere a uma 
tecnologia que permite comunicação em rede de forma ad hoc, ou, 
descentralizada. 
São dois os principais tipos de redes ad hoc: rede ad hoc sem fio/móvel, do 
inglês wireless ad hoc network (WANET) ou mobile ad hoc network (MANET); e 
rede ad hoc veicular, do inglês vehicular ad hoc network (VANET). A segunda 
aplica os mesmos princípios da primeira para o domínio de veículos. No 
contexto do capítulo, temos maior interesse nas aplicações gerais do protocolo, 
que tem sua base no estudo das redes móveis e sem fio, logo será o foco dele. 
O que torna as redes ad hoc diferentes das redes fisicamente conectadas é 
que todas as regras habituaisa respeito de topologias fixas, vizinhos fixos e 
conhecidos, relacionamento fixo entre endereço IP e localização e outras, são 
repentinamente abandonas. Os roteadores podem ir e vir, ou aparecer em 
novos lugares de um momento para outro. Em uma rede fisicamente 
conectada, se um roteador tiver um caminho válido para algum destino, esse 
caminho continuará a ser válido indefinidamente, desde que não ocorra uma 
falha em algum lugar no sistema. No caso de uma rede ad hoc, a topologia 
pode se alterar o tempo todo, e assim o interesse e até mesmo a validade dos 
caminhos podem se alterar de modo espontâneo, sem qualquer aviso prévio. É 
desnecessário dizer que essas circunstâncias tornam o roteamento em redes 
ad hoc bem diferente do roteamento nas redes equivalentes fixas. 
Foram propostos diversos algoritmos de roteamento para redes ad hoc. Um 
dos mais interessantes é o algoritmo de roteamento AODV, do inglês Ad hoc 
On-demand Distance Vector. Trata-se de um algoritmo semelhante ao de 
roteamento com um vetor de distância de Bellman-Ford, mas adaptado para 
funcionar em um ambiente móvel e que considera a largura de banda limitada e 
a baixa duração das baterias nesse ambiente. Outra característica incomum é 
que é um algoritmo por demanda, isto é, determina uma rota até algum destino 
apenas quando alguém deseja enviar um pacote para esse destino. 
Uma diferença crítica entre os algoritmos AODV e Bellman-Ford é o fato de que 
os nós não transmitem difusões periódicas contendo sua tabela de roteamento 
inteira. Essa diferença economizar largura de banda e também a carga das 
baterias. AODV também é capaz de realizar o roteamento por difusão e por 
multidifusão. O algoritmo será detalhado quando discutirmos o roteamento em 
redes ad hoc. 
WANET ou MANET 
 
Uma rede sem fio ou móvel ad hoc é um tipo descentralizado de rede. Esse 
tipo de rede é chamado de ad hoc porque não necessita de uma infraestrutura 
pré-existente, como, por exemplo, roteadores em redes cabeadas. A primeira 
vez que foi colocada em prática e demostrado que era viável foi em 1999, mas 
o início de sua pesquisa data do início da década de 1990. 
Nela, cada nó participa do processo de roteamento, ao encaminhar os dados 
para outros nós. A definição sobre qual dos nós deve encaminhar os dados é 
feito de forma dinâmica, baseando-se na conectividade de rede e no algoritmo 
de roteamento utilizado. No exemplo ilustrado pela Figura 1, o nó C não está 
dentro do alcance do transmissor sem fio do nó A e o nó A também não está 
dentro do alcance do transmissor sem fio do nó C. Se A e C desejarem trocar 
pacotes, terão que recrutar os serviços do nó B para encaminhar os seus 
pacotes, já que B está em sobreposição com o alcance de A e C. 
 
Figura 1 - Estrutura simples de rede ad hoc sem fio com três nós 
É provável que você já tenha visto, ou até mesmo utilizado, uma conexão ad 
hoc. No Windows, existe a opção de criar ou conectar-se a uma rede ad hoc, 
permitindo a comunicação direta com outros dispositivos sem a necessidade de 
um roteador. 
Em resumo, redes ad hoc sem fio são autoconfiguráveis e dinâmicas, onde os 
nós podem se mover livremente. Essa falta de complexidade, principalmente 
em termos de infraestrutura e configuração, permite que dispositivos criem ou 
se conectem a redes em qualquer momento ou lugar. 
 
Desafios e benefícios 
 
A mobilidade proveniente das redes ad hoc dá origem a muitas questões 
desafiadoras. Se um hospedeiro pode se mover, como será possível descobrir 
sua localização corrente na rede, de modo que seja possível lhe transmitir 
dados. Como é realizado o endereçamento, dado que um hospedeiro pode 
estar em uma entre muitas localizações possíveis. Se o hospedeiro de 
movimentar durante uma conexão, como os dados serão roteados de modo 
que a conexão continue sem interrupção. 
Em algumas situações, a possibilidade de todas as entidades da rede serem 
móveis podem adicionar uma complexidade excessiva, tornando a topologia 
muito dinâmica e volátil. Da mesma forma, por não ter entidades centrais, a 
operação funciona de forma totalmente distribuída. Isso faz com que as 
funções de rede tenham que ter um alto grau de adaptabilidade. 
Entre as vantagens, estruturas ad hoc proporcionam uma rede de alta 
performance, não demandam uma infraestrutura de alto custo monetário para 
operarem, permite uso de espectro de frequência não licenciado, proporcionam 
distribuição rápida de informações ao redor dos remetentes e, em caso de 
falhas, não há interferência no funcionamento da rede, visto que não há 
roteadores centrais. 
Requisitos técnicos 
 
Uma rede ad hoc é formada por múltiplos nós conectados. A conexão entre 
esses nós é influenciada pelos recursos de cada um dos nós, como potência 
do transmissor, potência de computação e memória, etc. Aspectos de 
comportamento, como confiabilidade, também influenciam. Esses recursos 
afetam diretamente a qualidade entre as conexões, como largura da conexão, 
perda de sinal, interferência e ruído. 
Visto que conexões podem ser feitas e desfeitas a qualquer momento, uma 
rede funcional deve ser capaz de lidar com essa restruturação dinâmica, 
preferencialmente de uma forma que seja conveniente, eficiente, confiável, 
robusta e escalável. A rede deve permitir que dois nós se comuniquem ao 
retransmitir informação por meio de outros nós. 
 
Aplicações 
 
Devido a essa natureza descentralizada e falta de complexidade, redes ad hoc, 
assumindo daqui para frente como sendo sempre sem fio, são aplicáveis à uma 
gama de diferentes situações onde nós centrais, como roteadores, não são 
confiáveis. Além disso, esse tipo de rede é mais escalável em comparação com 
redes sem fio gerenciadas por rotadores. 
Por exigirem pouquíssima configuração e serem rápidas de tornar disponível, 
redes ad hoc são ótimas soluções para situações de emergência ou crises, 
como desastres naturais. 
A aplicação mais comum de rede ad hoc é para dispositivos móveis. Por 
dispensar infraestrutura e ser autoconfigurável, permite que esses dispositivos 
se conectem com o mínimo de fricção. 
No caso de smartphones, é possível utilizar um tipo específico de rede ad hoc, 
denominado smartphone ad hoc networks (SPAN). O que a diferencia de uma 
rede ad hoc móvel comum é o uso de hardware pré-existente nesses 
dispositivos, como Wi-Fi e Bluetooth, para atuar como conexão, permitindo 
ligação de ponta a ponta com dispositivos semelhantes. Sua vantagem é 
dispensar o uso da rede celular das operadoras de telefonia, roteadores sem 
fio ou qualquer outra forma tradicional de infraestrutura de rede. 
Há também a aplicação veicular, caso da já citada VANET. Esse tipo é utilizado 
para a comunicação entre veículos e equipamentos de beira de estrada. A 
comunicação ocorre por meio de ondas de rádios, sendo formadas de forma 
instantâneas conforme esses veículos se movem ao longo da estrada. 
Um subproduto da VANET são as redes ad hoc veiculares inteligentes, do 
inglês Intelligent vehicular ad hoc networks (InVANETs), que por meio de 
inteligência artificial auxiliam os veículos a se comportar em situações de 
colisões com outros veículos e acidentes em geral. 
Outras aplicações que se beneficiam das facilidades das redes ad hoc são as 
militares, principalmente por não necessitar de infraestrutura e serem fáceis de 
operar, e o âmbito de sensores, como naqueles presentes em dispositivos de 
smart home, sinais de tráfego e até mesmo robôs. 
 
Roteamento em redes ad hoc 
 
Conforme o vimos anteriormente, uma forma de resumir redes ad hoc é dizer 
que é uma estrutura de rede formada por roteadores móveis. Entre exemplos 
possíveis estão veículos militares em um campo de batalha, uma frota de 
navios no mar, trabalhos de emergência em calamidades, um grupo de 
pessoas com notebooks, todos esses casos em um situações onde não há 
uma infraestrutura prévia. Em todos esses casos e em outros, cadanó consiste 
em um roteador e um host, normalmente no mesmo dispositivo. 
Em qualquer instante, uma rede ad hoc pode ser descrita por um grafo dos 
nós, ou seja, roteadores e hosts. Dois nós estão conectados, isto é, há um arco 
entre eles no grafo, se puderem comunicar-se diretamente utilizando seus 
sinais de rádio. Tendo em vista que um dos dois pode ter um transmissor mais 
potente que o outro, é possível que A esteja conectado a B, mas que B não 
esteja conectado a A. Para simplificar, iremos assumir que todas as conexões 
são simétricas. Também devemos considerar que o simples fato de dois nós 
estarem dentro do alcance um do outro não significa que eles estão 
conectados. Pode haver obstáculos, como edifícios ou rochas, que bloqueiem 
sua comunicação. 
Para descrever o algoritmo AODV, iremos utilizar a Figura 2, onde um processo 
do nó A deseja enviar um pacote ao nó I. O algoritmo AODV mantém uma 
tabela em cada nó, classificada por destino, fornecendo informações sobre 
esse destino, inclusive a que vizinhos enviar pacotes para alcançar o destino. 
Supondo que A procure em sua tabela e não encontre uma entrada 
correspondente a I. Será necessário descobrir uma rota até I. Essa propriedade 
de descoberta de rotas apenas quando surge a necessidade é o que torna 
esse algoritmo por demanda. 
 
Figura 2 – Grafo de descoberta de rota utilizando algoritmo AODV 
As etapas demonstradas na Figura 2 são: a) alcance da difusão de A; b) depois 
de B e D receberem a difusão de A; c) depois de C, F e G receberem a difusão 
de A; d) depois de E, H e I receberem a difusão de A. Os nós sombreados são 
novos destinatários. As setas mostram as rotas inversas possíveis. 
Para localizar I, A constrói um pacote especial, denominado Route Request, e 
o transmite por difusão. O pacote alcança B e D, conforme a etapa a) da Figura 
2. De fato, a razão para B e D estarem conectados a A no grafo é que eles 
podem receber comunicações de A. Por exemplo, F não é mostrado como um 
arco para A, pois não pode receber o sinal de rádio de A. Dessa forma, F não 
está conectado a A. 
O formato do pacote Route Request é mostrado na Figura 3. O pacote contém 
os endereços de origem e destino, em geral seus endereços IP, que identifica 
quem está sendo procurado. Há também um campo ID da solicitação, um 
contador local mantido separadamente por cada nó e incrementado toda vez 
que um pacote Route Request é transmitido. Juntos, os campos endereço de 
origem e ID de solicitação identificam de forma exclusiva o pacote Route 
Request, a fim de permitir que os nós descartem quaisquer duplicadas que 
venham a receber. 
 
Figura 3 – Formato de um pacote Route Request 
Além do contador ID de solicitação, cada nó também mantém um segundo 
contador de sequência, incrementado sempre que é enviado um pacote Route 
Request, ou uma resposta ao pacote de outro roteador. Sua função é identificar 
novas rotas a partir de rotas antigas. O quarto campo da Figura 3 é o contador 
de sequência de A; o quinto campo é o valor mais recente do número de 
sequência de I que A detectou, sendo 0 se ele nunca foi detectado. O último 
campo, contagem de saltos, controlará o número de saltos que o pacote 
efetuou. Seu valor inicial é 0. 
Quando um pacote Route Request chega a um nó, B e D no exemplo da Figura 
3, esse é processado conforme as seguintes etapas: 
i) O par, endereço de origem e ID de solicitação, é procurado em uma 
tabela de histórico local para verificar se essa solicitação já foi vista e 
processada. Se for uma duplicata, será descartada e o 
processamento será interrompido. Se não for uma duplicata, o par 
será inserido na tabela de histórico, para que duplicatas futuras 
possam ser rejeitadas, e o processamento irá continuar; 
ii) ii) O receptor procura o destino em sua tabela de rotas. Se for 
conhecida uma nova rota até o destino, será transmitido de volta à 
origem um pacote Route Reply, informando como chegar ao destino. 
Nesse caso, a palavra nota significa que o número de sequência de 
destino armazenado na tabela de roteamento é maior que ou igual ao 
número de sequência de destino contido no pacote Route Request. 
Se for menor, isso quer dizer que a rota armazenada é mais antiga 
que a rota anterior que a origem tinha para o destino, e então a etapa 
iii será executada; 
iii) Tendo em vista que o receptor não conhece uma nova rota para o 
destino, irá incrementar o campo contagem de saltos e retransmite o 
pacote Route Request. Também irá extrair os dados do pacote e o 
armazena como uma nova entrada em sua tabela de rotas inversas. 
Essas informações serão utilizadas para construir a rota inversa, de 
forma que a resposta possa voltar à origem mais tarde. As setas na 
Figura 2 são usadas para construir a rota inversa. Também será 
inicializado um timer com a entrada de rota inversa inserida mais 
recentemente. Se ela expirar, a entrada será eliminada. 
Os pontos B e D não sabem onde está I, e então cada um deles cria uma 
entrada de rota inversa apontando de volta para A, como demonstrado 
pelas setas na Figura 2, e transmite o pacote com o campo contagem de 
saltos definido como 1. A difusão de B alcança C e D. C cria uma entrada 
para ela em sua tabela de rotas inversas e retransmite. Em contraste, D a 
rejeita como uma duplicata. De modo semelhante, a difusão de D é 
rejeitada por B. Porém, a difusão de D é aceita por F e G, sendo 
armazenada, como mostra a etapa c) da Figura 2. Depois de E, H e I 
receberem a difusão, o pacote Route Request finalmente alcança um 
destino que sabe onde I está, ou seja, o próprio I, como ilustra a etapa d) da 
Figura 2. É possível observar que, embora tenhamos mostrado as difusões 
em três etapas discretas nesse caso, as difusões de nós diferentes não são 
coordenadas de nenhuma forma. 
Em resposta à solicitação recebida, I constrói um pacote Route Reply, como 
ilustra a Figura 4. Os campos endereço de origem, endereço de destino e 
contagem de saltos são copiados da solicitação recebida, mas o campo 
número de sequência de destino é removido de seu contador na memória. 
O campo contagem de saltos é definido como 0. O campo duração controla 
por quanto tempo a rota é válida. Esse pacote é retransmitido por unidifusão 
para o nó de onde veio o pacote Route Request, nesse caso, o nó G. Então 
o pacote segue o caminho inverso até D e finalmente até A. Em cada nó, o 
campo contagem de saltos é incrementado, de forma que o nó possa ver a 
que distância se encontra do destino, no caso I. 
 
Figura 4 – Formato de um pacote Route Reply 
Em cada nó intermediário no caminho de volta, o pacote é inspecionado. O 
mesmo é inserido na tabela de roteamento local como uma rota para I se uma 
ou mais das três condições a seguir é satisfeita: 
i) Não é conhecida nenhuma rota para I; 
ii) O número de sequência correspondente a I no pacote Route Reply é 
maior que o valor encontrado na tabela de roteamento; 
iii) Os números de sequência são iguais, mas a nova rota é mais curta. 
Desse modo, todos os nós na rota inversa aprendem a rota para I de forma 
indireta, como um subproduto da descoberta de rota de A. Os nós que 
receberam o pacote Route Request original, mas que não estavam no 
caminho inverso, ou seja, B, C, E, F e H no exemplo, descartarão a entrada 
da tabela de rotas inversas quando o timer associado expirar. 
Em uma rede grande, o algoritmo gera muitas difusões, até mesmo para 
destinos que estão próximos. Há, entretanto, uma forma de reduzir número 
de difusões. O campo prazo de validade do pacote IP é inicializado pelo 
transmissor com o diâmetro esperado da rede e é decrementado em cada 
salto. Se alcançar 0, o pacote será descartado, ao invés de ser transmitido 
por difusão. O processo de descoberta é então modificado. Para localizar 
um destino, o transmissor envia um pacote Route Request com o campo 
prazo de validade definido como 1. Se não houver nenhuma reposta dentrode um período de tempo razoável, um outro pacote será enviado, dessa vez 
com prazo de validade definido como 2. As tentativas subsequentes 
utilizarão 3, 4, 5, etc. Desse modo, a pesquisa será realizada por tentativa, 
primeiro no local, e depois em anéis cada vez mais amplos. 
Manutenção de rotas 
 
Por ser possível mover ou desativas os nós, a topologia pode mudar 
espontaneamente. Por exemplo, na Figura 2, se G for desativado, A não 
perceberá que a rota esteve usando para I não é mais válida. O algoritmo 
precisa ter a possibilidade de lidar com esse problema. Periodicamente, 
cada nó transmite por difusão uma mensagem de “olá”. Cada um de seus 
vizinhos deve responder a essa mensagem. Se não chegar nenhuma 
resposta, o transmissor saberá que aquele vizinho saiu de seu alcance e 
não está mais conectado a ele. De modo semelhante, se tentar enviar um 
pacote a um vizinho que não responde, o nó aprenderá que o vizinho não 
está mais disponível. 
Essas informações são usadas para limpar rotas que não estão mais ativas. 
Para cada destino possível, cada nó N mantém o controle de seus vizinhos 
que enviaram um pacote para esse destino durante os últimos T segundos. 
Esses vizinhos são chamados de ativos de N para esse destino. N faz isso 
mantendo uma tabela de roteamento organizada por destino e contendo o 
nó de saída a ser utilizado para acessar o destino, a contagem de saltos até 
o destino, o número de sequência de destino mais recente e a lista de 
vizinhos ativos correspondente a esse destino. Uma tabela de roteamento 
possível para o nó D do exemplo de topologia é mostrada na Figura 5. 
 
Figura 5 - Tabela de roteamento de D antes de G ficar inativo 
Quando qualquer dos seus vizinhos se torna inacessível, N verifica sua tabela 
de roteamento para ver quais destinos tem rotas que utilizam o vizinho agora 
inativo. Para cada uma dessas rotas, cada vizinho ativo é informado de que 
sua rota que passa por N agora é inválida e, portanto, deve ser limpa de suas 
tabelas de roteamento. Em seguida, os vizinhos ativos comunicam essa 
informação a seus próprios vizinhos ativos e assim por diante, recursivamente, 
até todas as rotas que dependem do nó agora inativo serem retiradas de todas 
as tabelas de roteamento. 
Como uma ilustração de manutenção de rotas, iremos considerar o exemplo 
anterior, mas agora com G repentinamente desativado. A topologia alterada é 
demonstrada na Figura 6. Quando descobre que G está inativo, D observa sua 
tabela de roteamento e vê que G foi usado nas rotas para E, G e I. A união dos 
vizinhos ativos para esses destinos é o conjunto {A, B}. Em outras palavras, A 
e B dependem de G para algumas de suas rotas, e então tem de ser 
informados de que essas rotas não são mais válidas. D envia essa informação 
a eles transmitindo pacotes que fazem com que esses vizinhos atualizem suas 
próprias tabelas de roteamento e, depois disso, D também limpa as entradas 
para E, G e I de sua tabela de roteamento. 
 
Figura 6 - Grafo depois que G fica inativo 
 
Considerações finais 
 
Redes ad hoc, em geral conhecidas como MANET ou WANET, são um tipo 
de rede sem infraestrutura e continuamente autoconfigurável de dispositivos 
móveis conectados de forma sem fio. Cada dispositivo é livre para se mover 
de maneira independente em qualquer direção, assim sendo, sua conexão 
com outros dispositivos irá mudar com frequência. 
Cada um desses dispositivos deve encaminhar dados mesmo que esse 
dado não tenha uso para si próprio, portanto, cada dispositivos é de certa 
forma um roteador. O principal desafio em construir uma rede ad hoc é 
equipar cada dispositivo para continuamente manter a informação 
necessária para rotear o tráfego de maneira apropriada. 
Essas redes podem operar de forma independente ou podem estar conectar 
a Internet. Podem conter um ou múltiplos e diferentes transceptores entre 
os nós. Isso resulta em uma topologia altamente dinâmica e autônoma. 
A principal vantagem de redes ad hoc é a sua natureza ad hoc, onde os nós 
são móveis, ou seja, não há uma infraestrutura fixa, tornando possível 
diversas aplicações em áreas diferentes. Por ser descentralizada, esse tipo 
de rede é tipicamente mais robusta que redes comuns centralizadas, devido 
a forma multisaltos com que a informação é retransmitida. A Figura 7 ilustra 
a diferença entre uma rede com protocolo de salto único e uma rede 
multisaltos. Outras vantagens incluem flexibilidade, escalabilidade e baixo 
custo de administração. 
 
Figura 7 - a) Roteamento de salto único; b) roteamento multisaltos 
Com essas vantagens seguem algumas desvantagens em performance de 
rede. Em virtude da falta de infraestrutura fixa, variações de performance 
podem ocorrer frequentemente. Ademais, visto que a topologia da rede 
determina a ocorrência de interferência e, consequentemente, 
conectividade, o padrão de mobilidade dos dispositivos dentro da rede irão 
impactar na performance da rede, possivelmente resultando em dados 
tendo que ser reenviados diversas vezes. 
Em referência as aplicações, são diversas as possibilidades, indo desde 
sensores para captação de informações ambientais, comunicação entre 
veículos, equipamentos de tráfego, dispositivos de domésticos inteligentes, 
troca de mensagens de ponta a ponta, operações de resgate em desastres, 
robôs e assim por diante. 
 
Referências 
 
Hoebeke, Jeroen, et al. "An overview of mobile ad hoc networks: applications 
and challenges." Journal-Communications Network 3.3 (2004): 60-66. 
Johnson, David B., and David A. Maltz. "Dynamic source routing in ad hoc 
wireless networks." Mobile computing. Springer, Boston, MA, 1996. 153-181. 
Li, Jinyang, et al. "Capacity of ad hoc wireless networks." Proceedings of the 
7th annual international conference on Mobile computing and networking. ACM, 
2001. 
Maltz, David A., et al. "A performance comparison of multi-hop wireless ad hoc 
network routing protocols." Proceedings of ACM MobiCom. Vol. 114. 1998. 
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR) 
13.4 (1981): 453-489. 
Toh, C-K., et al. "Experimenting with an ad hoc wireless network on campus: 
insights and experiences." ACM SIGMETRICS Performance Evaluation Review 
28.3 (2000): 21-29. 
Toh, Chai-Keong. Wireless ATM and Ad-Hoc Networks: Protocols and 
Architectures. Springer Science & Business Media, 2012. 
Zanjireh, Morteza M., Ali Shahrabi, and Hadi Larijani. "Anch: A new clustering 
algorithm for wireless sensor networks." 2013 27th International Conference on 
Advanced Information Networking and Applications Workshops. IEEE, 2013 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Unidade II 
 
Introdução 
 
De forma bem simples, uma rede overlay, ou sobreposta, é uma rede 
construída em cima de outra rede. Para entender como uma rede sobreposta 
funciona, podemos pensar em nós conectados por ligações virtuais ou lógicas, 
onde cada uma dessas ligações corresponde a um caminho, podendo 
percorrer diversas ligações físicas, na rede subjacente. Uma outra forma de 
definir redes sobrepostas é dizer que elas criam uma topologia virtual 
estruturada acima do nível básico de protocolo de transporte que facilita a 
busca determinística e garante a convergência. 
Redes sobrepostas possuem uma camada semântica de rede acima do nível 
básico de protocolo de transporte que organiza a topologia da rede de acordo 
com o conteúdo dos nós, implementando uma abstração de uma tabela de 
hash distribuída que proporciona balanceamento de cargo, encaminhamento 
de consulta e tempos de pesquisa limitados. Devido a essas características, 
redes sobrepostas tem se tornado um componente crítico para sistemas que 
demandam organização automática. 
Por exemplo, sistemas distribuídos como redes de ponta a ponta (P2P) e 
aplicações cliente-servidor são redes sobrepostas, uma vez que seus nós 
funcionam “por cima” da Internet. A Figura 1 apresenta um exemplode 
topologia de uma rede sobreposta. 
 
Figura 2 - Exemplo de rede sobreposta 
Por definirem os vizinhos dos nós de acordo com o conteúdo armazenado, 
redes sobrepostas podem mudar a forma de busca de um problema de 
travessia de gráfico em um processo iterativo localizado. Nesse processo, cada 
salto aproxima a consulta do seu conjunto de saltos de destino, que pode ser 
calculado de acordo com uma função matemática. Isso reduz a carga geral da 
rede e torna o processo de busca determinístico. Em termos abstratos, uma 
rede sobreposta opera de forma similar uma tabela de hash distribuída, ao 
permitir inserção de chave, consulta e remoção. 
Ao destrincharmos a rede sobreposta ilustrada na Figura 1, podemos identificar 
as diversas camadas lógicas que a compõe, entre eles uma camada IP, uma 
camada SONET/SDH, uma camada ótica e uma camada de site. 
 
Figura 3 - Rede sobreposta quebrada em camadas lógicas 
SONET, ou synchronous optical networking, e SDH, ou synchronous digital 
hierarchy, são protocolos padrões que transferem vários fluxos de bits digitais 
de forma síncrona sobre, por exemplo, fibra óptica. 
 
Aplicações 
 
Redes sobrepostas são utilizadas em telecomunicações devido a 
disponibilidade de equipamentos de comutação de circuitos digitais e a fibra 
ótica. Redes de telecomunicações e redes baseadas em IP são todas 
sobrepostas com pelo menos uma camada de fibra ótica, uma camada de 
transporte e uma camada IP ou camadas de comutação de circuitos. 
Atualmente a Internet é a base para redes sobrepostas que podem ser 
construídas visando possibilitar o roteamento de mensagens à destino que não 
são especificados por um endereço de IP. Por exemplo, tabelas de hash 
distribuídas podem ser usadas para rotear mensagens à um nó que possua um 
endereço lógico específico, de quem o endereço de IP não é previamente 
conhecido. 
Redes sobrepostas também foram propostas como forma de melhorar o 
roteamento da Internet, como por meio de garantias de qualidade de serviço 
visando alcançar streaming de mídia de alta qualidade. Várias das propostas, 
porém, não foram aceitas em larga escala, principalmente devido a 
necessidade de mudanças em todos os roteadores da rede. Por outro lado, 
uma rede sobreposta pode ser implantada de forma incremental em end-hosts 
rodando o software de protocolo de sobreposição, mesmo sem a cooperação 
das provedoras de Internet. A rede sobreposta não possui controle sobre como 
os pacotes na rede subjacente são roteados entre dois nós sobrepostos, mas 
pode controlar a sequência de nós sobrepostos que uma mensagem percorre 
antes de atingir seu destino. 
Entre os principais protocolos de redes sobrepostas baseados em TCP/IP, 
podemos citar: http e https; as já mencionadas tabelas de hash distribuídas 
(DHT), do inglês Distributed hash tables; diversos protocolos P2P, como Tor e 
JXTA; e XMPP. 
Estado de pesquisa em redes sobrepostas 
 
Pesquisadores estão utilizando redes sobrepostas em diversas aplicações, 
desde roteamento de Internet até armazenamento de rede distribuído. O 
sistema de roteamento Internet Indirection Infrastructure (i3), baseado em 
sobreposição, por exemplo, busca simplificar a implantação e gerenciamento 
de serviços de rede ao dissociar os atos de envio e recebimento. Esse nível 
adicional de indireção proporciona maior flexibilidade na mobilidade de nós e 
em localização e implantação de serviços. 
Há também sucesso, por parte dos pesquisadores, em implantar redes 
sobrepostas como parte de sistemas de armazenamento distribuído, como por 
exemplo, sistema de arquivos cooperativo. O sistema de arquivo cooperativo 
interpreta os valores armazenados da rede Chord como um sistema de 
arquivos e inclui recursos como replicação para uma maior robustez. A rede 
Chord é um tipo de rede sobreposta, onde a rede é organizada com base no 
endereço IP de cada um dos nós participantes, diferentemente de outras redes, 
que utilizam o conteúdo dos nós como forma de organização. 
No caso do Pastry, um tipo de rede sobreposta similar ao Chord, porém, focada 
na implementação de uma tabela hash distribuída (DHT), os pesquisadores 
conseguiram aplicar o sistema para diversas aplicações finais, já disponíveis 
para usuários, como armazenamento em cache da Web cooperativo, 
notificação de grupos e mensagens instantâneas. 
Algoritmos de redes sobrepostas são temas de diversas pesquisas e 
desenvolvimento em andamento. Particularmente, o principal foco dessas 
pesquisas está em reduzir os custos de operação de rede, como entrada e 
saída simultânea de múltiplos nós, tolerância a falhas, segurança e 
proximidade física, ao modificar a sobreposição ao adaptar-se melhor a 
topologia física subjacente. 
 
 
 
 
Resiliência e multicast 
 
Redes Sobrepostas Resilientes, ou Resilient Overlay Networks (RON), são 
arquiteturas que permitem aplicações distribuídas da Internet a detectar e se 
recuperar de desconexão ou interferência. Protocolos de roteamento de área 
ampla atuais que levam cerca de vários minutos para se recuperar são 
melhorados com esta sobreposição de camada de aplicação. Os nós da RON 
monitoram os caminhos da Internet entre si próprios e irão determinar se 
devem ou não redirecionar pacotes diretamente via a Internet ou via outros nós 
da RON, otimizando assim as métricas específicas da aplicação. 
Uma rede sobreposta resiliente possui um projeto conceitual simples. Nós RON 
são implantados em diversas localidades da Internet. Esses nós formam uma 
camada de aplicação sobreposta que coopera no roteamento de pacotes. Cada 
um dos nós RON monitoram a qualidade dos caminhos de Internet entre eles, e 
usa essa informação para automaticamente selecionar os caminhos de cada 
pacote de maneira precisa, portanto, reduzindo a quantidade de tempo 
necessária para se recuperar de uma baixa qualidade de serviço. 
Em redes de computadores, multicast é uma comunicação em grupo, onde a 
transmissão de dados é endereçada para um grupo de nós de destino de forma 
simultânea. Em um roteamento unicast, a mensagem é destinada a apenas um 
dos nós que compõem uma rede, conforme ilustra a Figura 3. 
 
Figura 4 - Esquema de roteamento unicast 
Por outro lado, em um roteamento broadcast, a mensagem é distribuída entre 
todos os nós da rede. A Figura 4 demonstra esse funcionamento. 
 
Figura 5 - Esquema de roteamento broadcast 
O multicast está entre esses dois tipos, pois a mensagem é destinada para 
mais de um nó, mas não obrigatoriamente para todos os nós. O multicast pode 
ser distribuído de um para muitos e de muitos para muitos. A Figura 5 
apresenta o esquema de distribuição multicast. 
 
Figura 6 - Esquema de roteamento multicast 
O multicast sobreposto é também conhecido como End System ou Multicast de 
ponta a ponta. Multicast de múltiplas fontes de alta largura de banda entre nós 
amplamente distribuídos é uma capacidade crítica de uma grande variedade de 
aplicações, incluindo conferência de áudio e vídeo, jogos multi-party e 
distribuição de conteúdo. Ao longo da última década, um número de projetos 
de pesquisa tem explorado o uso de multicast como um mecanismo eficiente e 
escalável para suportar estes tipos de aplicações de comunicação em grupo. O 
multicast desacopla o tamanho do conjunto de receptores da quantidade de 
estado mantida em um único nó e evita potencialmente a comunicação 
redundante na rede. 
A implantação limitada do IP Multicast, um protocolo multicast de camada de 
rede de melhor esforço, tem levantado um interesse considerável em 
abordagens alternativas que são implementadas na camada de aplicação, 
utilizando apenas end-systems. Em uma abordagem multicast sobreposta ou 
end-system, nós participantes organizam-se em uma topologia sobreposta para 
entrega de dados. Cada aresta nesta topologia corresponde a um caminho 
unicast entre dois end-systems ou nós na rede subjacente da Internet. 
Toda a funcionalidaderelacionada a multicast é implementada nos nós e não 
nos roteadores, e o objetivo do protocolo multicast é construir e manter uma 
sobreposição eficiente para a transmissão de dados. Há, porém, algumas 
desvantagens relacionadas ao multicast, entre elas, lentidão na propagação 
dos dados, latência longa e pacotes duplicados em certos pontos. 
 
Protocolos P2P 
 
Sistemas peer-to-peer (P2P), ou de ponta a ponta, são sistemas distribuídos 
que operam sem uma organização ou controle centralizados. A arquitetura P2P 
particiona as tarefas entres os nós, esses nós possuem os mesmos privilégios 
e participam em mesma medida. Os nós disponibilizam uma fração dos seus 
recursos, como poder de processamento, armazenamento em disco ou largura 
de banda, para outros nós que participam da rede, tudo sem a necessidade de 
um controle central mediado por servidores. A Figura 6 e Figura 7, ilustram, 
respectivamente, uma rede P2P e uma rede baseada no modelo tradicional de 
cliente-servidor. 
 
Figura 7 - Modelo de rede P2P 
 
Figura 8 - Modelo de rede baseada em cliente-servidor 
Portanto, em sistemas P2P, os nós são igualmente fornecedores e 
consumidores de recursos, em contraste com o tradicional modelo cliente-
servidor, onde o consumo e o fornecimento de recursos é dividido. Sistemas 
P2P colaborativos emergentes vão ainda além de ter apenas nós executando 
tarefas similares enquanto dividem recursos, ao procurar por nós diversos que 
possam agregar recursos e capacidades únicas a uma comunidade virtual, e 
assim, tornando a comunidade capaz de empenhar tarefas maiores, além 
daquelas que podem ser realizadas por nós individuais, mas que ainda são 
benéficas para todos os nós. 
A arquitetura P2P, embora tenha sido utilizada anteriormente em diversos 
domínios de aplicação, tornou-se popular com a advento dos softwares de 
compartilhamento de arquivos, em especial o Napster. No Brasil, quem já tinha 
acesso a Internet no início dos anos 2000, mesmo que discada, provavelmente 
utilizou, ou conheceu, softwares similares, como eMule (Figura 8) e Kazaa. 
 
Figura 9 - Interface do eMule 
Redes sobrepostas e sistemas P2P 
 
Para encontrar um pedaço de dado em particular dentro da rede, sistemas 
P2P, de maneira explícita ou implícita, fornecem um mecanismo de pesquisa, 
ou função de localizador, que corresponde um dado pedaço de texto, ou chave, 
com um ou mais nós de redes responsáveis pelo valor associado com aquela 
chave. Nós P2P interoperam usando o mesmo software ou o mesmo conjunto 
de APIs baseadas em rede. 
As aplicações P2P atuais na Internet tipicamente proporcionam funções 
localizadoras utilizando mecanismos de inundação controlada time-to-live 
(TTL). Nessa abordagem, o nó de pesquisa encapsula a consulta em uma 
mensagem única e envia para todos os vizinhos conhecidos. Os vizinhos então 
verificam se eles podem responder à consulta combinando-a com as chaves 
em seu banco de dados interno. Se eles encontram uma correspondência, eles 
respondem, caso contrário, eles encaminham a consulta para seus vizinhos e 
aumentam a contagem de saltos da mensagem. Se a contagem de saltos 
ultrapassa o limite do TTL, o encaminhando para. O valor TTL define, assim, 
um limite para a consulta, que controla a sua propagação. 
Sistemas baseados em inundações, porém, não escalam de forma adequada 
devido a carga de largura de banda e processamento que colocam sobre a 
rede. Além disso, eles não fornecem garantias quanto a tempos de pesquisa ou 
acessibilidade ao conteúdo. É aqui que redes sobrepostas entram, pois podem 
abordar essas questões. 
As qualidades de redes sobrepostas que foram expostas durante a introdução 
são a razão para estas serem formas interessantes de aplicar sistemas P2P. 
Porém, podemos destacar novamente, de forma resumida, quatro dessas 
principais qualidades, sendo: recuperação de dados garantida; horizontes de 
tempo de pesquisa disponíveis, sendo normalmente O(log N), onde N é o 
número de nós da rede; balanceamento de carga automático; e auto-
organização. 
O padrão de conectividade de uma rede sobreposta é diferente daquele obtido 
em um algoritmo baseado em TTL, pois é estruturado e tipicamente simétrico. 
A estrutura é baseada em uma ou mais funções matemáticas que determinam 
como os nós estão conectados. A estrutura da rede contribui para os limites de 
tempos de pesquisa associados às sobreposições. Quando um nó falha, o 
algoritmo da rede sobreposta proporciona mecanismos que permitem que a 
rede se recupere e recrie, ou mantenha, uma estrutura de rede apropriada. 
Uma diferença importante entre redes sobrepostas e redes P2P 
desestruturadas é que as sobreposições buscam pelos dados com base em 
identificadores que são derivados diretamente do conteúdo, com isso, não há 
um suporte nativo para busca por meio de inserção de texto. Embora o trabalho 
esteja em andamento para a pesquisa de palavras-chave em camadas sobre 
as sobreposições, se isso pode ser feito com eficiência suficiente para suportar 
redes de larga escala, ainda é um problema em aberto. 
 
Considerações finais 
 
Uma rede sobreposta, ou rede overlay, é um conceito de redes de 
computadores. Nesse tipo de redes, uma nova rede é criada virtualmente por 
cima de uma já existente. Um exemplo simples de uma rede sobreposta está 
presente em redes domésticas, com uma rede ethernet, que pode conectar 
computadores que estão na mesma rede. Nesse exemplo, a rede é criada na 
camada de enlace. Isto é o suficiente para ter uma comunicação entre os nós 
desta rede, mas não para ligar esta rede com outras redes, como a Internet. 
Para isso, é preciso adicionar a camada de rede para os computadores e para 
o roteador, dando assim ao sistema a capacidade de rota e a criação de uma 
rede sobreposta. 
Uma rede sobreposta é organizada como nós de laços virtuais que funcionam 
por cima da Internet. Dessa forma, é possível ver uma rede sobreposta como 
uma máscara que cobre uma rede previamente existente. Essa máscara serve 
para criar laços virtuais entre certos nós da rede existente. Com isso, é criada 
uma rede onde a comunicação é baseada nos nós pertencentes a rede 
sobreposta, como o que acontece em redes P2P, na maioria dos casos sem 
levar em conta os nós intermediários do caminho que não fazem parte da rede 
sobreposta. Do ponto de vista físico, redes sobrepostas são muito complexas, 
já que combinam diversas camadas lógicas que são operadas e construídas 
por diversas entidades. Mas elas permitem um maior nível de abstração, dessa 
forma permitindo muitos serviços que não poderiam ser propostos por um único 
operador de telecomunicações. 
Muitas redes P2P são redes sobrepostas, pois são organizadas como um 
sistema virtual de nós que funcionam em cima da Internet. Além disso, esse 
tipo de rede pode ser utilizado para que um pequeno grupo de nós possa se 
comunicar com benefícios superiores em relação aos que são acessíveis a 
outros nós da rede. Dessa forma, criando uma rede com hierarquias. Redes 
Virtuais Privadas, do inglês Virtual Private Network (VPN), são outro tipo 
comum de rede sobreposta que utilizamos no dia a dia. 
Em uma rede P2P, um algoritmo de roteamento distribuído é utilizado para 
definir a localização dos nós da rede sobreposta. Esse algoritmo não considera 
a real localização dos nós na rede em que está sobreposto, já que é 
implementado sobre a camada de aplicação. Com esse algoritmo, localiza-se 
que hospedeiro da rede P2P possui o objeto requisitado, e depois é gerado o 
caminho até ele, por meio da rede sobreposta. Como em redes P2P é comum 
existirem réplicas dos objetos para fins de disponibilidade, o algoritmo guarda 
pouca informação sobre a localização das cópias. Ao invés disso, como essa 
essa informação pode ser alterada diversas vezes em um curto espaço de 
tempo, o algoritmo manda requisições procurando um nó disponível com a 
cópia do objeto desejado mais próximo.Referências 
 
Andersen, David, et al. Resilient overlay networks. Vol. 35. No. 5. ACM, 2001. 
Bandara, HMN Dilum, and Anura P. Jayasumana. "Collaborative applications 
over peer-to-peer systems–challenges and solutions." Peer-to-Peer Networking 
and Applications 6.3 (2013): 257-276. 
Barkai, David. Peer-to-Peer Computing: technologies for sharing and 
collaborating on the net. Intel Press, 2001. 
Dabek, Frank, et al. "Wide-area cooperative storage with CFS." ACM SIGOPS 
Operating Systems Review. Vol. 35. No. 5. ACM, 2001. 
Doval, Diego, and O. Donal. "Overlay networks: A scalable alternative for P2P." 
IEEE Internet computing 4 (2003): 79-82. 
Harte, Lawrence. Introduction to Data Multicasting, IP Multicast Streaming for 
Audio and Video Media Distribution. Althos, 2008. 
Rowstron, Antony, and Peter Druschel. "Pastry: Scalable, decentralized object 
location, and routing for large-scale peer-to-peer systems." IFIP/ACM 
International Conference on Distributed Systems Platforms and Open 
Distributed Processing. Springer, Berlin, Heidelberg, 2001. 
Schollmeier, Rüdiger. "A definition of peer-to-peer networking for the 
classification of peer-to-peer architectures and applications." Proceedings First 
International Conference on Peer-to-Peer Computing. IEEE, 2001. 
Stoica, Ion, et al. "Chord: A scalable peer-to-peer lookup service for internet 
applications." ACM SIGCOMM Computer Communication Review 31.4 (2001): 
149-160. 
Stoica, Ion, et al. "Internet indirection infrastructure." ACM SIGCOMM Computer 
Communication Review. Vol. 32. No. 4. ACM, 2002. 
Tarkoma, Sasu. Overlay Networks: Toward Information Networking. Auerbach 
Publications, 2010. 
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR) 
13.4 (1981): 453-489. 
 
 
 
 
 
 
 
 
Unidade III 
 
Redes virtuais privadas 
 
Uma rede virtual privada, do inglês virtual private network (VPN), estende uma 
rede privada através de uma rede pública e permite que os usuários enviem e 
recebam dados em redes compartilhadas ou públicas como se seus 
dispositivos de computação estivessem diretamente conectados à rede 
privada. Aplicações em execução em um dispositivo, por exemplo um 
notebook, desktop, smartphone, através de uma VPN pode, portanto, se 
beneficiar da funcionalidade, segurança e gerenciamento da rede privada. A 
criptografia é uma parte comum, embora não inerente, de uma conexão VPN. 
Uma VPN é criada estabelecendo uma conexão virtual ponto a ponto através 
do uso de circuitos dedicados ou com protocolos de encapsulamento em redes 
existentes. Uma VPN disponível na Internet pública pode fornecer alguns dos 
benefícios de uma rede de longa distância (WAN). Da perspectiva do usuário, 
os recursos disponíveis na rede privada podem ser acessados remotamente. A 
tecnologia VPN foi desenvolvida para permitir que usuários remotos e filiais 
acessem aplicações e recursos corporativos. Para garantir a segurança, a 
conexão de rede privada é estabelecida usando um protocolo de 
encapsulamento em camadas criptografado, e os usuários da VPN usam 
métodos de autenticação, incluindo senhas ou certificados, para obter acesso à 
VPN. A Figura 1 ilustra uma visão geral da conectividade de uma VPN. 
 
Figura 10 - Visão geral da conectividade VPN 
Em outras aplicações, usuários da Internet podem proteger suas conexões com 
uma VPN, para contornar restrições geográficas e censura ou para se conectar 
a servidores proxy visando proteger a sua identidade e localização, 
permanecendo anônimo na Internet. No entanto, alguns sites bloqueiam o 
acesso à tecnologia VPN conhecida para evitar a contenção de suas restrições 
geográficas, e muitos provedores de VPN têm desenvolvido estratégias para 
contornar esses obstáculos. 
Muitas empresas têm escritórios e fábricas espalhados por muitas cidades, às 
vezes por vários países. Antigamente, antes das redes públicas de dados, era 
comum tais empresas arrendarem linhas dedicadas da companhia telefônica 
entre alguns pares de locais ou entre todos eles. Algumas empresas ainda 
fazem isso. Uma rede construída a partir de computadores de empresas e de 
linhas telefônicas dedicadas é chamada rede privada. Um exemplo de rede 
privada que conecta três locais é mostrado na Figura 2. 
 
Figura 11 - Rede privada de linha dedicada 
As redes privadas funcionam muito bem e são bastante seguras. Se as únicas 
linhas disponíveis forem as linhas dedicadas, nenhum tráfego poderá vazar 
para fora das instalações da empresa, e os intrusos terão de grampear 
fisicamente as linhas para entrar, o que não é fácil. Quando surgiram as redes 
públicas de dados e mais tarde a Internet, muitas empresas optaram por mover 
seu tráfego de dados, e possivelmente o de voz, para a rede pública, mas sem 
desistirem da segurança da rede privada. 
Essa demanda logo levou à criação de VPNs, que são redes sobrepostas às 
redes públicas, mas com a maioria das propriedades de redes privadas. Elas 
são chamadas "virtuais" porque são meramente uma ilusão, da mesma forma 
que os circuitos virtuais não são circuitos reais e que a memória virtual não é 
memória real. 
Embora as VPNs possam ser implementadas sobre redes ATM, ou frame relay, 
uma abordagem cada vez mais popular é construir VPNs diretamente sobre a 
Internet. Um projeto comum é equipar cada escritório com um firewall e criar 
túneis pela Internet entre todos os pares de escritórios, como ilustra a Figura 3. 
Se o IPsec for usado no tunneling, será possível agregar todo o tráfego entre 
dois pares de escritórios quaisquer em uma única Security Association (SA) 
autenticada e criptografada, fornecendo assim controle de integridade, sigilo e 
até mesmo uma considerável imunidade à análise de tráfego. 
 
Figura 12 - Rede privada virtual 
Quando o sistema é criado, cada par de firewalls tem de negociar os 
parâmetros de sua SA, incluindo os serviços, os modos, os algoritmos e as 
chaves. Muitos firewalls têm recursos internos de VPN, embora alguns 
roteadores comuns possam fazer isso muito bem. Porém, como os firewalls se 
destinam principalmente a questões de segurança, é natural fazer os túneis 
começarem e terminarem nos firewalls, proporcionando uma separação clara 
entre a empresa e a Internet. Desse modo, firewalls, VPNs e IPsec com ESP 
em modo de túnel formam uma combinação natural e amplamente usada na 
prática. Depois que as SAs são estabelecidas, o tráfego pode começar a fluir. 
Para um roteador na Internet, um pacote que viaja por um túnel VPN é apenas 
um pacote comum. O único detalhe pouco usual sobre ele é a presença do 
cabeçalho IPsec depois do cabeçalho IP, porém, como esses cabeçalhos 
extras não têm nenhum efeito sobre o processo de encaminhamento, os 
roteadores não se preocupam com esse cabeçalho extra. 
Uma vantagem importante dessa forma de organizar uma VPN é sua completa 
transparência para todo o software do usuário. Os firewalls configuram e 
gerenciam as SAs. A única pessoa consciente dessa configuração é o 
administrador de sistema, que tem de configurar e administrar os firewalls. Para 
todas as outras pessoas, é como ter de novo uma rede privada de linha 
dedicada. 
 
Protocolos de encapsulamento VPN 
 
O encapsulamento permite embrulhar um pacote de um tipo de protocolo 
dentro do datagrama de um protocolo diferente. Por exemplo, a VPN usa PPTP 
para encapsular pacotes IP em uma rede pública, como a Internet. É possível 
configurar uma solução VPN baseada em protocolo de encapsulamento ponto 
a ponto (PPTP), protocolo de encapsulamento de camada dois (L2TP) ou 
protocolo de encapsulamento de soquete seguro (SSTP). 
PPTP, L2TP e SSTP dependem muito dos recursos originalmente 
especificados para o protocolo ponto a ponto (PPP). O PPP foi projetado para 
enviar dados através de conexões dial-up ou ponto a ponto dedicadas. Para IP, 
o PPP encapsula pacotes IP dentro de quadros PPP e depois transmite os 
pacotes PPP encapsuladosatravés de um link ponto a ponto. O PPP foi 
originalmente definido como o protocolo a ser usado entre um cliente dial-up e 
um servidor de acesso à rede. 
PPTP 
 
O PPTP permite que o tráfego multiprotocolo seja criptografado e depois 
encapsulado em um cabeçalho IP para ser enviado por uma rede IP ou uma 
rede IP pública, como a Internet. O PPTP pode ser usado para acesso remoto 
e conexões VPN site a site. Ao usar a Internet como rede pública para VPN, o 
servidor PPTP é um servidor habilitado para VPN com uma interface na 
Internet e uma segunda interface na intranet. 
O PPTP encapsula quadros PPP em datagramas IP para transmissão pela 
rede. O PPTP usa uma conexão TCP para gerenciamento de encapsulamento 
e uma versão modificada do GRE (Generic Routing Encapsulation) para 
encapsular quadros PPP para dados encapsulados. As cargas dos quadros 
PPP encapsulados podem ser criptografadas, compactadas ou ambas. A 
Figura 4 mostra a estrutura de um pacote PPTP contendo um datagrama IP. 
 
Figura 13 - Estrutura de pacote PPTP contendo datagrama IP 
O quadro PPP é criptografado com criptografia ponto a ponto da Microsoft 
(MPPE) usando chaves de criptografia geradas no processo de autenticação 
MS-CHAP v2 ou EAP-TLS. Os clientes de rede virtual privada devem usar o 
protocolo de autenticação MS-CHAP v2 ou EAP-TLS para que as cargas dos 
quadros PPP sejam criptografadas. O PPTP está aproveitando a criptografia 
PPP subjacente e encapsulando um quadro PPP criptografado anteriormente. 
L2TP 
 
O L2TP permite que o tráfego multiprotocolo seja criptografado e depois 
enviado por qualquer meio que suporte a entrega de datagramas ponto a 
ponto, como IP ou modo de transferência assíncrona (ATM). L2TP é uma 
combinação de PPTP e Layer 2 Forwarding (L2F), uma tecnologia 
desenvolvida pela Cisco. L2TP representa os melhores recursos de PPTP e 
L2F. 
Ao contrário do PPTP, a implementação do L2TP da Microsoft não usa o MPPE 
para criptografar datagramas do PPP. O L2TP depende da segurança do IPsec 
no Modo de Transporte para serviços de criptografia. A combinação de L2TP e 
IPsec é conhecida como L2TP/IPsec. 
O L2TP e o IPsec devem ser suportados pelo cliente VPN e pelo servidor VPN. 
O suporte ao cliente para L2TP passou a ser incorporado aos clientes de 
acesso remoto a partir do Windows Vista e Windows XP, e o suporte ao 
servidor VPN para L2TP foi integrado a partir dos membros da família Windows 
Server 2008 e Windows Server 2003. O L2TP é instalado com o protocolo 
TCP/IP. 
O encapsulamento para pacotes L2TP/IPsec consiste em duas camadas. Na 
primeira, encapsulamento L2TP, um quadro PPP, isto é, um datagrama IP, é 
envolvido com um cabeçalho L2TP e um cabeçalho UDP. A Figura 5 mostra a 
estrutura de um pacote L2TP contendo um datagrama IP. 
 
Figura 14 - Estrutura de pacote L2TP contendo datagrama IP 
Na segunda camada, encapsulamento IPsec, a mensagem L2TP resultante é 
agrupada com um cabeçalho e trailer de IPsec Encapsulating Security Payload 
(ESP), um trailer de autenticação IPsec que fornece integridade e autenticação 
de mensagens e um cabeçalho IP final. No cabeçalho IP está o endereço IP de 
origem e destino que corresponde ao cliente VPN e servidor VPN. A Figura 6 
mostra o encapsulamento L2TP e IPsec para um datagrama PPP. 
 
Figura 15 - Escapsulamento L2TP e IPsec para datagrama PPP 
A mensagem L2TP é criptografada com o DES ou o DES triplo (3DES) usando 
chaves de criptografia geradas no processo de negociação do Internet Key 
Exchange (IKE). 
SSTP 
 
O protocolo SSTP (Secure Socket Tunneling Protocol) é um novo protocolo de 
encapsulamento que usa o protocolo HTTPS na porta TCP 443 para passar o 
tráfego por firewalls e proxies da Web que podem bloquear o tráfego PPTP e 
L2TP/IPsec. O SSTP fornece um mecanismo para encapsular o tráfego PPP 
pelo canal SSL do protocolo HTTPS. O uso do PPP permite o suporte a 
métodos de autenticação fortes, como EAP-TLS. O SSL fornece segurança no 
nível de transporte com negociação aprimorada de chaves, criptografia e 
verificação de integridade. 
Quando um cliente tenta estabelecer uma conexão VPN baseada em SSTP, o 
SSTP primeiro estabelece uma camada HTTPS bidirecional com o servidor 
SSTP. Sobre essa camada HTTPS, os pacotes de protocolo fluem como a 
carga dos dados. 
O SSTP encapsula quadros PPP em datagramas IP para transmissão pela 
rede. O SSTP usa uma conexão TCP, pela porta 443, para gerenciamento de 
túnel, bem como quadros de dados PPP. A mensagem SSTP é criptografada 
com o canal SSL do protocolo HTTPS. 
Escolhendo entre protocolos de encapsulamento 
 
Ao escolher entre as soluções VPN de acesso remoto PPTP, L2TP/IPsec e 
SSTP, é preciso considerar alguns fatores. O PPTP pode ser usado com uma 
variedade de clientes da Microsoft. Ao contrário de L2TP/IPsec, o PPTP não 
requer o uso de uma infraestrutura de chave pública (PKI). 
Ao usar a criptografia, as conexões VPN baseadas em PPTP fornecem 
confidencialidade dos dados, isto é, os pacotes capturados não podem ser 
interpretados sem a chave de criptografia. As conexões VPN baseadas em 
PPTP, no entanto, não fornecem integridade de dados, por exemplo, prova de 
que os dados não foram modificados em trânsito, ou autenticação de origem de 
dados, por exemplo, prova de que os dados foram enviados pelo usuário 
autorizado. 
A quantidade de opções de clientes da Microsoft em que o L2TP pode ser 
usado é menor do que aqueles possíveis com o PPTP. O L2TP suporta 
certificados de computador ou uma chave pré-compartilhada como método de 
autenticação para IPsec. 
A autenticação de certificado de computador, o método de autenticação 
recomendado, exige que uma PKI emita esses certificados ao servidor VPN e a 
todos os clientes VPN. Usando o IPsec, as conexões VPN L2TP/IPsec 
fornecem confidencialidade, integridade e autenticação de dados. 
Diferentemente do PPTP e SSTP, o L2TP/IPsec permite a autenticação da 
máquina na camada IPsec e a autenticação no nível do usuário na camada 
PPP. 
O SSTP só pode ser usado com computadores clientes executando o Windows 
em determinados Service Packs. Ao usar SSL, as conexões VPN SSTP 
fornecem confidencialidade, integridade e autenticação de dados. 
Todos os três tipos de túneis carregam quadros PPP em cima da pilha de 
protocolos de rede. Portanto, os recursos comuns do PPP, como esquemas de 
autenticação, negociação do Internet Protocol versão 4 (IPv4) e Internet 
Protocol versão 6 (IPV6) e NAP (Network Access Protection), permanecem os 
mesmos para os três tipos de túneis. 
Firewalls 
 
A capacidade de conectar qualquer computador, em qualquer lugar, a qualquer 
outro computador, em qualquer lugar, é uma moeda de duas faces. É muito 
cômodo para as pessoas navegarem pela Internet quando estão em casa. Para 
os gerentes de segurança das empresas, trata-se de um grande problema. 
Muitas empresas têm grandes quantidades de informações confidenciais on-
line, como segredos comerciais, planos de desenvolvimento de produtos, 
estratégias de marketing, análises financeiras, etc. A revelação dessas 
informações para um concorrente poderia ter terríveis consequências. 
Além do perigo das informações virem a público, também há o perigo do 
vazamento dessas informações dentro da empresa. Em particular, vírus, worms 
e outras pestes digitais podem burlar a segurança, destruir dados valiosos e 
consumir muito tempo dos administradores, que tentam eliminar a confusão 
causada por eles. Com frequência, eles são trazidos por funcionários 
descuidados. 
Em consequência disso, são necessários mecanismos para manter os bits 
inofensivos e descartar os maliciosos. Um dos métodos é usar o IPsec, que 
protege os dados em trânsito entre sites seguros. No entanto, o IPsec não faz 
nada para impedir as pestes digitais e os intrusos de invadirem a LAN da 
empresa. Para alcançar esse objetivo, precisamos examinar os firewalls. 
Um firewall é um sistemade segurança de rede que monitora e controla o 
tráfego de entrada e saída da rede com base em regras de segurança 
predeterminadas. Um firewall normalmente estabelece uma barreira entre uma 
rede interna confiável e uma rede externa não confiável, como a Internet. 
Os firewalls geralmente são categorizados como firewalls de rede ou firewalls 
baseados em host. Os firewalls de rede filtram o tráfego entre duas ou mais 
redes e são executados no hardware da rede. Os firewalls baseados em host 
são executados em computadores host e controlam o tráfego de rede dentro e 
fora dessas máquinas. 
Os firewalls são apenas uma adaptação moderna de uma antiga forma de 
segurança medieval, que é cavar um fosso profundo em torno do castelo. Esse 
recurso forçava todos aqueles que quisessem entrar ou sair do castelo a 
passar por uma única ponte levadiça, onde poderiam ser revistados por 
guardas. Nas redes, é possível usar o mesmo artifício. Uma empresa pode ter 
muitas LANs conectadas de forma arbitrária, mas todo o tráfego de saída ou de 
entrada da empresa é feito através de uma ponte levadiça eletrônica, o firewall, 
como mostra a Figura 7. 
 
Figura 16 - Firewall que consiste em dois filtros de pacotes e um gateway de aplicação 
O firewall, nessa configuração, tem dois componentes. Dois roteadores que 
filtram pacotes e um gateway de aplicação. Também existem configurações 
mais simples, mas a vantagem desse projeto é que cada pacote deve passar 
por dois filtros e um gateway de aplicação para sair ou entrar na rede. Não 
existem outras rotas. 
Cada filtro de pacotes é um roteador padrão equipado com algumas funções 
complementares, que permitem a inspeção de cada pacote de entrada ou de 
saída. Os pacotes que atenderem a algum critério serão remetidos 
normalmente, mas os que falharem no teste serão descartados. Na Figura 7, 
provavelmente o filtro de pacotes da LAN interna verificará os pacotes enviados 
e o da LAN externa conferirá os pacotes recebidos. Os pacotes que 
atravessam o primeiro obstáculo vão para o gateway de aplicação, onde serão 
submetidos a uma nova verificação. A colocação dos dois filtros de pacotes em 
diferentes LANs destina-se a assegurar que nenhum pacote entre ou saia sem 
passar pelo gateway de aplicação, pois não há outro caminho. Em geral, os 
filtros de pacotes são baseados em tabelas configuradas pelo administrador do 
sistema. Essas tabelas listam as origens e os destinos aceitáveis, as origens 
ou destinos bloqueados e as regras padrão que orientam o que deve ser feito 
com os pacotes recebidos de outras máquinas ou destinados a elas. 
No caso comum de uma configuração TCP/IP, uma origem ou destino consiste 
em uma porta e um endereço IP. As portas indicam qual é o serviço desejado. 
Por exemplo, a porta 23 do TCP é para telnet, a porta 79 é para finger e a porta 
119 é para notícias da usenet. Uma empresa poderia bloquear os pacotes 
recebidos em relação a todos os endereços IP combinados com uma dessas 
portas. Dessa forma, ninguém fora da empresa poderia estabelecer login via 
telnet ou procurar alguém usando o daemon Finger. O bloqueio de pacotes de 
saída é mais complicado porque, embora muitos sites adotem as convenções 
padrão para numeração de portas, eles não são obrigados a fazê-lo. Além 
disso, para alguns serviços importantes, como FTP, os números de portas são 
atribuídos dinamicamente. Além disso, embora o bloqueio das conexões TCP 
seja difícil, o bloqueio de pacotes UDP é ainda mais complicado, porque se 
sabe muito pouco, a priori, sobre o que eles farão. Muitos filtros de pacotes 
simplesmente não aceitam tráfego UDP. 
A segunda metade do mecanismo de firewall é o gateway de aplicação. Em vez 
de apenas examinar pacotes brutos, o gateway opera na camada de aplicação. 
Por exemplo, um gateway de correio eletrônico pode ser configurado de forma 
a examinar cada mensagem recebida ou enviada. O gateway toma a decisão 
de transmitir ou descartar cada mensagem, com base nos campos de 
cabeçalho, no tamanho da mensagem ou até mesmo em seu conteúdo, por 
exemplo, em uma instalação militar, a presença de palavras como "nuclear" ou 
"bomba" pode provocar algum tipo de ação especial. 
As instalações têm liberdade para instalar um ou mais gateways de aplicação 
destinados a aplicações específicas, mas não é incomum que organizações 
suspeitas permitam a entrada e a saída de mensagens de correio eletrônico e 
até usem a Web, mas proíbam tudo que seja muito arriscado. Combinada com 
a criptografia e a filtragem de pacotes, essa estratégia oferece um nível de 
segurança limitado ao custo de algumas inconveniências. 
Ainda que o firewall esteja perfeitamente configurado, ainda existem vários 
problemas de segurança. Por exemplo, se um firewall estiver configurado para 
permitir apenas a entrada de pacotes de redes específicas, por exemplo, outras 
fábricas da empresa, um intruso fora do firewall pode inserir falsos endereços 
de origem para ultrapassar essa verificação. Se um usuário interno quiser 
transportar documentos secretos para fora da empresa, ele poderá codificar ou 
até mesmo fotografar os documentos e transportar as fotografias como 
arquivos JPEG, que conseguirão passar por quaisquer filtros de palavras. Não 
discutimos nem mesmo o fato de que 70% de todos os ataques vêm de dentro 
do firewall, por exemplo, de funcionários insatisfeitos. 
Além disso, há toda uma classe de diferentes ataques com que os firewalls não 
podem lidar. A ideia básica por trás de um firewall é impedir a entrada de 
intrusos e a saída de dados secretos. Infelizmente, existem pessoas que não 
têm nada melhor para fazer do que tentar derrubar serviços ou sites. Para isso, 
eles enviam ao destino pacotes legítimos em grande quantidade, até o site 
entrar em colapso com a carga. Por exemplo, para incapacitar um site, um 
intruso pode enviar um pacote SYN do TCP para estabelecer uma conexão. 
Então, o site alocará um slot de tabela para a conexão e enviará um pacote 
SYN + ACK em resposta. Se o intruso não responder, o slot de tabela ficará 
retido por alguns segundos até o timeout. Se o intruso enviar milhares de 
solicitações de conexão, todas os slots de tabela serão preenchidos e 
nenhuma conexão legítima poderá passar. Os ataques em que o objetivo do 
intruso é desativar o destino em vez de roubar dados são chamados ataques 
de negação de serviço, em inglês Denial of Service (DoS). Em geral, os 
pacotes solicitados têm endereços de origem falsos, para que o intruso não 
possa ser rastreado com facilidade. 
Uma variante ainda pior é aquela em que o intruso já entrou em centenas de 
computadores em outros lugares do mundo, e depois comanda todos esses 
computadores em um ataque ao mesmo alvo ao mesmo tempo. Essa 
estratégia não apenas aumenta o poder de fogo do intruso, mas também reduz 
a chance de detecção, pois os pacotes estão vindo de um grande número de 
máquinas pertencentes a usuários insuspeitos. Um ataque desse tipo é 
chamado DDoS, de Distributed Denial of Service, e é muito difícil proteger-se 
contra ele. Ainda que a máquina atacada pode reconhecer rapidamente uma 
solicitação falsa, processar e descartar a solicitação é um processo que leva 
algum tempo e, se chegarem solicitações em número suficiente por segundo, a 
CPU passará todo seu tempo lidando com elas. 
 
Considerações finais 
 
Uma VPN é, como o próprio nome diz, uma rede de comunicação privada, 
sendo construída sobre uma rede de comunicações pública, está sendo mais 
comumente a Internet. Em uma rede pública, o tráfego de dados é feito por 
meio de protocolos padrões, que não são necessariamente seguros. Já ao 
fazer uso de um VPN, estabelece-se uma conexão segura e criptografada, que 
pode ser considerada como um túnel, entre o computador e o servidor operado 
pelo serviço que provê a VPN. 
As VPNs são costumeiramente usadas para conectar de forma segura filiais de 
uma organização que estãogeograficamente distantes, criando uma rede 
coesiva. Diversas organizações interligam suas bases operacionais por meio 
do uso de VPN. Outro caso de uso comum nesse cenário é de empresas 
terceirizadas que prestam algum tipo de suporte para essas organizações, 
onde faz-se necessário a conexão por meio de VPN para “estar” na mesma 
rede da organização em questão. 
Usuários individuais também se beneficiam de VPNs para prover segurança 
em conexões sem fio, para contornar restrições geográficas e de censura, ou 
para se conectar a servidores proxy com a finalidade de proteger a suas 
identidades e localizações. Um sistema de comunicação por VPN tem um custo 
de implementação e manutenção insignificantes, se comparados aos antigos 
sistemas de comunicação física, como por exemplo o frame relay, que tem um 
custo altíssimo e segurança questionável. Por essa razão, muitos sistemas de 
comunicação estão sendo substituídos por VPNs, que além do baixo custo, 
oferecem alta confiabilidade, disponibilidade e integridades dos dados 
trafegados. 
VPNs seguras usam protocolos de criptografia por encapsulamento, que 
proporcionam confidencialidade, integridade e autenticação, necessárias para 
garantir a privacidade das comunicações requeridas. Quando uma rede quer 
enviar dados para outra por meio da VPN, um protocolo, por exemplo o IPsec, 
faz o encapsulamento do quadro normal com o cabeçalho IP da rede local e 
adiciona o cabeçalho IP da Internet atribuída ao roteador, um cabeçalho de 
autenticação e o cabeçalho ESP, que proporciona integridade, autenticidade e 
criptografia para a área de dados do pacote. Entre os protocolos de 
encapsulamento que são normalmente aplicados em VPNs podemos citar o 
L2TP, SSTP, PPTP e IPsec, entre outras variações desses. Há vantagens e 
desvantagens ao escolher cada um deles. Quando implementados de maneira 
adequada, esses protocolos podem garantir comunicação segura por meio de 
redes inseguras. 
Em relação a firewalls, podemos resumir sua definição como sendo um 
dispositivo de rede que tem por objetivo aplicar uma política de segurança a um 
determinado ponto da rede. O termo, em inglês, faz alusão comparativa a 
função que este desempenha para evitar o alastramento de acessos nocivos 
dentro de uma rede de computadores a uma parede antichamas, que evita o 
alastramento de incêndios pelos andares e salas de um edifício. 
Os firewalls são normalmente associados a redes TCP/IP, podendo ser do tipo 
filtro de pacotes, proxy de aplicações, etc. Esse dispositivo de segurança existe 
na forma de software e hardware, sendo que a combinação de ambos é 
nomeada tecnicamente de appliance. A complexidade de instalação depende 
do tamanho da rede, da política de segurança, da quantidade de regras que 
controlam o fluxo de entrada e saída de informações e do grau de segurança 
desejado. 
Os filtros de pacotes, primeira classificação de firewalls a surgir no fim da 
década de 80, analisam individualmente os pacotes à medida que esses são 
transmitidos, verificando apenas o cabeçalho das camadas de rede e de 
transporte. As regras podem ser formadas indicando os endereços de rede, de 
origem e/ou destino, e as portas TCP/IP envolvidas na conexão. A principal 
desvantagem desse tipo de tecnologia para a segurança reside na falta de 
controle de estado do pacote, o que permite que agentes maliciosos possam 
produzir pacotes simulados, fora de contexto ou ainda para serem injetados em 
uma sessão válida. 
Atualmente os ataques passaram a se concentrar nas características e 
vulnerabilidades específicas de cada aplicação. Disso surge a necessidade de 
desenvolver um novo método que fosse capaz de analisar as particularidades 
de cada protocolo e tomar decisões que pudessem evitar ataques maliciosos 
contra uma rede. Nisso, entra o firewall de aplicação, mais comum nos dias 
atuais, surgindo como uma evolução do filtro de pacotes, visando proporcionar 
a segurança necessária para os padrões de usos modernos. 
A capacidade de suprir a deficiência dos modelos tradicionais e mapear todas 
as transações específicas que ocorrem na camada de aplicação Web 
proprietária e, também, de ser um terminador do tráfego SSL, podendo avaliar 
protocolos HTTPS, que originalmente passariam despercebidos ou não 
analisados por firewalls tradicionais, são as vantagens dessa classificação de 
firewall. Entretanto, por essas mesmas qualidades, esse tipo de firewall exige 
um grande poder computacional, geralmente traduzido para um grande custo 
de investimento. Além disso, ao interceptar aplicações Web e suas interações 
com o cliente, pode acabar por provocar alguma incompatibilidade no padrão 
de transações, exigindo um profundo trabalho de avaliação por parte dos 
implementadores. 
 
Referências 
 
Boudriga, Noureddine. Security of mobile communications. Auerbach 
Publications, 2009. 
Crawford, Douglas (1 de setembro de 2019). «The Best VPN Services for 
2019.». proprivacy.com 
Lewis, Mark. Comparing, designing, and deploying VPNs. Adobe Press, 2006. 
Mason, Andrew G., and Rick Foreword By-Stiffler. Cisco secure virtual private 
networks. Cisco Press, 2001. 
Oppliger, Rolf. "Internet security: firewalls and beyond." Communications of the 
ACM 40.5 (1997): 92-102. 
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR) 
13.4 (1981): 453-489. 
Yang, Yanyan, et al. "IPsec/VPN security policy correctness and assurance." 
Journal of High Speed Networks 15.3 (2006): 275-289 
 
 
 
 
 
 
 
 
 
 
Unidade IV 
 
Introdução 
 
Não é difícil projetar um sistema totalmente seguro em termos lógicos usando 
VPNs e firewalls, muito embora na prática é grande a possibilidade de 
vazamentos ocorrerem. Essa situação pode acontecer se algumas das 
máquinas forem sem fios e usarem comunicação de rádio, que passa pelo 
firewall em ambos os sentidos. O alcance das redes 802.11 frequentemente é 
de algumas centenas de metros, assim, qualquer pessoa que queira espionar 
uma empresa pode dirigir até o estacionamento dos funcionários pela manhã, 
deixar um notebook capaz de reconhecer sinais 802.11 dentro do carro para 
registrar tudo que ouvir e partir no final do dia. À tarde, o disco rígido estará 
repleto de valiosas informações. 
Grande parte do problema de segurança pode ter sua origem nos fabricantes 
de estações base sem fios, conhecidos como pontos de acesso, que tentam 
tornar seus produtos amigáveis para o usuário. Em geral, se o usuário retirar o 
dispositivo da caixa e o conectar à tomada da rede elétrica, ele começará a 
operar de imediato, quase sempre sem qualquer segurança, revelando 
segredos para qualquer um que estiver dentro do alcance de rádio. Se ele for 
conectado a uma rede Ethernet, todo tráfego dessa rede também aparecerá de 
repente no estacionamento. Por essa razão, não é preciso dizer que a 
segurança é ainda mais importante para sistemas sem fios que para sistemas 
fisicamente conectados. 
 
Segurança de redes 802.11 
 
O padrão 802.11 prescreve um protocolo de segurança do nível de enlace de 
dados, chamado WEP, do inglês Wired Equivalent Privacy, projetado para 
tornar a segurança de uma LAN sem fio tão boa quanto a de uma LAN 
fisicamente conectada. Tendo em vista que o padrão para LANs fisicamente 
conectadas é nenhuma segurança, é fácil alcançar esse objetivo, e a WEP o 
alcança, como veremos. 
Quando a segurança do 802.11 é ativada, cada estação tem uma chave 
secreta compartilhada com a estação base. A forma como as chaves são 
distribuídas não é especificada pelo padrão. Elas poderiam ser pré-carregadas 
pelo fabricante, trocadas com antecedência pela rede fisicamente conectada. 
Finalmente, a estação base ou máquina do usuário poderia escolher uma 
chave ao acaso e enviá-la à outra máquina pelo ar, codificada com a chave 
pública da outra máquina. Uma vez estabelecidas, em geral as chaves 
permanecem estáveis por meses ou anos. A criptografiada WEP utiliza uma 
cifra de fluxo baseada no algoritmo RC4. O RC4 foi projetado por Ronald 
Rivest e se manteve secreto até vazar e ser publicado na Internet em 1994. É 
quase impossível manter os algoritmos secretos, mesmo quando o objetivo é 
proteger a propriedade intelectual, em vez da segurança pela obscuridade, que 
não era o objetivo no caso do RC4. Na WEP, o RC4 gera um fluxo de chaves 
que sofre uma operação XOR com um texto simples para formar o texto 
cifrado. 
Cada carga útil de pacote é codificada com a utilização do método apresentado 
na Figura 1. Primeiro, a carga útil é verificada usando-se o polinômio CRC-32, 
e o total de verificação é anexado à carga útil para formar o texto simples que 
será usado no algoritmo de criptografia. Em seguida, esse texto simples sofre 
uma operação XOR com um bloco de fluxo de chaves de igual tamanho. O 
resultado é o texto cifrado. O IV usado para iniciar o RC4 é enviado com o texto 
cifrado. Quando o receptor obtém o pacote, ele extrai a carga útil criptografada, 
gera o fluxo de chaves a partir da chave secreta compartilhada e o IV que 
acabou de receber, e depois efetua uma operação XOR do fluxo de chaves 
com a carga útil para recuperar o texto simples. Em seguida, ele pode conferir 
o total de verificação para ver se o pacote foi adulterado. 
Embora essa abordagem pareça boa à primeira vista, um método para rompê-
la já foi publicado. Em primeiro lugar, um número surpreendentemente grande 
de instalações utiliza a mesma chave compartilhada para todos os usuários e, 
nesse caso, cada usuário pode ler todo o tráfego dos outros usuários. Sem 
dúvida, isso equivale à Ethernet, mas não é muito seguro. 
Porém, mesmo que cada usuário tenha uma chave distinta, a WEP ainda pode 
ser atacada. Como as chaves geralmente são estáveis por longos períodos, o 
padrão WEP recomenda, mas não obriga, que o IV seja alterado em cada 
pacote para evitar o ataque de reutilização de fluxo de chaves. Infelizmente, 
muitos cartões 802.11 para notebooks redefinem o IV como 0 quando o cartão 
é inserido no computador e incrementam o valor em uma unidade a cada 
pacote enviado. Como as pessoas com frequência removem e reinserem esses 
cartões, pacotes com baixos valores de IV são comuns. Se Z puder coletar 
vários pacotes enviados pelo mesmo usuário com o mesmo valor de IV, que é 
enviado em texto simples juntamente com cada pacote, ela poderá calcular o 
XOR de dois valores de texto simples e provavelmente violar a cifra. 
 
Figura 17 - Codificação de pacotes usando a WEP 
No entanto, ainda que o cartão 802.11 escolha um IV ao acaso para cada 
pacote, os IVs só têm 24 bits; portanto, depois que forem enviados 224 
pacotes, eles terão de ser reutilizados. Pior ainda, com os IVs escolhidos ao 
acaso, o número esperado de pacotes que têm de ser enviados antes de um 
mesmo IV ser usado duas vezes é cerca de 5000. Desse modo, se escutar 
durante alguns minutos, Z quase certamente conseguirá captar dois pacotes 
com o mesmo IV e a mesma chave. Efetuando o XOR dos textos cifrados, ele 
poderá obter o XOR dos textos simples. Essa sequência de bits pode ser 
atacada de várias maneiras para recuperar os textos simples. Com um pouco 
mais trabalho, o fluxo de chaves para esse IV também poderá ser obtido. 
Assim, Z será capaz de continuar a trabalhar assim por algum tempo e de 
compilar um dicionário de fluxos de chaves para diversos IVs. Depois que um 
IV for rompido, todos os pacotes enviados com ele no futuro, mas também no 
passado, poderão ser totalmente decodificados. 
Além disso, como os IVs são usados ao acaso, depois que Z tiver determinado 
um par (IV, fluxo de chaves) válido, ela poderá usar esse par para gerar todos 
os pacotes que quiser e, desse modo, interferir ativamente com a 
comunicação. Na teoria, um receptor poderia notar que grandes números de 
pacotes surgiram de repente, todos com o mesmo IV, mas (i) a WEP permite 
isso e (ii) ninguém se preocupa em verificar esse detalhe. Finalmente, o CRC 
não compensa muito, pois é possível para Z alterar a carga útil e fazer a 
mudança correspondente no CRC, sem sequer remover a codificação. Em 
suma, romper a segurança do 802.11 é bastante simples, e ainda nem listamos 
todos os ataques conhecidos. 
No início dos anos 2000 foi publicado outro ataque devastador sobre a WEP. 
Esse ataque encontrou deficiências criptográficas no próprio RC4. Os 
pesquisadores descobriram que muitas chaves têm a propriedade de 
possibilitarem a derivação de alguns bits da chave a partir do fluxo de chaves. 
Se esse ataque for executado repetidamente, será possível derivar a chave 
inteira com pouco esforço. Sendo um tanto inclinados aos aspectos teóricos, os 
pesquisadores na realidade não tentaram invadir nenhuma LAN 802.11. 
Quando um estudante do curso de verão e dois pesquisadores da AT&T Labs 
tomaram conhecimento desse ataque, eles decidiram experimentá-lo na 
prática. Em uma semana eles romperam sua primeira chave de 128 bits em 
uma LAN 802.11 de produção, e a maior parte da semana foi dedicada à busca 
do cartão 802.11 de preço mais baixo que puderam encontrar, obter permissão 
para comprá-lo, e depois instalar e testar o cartão. A programação demorou 
apenas duas horas. 
Quando anunciaram seus resultados, a CNN divulgou uma reportagem 
intitulada "Ataque com cartão comercial rompe criptografia sem fio", e alguns 
gurus da indústria tentaram minimizar seus resultados dizendo que o que eles 
tinham feito era trivial. Embora esse comentário seja tecnicamente verdadeiro, 
permanece o fato de que os esforços combinados dessas duas equipes 
demonstraram uma falha fatal na WEP e no 802.11. 
Pouco tempo depois, o IEEE respondeu ao fato de a WEP ter sido 
completamente violada emitindo uma breve declaração de seis, resumidos 
abaixo: 
1. Nós avisamos que a segurança da WEP não era melhor que a da 
Ethernet; 
2. Uma ameaça muito maior é esquecer de ativar a segurança; 
3. Tente usar algum outro tipo de sistema de segurança, por exemplo, a 
segurança da camada de transporte; 
4. A próxima versão, 802.11i, terá melhores recursos de segurança; 
5. No futuro, a certificação obrigará a utilização do 802.11i; 
6. Tentaremos descobrir o que fazer até a chegada do 802.11i. 
Os detalhes dessa história permitem enfatizar que não é fácil implementar 
recursos de segurança, até mesmo para especialistas. 
Segurança do WAP 2.0 
 
O fórum WAP aprendeu a lição por utilizar uma pilha de protocolos não 
padronizada no WAP 1.0. Grande parte do WAP 2.0 utiliza protocolos padrão 
em todas as camadas. A segurança não é exceção. Tendo em vista que ele se 
baseia no IP, o WAP admite o uso total do IPsec na camada de rede. Na 
camada de transporte, as conexões TCP podem ser protegidas pelo TLS, um 
padrão da IET. Em um nível ainda mais alto, ele utiliza a autenticação de 
clientes HTTP, definida na RFC 2617. As bibliotecas de criptografia da camada 
de aplicação proporcionam controle de integridade e não repúdio. De modo 
geral, como o WAP 2.0 se baseia em padrões conhecidos, existe uma chance 
de que seus serviços de segurança, em particular, privacidade, autenticação, 
controle de integridade e não repúdio possam ser melhores que a segurança 
do 802.11 e do Bluetooth. 
 
Segurança do Bluetooth 
 
O Bluetooth tem um alcance bem mais curto que o 802.11, e, portanto, não 
pode ser atacado a partir do estacionamento, embora a segurança ainda seja 
uma questão importante nesse caso. Por exemplo, imagine que o computador 
de X esteja equipado com um teclado Bluetooth sem fio. Na ausência de 
segurança, se Z estiver no escritório ao lado, ela poderá ler tudo X digitou, 
inclusive toda sua correspondência enviada. Ela também poderá captar tudo 
que o computador de X enviar à impressora Bluetooth mais próxima, por 
exemplo, as mensagens de correio eletrônico recebidas e os relatórios 
confidenciais. Felizmente, o Bluetooth tem um esquema de segurançaelaborado para tentar anular essas vulnerabilidades. 
O Bluetooth tem três modos de segurança, variando desde nenhuma 
segurança até total criptografia de dados e controle de integridade. Como 
ocorre com o 802.11, se a segurança for desativada, o padrão, não haverá 
nenhuma segurança. A maioria dos usuários mantém a segurança desativada 
até ocorrer uma séria violação, depois eles a ativam. Isso equivale a comprar 
um cadeado depois que a bicicleta foi roubada. 
O Bluetooth fornece segurança em várias camadas. Na camada física, os 
saltos de frequência oferecem um nível mínimo de segurança, mas, como 
qualquer dispositivo Bluetooth que se desloca em uma piconet, uma rede ad 
hoc, tem de ser informado da sequência de saltos de frequência, é óbvio que 
essa frequência não é um segredo. A segurança real começa quando o 
escravo recém-chegado solicita um canal ao mestre. Supõem-se que os dois 
dispositivos compartilham uma chave secreta configurada com antecedência. 
Em alguns casos, ambos são fisicamente conectados pelo fabricante, por 
exemplo, um fone de ouvido e um telefone celular vendidos como uma 
unidade. Em outros casos, um dispositivo, por exemplo, o fone de ouvido, tem 
uma chave embutida no código e o usuário tem de digitar essa chave no outro 
dispositivo, por exemplo, o telefone celular, como n número decimal. Essas 
chaves compartilhadas são chamadas chaves de passagem. 
Para estabelecer um canal, o escravo e o mestre verificam se a outra máquina 
conhece a chave de passagem. Nesse caso, eles negociam para ver se esse 
canal será criptografado, terá sua integridade controlada ou ambos. Em 
seguida, eles selecionam uma chave de sessão aleatória de 128 bits, na qual 
alguns bits podem ser públicos. A razão para permitir o enfraquecimento dessa 
chave é obedecer a algumas restrições do governo de vários países, criadas 
para impedir a exportação ou o uso de chaves mais longas do que o governo 
pode violar. 
A criptografia utiliza uma cifra de fluxo chamada E0, o controle de integridade 
emprega o SAFER+. Ambos são cifras de blocos de chave simétrica 
tradicional. O SAFER+ foi submetido aos rígidos testes de aprovação do AES, 
mas foi eliminado na primeira rodada, porque era mais lento que os outros 
candidatos. O Bluetooth ficou pronto antes de ser escolhida a cifra do AES, 
caso contrário, é mais provável que ele tivesse usado o Rijndael. Infelizmente, 
o próprio E0, como o RC4, pode ter deficiências fatais. Sua semelhança com a 
cifra A5/1, cuja falha espetacular compromete todo o tráfego de telefones GSM, 
causa preocupação. Às vezes, é espantoso perceber que, no eterno jogo de 
gato e rato entre criptógrafos e criptoanalistas, os criptoanalistas 
frequentemente sejam os vencedores. 
Outra questão de segurança é que o Bluetooth efetua a autenticação apenas 
de dispositivos, não de usuários, assim, o furto de um dispositivo Bluetooth 
pode dar ao ladrão acesso às finanças e às outras contas do usuário. No 
entanto, o Bluetooth também implementa segurança nas camadas superiores. 
Portanto, até mesmo na eventualidade de uma violação da segurança no nível 
de enlace, deve restar alguma segurança, especialmente para aplicações que 
exigem a digitação de um código PIN em algum tipo de teclado para completar 
a transação. 
 
Protocolos de autenticação 
 
A autenticação é a técnica através da qual um processo confirma que seu 
parceiro na comunicação é quem deve ser e não um impostor. Confirmar a 
identidade de um processo remoto, face à presença de um intruso ativo mal-
intencionado, é surpreendentemente difícil e exige protocolos complexos 
baseados no uso da criptografia. Por outro lado, algumas pessoas confundem 
autorização com autenticação. A autenticação lida com a questão de 
determinar se você está ou não se comunicando com um processo específico. 
A autorização se preocupa com o que esse processo tem permissão para 
fazer. Por exemplo, um processo cliente entra em contato com um servidor de 
arquivos e afirma: "Sou o processo do A e quero excluir o arquivo 
receitadebolo.txt". Do ponto de vista do servidor de arquivos, as seguintes 
perguntas devem ser respondidas: i. Esse processo é realmente de A 
(autenticação)? ii. A tem permissão para excluir receitadebolo.txt (autorização)? 
Somente depois que ambas as perguntas forem respondidas afirmativamente 
sem qualquer ambiguidade, a ação solicitada poderá ser executada. Na 
verdade, a primeira pergunta é a mais importante. Depois que o servidor de 
arquivos sabe com quem está se comunicando, verificar a autorização é 
simplesmente uma questão de pesquisar entradas de tabelas ou bancos de 
dados locais. Por essa razão, iremos nos concentrar na questão da 
autenticação. 
O modelo genérico que todos os protocolos de autenticação utilizam é descrito 
a seguir. X começa enviando uma mensagem para Y ou para um KDC, Key 
Distribution Center, no qual confia e que sempre é honesto. Acontecem muitas 
outras trocas de mensagens em diferentes sentidos. À medida que essas 
mensagens são enviadas, uma intrusa mal-intencionada, Z, pode interceptar, 
modificar ou reproduzir essas mensagens a fim de enganar X e Y, ou 
simplesmente para atrapalhar. 
Todavia, quando a execução do protocolo tiver sido concluída, X terá certeza 
de que está se comunicando com Y e vice-versa. Além disso, na maioria dos 
protocolos, os dois também terão estabelecido uma chave de sessão secreta 
que deverá ser usada durante a conversação. Na prática, por motivos de 
desempenho, todo o tráfego de dados é criptografado utilizando-se a 
criptografia de chave simétrica, em geral, AES ou DES triplo, embora a 
criptografia de chave pública seja extensamente usada nos próprios protocolos 
de autenticação e para estabelecer a chave de sessão. 
O objetivo de se utilizar uma nova chave de sessão escolhida aleatoriamente 
para cada nova conexão é minimizar o volume de tráfego provocado pelo envio 
das chaves secretas ou públicas dos usuários, reduzir o volume de texto 
cifrado que um intruso pode obter e minimizar os danos causados, caso haja 
uma pane em um processo e seu dump de memória caia em mãos erradas. É 
muito provável que a única chave presente seja a chave de sessão. Todas as 
chaves permanentes deverão ser cuidadosamente zeradas depois que a 
sessão for estabelecida. 
Autenticação baseada em uma chave secreta compartilhada 
 
Para o protocolo de autenticação aqui discutido, vamos supor que X e Y já 
compartilham uma chave secreta, Kab. Essa chave compartilhada pode ter sido 
definida pelos dois em uma conversa telefônica ou pessoalmente, mas não na 
rede, que apresenta problemas de segurança. 
Esse protocolo se baseia em um princípio encontrado em muitos protocolos de 
autenticação. Um dos lados envia um número aleatório ao outro, que em 
seguida o transforma de algum modo especial e retorna o resultado. Tais 
protocolos são chamados protocolos de desafio-resposta. Nesse e nos 
próximos protocolos de autenticação, será usada a seguinte notação: 
 A e B são as identidades de X e Y; 
 Ri’s são desafios, sendo que o caractere subscrito identifica o 
desafiante; 
 Ki são chaves, onde i indica o proprietário; 
 Ks é a chave da sessão. 
A sequência de mensagens do primeiro protocolo de autenticação de chave 
compartilhada é mostrada na Figura 2. Na mensagem 1, X envia sua 
identidade A para Y, de uma forma que Y possa entender. Entretanto, Y não 
tem como saber se essa mensagem veio de X ou de Z, portanto, ele escolhe 
um desafio, um número aleatório muito extenso, Rb, e o envia de volta a "X" 
como sua mensagem número 2 em texto simples. Os números aleatórios 
usados apenas uma vez em protocolos de desafio-resposta como esse são 
chamados nonces. Em seguida, X criptografa a mensagem com a chave que 
compartilha com Y e envia o texto cifrado, Kab(Rb), de volta na mensagem 3. 
Quando vê a mensagem, Y fica sabendo imediatamente que ela veio de X, pois 
Z nãoconhece Kab e, portanto, não poderia tê-la gerado. Além disso, como o 
número Rb foi escolhido aleatoriamente a partir de um espaço muito extenso, 
por exemplo números aleatórios de 128 bits, é muito improvável que Z tenha 
visto Rb e sua resposta em uma sessão anterior. É igualmente improvável que 
ela conseguisse adivinhar a resposta correta a qualquer desafio. 
 
Figura 18 - Autenticação bidirecional utilizando protocolo de desafio-resposta 
A essa altura, Y tem certeza de que está se comunicando com X, mas X não 
tem certeza de nada, pois sabe que Z pode ter interceptado a mensagem 1 e 
enviado Rb como resposta. Para descobrir com quem está se comunicando, X 
seleciona um número aleatório, Ra, e envia a Y como texto simples, na 
mensagem 4. Quando Y responde com Kab(Ra), X fica sabendo que está se 
comunicando com Y. Se eles quiserem estabelecer uma chave de sessão 
agora, X poderá selecionar uma, Ks, e enviá-la a Y criptografada com Kab. 
O protocolo da Figura 2 contém cinco mensagens. Veremos se é possível 
eliminar algumas delas. Uma abordagem é ilustrada na Figura 3. Nessa figura, 
X inicia o protocolo de desafio-resposta em vez de esperar que Y o faça. Da 
mesma forma, enquanto está respondendo ao desafio de X, Y envia o dele. O 
protocolo inteiro pode ser reduzido a três mensagens, em vez de cinco. 
 
Figura 19 - Protocolo de autenticação bidirecional abreviado 
Porém, devemos contemplar se esse novo protocolo representa um 
aperfeiçoamento em relação ao original. Em um certo sentido, sim, pois agora 
o protocolo está mais curto. Porém, agora ele também está errado. Sob 
determinadas circunstâncias, Z é capaz de enganar esse protocolo utilizando o 
método conhecido como ataque por reflexão. Especificamente, Z poderá 
rompê-lo se for possível abrir várias sessões com Y ao mesmo tempo. Por 
exemplo, essa situação seria verdadeira se Y fosse um banco e estivesse 
preparado para aceitar muitas conexões simultâneas enviadas por caixas 
eletrônicos ao mesmo tempo. 
O ataque por reflexão de Z é mostrado na Figura 4. Ele começa com Z 
afirmando ser X e enviando Rt. Y responde, como sempre, com seu próprio 
desafio, Rb. Agora Z tem alguns problemas. Ela não conhece Kab(Rb). 
 
Figura 20 - Ataque por reflexão 
Ela pode abrir uma outra sessão com a mensagem 3, fornecendo o Rb extraído 
da mensagem 2 como seu desafio. Y o criptografa e envia Kab(Rb) na 
mensagem 4. As mensagens da segunda sessão estão sombreadas, a fim de 
destacá-las. Agora, Z tem as informações que faltavam e, portanto, pode 
concluir a primeira sessão e abandonar a segunda. Nesse momento, Y está 
convencido de que Z é X e, quando ela pede o saldo da conta, ele o informa 
sem maiores perguntas. Em seguida, quando Z pede que Y transfira todo o 
dinheiro para uma conta secreta, ele não hesita em fazê-lo. 
Projetar um protocolo de autenticação correto é mais difícil do que parece. Com 
frequência, quatro regras podem ajudar nesse caso. São elas: 
1. Fazer com que o transmissor prove quem é antes do receptor 
responder. Nesse caso, Y revela informações valiosas antes de Z 
fornecer alguma prova de quem é ela; 
2. Fazer com que o transmissor e o receptor utilizem chaves específicas 
para provarem quem são, mesmo que isso signifique ter duas chaves 
compartilhadas, Kab e K'ab; 
3. Fazer com que o transmissor e o receptor extraiam seus desafios de 
conjuntos distintos. Por exemplo, o transmissor deve usar números 
pares e o transmissor deve usar números ímpares; 
4. Tornar o protocolo resistente a ataques que envolvam uma segunda 
sessão paralela, no qual as informações obtidas em uma sessão sejam 
usadas em uma sessão diferente. 
Se até mesmo uma dessas regras for violada, isso significa que o protocolo 
poderá ser violado com frequência. Nesse caso, todas as quatro regras foram 
violadas, com consequências desastrosas. 
Voltando a analisar a Figura 2, devemos questionar se é possível garantir que 
esse protocolo não está sujeito a um ataque por reflexão. Essa é uma questão 
bastante sutil, dependendo de alguns fatores. Z foi capaz de violar o protocolo 
usando um ataque por reflexão, porque foi possível abrir uma segunda sessão 
com Y e enganá-lo, respondendo a suas próprias perguntas. O que aconteceria 
se X fosse um computador de uso geral que também aceitasse várias sessões, 
em vez de ser uma pessoa diante de um computador. Vejamos o que Z pode 
fazer nesse caso. 
Para ver como funciona o ataque de Z, utilizaremos a Figura 5. X começa 
anunciando sua identidade na mensagem 1. Z intercepta essa mensagem e 
inicia sua própria sessão com a mensagem 2, afirmando ser Y. Novamente 
sombreamos as mensagens da sessão 2. X responde à mensagem 2 com a 
mensagem 3, dizendo: "Você afirma ser Y? Então, prove". Nesse momento Z 
não tem saída, porque não pode provar ser Y. 
 
Figura 21 - Ataque por reflexão no protocolo da Figura 2 
Quais são as opções de Z? Ela volta para a primeira sessão, onde é sua vez 
de enviar um desafio, e transmite a Ra que obteve na mensagem 3. X 
responde na mensagem 5 e, desse modo, fornece a Z as informações de que 
ela precisa para enviar a mensagem 6 na sessão 2. Nesse momento, Z está 
confortável, porque conseguiu responder com sucesso ao desafio de X na 
sessão 2. Agora ela pode cancelar a sessão 1, transmitir qualquer número 
antigo para o restante da sessão 2, e terá uma sessão autenticada com X na 
sessão 2. 
Contudo, Z pretende causar ainda mais danos. Em vez de enviar qualquer 
número antigo para concluir a sessão 2, ela espera até X enviar a mensagem 
7, o desafio de X para a sessão 1. Aqui Z não sabe como responder, e, 
portanto, utiliza outra vez o ataque por reflexão, devolvendo Ra 2 como a 
mensagem 8. X codifica Ra 2 de maneira conveniente na mensagem 9. Agora, 
Z volta para a sessão 1 e envia a X, na mensagem 10, o número que ela 
deseja, cuidadosamente copiado do número que a própria X enviou na 
mensagem 9. Nesse momento, Z tem duas sessões completamente 
autenticadas com X. 
Esse ataque tem um resultado um pouco diferente do ataque no protocolo de 
três mensagens, ilustrado na Figura 4. Dessa vez, Z tem duas conexões 
autenticadas com X. No exemplo anterior, ela tinha uma conexão autenticada 
com Y. Mais uma vez, se aplicássemos todas as regras gerais de protocolos de 
autenticação discutidas antes, esse ataque poderia ter sido interrompido. É 
possível encontrar descrições detalhadas desses tipos de ataques e de como 
frustrá-los em estudos acadêmicos, assim como outros que mostram como é 
possível construir de forma sistemática protocolos que comprovadamente são 
corretos. Porém, mesmo o mais simples desses protocolos é um tanto 
complicado, portanto, mostraremos agora uma classe diferente de protocolos 
que também funcionam. 
O protocolo de autenticação é mostrado na Figura 6. X começa enviando a Y 
um nonce Ra como mensagem 1. Y responde selecionando seu próprio nonce, 
Rb, e devolvendo-o juntamente com um HMAC. Em criptografia, um HMAC, ou 
código de autenticação de mensagem baseado em hash, é um tipo específico 
de código de autenticação de mensagens que envolve uma função hash 
criptográfica e uma chave criptográfica secreta. O HMAC é formado com o 
objetivo de construir uma estrutura de dados que consiste no nonce de X, no 
nonce de Y, em suas identidades e na chave secreta compartilhada, Kab. 
Esses dados estruturados passam então por um hash no HMAC, por exemplo 
usando SHA-1. Quando receber a mensagem 2, X terá Ra, que ela própria 
escolheu, Rb, que chegará sob a forma de texto simples, as duas identidades e 
a chave secreta Kab, conhecida desde o início, e depois ela mesma poderá 
calcular o HMAC. Se este corresponder ao HMAC da mensagem, ela saberá 
que está se comunicando com Y, porque Z não conhece Kab e, desse modo, 
não terá como saber qual HMAC enviar. X responde a Y com um HMAC 
contendo apenas os dois nonces. 
 
Figura 22 - Autenticação usando HMACsNão é possível para Z subverter de algum modo esse protocolo, porque ela não 
é capaz de forçar qualquer das partes a codificar ou fazer o hash de um valor 
de sua escolha, como aconteceu na Figura 4. Ambos os HMACs incluem 
valores escolhidos pela parte transmissora, algo que Z não pode controlar. 
Utilizar HMACs não é o único meio de se empregar essa ideia. Um esquema 
alternativo usado com frequência em vez de calcular o HMAC sobre uma série 
de itens é codificar os itens sequencialmente usando o encadeamento de 
blocos de cifras. 
Autenticação com a criptografia de chave pública 
 
Também é possível fazer uma autenticação mútua através do uso da 
criptografia de chave pública. Para começar, X precisa da chave pública de Y. 
Se existir uma PKI, Public Key Infrastructure, com o servidor de diretórios que 
entrega certificados para chaves públicas, X poderá solicitar o certificado de Y, 
como mostra a Figura 7 na mensagem 1. A resposta na mensagem 2 é um 
certificado X.509 que contém a chave pública de Y. Quando X verifica que a 
assinatura está correta, ela envia a Y uma mensagem contendo sua identidade 
e um nonce. 
 
Figura 23 - Autenticação mútua com a utilização de criptografia de chave pública 
Quando recebe essa mensagem, Y não tem certeza se ela veio de X ou de Z, 
mas continua e pede ao servidor de diretórios a chave pública de X, na 
mensagem 4, e logo a recebe, na mensagem 5. Em seguida, ele envia a X uma 
mensagem contendo o Ra de X, seu próprio nonce, Rb, e uma chave de 
sessão sugerida, Ks, como a mensagem 6. 
Quando recebe a mensagem 6, X a descriptografa usando sua própria chave 
privada. Ao ver Ra na mensagem, X pode ficar tranquila. A mensagem deve ter 
vindo de Y, pois Z não tem como determinar Ra. Além disso, a mensagem 
deve ser nova, e não uma repetição, pois ela acabou de enviar Ra à Y. X 
concorda com a sessão retornando a mensagem 7. Quando vê Rb 
criptografada com a chave de sessão que acabou de gerar, Y fica sabendo que 
X recebeu a mensagem 6 e confirmou Ra. 
Não é possível para Z subverter esse protocolo. Ela pode falsificar a 
mensagem 3 e enganar Y fazendo-o pensar que ela é X, mas X verá um Ra 
que não enviou e não prosseguirá com a transmissão. Z não poderá forjar a 
mensagem 7 de forma convincente, pois não conhece os valores de Rb e de 
Kb e não pode determiná-los sem a chave privada de X. 
 
Considerações finais 
 
A segurança de rede envolve a autorização de acesso aos dados de uma rede, 
os quais são controlados pelo administrador da rede. Para isso, é preciso que o 
administrador proporcione políticas para prevenir e monitorar o acesso não 
autorizado, uso incorreto, modificação ou negação da rede e dos seus recursos 
associados. Um dos principais pontos da segurança de rede, e o primeiro 
passo na escala de medidas que são utilizadas, é a autenticação do usuário. 
Em redes sem fio, a segurança é um ponto fraco, visto que o sinal se propaga 
pelo ar em todas as direções e pode ser captado a distâncias de centenas de 
metros utilizando um dispositivo com antenas amplificadas. Isso torna as redes 
sem fio bastante suscetíveis a interceptações. 
O protocolo WEP visa fornecer o mesmo nível de privacidade de uma rede 
cabeada a redes sem fio. É um protocolo de segurança baseado no método de 
criptografia RC4, que usa criptografia de 64 bits ou 128 bits. Qualquer roteador 
sem fio suporta a criptografia de 64 bits, mas nem todos suportam a de 128 
bits. Além da criptografia, o WEP também utiliza um procedimento de 
checagem de redundância cíclica no padrão CRC-32, utilizado para verificar a 
integridade dos pacotes de dados. O WEP não protege a conexão por 
completo, somente o pacote de dados. O protocolo não é totalmente seguro, 
visto que já existem aplicações capazes de quebrar as chaves de criptografia, 
desde que a rede seja monitorada por tempo suficiente. 
O protocolo WPA foi elaborado para contornar os problemas de segurança do 
WEP. O WPA possui um protocolo denominado Temporal Key Integrity 
Protocol com um vetor de inicialização de 48 bits e uma melhor criptografia de 
128 bits. Com o uso desse protocolo a chave é alterada em cada pacote e 
sincronizada entre o cliente e o ponto de acesso, também faz uso de 
autenticação do usuário por um servidor central. O WPA 2.0 apresenta uma 
melhoria do protocolo original, ao utilizar o algoritmo de encriptação 
denominado Advanced Encryption Standard (AES). 
Em relação aos protocolos de autenticação, a criptografia de chave pública usa 
pares de chaves, sendo uma chave pública, que pode ser amplamente 
disseminada, e uma chave privada, que é conhecida apenas pelo proprietário. 
Isso proporciona duas funções, a autenticação, onde a chave pública verifica 
que um portador da chave privada emparelhada enviou a mensagem, e 
encriptação, onde apenas o portador da chave privada emparelhada pode 
decriptar a mensagem encriptada com a chave pública. 
Para ser prática, a geração de uma chave pública e privada deve ser 
computacionalmente econômica. A força de um sistema de criptografia de 
chave pública depende do esforço computacional necessário para encontrar a 
chave privada de sua chave pública emparelhada. Segurança efetivar requer 
apenas manter a chave privada. A chave pública pode ser distribuída 
abertamente sem comprometer a segurança. 
No caso da chave secreta compartilhada, a criptografia é baseada em uma 
mesma chave. Essa chave representa um segredo compartilhado entre duas 
ou mais partes. Este requisito de que ambas as partes possuam acesso a 
mesma chave secreta é uma das principais desvantagens desse tipo de 
criptografia em comparação com a criptografia de chave pública. 
 
Referências 
 
Biryukov, Alex, Adi Shamir, and David Wagner. "Real Time Cryptanalysis of 
A5/1 on a PC." International Workshop on Fast Software Encryption. Springer, 
Berlin, Heidelberg, 2000. 
Borisov, Nikita, Ian Goldberg, and David Wagner. "Intercepting mobile 
communications: the insecurity of 802.11." Proceedings of the 7th annual 
international conference on Mobile computing and networking. ACM, 2001. 
Delfs, H., and H. Knebl. "Introduction to Cryptography Principles and 
Applications (2007)." 
Fluhrer, Scott, Itsik Mantin, and Adi Shamir. "Weaknesses in the key scheduling 
algorithm of RC4." International Workshop on Selected Areas in Cryptography. 
Springer, Berlin, Heidelberg, 2001. 
Jakobsson, Markus, and Susanne Wetzel. "Security weaknesses in Bluetooth." 
Cryptographers’ Track at the RSA Conference. Springer, Berlin, Heidelberg, 
2001. 
Ohrtman, Franklin D., Konrad Roeder, and Wi-Fi Handbook. "Building 802.11 b 
Wireless Networks." New York (2003). 
Stallings, William. Cryptography and network security: principles and practice. 
Upper Saddle River: Pearson, 2017. 
Stubblefield, Adam, John Ioannidis, and Aviel D. Rubin. "Using the Fluhrer, 
Mantin, and Shamir Attack to Break WEP." NDSS. 2002. 
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR) 
13.4 (1981): 453-489. 
 
 
 
 
 
 
 
 
 
 
 
 
Unidade V 
 
Qualidade de Serviço 
 
Qualidade de serviço (QoS) é a descrição ou medida do desempenho geral de 
um serviço, como uma rede de telefonia ou computador, um serviço de 
computação em nuvem, particularmente o desempenho observado pelos 
usuários da rede. Para medir quantitativamente a qualidade do serviço, vários 
aspectos relacionados ao serviço de rede são frequentemente considerados, 
como perda de pacotes, taxa de bits, taxa de transferência, atraso de 
transmissão, disponibilidade, jitter, etc. No campo das redes de computadores 
e de outras redes de telecomunicações comutadas por pacotes, a qualidade do 
serviço refere-se à priorização do tráfego e aos mecanismos de controle de 
reserva de recursos, em vez da qualidade de serviço alcançada. 
Qualidade de serviço é a capacidade de fornecer prioridade diferente para 
diferentes aplicações, usuários ou fluxosde dados, ou para garantir um certo 
nível de desempenho a um fluxo de dados. A qualidade do serviço é 
particularmente importante para o transporte de tráfego com requisitos 
especiais. Em particular, os desenvolvedores introduziram a tecnologia VoIP 
para permitir que as redes de computadores se tornem tão úteis quanto as 
redes telefônicas para conversas em áudio, além de oferecer suporte a novas 
aplicações com requisitos de desempenho de rede ainda mais rigorosos. Com 
o crescimento da multimídia em rede, frequentemente, medidas ad hoc 
projetadas para reduzir o congestionamento e melhorar o desempenho das 
redes, não são suficientes. Há necessidade de empreender tentativas sérias 
para garantir a qualidade de serviço por meio do projeto de redes e protocolos. 
Requisitos 
 
Uma sequência de pacotes desde uma origem até um destino é chamada fluxo. 
Em uma rede orientada a conexões, todos os pacotes que pertencem a um 
fluxo seguem a mesma rota, em uma rede sem conexões, eles podem seguir 
rotas diferentes. As necessidades de cada fluxo podem ser caracterizadas por 
quatro parâmetros principais: confiabilidade, retardo, flutuação e largura de 
banda. Juntos, esses parâmetros definem a QoS que o fluxo exige. Várias 
aplicações comuns e a severidade de seus requisitos estão listadas na Figura 
1. 
 
Figura 24 - Rigidez dos requisitos de qualidade de serviço 
As quatro primeiras aplicações têm requisitos estritos de confiabilidade. 
Nenhum bit pode ser entregue de forma incorreta. Em geral, esse objetivo é 
alcançado calculando-se o total de verificação de cada pacote e conferindo-se 
o total de verificação no destino. Se um pacote for danificado em trânsito, ele 
não será confirmado e será retransmitido mais tarde. Essa estratégia 
proporciona alta confiabilidade. As quatro últimas aplicações, áudio/vídeo, 
podem tolerar erros, e assim nenhum total de verificação é calculado ou 
conferido. 
As aplicações de transferência de arquivos, incluindo correio eletrônico e vídeo, 
não são sensíveis ao retardo. Se todos os pacotes estiverem uniformemente 
atrasados alguns segundos, não haverá nenhum dano. Aplicações interativas, 
como navegação na Web e login remoto, são mais sensíveis ao retardo. 
Aplicações de tempo real, como telefonia e videoconferência, têm requisitos 
estritos de retardo. Se todas as palavras em uma ligação telefônica forem 
retardas exatamente 2,000 segundos, os usuários irão considerar a conexão 
inaceitável. Por outro lado, a reprodução de arquivos de áudio ou vídeo de um 
servidor não exige baixo retardo. 
As três primeiras aplicações não são sensíveis à chegada de pacotes com 
intervalos de tempo irregulares entre eles. O login remoto é um pouco mais 
sensível a essa variação, pois os caracteres aparecerão na tela em pequenas 
rajadas se a conexão sofrer muita flutuação. O vídeo e, em especial, o áudio 
são extremamente sensíveis à flutuação. Se um usuário estiver assistindo a um 
vídeo transmitido pela rede e os quadros estiverem todos atrasados 
exatamente 2,000 segundos, não haverá nenhum dano. Porém, se o tempo de 
transmissão variar ao acaso entre 1 e 2 segundos, o resultado será terrível. No 
caso do áudio, até mesmo uma flutuação de até alguns milissegundos será 
bastante audível. 
Por fim, as aplicações diferem em suas necessidades de largura de banda. O 
correio eletrônico e o login remoto não necessitam de muita largura de banda, 
mas todas as formas de vídeo exigem um grande volume desse recurso. As 
redes ATM classificam os fluxos em quatro categorias principais com relação 
às suas demandas de QoS: i) taxa de bit constante, por exemplo, telefonia; ii) 
taxa de bits variável em tempo real, por exemplo, videoconferência 
compactada; iii) taxa de bits variável não de tempo real, por exemplo, assistir a 
um filme pela Internet; iv) taxa de bits disponível, por exemplo, transferência de 
arquivos. 
Essas categorias também são úteis para outros propósitos e outras redes. A 
taxa de bits constante é uma tentativa de simular um fio oferecendo uma 
largura de banda uniforme e um retardo uniforme. A taxa de bits variável ocorre 
quando o vídeo é compactado, sendo alguns quadros mais compactados que 
outros. Desse modo, a transmissão de um quadro com uma grande quantidade 
de detalhes pode exigir o envio de muitos bits, enquanto a transmissão de uma 
foto de uma parede branca pode se compactar extremamente bem. A taxa de 
bits disponível se destina a aplicações como correio eletrônico, não sensíveis 
ao retardo ou à flutuação. 
 
Técnicas para buscar a qualidade de serviço 
 
Tendo conhecimento sobre os requisitos de QoS, devemos nos preocupar em 
como alcançá-los. Nenhuma técnica isolada proporciona QoS eficiente e 
seguro de forma ótima. Em vez disso, foram desenvolvidas diversas técnicas, e 
as soluções práticas muitas vezes combinam várias dessas técnicas. A seguir 
examinaremos algumas técnicas que os projetistas de sistemas utilizam para 
alcançar QoS. 
Superdimensionamento 
 
Uma solução prática é fornecer tanta capacidade de roteadores, tanto de 
espaço de buffers e tanta largura de banda que os pacotes simplesmente são 
transmitidos com enorme facilidade. O problema com essa solução é seu 
custo. Com o passar do tempo e à medida que os projetistas adquirem uma 
ideia melhor da quantidade suficiente de recursos, essa técnica pode até 
mesmo se tornar prática. Até certo ponto, o sistema de telefonia é 
superdimensionado. É raro levantarmos o fone do gancho e não conseguirmos 
imediatamente um sinal de discagem. Nesse caso, há tanta capacidade 
disponível que a demanda sempre pode ser atendida. 
Armazenamento em buffers 
 
Os fluxos podem ser armazenados em buffers no lado receptor, antes de 
serem entregues. O armazenamento dos fluxos em buffers não afeta a 
confiabilidade ou a largura de banda e aumenta o retardo, mas, por outro lado, 
suaviza a flutuação. No caso de áudio e vídeo por demanda, a flutuação é o 
principal problema e, portanto, essa técnica ajuda bastante. 
Na Figura 2, observamos uma série de pacotes sendo entregue com uma 
flutuação significativa. O pacote 1 é enviado pelo servidor no tempo t = 0 
segundo e chega ao cliente no tempo t = 1 segundo. O pacote 2 sofre maior 
retardo e demora 2 segundos para chegar. À medida que chegam, os pacotes 
são armazenados em buffers na máquina cliente. 
 
Figura 25 - Suavizando o fluxo de saída por meio do armazenamento de pacotes em buffers 
Em t = 10 s, inicia-se a reprodução. Nesse momento, os pacotes de 1 até 6 são 
armazenados no buffer, de forma que podem ser removidos do buffer em 
intervalos uniformes para reprodução suave. Infelizmente, o pacote 8 se 
atrasou tanto que não está disponível quando surge seu slot de reprodução, e 
assim a reprodução tem de parar até ele chegar, o que cria um incômodo 
intervalo na música ou no filme. Esse problema pode ser atenuado retardando-
se ainda mais o momento do início, apesar de isso também exigir um buffer 
maior. Todos os sites comerciais que contêm fluxo de áudio ou vídeo utilizam 
reprodutores que armazenam os itens em buffers por cerca de 10 segundos 
antes de iniciarem a reprodução. 
Moldagem de tráfego 
 
No exemplo anterior, a origem transmite os pacotes com um espaçamento 
uniforme entre eles, mas, em outros casos, é possível que eles sejam 
transmitidos de modo irregular, o que pode causar congestionamentos na rede. 
A saída não uniforme é comum se o servidor está manipulando muitos fluxos 
ao mesmo tempo e ela também permite outras ações, como avanço e 
retrocesso rápidos, autenticação de usuários e assim por diante. Além disso, a 
abordagem que utilizamos aqui, de armazenamento em buffers, nem sempre é 
possível, por exemplo, com videoconferência. Porém, se fosse possível fazer 
algo para obrigar o servidor, e os hosts em geral, a transmitir a uma velocidade 
uniforme, a qualidade de serviços melhoraria. Examinaremos agora umatécnica denominada moldagem de tráfego que suaviza o tráfego no lado 
servidor, e não no lado cliente. 
A moldagem de tráfego está relacionada à regulagem da taxa média, e do 
volume, da transmissão de dados. Por outro lado, os protocolos de janela 
deslizante limitam o volume de dados em trânsito de uma vez, e não a taxa em 
que eles são enviados. Quando uma conexão é configurada, o usuário e a sub-
rede, isto é, o cliente e a provedora de comunicações, concordam com um 
determinado padrão de tráfego, ou seja, uma forma, para esse circuito. Às 
vezes, esse acordo é chamado acordo de nível de serviço. Desde que o cliente 
cumpra sua parte no negócio e envie somente pacotes que estejam de acordo 
com o contrato, a provedora de comunicações promete entregá-los 
pontualmente. A moldagem de tráfego reduz o congestionamento e ajuda a 
provedora a cumprir sua promessa. Esses acordos não são muito importantes 
para transferências de arquivos, mas são de grande importância no caso da 
transmissão de dados em tempo real, como conexões de áudio e vídeo, que 
têm requisitos estritos de qualidade de serviço. Na verdade, com a moldagem 
de tráfego, o cliente diz à provedora de comunicações "Meu padrão de 
transmissão ficará assim. Você pode lidar com ele?" Se a provedora concordar, 
a questão será como a provedora poderá saber se o cliente está cumprindo o 
acordo e o que fazer em caso negativo. O monitoramento de um fluxo de 
tráfego é chamado controle de tráfego. Concordar com um padrão de tráfego e 
controlá-lo daí em diante é mais fácil com sub-redes de circuitos virtuais do que 
com sub-redes de datagramas. Entretanto, mesmo com sub-redes de 
datagramas, as mesmas ideias podem se aplicar a conexões da camada de 
transporte. 
O algoritmo de balde furado 
 
Imagine um balde com um pequeno furo no fundo, como ilustra a Figura 3. 
Independente da velocidade com que a água entra no balde, o fluxo de saída 
ocorrerá em uma taxa constante, quando houver qualquer quantidade de água 
no balde e zero quando o balde estiver vazio. Além disso, quando o balde 
estiver cheio, a água que entrar escorrerá pelas bordas e se perderá, ou seja, 
não aparecerá no fluxo de saída sob o furo. 
 
Figura 26 - Balde furado com água 
A mesma ideia pode ser aplicada a pacotes, como mostra a Figura 4. 
Conceitualmente, cada host está conectado à rede por uma interface que 
contém um balde furado, ou seja, uma fila interna finita. Se um pacote chegar à 
fila quando ela estiver cheia, o pacote será descartado. Em outras palavras, se 
um ou mais processos dentro do host tentar enviar um pacote quando o 
número máximo já estiver enfileirado, o novo pacote será descartado sem 
cerimônia. Essa disposição pode ser interna à interface de hardware ou 
simulada pelo sistema operacional do host. Ela foi proposta em meados de 
1986 e é chamada algoritmo de balde furado. Na verdade, trata-se 
simplesmente de um sistema de enfileiramento de um único servidor com um 
tempo de serviço constante. 
 
Figura 27 - Balde furado com pacotes 
O host pode inserir um pacote na rede a cada pulso de clock. Novamente, isso 
pode ser forçado pela placa de interface ou pelo sistema operacional. Esse 
mecanismo transforma um fluxo de pacotes irregular proveniente dos 
processos do usuário no host em um fluxo de pacotes regular para a rede, 
suavizando as rajadas e reduzindo bastante as possibilidades de 
congestionamento. 
Quando os pacotes têm todos o mesmo tamanho, por exemplo, células ATM, 
esse algoritmo pode ser usado da maneira que descrevemos. Entretanto, 
quando estão sendo utilizados pacotes de tamanho variável, a melhor opção é 
permitir um número fixo de bytes por pulso, em vez de apenas um pacote. 
Assim, se a regra for 1024 bytes por pulso, é possível admitir em um pulso um 
único pacote de 1024 bytes, dois pacotes de 512 bytes, quatro pacotes de 256 
bytes etc. Se a contagem de bytes residuais for muito baixa, o próximo pacote 
deverá aguardar até o pulso seguinte. 
É fácil implementar o algoritmo de balde furado original. O balde furado 
consiste em uma fila finita. Ao chegar um pacote, se houver espaço na fila, ele 
será incluído na fila, caso contrário, ele será descartado. A cada pulso do clock, 
um pacote é transmitido, a menos que a fila esteja vazia. O balde furado de 
contagem de bytes é implementado praticamente da mesma maneira. A cada 
pulso, um contador é inicializado em n. Se o primeiro pacote da fila tiver menos 
bytes que o valor atual do contador, ele será transmitido, e o contador será 
decrementado por esse número de bytes. Também é possível enviar pacotes 
adicionais, desde que o contador tenha um valor suficientemente alto. Quando 
o contador fica abaixo do comprimento do próximo pacote na fila, a 
transmissão é interrompida até o pulso seguinte, quando então a contagem de 
bytes residuais é reinicializada e o fluxo pode continuar. 
Como exemplo de um balde furado, imagine que um computador possa 
produzir dados a 25 milhões de bytes/s (200 Mbps) e que a rede também 
funcione nessa velocidade. Entretanto, os roteadores só podem lidar com essa 
taxa de dados durante intervalos curtos, basicamente até seus buffers serem 
preenchidos. No caso de intervalos longos, eles funcionam melhor a taxas que 
não excedem 2 milhões de bytes/s. Agora, suponha que os dados venham em 
rajadas de 1 milhão de bytes, e que ocorra uma rajada com a duração de 40ms 
a cada segundo. Para reduzir a taxa média a 2 MB/s, poderíamos usar um 
balde furado com = 2 MB/s e uma capacidade C igual a 1 MB. Isso significa 
que rajadas de até 1 MB podem ser manipuladas sem perda de dados e que 
tais rajadas se distribuem por 500ms, independente da velocidade com que 
chegam. 
Reserva de recursos 
 
A capacidade de regular a forma do tráfego oferecido é um bom início para 
garantir a qualidade de serviço. Porém, o uso efetivo dessa informação 
significa implicitamente exigir que todos os pacotes de um fluxo sigam a 
mesma rota. Dispersar os pacotes pelos roteadores ao acaso torna difícil 
estabelecer qualquer garantia. Como consequência, algo semelhante a um 
circuito virtual tem de ser configurado desde a origem até o destino, e todos os 
pacotes que pertencem ao fluxo devem seguir essa rota. 
Depois de termos uma rota específica para um fluxo, torna-se possível reservar 
recursos ao longo dessa rota, a fim de garantir que a capacidade necessária 
estará disponível. É possível reservar três diferentes tipos de recursos: 
1. Largura de banda; 
2. Espaço de buffer; 
3. Ciclos da CPU. 
O primeiro recurso, a largura de banda, é o mais óbvio. Se um fluxo exige 1 
Mbps e a linha de partida tem uma capacidade de 2 Mbps, tentar orientar três 
fluxos por essa linha é uma estratégia que não vai funcionar. Desse modo, 
reservar largura de banda não significa sobrecarregar qualquer linha de saída. 
Um segundo recurso frequentemente escasso é o espaço em buffers. Quando 
um pacote chega, em geral ele é depositado na placa de interface de rede pelo 
próprio hardware. Em seguida, o software do roteador tem de copiá-lo para um 
buffer em RAM e enfileirar esse buffer para transmissão na linha de saída 
escolhida. Se nenhum buffer estiver disponível, o pacote terá de ser 
descartado, pois não há lugar para colocá-lo. Para se alcançar uma boa 
qualidade de serviço, alguns buffers podem ser reservados para um fluxo 
específico, de forma que o fluxo não tenha de competir pelos buffers com 
outros fluxos. Sempre haverá um buffer disponível quando o fluxo precisar 
dele, até algum número máximo. 
Finalmente, os ciclos da CPU também constituem um recurso escasso. O 
processamento de um pacote exige tempo da CPU do roteador, e assim o 
roteador só pode processar um certo número de pacotes por segundo. É 
necessário ter certeza de que a CPU não está sobrecarregada, a fim de 
assegurar o processamento oportuno de cada pacote. 
À primeira vista pode parecer que, sea demora é de, digamos, 1s para 
processar um pacote, um roteador pode processar 1 milhão de pacotes por 
segundo. Essa observação não é verdadeira, porque sempre haverá períodos 
ociosos devido a flutuações estatísticas na carga. Se a CPU precisar de cada 
ciclo para realizar seu trabalho, até mesmo a perda de alguns ciclos em 
consequência de períodos ociosos ocasionais cria um acúmulo de serviço do 
qual ela nunca conseguirá se livrar. 
No entanto, até mesmo com uma carga ligeiramente abaixo da capacidade 
teórica, as filas podem aumentar e os retardos podem ocorrer. Considere uma 
situação na qual os pacotes chegam ao acaso, com uma taxa média de 
chegadas igual a pacotes/s. O tempo de CPU exigido por cada um deles 
também é aleatório, sendo a capacidade média de processamento igual a 
pacotes/s. Sob a hipótese de que tanto a distribuição de chegadas quanto a 
distribuição de serviços sejam distribuições de Poisson, podemos provar, 
usando a teoria do enfileiramento, que o retardo médio T experimentado por 
um pacote é: 
 
onde ρ = λ/μ / é a utilização da CPU. O primeiro fator, 1/, é o valor que o tempo 
de serviço teria na ausência de competição. O segundo fator é a redução da 
velocidade devido à competição com outros fluxos. Por exemplo, se λ= 950.000 
pacotes/s e μ= 1.000.000 pacotes/s, então ρ= 0,95, e o retardo médio 
experimentado por cada pacote será igual a 20μs, em vez de 1μs. Esse tempo 
leva em conta o tempo de enfileiramento e o tempo de serviço, como podemos 
observar quando a carga é muito baixa (λ/μ≈0). Se houver, digamos, 30 
roteadores ao longo da rota do fluxo, o retardo de enfileiramento responderá 
sozinho pelo retardo de 600s. 
Controle de admissão 
 
Agora chegamos ao ponto em que o tráfego de entrada de algum fluxo é bem 
modelado e pode potencialmente seguir uma única rota na qual a capacidade 
pode ser reservada com antecedência nos roteadores ao longo do caminho. 
Quando tal fluxo é oferecido a um roteador, ele tem de decidir, com base em 
sua capacidade e na quantidade de compromissos que já assumiu para outros 
fluxos, se deve admitir ou rejeitar o fluxo. 
A decisão de aceitar ou rejeitar um fluxo não é uma simples questão de 
comparar os recursos, como largura de banda, buffers, ciclos, etc, solicitados 
pelo fluxo com a capacidade em excesso do roteador nessas três dimensões. 
O problema é um pouco mais complicado. Para começar, embora algumas 
aplicações possam conhecer seus requisitos de largura de banda, poucas 
sabem algo sobre buffers ou ciclos da CPU, então, no mínimo, é necessário 
encontrar uma forma diferente de descrever fluxos. Em seguida, algumas 
aplicações são muito mais tolerantes à perda ocasional de um prazo final que 
outras. Finalmente, algumas aplicações podem estar dispostas a pechinchar 
sobre os parâmetros de fluxo, e outras não. Por exemplo, um visualizador de 
filmes que normalmente funciona a 30 quadros/s pode estar disposto a reduzir 
sua velocidade para 25 quadros/s, se não houver largura de banda suficiente 
para admitir 30 quadros/s. De modo semelhante, o número de pixels por 
quadro, a largura de banda de áudio e outras propriedades podem ser 
ajustáveis. 
Como muitas partes talvez estejam envolvidas na negociação de fluxo, o 
transmissor, o receptor e todos os roteador es ao longo do caminho entre eles, 
os fluxos devem ser descritos com precisão em termos de parâmetros 
específicos que podem ser negociados. Um conjunto desses parâmetros é 
chamado especificação de fluxo. Em geral, o transmissor, por exemplo, o 
servidor de vídeo, produz uma especificação de fluxo propondo os parâmetros 
que ele gostaria de usar. À medida que a especificação se propaga ao longo da 
rota, cada roteador a examina e modifica os parâmetros conforme necessário. 
As modificações só podem reduzir o fluxo, não aumentá-lo, por exemplo, uma 
taxa de dados mais baixa, e não mais alta. Quando ela chega à outra 
extremidade, os parâmetros podem ser estabelecidos. 
Como exemplo do que pode haver em uma especificação de fluxo, considere o 
exemplo da Figura 5, baseada nas RFCs 2210 e 2211. Ela tem cinco 
parâmetros; o primeiro, a taxa de balde de símbolos, é o número de bytes por 
segundo que são inseridos no balde. Essa é a taxa máxima sustentada em que 
o transmissor pode transmitir, calculada com uma média sobre um longo 
intervalo de tempo. 
 
Figura 28 - Exemplo de especificação de fluxo 
O segundo parâmetro é o tamanho do balde em bytes. Se, por exemplo, a taxa 
de balde de símbolos é 1 Mbps e o tamanho de balde de símbolos é 500 KB, o 
balde pode se encher continuamente durante 4 segundos antes de se encher 
por completo, na ausência de quaisquer transmissões. Quaisquer símbolos 
enviados depois disso são perdidos. O terceiro parâmetro, a taxa de dados de 
pico, é a taxa máxima de transmissão tolerada, mesmo durante breves 
intervalos de tempo. O transmissor nunca deve exceder essa taxa. 
Os dois últimos parâmetros especificam os tamanhos mínimo e máximo do 
pacote, incluindo os cabeçalhos da camada de transporte da camada de rede, 
por exemplo, TCP e IP. O tamanho mínimo é importante, porque o 
processamento de cada pacote demora algum tempo fixo, independente de 
quanto ele seja curto. Um roteador pode estar preparado para manipular 
10.000 pacotes/s de 1 KB cada, mas não estar preparado para tratar 100.000 
pacotes/s de 50 bytes cada,1 embora isso represente uma taxa de dados mais 
baixa. O tamanho máximo do pacote é importante, devido a limitações internas 
da rede que não podem ser excedidas. Por exemplo, se parte do caminho 
passar por uma rede Ethernet, o tamanho máximo do pacote será restrito a não 
mais de 1500 bytes, não importando que tamanho o restante da rede possa 
manipular. 
Uma pergunta interessante é como um roteador transforma uma especificação 
de fluxo em um conjunto de reservas de recursos específicos. Esse 
mapeamento é específico da implementação e não é padronizado. Suponha 
que um roteador possa processar 100.000 pacotes/s. Se for oferecido a ele um 
fluxo de 1 MB/s com tamanhos mínimo e máximo de pacote iguais a 512 bytes, 
o roteador poderá calcular que deve receber 2048 pacotes/s desse fluxo. 
Nesse caso, ele tem de reservar 2% de sua CPU para o fluxo, de preferência 
mais, a fim de evitar longos retardos de enfileiramento. Se a política de um 
roteador for a de nunca alocar mais de 50% de sua CPU, o que implica um 
fator de retardo igual a 2, e ela já estiver com 49% de sua capacidade 
ocupados, esse fluxo terá de ser rejeitado. Cálculos semelhantes serão 
necessários para os outros recursos. 
Quanto mais restrita a especificação de fluxo, mais útil ela será para os 
roteadores. Se uma especificação de fluxo declarar que precisa de uma taxa de 
balde de símbolos igual a 5 MB/s, mas os pacotes puderem variar de 50 bytes 
a 1500 bytes, então a taxa de pacotes irá variar de cerca de 3500 pacotes/s 
para 105.000 pacotes/s. O roteador poderá entrar em pânico com esse último 
número e rejeitar o fluxo, enquanto um tamanho mínimo de pacote igual a 1000 
bytes poderia fazer o fluxo de 5 MB/s ter sido aceito. 
Roteamento proporcional 
 
A maioria de algoritmos de roteamento tenta encontrar o melhor caminho para 
cada destino e enviar todo tráfego para esse destino pelo melhor caminho. 
Uma abordagem diferente, que foi proposta para oferecer uma qualidade de 
serviço mais alta, é dividir o tráfego correspondente a cada destino entre vários 
caminhos. Tendo em vista que os roteadores em geral não têm uma visão 
completa do tráfego de toda a rede, a única maneira viável de dividir o tráfego 
por várias rotas é usar informações disponíveis no local. Um método simples é 
dividir o tráfego igualmente ou torná-lo proporcional à capacidade dos enlaces 
de saída. No entanto, também estão disponíveis algoritmos mais sofisticados. 
Programação de pacotes 
 
Se um roteador estiver tratando vários fluxos, haverá o perigo deum fluxo 
receber muito mais do que permite sua capacidade e deixar todos os outros 
fluxos à mingua. O processamento de pacotes na ordem de sua chegada 
significa que um transmissor agressivo pode capturar a maior parte da 
capacidade dos roteadores por onde passam seus pacotes, reduzindo a 
qualidade de serviço para outros. Para contrariar tais tentativas, foram criados 
vários algoritmos para programação de pacotes. 
Um dos primeiros foi o algoritmo de enfileiramento justo. A essência do 
algoritmo é que os roteadores têm filas separadas para cada linha de saída, 
uma para cada fluxo. Quando uma linha fica ociosa, o roteador varre as filas 
em rodízio, tomando o primeiro pacote da fila seguinte. Desse modo, com n 
hosts competindo por uma dada linha de saída, cada host chega a enviar um 
dentre cada n pacotes. A transmissão de mais pacotes não irá melhorar essa 
fração. 
Apesar de ser um bom início, o algoritmo tem um problema. Ele fornece mais 
largura de banda para hosts que utilizam pacotes grandes do que para hosts 
que utilizam pacotes pequenos. Pesquisadores sugeriram um aperfeiçoamento 
no qual o rodízio é feito de forma a simular um rodízio byte a byte, em vez de 
um rodízio pacote a pacote. Na verdade, ele percorre as filas repetidamente, 
byte por byte, até encontrar o pulso em que cada pacote terminará. Em 
seguida, os pacotes são classificados em ordem de término e enviados nessa 
ordem. O algoritmo é ilustrado na Figura 6. 
 
Figura 29 - Roteador com cinco pacotes enfileirados para a linha O 
Na Figura 6, vemos pacotes de 2 a 6 bytes. No pulso do clock, virtual, 1, o 
primeiro byte do pacote na linha A é enviado. Depois, é transmitido o primeiro 
byte do pacote da linha B e assim por diante. O primeiro pacote a terminar é C, 
depois de oito pulsos. A ordem classificada é mostrada na Figura 7. Na 
ausência de novas chegadas, os pacotes serão enviados na ordem listada, de 
C a A. 
 
Figura 30 - Tempos de término dos cinco pacotes 
Um problema com esse algoritmo é que ele dá a todos os hosts a mesma 
prioridade. Em muitas situações, talvez seja interessante dar a servidores de 
vídeo maior largura de banda que a servidores de arquivos comuns, de forma 
que eles possam receber dois ou mais bytes por pulso. 
Esse algoritmo modificado é chamado algoritmo de enfileiramento justo 
ponderado e é amplamente utilizado. Às vezes, o peso é igual ao número de 
fluxos que saem de uma máquina, portanto, cada processo recebe uma largura 
de banda equivalente. Cada vez mais, o encaminhamento real de pacotes por 
um roteador ou switch está sendo feito em hardware. 
 
Considerações finais 
 
O termo Qualidade de Serviço, no contexto de redes de computadores, refere-
se em geral a garantia de largura de banda ou, como em muitos casos, é 
utilizada informalmente para referir a probabilidade de um pacote circular entre 
dois pontos de rede. Requisitos básicos de QoS envolvem confiabilidade, 
retardo, flutuação do tempo de transmissão e vazão. A princípio a Internet não 
foi projetada para suportar QoS, logo, durante a transmissão de dados podem 
ocorrer inúmeros problemas com os pacotes enquanto circulam pela rede. 
Do ponto de vista do emissor ou do receptor esses problemas são: i) Pacotes 
descartados, onde os rotadores podem recusar-se a entregar alguns pacotes 
se estes chagarem quando os buffers estão cheios, sendo que não existe uma 
forma de determinar as prioridades para o descarte. As aplicações que 
enviaram os pacotes terão que retransmiti-los por não receber da aplicação em 
contraparte a confirmação de recebimento do pacote. Isso resulta 
frequentemente em intermitência na transmissão; ii) Atraso, onde pode 
decorrer muito tempo até um pacote atingir o seu destino, já que este é 
mantido em longas filas, ou segue um caminho alternativo para evitar 
congestionamento da rede; iii) Entrega fora de ordem, onde os pacotes são 
entregues em uma ordem diferente da que foi enviada, uma vez que podem 
percorrer rotas diferentes, fazendo necessário o uso de protocolos especiais 
para que a informação possa ser reconstruída na chegada; iv) Erros, onde os 
pacotes são enviados para destinos errados ou mesmo são corrompidos em 
trânsito, obrigando o receptor a detectar esses problemas e pedir a 
retransmissão dos pacotes. 
Para obter QoS existem em linhas gerais dois modelos. Um por meio da 
disponibilidade de grandes quantidades de recursos, suficiente para atender 
aos picos com uma margem de segurança, porém sendo muito dispendioso e 
ineficaz. Outro por meio da obrigatoriedade de reserva de recursos, onde o 
serviço somente é realizado caso seja sabido que será possível oferta-lo com 
confiabilidade. Essas reservas também possuem um custo monetário 
associado. 
Porém, o mercado ainda não favorece os serviços QoS, visto que há poucos 
incentivos, principalmente em termos econômicos, para a sua implementação. 
Os acordos atuais entre os fornecedores de serviços de Internet são 
complexos, e parece não existir iniciativa entre eles para suportar QoS entre 
interligações de backbones, ou acordar que políticas devem ser suportadas 
para potencializar o seu crescimento. 
Referências 
 
Bhatti, Saleem N., and Jon Crowcroft. "QoS-sensitive flows: Issues in IP packet 
handling." IEEE Internet Computing 4.4 (2000): 48-57. 
Demers, Alan, Srinivasan Keshav, and Scott Shenker. "Analysis and simulation 
of a fair queueing algorithm." Internetworking: Research and experience 1.1 
(1990): 3-26. 
Elhanany, Itamar, Michael Kahane, and Dan Sadot. "Packet scheduling in next-
generation multiterabit networks." Computer 34.4 (2001): 104-106. 
Nagle, John. "On packet switches with infinite storage." IEEE transactions on 
communications 35.4 (1987): 435-438. 
Nelakuditi, Srihari, et al. "Adaptive proportional routing: a localized QoS routing 
approach." IEEE/ACM Transactions on networking 10.6 (2002): 790-804. 
Tanenbaum, Andrew S. "Network protocols." ACM Computing Surveys (CSUR) 
13.4 (1981): 453-489. 
Turner, Jonathan. "New directions in communications(or which way to the 
information age?)." IEEE communications Magazine 24.1

Mais conteúdos dessa disciplina