Curso de Redes de Computador Ipvx - Cópia
Curso de Redes de Computador Ipvx - Cópia
Curso de Redes de Computador Ipvx - Cópia
Introdução
Dispositivos de Rede
Os equipamentos que se conectam directamente a um segmento de rede são chamados
de dispositivos. A rede é composta por diversos dispositivos. Estes dispositivos são
divididos em duas classificações:
Repetidor
É um dispositivo de rede usado para regenerar um sinal. Os repetidores regeneram os
sinais analógicos e digitais que foram distorcidos por perdas na transmissão devido à
atenuação. Um repetidor não realiza decisões inteligentes sobre o encaminhamento de
pacotes como um roteador ou bridge. Um repetidor possui apenas duas portas.
Hubs
Concentram conexões. Em outras palavras, juntam um grupo de hosts e permitem que a
rede os veja como uma única unidade. Isto é feito passivamente, sem qualquer outro
efeito na transmissão dos dados.
Hubs Ativos
Possuem a mesma função de um Hub comum mas além disso eles também regeneram
sinais. Pode se dizer que um Hub ativo é um conjunto de repetidores interligados, ou
seja, é um repetidor multi-porta.
Switches
São responsáveis por adicionam mais inteligência ao gerenciamento da transferência de
dados. Eles não só podem determinar se os dados devem ou não permanecer em uma
rede local, mas como também podem transferir os dados somente para a conexão que
necessita daqueles dados. Pode-se dizer que um switch é uma bridge multi-porta.
Roteadores
O mais "inteligente" de todos. Possuem todas as capacidades listadas acima. Os
roteadores podem regenerar sinais, concentrar conexões múltiplas, converter formatos
dos dados transmitidos, e gerenciar as transferências de dados. Eles também podem ser
conectados a uma WAN, que lhes permite conectar redes locais que estão separadas por
longas distâncias. Nenhum outro dispositivo pode prover este tipo de conexão.
As redes podem ser classificadas de acordo com sua topologia e/ou extensão e área de
cobertura.
À medida que o uso do computador cresceu, logo se percebeu que as LANs não eram o
suficiente. Era necessário um modo de mover informações de maneira rápida e
eficiente, não só dentro de uma sala/empresa, mas também de uma empresa para outra.
A solução, então, foi a criação de redes de áreas metropolitanas (MANs) e de redes de
longa distância (WANs). Como as WANs podiam conectar as redes usuárias dentro de
grandes áreas geográficas, elas tornaram possível a comunicação entre empresas ao
longo de grandes distâncias.
As redes podem ser classificadas por sua extensão de acordo com a tabela abaixo:
A topologia lógica de uma rede é a forma como os hosts se comunicam através dos
meios. Os dois tipos mais comuns de topologias lógicas são broadcast (difusão) e
passagem de token.
• Topologia de broadcast - Significa que cada host envia seus dados a todos os
outros hosts conectados, ao meio físico da rede. Não existe uma ordem que deve
ser seguida pelas estações para usar a rede. A ordem é: primeiro a chegar,
primeiro a usar.
• Topologia lógica - Utiliza a passagem de token. A passagem de token controla o
acesso à rede passando um token eletrônico seqüencialmente para cada host.
Quando um host recebe o token, significa que esse host pode enviar dados na
rede. Se o host não tiver dados a serem enviados, ele passara o token para o
próximo host e o processo será repetido.
Fontes:
• Cisco NetAcad
• Redes de Computadores, de Andrew S. Tanenbaum, 4.ed. Campus - 2003;
Devido a repercussão do último post dessa série tomei a decisão de criar isso aqui como
um "curso". Inclusive criei uma categoria Curso de redes pra quem quiser visualizar
Mas antes que alguém comece a dizer: Quem você pensa que é pra dar um curso?! Bem,
não sou ninguém de importante ou grande! Absolutamente! Mas sou alguém que quer
ajudar os outros e contribuir com o Under-Linux. Mas porque acho que tenho condições
de criar um "curso de rede"?! Realmente não me apresentei...
Nesa parte do curso vamos começar a tratar a parte que muitos dizem ser a mais chata!
Eu pessoalemente acho ela essencial. Não tem como entender redes, sem entender esse
post de agora. Muitos vão falar: "Você resumiu muito as camadas!!" Bem, minha idéia é
fazer um resumido agora e depois dedicar um post pra cada camada!
Os sistemas de comunicação de dados não usam apenas um único protocolo para tratar
todas as tarefas de transmissão. Esse processo requer uma pilha de protocolos
Para que os pacotes de dados trafeguem de uma origem até um destino, através de uma
rede, é importante que todos os dispositivos da rede usem a mesma linguagem, ou
protocolo. Podemos imaginar todos os protocolos empilhados verticalmente em
camadas como na figura abaixo:
Quando um dado é enviado da origem para o destino, o dado é tratado por todas as
camadas, de cima para baixo, até chegar à camada mais baixa e ser transmitido, por isso
costumamos dizer que a camada N prove serviço para a camada N+1. Quando o pacote
chega ao destino os protocolos desfazem a construção do pacote que foi feito no lado da
fonte. Isto é feito na ordem inversa, de baixo para cima.
Modelo ISO/OSI
Voltando para o lado histórico das redes. Nos meados de 1980, as empresas começaram
a sentir os problemas causados pela rápida expansão. Assim como pessoas que não
falam o mesmo idioma têm dificuldade na comunicação entre si, era difícil para as redes
que usavam diferentes especificações e implementações trocarem informações. O
mesmo problema ocorreu com as empresas que desenvolveram tecnologias de rede
proprietária ou particular. As tecnologias de rede que seguiam estritamente as regras
proprietárias não podiam comunicar-se com tecnologias que seguiam diferentes regras
proprietárias.
Para tratar dos problemas de incompatibilidade entre as redes, a ISO realizou uma
O modelo ISO contém sete camadas conceituais organizadas como mostra a figura
abaixo:
Modelo TCP/IP
Os projetistas do TCP/IP decidiram que os protocolos de mais alto nível deviam incluir
os detalhes da camada de sessão e de apresentação do OSI. Eles simplesmente criaram
uma camada de aplicação que trata de questões de representação, codificação e controle
de diálogo.
Só umas correções pra melhorar um pouco seu post, beleza? A camada de transporte,
que você definiu na sessão Modelo ISO/OSI, além de fazer o controle de fluxo, também
faz o controle de congestionamento, sendo que as duas coisas são distintas.
Uma outra coisa, tomando como referência o livro do Kurose, o modelo TCP/IP possui
5 camadas (Aplicação, Transporte, Rede, Enlace e Física), você já chegou a ver?
Além dos órgãos que você citou que padronizam os protocolos, também existem outros
de destaque:
Camada Física
Chegando a 3 parte desse curso veremos a camada física do modelo OSI. Tentarei
cobrir uma camada a cada post, não sei se vou conseguir Mas antes vamos rever um
pouco as camadas OSI e TCP/IP.
Eu gosto de dizer que o modelo de 7 camadas OSI foi enxuto e resumido em 5 camadas
no TCP/IP. Cada camada do OSI tem seu "relativo" no TCI/IP. Digo relativo pois não
são idênticos, cada um utiliza uma gama de protocolos diferentes, porém todos tem a
mesma finalidade. O modelo OSI pode ser comparada ao modelo TCP/IP da seguinte
forma:
Camada Física
• Meios de Cobre;
• Meios Ópticos;
• Meios sem Fio.
Os meios de cobre são usados em quase todas as redes locais. Estão disponíveis vários
diferentes tipos de cabos de cobre, cada tipo tem suas vantagens e desvantagens. Uma
selecção cuidadosa de cabeamento é a chave para uma operação eficiente de redes.
Os meios ópticos são frequentemente usado para as transmissões ponto-a-ponto a
grandes distâncias e com alta largura de banda necessárias para backbones das redes
locais e em WANs.
A tecnologia sem fio oferece uma portabilidade verdadeira ao mundo da computação.
Especificações do cabeamento
Cada cabo possui umas especificações diferente e de acordo com a especificação, possui
um desempenho diferente.
• 100BASE-TX
• 10BASE5
• 10BASE2
Cabo Coaxial
O cabo coaxial consiste em um condutor de cobre envolto por uma camada isolante
flexível. O condutor central também pode ser feito de um fino cabo de alumínio
laminado, permitindo que o cabo seja industrializado a baixo custo. Sobre o material
isolante, há uma trança de lã de cobre ou uma folha metálica, que age como um segundo
fio no circuito e como blindagem para o fio interior. Esta segunda camada, ou
blindagem, também reduz a quantidade de interferência electromagnética externa. A
capa reveste esta blindagem. Geralmente classificado em thinnet e thicknet devido a sua
espessura.
Par trançado
O cabo par trançado é composto por 4 pares (8 fios). Os cabos Par trançados são
categorizados de 1 a 7. Essa categoria vem escrita na capa do cabo utilizando
abreviações de “Category 5” (Cat. 5). Essas categorias são relacionadas à capacidade do
meio. Baseado na atenuação, ruído e perda os cabos são direccionados para uma certa
aplicação conforme abaixo:
Tipos de Cabos
As redes gigabit ethernet devem utilizar cabos de categoria maior ou igual a 5e, para
que a rede tenha um bom desempenho.
Aqui vamos nos dedicar mais aos cabos Cat. 5 devido a padronização e produção dos
cabos acima do Cat. 6 não estarem completamente definidos. Eles geralmente são
separados entre UTP (Unshilded Twisted Pair), STP (Shielded Twisted Pair) e ScTP
(Screened Twisted Pair).
UTP - É o mais usado actualmente tanto em redes domésticas quanto em grandes redes
industriais devido ao fácil manuseio, instalação, permitindo taxas de transmissão de até
100 Mbps. É o mais barato para distâncias de até 100 metros. Sua estrutura é de quatro
pares de fios entrelaçados e revestidos por uma capa de PVC. Pela falta de blindagem
este tipo de cabo não pode ser instalado próximo a equipamentos que possam gerar
campos magnéticos (fios de rede elétrica, motores) e também não podem ficar em
ambientes com humidade.
ScTP - Também referenciado como FTP (Foil Twisted Pair), os cabos são cobertos pelo
mesmo composto do UTP, no entanto todos os pares são revestidos por uma capa
metálica (Foil) enrolada sobre todos os pares trançados, o que contribui para um maior
controle de EMI (Interferência Electromagnética), embora exija maiores cuidados
quanto ao aterramento.
Existem alguns casos em que essa "regra" não se aplica. Por exemplo, ao interligarmos
um PC e um roteador é utilizado um cabo cross. O mesmo ocorre ao interligar um HUB
e um Switch. A regra correta é seguir a classificação dos dispositivos (DTEs e DCEs)
ou pensar no "cruzamento" de pares internos em cada equipamento.
Existe também o cabo roll-over utilizado para realizar a conexão entre a porta serial do
PC e a porta de console de roteadores. Essa conexão pode ser feita através de um
conversor (tranceiver) RJ-45 para DB-9.
Se observarmos um cabo cross-over simplesmente possui os pinos 1-3 e 2-6. Com isso
muitas pessoas dizem que basta apenas realizar esse cruzamento. E pode desprezar o
restante dos cabos. Essa afirmação é apenas para redes que chegam a apenas 100Mbps.
Redes de 1GBps utilizam os 4 pares para realizar a transmissão, dessa forma todos os
cabos importam. Outra afirmação que costumamos ouvir é que não importa a a ordem
porque “a cor não vai influir”. Realmente a cor não influi, mas os cabos pares trançados
forma projetados com uma certa trançagem que provê cancelamento entre os pares.
Então ao mudar a ordem dos pinos você perde “a qualidade” do cabo.
Fibras Óticas
• 100BASE-FX – 100 Mbit/s ethernet sobre fibra óptica. Usando fibra ótica
multimodo 62,5 mícrons tem o limite de 400 metros;
• 1000BASE-SX – 1 Gbit/s sobre fibra multímodo e LEDs podendo atingindo até
550 metros;
• 1000BASE-LX – Utilizado fibras monomodo e lasers pode-se atingir 5Km.
• 10GBASE-SR – Projetado para suportar distâncias curtas sobre cabeamento de
fibra multi-modo, variando de 26m a 82m dependendo do tipo de cabo. Suporta
também operação a 300m numa fibra multi-modo;
• 10GBASE-LX4 – Usa multiplexação por divisão de comprimento de ondas
(DWDM - Dense Wavelength Division Multiplexing) para suportar distâncias
entre 240m e 300m em cabeamento multi-modo. Também suporta 10km com
fibra mono-modo;
• 10GBASE-LR e 10GBASE-ER – Esses padrões suportam 10km e 40km
respectivamente sobre fibra mono-modo;
• 10GBASE-SW, 10GBASE-LW e 10GBASE-EW. Essas variedades usam o
WAN PHY, projetado para interoperar com equipamentos OC-192 / STM-64
SONET/SDH. Eles correspondem à camada física do 10GBASE-SR,
Introdução
• Arbitragem;
• Endereçamento;
• Identificação de conteúdo ;
• Detecção de erros.
Ethernet
O nome ethernet se originou da soma de duas palavras éter (ether em inglês) e rede
(net). O éter foi idealizado por cientistas antigos, após a descoberta de que a luz era uma
onda eletromagnética, para explicar como a luz podia viajar pelo espaço. A teoria da
propagação de ondas diz que uma onda necessita de um “meio” para se propagar. Com
isso os cientistas idealizaram que o éter preenchia todo o espaço e dessa forma a luz
podia viajar.
Para mais informações sobre o CSMA/CA leia esse artigo muito bom
Algoritmo CSMA/CD
Quando o host está transmitindo ele ouve o meio para certificar-se que “o que está no
meio é o que ele enviou”. Se por acaso houver uma colisão ele irá ouvir algo diferente
do que ele transmitiu, detectando assim, uma colisão. “Mas como pode haver uma
colisão se todos ouvem o meio antes de transmitir?”. A transmissão se propaga pelo
meio com um certo retardo assim, a transmissão de um host na porta A de uma cabo
pode levar um certo tempo para chegar na ponta B. Dessa forma se dois hosts distantes
tentarem transmitir ao mesmo tempo, ou quase ao mesmo tempo, pode haver colisão.
Endereçamento MAC
Para permitir uma entrega local de quadros na Ethernet, foi criado um sistema de
endereçamento, uma maneira exclusiva de identificação de computadores e interfaces.
A Ethernet usa endereços MAC que têm 48 bits de comprimento e são expressos como
doze dígitos hexadecimais. Ex: 00:0F:EA:28:36:6C
Os primeiros seis dígitos hexadecimais, que são administrados pelo IEEE, identificam o
fabricante ou o fornecedor. Esta parte do endereço MAC é conhecida como OUI
(Organizational Unique Identifier). Os seis dígitos hexadecimais restantes representam o
número de série da interface ou outro valor administrado pelo fabricante do
equipamento específico.
As placas de rede usam o endereço MAC para avaliar se a mensagem deve ser passada
para as camadas superiores do modelo OSI. A placa de rede faz essa avaliação sem usar
o tempo de processamento da CPU, proporcionando melhores tempos de comunicações
na rede Ethernet.
O Multicast possui o bit menos significativo do byte mais significativo setado como
Um endereço MAC de broadcast é todo composto por 1s. Dessa forma temos o
seguinte endereços: FF:FF:FF:FF:FF:FF.
Juntando Tudo
Referências
Fechamento
Um pequeno review
Primeiramente vamos fazer uma abstração para compreender melhor o que seria um
quadro, pra que precisamos desses campos e porque ter um controle de acesso ao meio.
Vamos imaginar que os computadores são pessoas e a rede é uma sala. Nessa sala
todas as pessoas podem se comunicar apenas falando. Mas cada fala tem uma forma,
uma língua (protocolo). Essa língua é definida por palavras (padrões). Dessa forma, se
colocarmos um japonês nessa sala, só com brasileiros (considerando que nenhum assiste
anime ou fez intercâmbio no Japão) o japonês não conseguirá se comunicar com
ninguém, pois ele não “fala o mesmo protocolo”. Inclusive esse “fala” é um jargão
muito comum em redes: “esse roteador fala OSPF??”. Voltando ao escopo. Todos nessa
sala podem se comunicar através da fala, e como sabemos que a fala são ondas sonoras
que se propagam pelo ar. Se comparado a redes, o ar é o meio de transmissão (cabo
ethernet) e as ondas sonoras são os pulsos eletro-magnéticos gerados pelas interfaces
ethernet. As ondas sonoras chegam até nossos ouvidos (interface) que, através da
pressão sofrida pelas ondas gera uma oscilação dos tímpanos, “decodifica” essas ondas.
Nossos ouvidos funcionam como interfaces ethernet que decodificam os impulsos
eletromagnéticos do meio em sinais binários (uns e zeros).
Agora, o que acontece se todos falarem ao mesmo tempo? Ninguém se entende certo?!
Por isso temos o controle de acesso ao meio. Quando alguém fala, todos os outros se
calam. Como isso é feito? Antes de falar você tem que ouvir pra saber se alguém está
falando (conforme definido pelo algoritmo CSMA/CD) e em caso positivo espera a
pessoa terminar. Vamos considerar que a pessoa que quer falar é o Irado (para quem
não conhece aqui tá o perfil dele: Irado). Ele primeiro ouve o meio e se estiver em
silêncio, ele poderá falar. Mas ao mesmo tempo em que ele fala, ele ouve, pois alguém
pode começar a falar ao mesmo tempo que ele, ocorrendo assim uma colisão. O que
acontece se alguém fala ao mesmo tempo que o Irado? Ele age como um cavalheiro e
avisa seus companheiros com um sonoro: “Eu to falando p***a!!!”. Esse sinal de aviso
seria o sinal de JAM que tem como objetivo evitar que as pessoas continuem a falar.
Enquanto isso, a pessoa que falou ao mesmo tempo que o Irado estará se recuperando
do susto (tempo aleatório na ponta A) enquanto o Irado conta até 10 (tempo aleatório
na ponta B) pra se acalmar e não partir a cara desse usuário que teima em não usar o
google. Depois de contar até 10 o Irado tenta falar novamente, dessa vez (com razão)
ninguém tenta falar ao mesmo tempo que ele!
Outro padrão na nossa fala é sempre se dirigir a pessoa com quem estamos falando:
“Fulano, você já atualizou seu kernel hoje?”. Dessa forma endereçamos à pessoa
(fulano=Endereço MAC) a mensagem desejada. Geralmente, depois de falar o nome da
Ao falar com uma única pessoa, temos uma comunicação unicast: “fulano, você já
atualizou seu kernel hoje?”. Quando falamos com um grupo de pessoas temos um
multicast: “fulano e sicrano, vocês já atualizaram o kernel hoje?”. Quando falamos
com todos ao mesmo tempo temos um broadcast: “Galera, vocês já atualizaram o kernel
hoje”. Sempre que falamos “galera” todo mundo sabe que todos devem ouvir. Esse é o
endereços de broadcast.
Outra abstração muito utilziada para ensinar é umaginar as redes como os correios.
Você antes de mandar uma carta, escreve o conteúdo em um papel põe no envelope e
envia a carta. O envelope seria o cabeçalho/trailer.
Com isso revisamos tudo o que vimos anteriormente, só que de uma forma subjetiva.
Agora vamos para conceitos novos!
Segmentos de Rede
Segmentos de rede são trechos de uma rede. Podemos ter Segmentos em camada 2 ou
segmentos em camada 3. Isso vai depender de com que equipamento é feita a
segmentação.
Vamos ver a seguinte imagem:
Essa imagem tem 3 partes. Primeiro temos duas redes totalmentes segmentadas,
costumamos dizer que são redes segregadas. Chamamos a rede da esquerda de
Segmento A e a de direita de Segmento B. Como podemos ligar esses dois segmentos
de rede? De diversas formas. Nas imagens apresentei 2 formas: com um HUB ou
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
Repetidor e com uma Bridge ou Switche.
Com um Switch: Ao utilizar o switch nós não unimos a rede, nos a interligamos.
Teremos dois segmentos de reme na camada 2. Isso será melhor compreendido quando
vermos o funcionamento de uma bridge/switch. O que interessa é que, em condições
ótimas, os hosts do segmento A não escutarão as conversas do segmento B e não haverá
colisões entre os segmentos. Muita atenção aqui. A rede não está livre de colisões no
geral porque temos os HUS em cada segmento, mas ENTRE os segmentos pode-se
dizer que não haverá colisões.
Sempre que expandimos uma rede podemos aumentar, manter ou diminuir o tamanho
do segmento, tudo depende de que ativos utilizamos. Conforme vão sendo adicionados
nós a um segmento físico Ethernet, vai aumentando a competição pelos meios. E
quantos mais nós adicionamos mais perdemos em termos de throughput. Throughput é
a velocidade real de uma rede. Pode-se dizer que uma rede de 100Mbps com 4 hosts
tem um throughput pouco inferior a 25Mbps, considerando que todos falem ao mesmo
tempo. Isso é porque os 100Mbps serão divididos para os 4 hosts. “E porque um pouco
inferior?!”. Porque, como vimos, quando enviamos dados de um host para outro não
enviamos apenas os dados enviamos cabeçalhos e dados de controle, isso se chama
overhead. O overhead varia de acordo com a pilha de protocolos utilizados. Agora
vamos às bridges...
Bridge
A bridge é um dispositivo de camada dois que possui duas interfaces suas principais
funções são a segmentação de tráfego em camada 2, isto é, a bridge encaminha ou
descarta os quadros baseados nas entradas da tabela MAC.
Bridging
Para entendemos melhor esses conceitos de domínios temos que entender como a bridge
funciona. Em suma, quando uma bridge recebe um pacote ela consulta a tabela MAC
procurando uma ocorrência do MAC de origem. Ao encontrar, ele sabe se deve ou não
encaminhar esse pacote para a outra interface. Caso ele não encontra ele permite a
passagem. Pode-se dizer que a bridge é um “firewall de camada 2” que cria suas regras
dinamicamente. Abaixo uma animação de como a bridge funciona:
Algumas “legendas”:
• Quando os “cabos de rede” ficam vermelhos eles indicam que o pacote passa por
todos esses cabos.
• O envelope que aparece em baixo é o quadro de camada dois com os campos de
MAC de origem (SRC) e MAC de destino (DST).
Passo 1
O host de MAC AAA quer se comunicar com o host BBB (não é BigBrother!!!). Ele
monta um quadro com os dados de cabeçalho/trailer e envia o quadro pelo meio físico.
Como ele está conectado a um HUB, todos os outros hosts conectados a esse HUB
"recebem" esse pacote. Porque "recebem" entre aspas? Porque todos os hosts (com
excessão do BBB e da Bridge) recebem mas não precessam, a pilha TCP/IP descarta o
quadro porque o MAC de destino não é o deles. É aquela analogia da sala com várias
pessoas feita anteriormente apesar de todos te ouvirem ninguém dá atenção pra sua
conversa porque você não os chamou pelo nome.
Como o quadro é repetido para todos ele chega até o destino (BBB), mas antes vamos
ver o que está acontecendo com a Bridge...
Ainda no passo 1, a Bridge recebe o quadro na interface eth1, mas como ela não é um
host ela não tem o mesmo comportamente que eles (descartar o quadro). A Bridge faz
mais ou menos assim:
Opa, chegou um quadro!! De onde veio? Do AAA pela eth1. Hum... isso pode ser útil,
vou anotar! - Ela pega uma prancheta com uma tabela que mais parece uma lista de
convidados a adiciona o MAC AAA na primeira coluna e a porta eth1 na segunda
coluna - Pra onde esse quadro vai? Hum, é pro BBB... - Ela olha de novo para a tabela e
comenta - Hum... Esse cara não tá na minha lsita.. mas como vovó dizia, antes pecar
pelo excesso que pela falta! Vou deixar esse quadro passar!
Nisso o pacote passsa o quadro para o segmento da direita e o burro do HUB repassa
pra todo mundo. Porém todos nesse segmento descartam o pacote...
-Pausa-
"Porque que a Bridge só anotou o MAC AAA??" Essa é a pergunta mais importante que
você pode ser fazer quando estuda switching/bridging! Pelo simples fato dela só ter
certeza de onde vem o pacote e não poder afirmar com certeza pra onde ele vai!
-Continuando-
Mas mesmo com esse "bloqueio" o quadro chega com sucesso ao AAA, pois ele nunca
deveria ter ido pra bridge.
Passo 2
Agora a comunicação é de AAA pra FFF. Ao enviar o quadro o HUB repete e a bridge
recebe. A bridge olha a origem e ve que já conhece AAA, então ela analisa o destino e
vê que não conhece FFF, então deixa o quadro passar.
Do outro lado o HUB repete o pacote para todos e o FFF recebe o quadro e envia a
resposta que é novamente repassada pelo HUB até chegar na Bridge. Ao receber, a
bridge já anota o FFF como estando na eth2 e verifica que o destino, AAA, está d outro
lado (direito), então ela encaminha o quadro.
Passo 3
Agora, um quadro de DDD pra FFF. O quadro é enviado e repetido até chegar na bridge
(e no próprio FFF). A bridge ao receber o quadro anota o MAC DDD vinculado à eth2 e
depois descarta o pacote, uma vez que FFF, de a cordo com a tabela está em eth2.
O FFF envia uma resposta, o HUB repete e a Bridge recebe, assim como o DDD. A
bridge verifica o destino, DDD, e não permite a passagem para o outro lado pois DDD
está na eth2.
Dessa forma, nessa "conversa" do segmento da esquerda não foi "interrompida" por um
quadro desnecessário.
Vocês devem estar pensando: "Ah, que besteira, é só um quadro de vez em quando! Não
mata ninguém!". Vamos imaginar dois grupos (grupo 1 e grupo 2) de amigos e a
conversa rolando solta. Sempre no grupo de amigos tem um chato, logo temos o chato 1
e o chato 2. Então quando alguém quer conversar mandar o chato ir ver se o fulano ta no
grupo 2. Pouco depois do chato 1 sair vem o chato 2 perguntar se sicrano ta ai!
Atrapalhou a conversa de todo mundo certo?? "Ah, mas nem tanto!!" OK, imagine
agora 50 grupos de amigos. Quando alguém do grupo 1 fala, o chato 1 tem que ir nos 50
grupos procurar o fulano. Não só isso, os outros 49 chatos virão incomodar seu grupo de
amigos. E ai?! Se preocupou agora?! Pois é...
Esse processo de permitir ou não a passagem de quadros com base no endereço MAC é
Referências
Fechamento
Protocolo ARP
Pode-se dizer que o ARP é um DNS de camada 2 e 3. Da mesma forma que o DNS
vincula um FQDN (Fully Qualified Domain Name) a um IP o ARP vincula um MAC a
um IP. Mas diferente do DNS o ARP não necessita de um servidor dedicado.
Uma comparação
Cenário
Vamos imaginar que o host A (192.168.1.1) quer enviar um ping (ICMP) para o Host B
(192.168.1.2) e que ambos estão interligados por um HUB (não há segmentação). A
Camada 3 do Host A gera os dados ICMPs e consulta a Tabela ARP (não confunda
com tabela MAC da bridge/switch). A tabela ARP armazena o par enderço IP:Endereço
MAC. Caso o IP de destino não esteja na tabela ARP é realizada uma consula ARP
(ARP Request).
Voltando pra nossa comparação. O Host A escreveu uma carta para o Host B e
preencheu o endereço de origem: como SEPN 511, Brasília e o endereço de destino
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
como Rua Verbo Divino, São Paulo. Ao levar a carta aos correios (camada 2) o agente
do correio informou que faltava o CEP. O Host A, que era um Geek, sacou seu
smartphone e acessou a internet para consultar o o CEP da Rua Verbo Divino em São
Paulo. Após realizar a consulta ele preencheu os CEPs e enviou a carta.
Infelizmente nosso exemplo não é 100% fiel a realidade pois essa consulta não é tão
simples quanto acessar um site que possui uma base de dados (isso se assemelha ao
DNS). O ARP é um pacote que possui como MAC de origem o MAC do Host A, e
como MAC de destino o endereço de Broadcast da camada 2 (FF:FF:FF:FF:FF:FF), ou
seja, todo mundo! Dessa forma todos os dispositivos conectados a este segmento de
rede irão receber e processar essa requisição. Mas como eles vão saber se é pra eles essa
requisição? No capo dados existirá a seguinte string: "Who has 192.168.1.2?" que
traduzindo seria: "Quem é 192.168.1.2?". Dessa forma somente o 192.168.1.2 irá
responder a requisição ARP.
Ao tentar responder, o Host B já sabe o MAC e o IP do Host A, pois ele possui o pacote
que chegou (se você recebe uma carta você pode responder pra quem te mandou
simplesmente invertendo a origem com o destino certo?!). A resposta ARP (ARP
Reply) é enviada e assim o Host A aprende o MAC do Host B. Após aprender o MAC
ele pode finalmente enviar o ICMP que estava até agora pendente!
Simulação
Sempre que uma requisição ARP é realizada o par MAC:IP é armazenado na Tabela
ARP. As estradas dessa tabela ARP expiram com o tempo, geralmente 2 min, para
evitar que hajam dados desatualizados. Sempre que uma transmissão é realizada a tabela
ARP é consultada. Se não houver a entrada na tabela ARP é realizada a consulta ARP.
Caso haja uma entrada na tabela ARP é utilizado o mapeamento armazenado.
No Windows a tabela arp pode ser listada com o comando arp -a:
Código:
C:\>arp -a
Código:
arp -na
? (192.168.1.254) em 00:14:7f:01:0a:12 [ether] em eth0
? (192.168.1.65) em 00:0f:ea:d8:94:f7 [ether] em eth0
? (192.168.1.66) em 00:0f:ea:d8:94:f7 [ether] em eth0
? (192.168.1.101) em <incompleto> em eth0
? (192.168.1.10) em <incompleto> em eth0
Existe também o RARP (Revers ARP) no qual é consultado um IP para um dado MAC.
O protocolo RARP é utilizado em requisições DHCP que veremos mais a frente!
Referências
Aqui terminamos esse anexo "extra"! Acho que agora vão começar a surgir algumas
dúvidas...
Para o próximo post vamos fazer uma re-leitura do gif que simulava a comunicação
entre hosts em dois segmentos de redes separados por uma bridge (incluíndo as
requisições ARPs para tornar a simulação mais realista!), vamos falar sobre switches,
sobre a operação da sua linha de comando e sobre VLANs.
Numeração Binária
Base Numérica
Uma base numerica se refere ao número de dígitos utilizados para expressar números. Ao
longo da história tivemos diversas bases numéricas: Base 8, Base 16, Base 10, Base 8...
A numeração que utilizamos possui Base 10. Isso quer dizer que podemos escrever qualquer
número utilizando apenas 10 algarismos:
0123456789
01
01234567
Muita atenção pois, por exemplo, se o sistema tem base oito ele só chega até o digito 7. É
muito comum as pessoas acharem que chega até o digito 8.
Como nosso objetivo é entender o endereçamento de camada 3, vamos ver somente numeros
binários até 255 (1111 1111).
Para realizar a conversão de decimal para binário existem dois métodos: método das divisões e
o método das subtrações.
No método da divisão são realizadas sucessivas divisões por zero a após chegar em 1 pegamos
todos os restos em "ordem reversa".
Decimal Casa
1 0000 000X
2 0000 00X0
4 0000 0X00
8 0000 X000
16 000X 0000
32 00X0 0000
64 0X00 0000
128 X000 0000
Vamos por exemplo converter 212 para binário. Para realizar a conversão vamos imaginar uma
"caixa" com oito espaços: [X|X|X|X|X|X|X|X]. Em seguida pegamos o último Decimal da
tabela (128). Se 128 for menor que o numero que queremos converter (212) nos subtraímos os
dois: 212-128=84
A conversão inversa, binário para decimal é bem mais simples. Ao pegarmos um numer
binário, por exemplo 1011 1101, vamos pensar na mesma tabela do método da subtração.
Vamos ver quais "casa" desse numero possuem o 1:
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
10111101
XXXXXXXX
Depois disso pegamos os números correspondentes a essas "casa" (128, 32, 16, 8, 4 e 1) e
somamos:
128 + 32 + 16+ 8 + 4 +1 = 189
Operações Lógicas
Existem várias operações lógicas feitas com números binários. Essas operações muitas vezes
são chamadas de lógica Booleana. Vamos ver duas delas:
AND
A operação AND é expressa pela seguinte equação A * B = Q (Lê-se: A and B é igual a Q)
Ela tem a seguinte tabela verdade:
ABQ
F FF
F VF
VFF
VVV
Vocês devem estar se perguntando: "V?!?! F?!?! Mas agente não tava falando de numeração
binária???". Acontece que em computação o 0 é equivalente a falso e o 1 é equivalente a
verdadeiro! Dessa forma podemos reescrever a tabela da seguinte forma:
ABQ
000
010
100
111
Toda operação lógica pode ser encarada como a veracidade de uma afirmação baseada na
resposta amostrada por indivíduos.
Por exemplo:
Temos 2 pessoas (joão e josé). A afirmação é: João e José são irmãos. Logo faremos uma
pergunta a ambos: "Sua mãe é a mesma que a dele?!". Podemos dizer que eles serão irmãos
se a mãe do José e (AND em português) a mãe de João forem a mesma pessoa. As possíveis
respostas (tabela verdade) serão:
Agora vamos ver como podemos fazer isso com vários números binários: 1010 * 1100
Para realizar essa operação vamos colocar um número sobre o outro e pensar em colunas:
A 1010
B 1100
Resultado 1 0 0 0
Passo-a-passo: Da coluna da direita para a esquerda, consultando na tabela verdade:
coluna 1: 0*0=0
coluna 2: 1*0=0
coluna 3: 0*1=0
coluna 4: 1*1=1
Reescrevendo: 1010*1100=1000
OR
A operação OR é expressa pela seguinte equação A + B = Q (Lê-se: A or B é igual a Q)
Ela tem a seguinte tabela verdade:
ABQ
FFF
F VV
VF V
VVV
ou
ABQ
000
011
101
111
Podemos pensar da mesma forma que no caso da AND. Se tivermos uma sentença como, "Um
deles gosta da cor preta", e perguntarmos ao José e ao João se ele gosta da cor preta, essa
afirmação será verdadeira mesmo que apenas um deles goste da cor preta. A afirmação será
false somente se a ambos não gostarem da cor preta. Podemos dizer que será verdade se João
ou (OR em portugês) gostar da cor preta.
Fechamento
Camada de Rede
Essa camada define a entrega fim a fim dos pacotes definindo um endereçamento
lógico, de forma que qualquer extremidade possa ser identificada, e métodos de
roteamento para que qualquer grupo existente na rede possa ser alcançado.
Para que dois sistemas quaisquer se comuniquem, eles precisam ser capazes de se identificar
e localizar um ao outro. Para isso cada computador em uma rede recebe um identificador
exclusivo, ou endereço. Na camada de rede este endereço é composto por uma identificação
de um grupo (rede) e de integrante do grupo (host). Um endereço combina esses dois
identificadores em um único número.
Protoclo IP
Da mesma forma que a camada 2, a camada 3 “pega” os dados passados pela camada superior
a adiciona a eles algumas informações de protocolo/controle que chamados de headers.
Lembrando que esse processo de adicionar dados de protocolo é chamado de
encapsulamento. O protocolo IP define um pacote composto por um cabeçalho e um campo
de dados. O seu cabeçalho é composto por uma parte fixa de 20 bytes e uma parte de
comprimento variável. A seguir um esquema do cabeçalho utilizado pelo protocolo IP para
realizar o encapsulamento:
Antes de vermos como é um endereço IP vale a pena vermos um pouco sobre numeração
binária e operações lógicas com numeros binários.
Estrutura de um endereçamento IP
Um endereço IP é uma sequência de 32 bits (1s e 0s). Para facilitar a utilização do endereço IP
ele é escrito no formato decimal pontuado. Neste formato, cada endereço é escrito em quatro
partes separadas por pontos. Cada parte do endereço é denominada octeto, já que é formada
de oito dígitos binários. Cada octeto varia entre 0 e 255. Esta notação evita a grande
quantidade de erros de transposição ou omissão que ocorreriam se fosse usada a numeração
binária.
Para identificar a qual rede pertence, um host submete seu endereço IP e sua máscara à
operação lógica AND. O resultado desta operação é o endereço de rede. O endereço de rede é
usado para identificar uma rede. Nos endereços a porção que corresponde à identificação do
host será sempre 0. Este endereço é utilizado pelos roteadores de uma rede para poder
encaminhar um pacote para seu destino correto
Primeiro converter 255 para binário: 1111 1111. Agora vamos reescrever a máscara:
Agora se pegarmos a máscara, a invertermos (trocar uns por zeros) e realizar o mesmo
procedimento teremos outro resultado:
O resultado será 0.0.0.32, ou somente 32. Esse é o "identificador" do host. Podemos dizer que
192.168.1.32/24 é o host 32 da rede 192.168.1.0.
Como visto, a máscara define quantos hosts podem existir em uma rede.
Por exemplo, na rede 192.168.1.0/24 podemos ter do host 192.168.1.1 até o host
192.168.1.254, ou seja 254 hosts. Quem está prestando antenção deve ter se perguntado, "por
que não até 192.168.1.255?", que é limite do octeto. Isso é um detalhe que será abordado em
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
seguida!
A rede 172.16.0.0/16 pode ter do host 172.16.0.1 até o host 172.16.255.254, 65.024 hosts.
Por último, a rede 10.0.0.0/8 pode ter do host 10.0.0.1 até o host 10.255.255.254, 16.646.144
hosts.
Endereços Reservados
Existem alguns endereços que não podem ser utilizados no endereçamento de hosts:
• O endereço de rede possui a parte de host preenchida por zeros. Ele é reservado para
identificação da rede e não deve ser atribuída a nenhum dispositivo. Acima, quando
nos referenciávamos às rede sempre deixamosa porção do host como zero:
192.168.1.0/24
• O endereço de Broadcast possui a porção de host é 255 (todos os bits 1s). Este
endereço é utilizado para enviar um pacote para todos os hosts conectados na rede.
Um exemplo de endereço de broadcast será apresentado a seguir
Broadcast de Camada 3
Da mesma forma que vimos na camada dois, um broadcast é uma transmissão que é
endereçada para todos os dispositivos. A diferença de broadcast de camada 2 e de camada 3 é
a forma como ele é feito (utilizando endereço de camda 2 ou 3) e sua "cobertura".
Por isso anteriormente falamos que os endereços de host dessa rede vão de 192.168.1.1 a
192.168.1.254 e não até 192.168.1.255, pois este é reservado para Broadcast. Este endereço
de broadcast é "mais restrito" pois, ele é "endereçado" somente a rede 192.168.1.0. Existe um
broadcast mais genérico que é o 255.255.255.255. Se fizermos uma comparação a grupos de
pessoas, podemos dizer que o IP 192.168.1.255 seria a mesma coisa como alguém falando:
"Ow! Pessoal do grupo 1..." já o 255.255.255.255 seria algo como: "Todo mundo!! Atenção
ai...".
Hierarquia do endereçamento IP
Esse tipo de endereço é chamado de endereço hierárquico, porque contém diferentes níveis.
Endereçamento Classfull
Cada endereço IP completo de 32 bits é dividido em uma parte da rede e uma parte do host.
Um bit ou uma seqüência de bits no início de cada endereço determina a classe do endereço.
Há cinco classes de endereços IP.
Classe A
O endereço de classe A foi criado para suportar redes extremamente grandes, com mais de 16
O primeiro bit de um endereço de classe A é sempre 0. Com esse primeiro bit fixo como 0 o
menor número que pode ser representado é 00000000 e o maior é 01111111, em decimal 0 e
127, respectivamente. Porém os endereços 0 e 127 são reservados e não podem ser usados
como endereços de rede.
Qualquer endereço que comece com um valor entre 1 e 126 no primeiro octeto é um
endereço de classe A. Esta classe pode discriminar 16.646.144 hosts em cada uma das suas 126
redes. A máscara de rede Classe A é 255.0.0.0, 8 bits.
Classe B
O endereço classe B foi criado para dar conta das necessidades de redes de porte médio a
grande. Um endereço IP de classe B usa os dois primeiros octetos para indicar o endereço da
rede. Os outros dois octetos especificam os endereços dos hosts.
Os dois primeiros bits do primeiro octeto de um endereço classe B são sempre 10. Os seis bits
restantes podem ser preenchidos com 1s ou 0s. Portanto, o menor número que pode ser
representado é 10000000, equivalente a 128 em decimal, enquanto o maior número que pode
ser representado é 10111111, equivalente a 191 em decimal.
Qualquer endereço que comece com um valor no intervalo de 128 a 191 no primeiro octeto é
um endereço classe B. Esta classe pode discriminar 65.024 hosts em cada uma das suas 15.120
redes (desconsiderando as redes reservadas). A máscara de rede Classe B é 255.255.0.0, 16
bits.
Classe C
Das classes de endereços originais, o espaço de endereços de classe C é o mais usado. Esse
espaço de endereços tinha como objetivo suportar redes pequenas com no máximo 254 hosts.
Um endereço classe C começa com o binário 110. Assim, o menor número que pode ser
representado é 11000000, equivalente a 192 em decimal e o maior número que pode ser
representado é 11011111, equivalente a 223 em decimal.
Se um endereço contém um número entre 192 e 223 no primeiro octeto é um endereço classe
C. Esta classe pode discriminar 2.023.680 redes (desconsiderando as redes reservadas). A
máscara de rede Classe C é 255.255.255.0, 24 bits.
O endereço classe D foi criado para permitir multicasting em um endereço IP. Um endereço de
multicast é um endereço de rede exclusivo que direciona os pacotes com esse endereço de
destino para grupos predefinidos de endereços IP. Assim, uma única estação pode transmitir
simultaneamente um único fluxo de dados para vários destinatários.
Um endereço IP que comece com um valor no intervalo de 224 a 239 no primeiro octeto é um
endereço classe D. Os endereços de classe D não possuem uma máscara padrão. Na RFC 3171
são designadas algumas redes com máscaras distintas e suas funções, porém generaliza-se a
classe D com uma máscara de rede 240.0.0.0 ou /4.
Classe E
Também foi definido um endereço classe E. Entretanto, a IETF (Internet Engineering Task
Force) reserva esses endereços para utilizações futuras. Dessa forma, nenhum endereço classe
E foi liberado para uso na Internet. Os primeiros quatro bits de um endereço classe E são
sempre definidos como 1s. Assim, o intervalo de valores no primeiro octeto dos endereços de
Classe E vai de 11110000 a 11111111, ou de 240 a 255 em decimal.
Exercícios
1. 172.31.128.12
2. 199.37.52.23
3. 230.220.2.1
4. 192.165.8.8
1. 172.16.32.54/16
2. 192.168.32/24
3. 192.168.1.255/24
4. 10.12.1.21/8
Referências
O Protocolo ICMP
A operação de uma rede IP é monitorada rigorosamente pelos roteadores. Quando algo
inesperado ocorre o evento é reportado pelo protocolo ICMP (Internet Control Message
Protocol) definido na RFC 729. O protocolo ICMP também é utilizado para testes de rede
através do comando ping.
O ICMP utiliza mensagens para realizar suas tarefas. Na sua RFC são definidas 16 mensagens,
dentre estas as mais importantes são:
Entrega de Pacotes
Para saber se o host irá executar uma entrega local ou remota basta saber se o remetente
Entrega Direta/Local
Na entrega local o remetente precisa saber todos os dados do destinatário. Pois ao enviar o
pacote o remetente preenche o endereço IP de origem e destino e o endereço MAC de
origem e destino. Os Endereços MAC e IP de origem são conhecidos pelo remetente. Já o
endereço IP de destino deve ser informado pela aplicação de camada superior, enquanto o
endereço MAC de destino é descoberto através de uma requisição ARP. Desta forma a
entrega direta pode ser separada em 4 etapas:
A entrega remota é aquela em que o remetente não se encontra no mesmo segmento de rede
que o destinatário sendo necessário a entrega indireta isto é, o envio do pacote a um destino
intermediário que irá redirecioná-lo para o destinatário, caso possível, ou para um outro
destino intermediário. A esses sucessivos encaminhamentos a destinos intermediários dá-se o
nome de roteamento. Aos dispositivos (destinos intermediários) que executam este
roteamento é dado o nome de roteador.
O roteamento se baseia no princípio que um grupo não estará em duas localizações distintas,
isto é todos os hosts de uma mesma rede estarão agrupados em um único enlace. Ou seja,
todos os hosts da rede 192.168.1.0, por exemplo, estarão agrupados e não espalhados ao
longa da rede.
Como explicitado acima o roteamento pode ser interpretado como um processo de 3 etapas:
Uma vez que este pacote será enviado a um roteador, mas este não é seu destino, no campo
endereço IP de destino do cabeçalho IP irá constar o endereço do host B, porém o endereço
MAC de destino será o endereço de R1.
Este preenchimento é necessário para que o roteador receba o quadro (através da camada de
enlace) porem não o interprete como sendo para ele, pois o IP de destino não é dele, mas sim
para que este seja roteado de acordo com sua tabela de roteamento. Ficou confuso né?!
Vamos novamente, baseado na figura acima.
O Host A que mandar uma mensagem para o Host B porém ambos estão em redes diferentes.
O Host A sabe que não irá alcançar o Host B diretamente então resolve utilizar-se do seu
gateway (R1). Mas para que o R1 saiba pra quem enviar o pacote é preciso que exista essa
informação. Então no campo IP de destino é mantido o IP do Host B e não o IP do R1 como
muitos pensam. Mas então como o R1 recebe esse pacote? Porque no campo MAC de destino
é colocado o Mac do R1. Dessa forma ao receber o pacote a camada 2 do R1 irá ver que o MAC
de destino é o seu e ira receber o pacote. A camda 3 do R1 irá verificar que o IP de destino não
é o do R1, dessa forma ele sabe que de encaminhar o pacote.
Para entender melhor podemos pensar nisso como uma correspondência. Nós colocamos o
endereço no destinatário e entregamos a carta aos Correios. Os Correios se responsabilizam
em entregar a carta ao seu destino. Nós não precisamos nos preocupar como essa carta chega
lá, só temos que lembrar de entregá-la aos Correios. Da mesma forma que o Host A entrega o
pacote ao R1 com o endereço do Host B.
Após receber o quadro da camada de enlace, o roteador tentará descobrir o próximo destino
deste pacote com base no IP de destino informado no header da camada de rede do pacote.
Diferentemente do ocorrido na etapa anterior, a decisão de encaminhamento é tomada após
analisar uma tabela de roteamento complexa podendo chegar a possuir dezenas de rotas.
Estas rotas sempre correspondem a um grupo isto é, ela identifica a rede ao invés de hosts
definidos. Para isto é necessário possuir o par endereço e máscara de rede. Para cada rota na
tabela de roteamento está vinculado o next hop (próximo salto, endereço do próximo roteador
ao qual deve ser enviado o pacote) e a interface de saída.
Descoberto o próximo salto o pacote será encaminhado com o endereço MAC de origem,
roteador R1, e o MAC de destino do próximo salto indicado pela tabela de roteamento.
Para encaminhar este quadro para seu destino final é necessário encaminhá-lo, porem dessa
vez com o MAC de destino como sendo do host B, isto será feito através de uma resolução
ARP. Após a consulta o quadro será enviado e o host B irá recebê-lo, pois o MAC e o IP que
constam nos headers de suas respectivas camadas correspondem ao dele.
Pode-ser notar que o header da camada rede não foi alterado em nenhum momento,
mantendo assim a origem e o destino original para que, se necessário, o host B saiba para
quem enviar uma resposta.
Desta forma pode-se representar a entrega desse pacote através das camadas implementadas
por cada dispositivo da seguinte forma:
Primeiro vamos entender o que significa essa imagem. Temos, representados pelas 7 camadas
OSI, o host A e o host B. Os roteadores são representados apenas pelas camadas 1, 2 e 3. Isso
se deve ao fato dos hosts implementarem as 7 camadas mas os roteadores apenas as 3
primeiras. As setas pontilhadas mostram a interação entre camadas e as setas com linhas
normais mostram o fluxo dos dados.
Podemos ver que a mensagem de camada 3 não foi alterada ao longo da transmissão,
diferente da mensagem da camada 2. Atentem para a diferença entre quadro e pacote! Vamos
ver isso com mais calma adiante quando essa idéia de cabeçalho e protocolo estiver mais
firme.
Já as mensagens da camada 4 em diante não são analisadas pelos roteadores, por isso essas
camadas "se comunicam diretamente" da origem ao destino.
Protocolos de Roteamento
O roteamento é o processo usado por um roteador para encaminhar pacotes para a rede de
destino. Todos os dispositivos ao longo do caminho usam o endereço IP de destino contido no
cabeçalho do pacote para orientar-lo na direção correta, a fim de que ele chegue ao seu
destino.
As decisões são tomadas com base nas rotas contidas em sua tabela de roteamento. Essas
rotas podem ser estabelecidas através da utilização de duas classes dos protocolos de
roteamento: Protocolos de Roteamento Dinâmicos e Estáticos.
Roteamento Estático
Em uma rede grande, essa manutenção das tabelas de roteamento pode exigir uma
quantidade enorme de tempo de administração. Mesmo possuindo desvantagens as rotas
estáticas são utilizadas atualmente, porém em conjunto com um protocolo de roteamento
dinâmico.
Roteamento Dinâmico
Um protocolo de roteamento dinâmico escolhe a melhor rota com base em um fator chamado
métrica de roteamento. A métrica pode ser composta de vários fatores, sendo eles: Latência,
largura de banda, confiabilidade, carga, contagem de saltos e custo. Cada protocolo de
roteamento dinâmico determina quais e como estes valores serão utilizados na fórmula para
cálculo da métrica.
A Tabela de Roteamento
Falamos diversas vezes sobre a tabela de roteamento hoje, então vamos ver uma básico dela!
Nesse exemplo estou usando todos os IPs com a máscara 24 para simplificar nas próximas
simulações. A tabela de roteamento pode dizer muitas coisas sobre um roteador. Por exemplo,
olhando essa tabela vemos que esse roteador tem, pelo menos, 3 interfaces (eth0, eth1 e
eth2) e muito provavelmente ele está conectado a duas redes locais (192.168.1.0/24 e
192.168.2.0/24) e apenas uma saída (172.16.32.0/24).
Isso é devido a informação que está na coluna próximo salto. Vemos que ele está diretamente
conectado as redes 192.168.1.0/24, 192.168.2.0/24 e 172.16.32.0/24, o que significa que ele
possui interfaces nessas redes. Podemos saber que interfaces são olhando a coluna "interface
de saída".
Aqui entra o conceito de gateway. Dizemos que o gateway da rede 10.1.200.0 é o roteador
172.16.32.254. O gateway é o próximo salta. Trazindo ao pé da letra gateway é um portal,
nesse caso o partal de acesso para uma determinada rede. Diferente de default gateway.
Então o que é default gateway?? Bem, essas duas últimas regras poderiam ser simplificadas
utilizando um Default Gateway.
As rotas default são usadas para rotear pacotes com destinos que não correspondem a
nenhuma das outras rotas da tabela de roteamento. Geralmente, os roteadores são
configurados com uma rota default para o tráfego dirigido à Internet, já que normalmente é
impraticável ou desnecessário manter rotas para todas as redes na Internet.
Uma rota default, na verdade, é uma rota estática especial endereçada a 0.0.0.0 e com
máscara 0.0.0.0. Quando um IP de destino é submetido à operação lógica AND com a máscara
definida resultará sempre na rede 0.0.0.0.
Trocamos 2 rotas por uma única rota. Isso é útil em certos cenários. Vamos entender o que
essa rota quer dizer: 0.0.0.0/0 = qualquer rede; 172.16.32.254 = envie para o 172.16.32.254.
Ou seja, qualquer rede deve ser enviada para o roteador 172.16.32.254. "Como assim
qualquer rede??" Qualque rede que não tenha sido especificada antes na tabela de
roteamento. Para a galera de firewall iptables isso é similar a política padrão (default policy). O
Default Gateway é utilizado quando o roteador não conseguiu descobrir pra onde ele tem que
mandar esse pacote. Ele é a última opção, o último recurso.
Vamos fazer umas "simulações". Tenha em mente que o roteador varre a tabela de cima para
baixo em busca de uma ocorrência:
Simulação
Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Esse é um exemplo bem simples pois só possui redes diretamente conectadas. Essa rede
se torna operacional com apenas 4 linhas de comando!
R1
R2
Rede de Destino Próximo Salto Interface de Saída
192.168.1.0/24 172.16.1.1 eth1
192.168.2.0/24 Diretamente Conectado eth0
R3
Rede de Destino Próximo Salto Interface de Saída
192.168.1.0/24 172.16.2.1 eth1
192.168.2.0/24 172.16.2.1 eth1
192.168.3.0/24 Diretamente Conectado eth0
172.16.1.0/24 172.16.2.1 eth1
172.16.2.0/24 Diretamente Conectado eth1
R1
Rede de Destino Próximo Salto Interface de Saída
192.168.1.0/24 Diretamente Conectado eth0
172.16.1.0/24 Diretamente Conectado eth1
0.0.0.0/0 172.16.1.2 eth1
R2
Rede de Destino Próximo Salto Interface de Saída
192.168.1.0/24 172.16.1.1 eth1
192.168.2.0/24 Diretamente Conectado eth0
192.168.3.0/24 172.16.2.2 eth1
172.16.1.0/24 Diretamente Conectado eth1
172.16.2.0/24 Diretamente Conectado eth2
R3
Rede de Destino Próximo Salto Interface de Saída
192.168.3.0/24 Diretamente Conectado eth0
172.16.2.0/24 Diretamente Conectado eth1
0.0.0.0/0 172.16.2.1 eth1
Referências
Fechamento
O Que é TTL
Nesse cabeçalho há um campo muito importante chamado TTL. Vamos rever sua função e
compreende-la melhor:
TTL (Time to Live – Tempo de Vida) – Inicialmente configurado como 255. A cada salto este
campo é decrementado. No momento que ele atingir o valor zero este pacote será descartado.
Este campo foi criado para evitar que pacotes trafeguem indefinidamente na rede
Agora imagina se 20 hosts tiverem tentando acessar esse IP. Serão vinte pacotes rodando
naquele triangulo. Isso gera processamento desnecessário nos roteadores, além de ocupar
uma banda que poderia estar sendo utilizada.
Para evitar que esse pacote fique trafegando indefinidamente pela rede foi definido o campo
TTL. O campo TTL, por padrão, é definido como 255. Cada vez que um roteador encaminha o
pacote ele decrementa o conteúdo do campo TTL, quando o valor do campo chega a 0 o
pacote é descartado pelo roteador.
Um AS é uma coleção de redes sob uma administração comum, que compartilha uma
estratégia comum de roteamento. Para o mundo exterior, um AS é visto como uma única
entidade. Cada AS tem seu próprio conjunto de regras e diretivas e um número de AS,
composto por 16 bits, que o distingue de maneira exclusiva dos outros sistemas autônomos no
resto do mundo. O ARIN (American Registry of Internet Numbers) gerencia a atribuição destes
números de forma a não haver duplicação. O conceito de AS é mais um daqueles conceitos
que você simplesmente tem que aceitar e que você entende por osmose.
Geralmente as pessoas pensam que protocolos EGP são somente para interconectar sistemas
autônomos ou para ISPs (Internet Service Providers – Provedores de Internet). A verdade é que
os protocolos EGP são mais interessantes quando você tem dois links com a internet e o “site”
(não é site no sentido de página, mas site no sentido de grupo de ativos) possui um AS
cadastrado, o que geralmente ocorre somente para empresas grandes. Dentre outras funções
que o EGP pode prover é o balanceamento de links, redundância por rotas alternativas
Quando um roteador recebe a tabela de roteamento do seu vizinho ele verifica as rotas que
desconhece, incrementa o vetor de distância destas e acrescenta-as em sua tabela. O vetor de
distância indica por quantos saltos, ou hops, este pacote irá passar até alcançar o destino. Para
redes diretamente conectadas o vetor de distância é um.
http://under-linux.org/members/magnun/albums/imagens-para-posts/7113-vetor-
distancia/
Com este algoritmo cada roteador vê somente os roteadores que são seus vizinhos, o que
impede que um roteador conheça a topologia exata da rede, tornando difícil a prevenção de
loops gerados por enlaces redundantes.
Juntamente com este protocolo de roteamento foi definida uma técnica chamada de split
horizon. O split horizon consistem em não enviar informações sobre uma rede ao roteador que
o informou sobre aquela rede. Isto faz com que um roteador não receba atualizações sobre
uma rede já conhecida por ele e com uma métrica pior.
Vocês verão na próxima imagem que as rotas são anunciadas com o valor n mas armazenadas
com o valor n+1. Isso porque o roteador conta a si mesmo como um salto.
Próximo estágio:
Último estágio:
Endereços na Internet
Foi necessário criar um procedimento que garantisse que os endereços fossem realmente
exclusivos. Inicialmente, uma organização conhecida como InterNIC (Internet Network
Information Center – Centro de Informações da Rede Internet) cuidou desse procedimento. A
InterNIC foi substituída pela IANA (Internet Assigned Numbers Authority). A IANA gerencia
cuidadosamente o estoque de endereços IP para garantir que não haja duplicidade de
endereços usados publicamente. A duplicidade causaria instabilidade na Internet e
comprometeria sua capacidade de entregar datagramas para as redes.
Infelizmente, os endereços de classe C estão limitados a 254 hosts utilizáveis. Isso não atende
às necessidades de organizações maiores, que não podem adquirir um endereço de classes A
ou B. Mesmo se houvesse mais endereços classe A, B ou C, um excesso de endereços de rede
faria com que os roteadores da Internet viessem a parar sob o peso do enorme tamanho das
tabelas de roteamento necessárias para armazenar as rotas para alcançar cada rede.
Durante as duas últimas décadas, foram desenvolvidas diversas extensões do IPv4. Essas
extensões foram projetadas especificamente para melhorar a eficiência de utilização do
espaço de endereços de 32 bits. Duas das mais importantes extensões são as máscaras de sub-
rede e o roteamento interdomínios classless (CIDR).
Nesse meio tempo, foi definida e desenvolvida uma versão ainda mais extensível e escalonável
do IP, o IP versão 6 (IPv6). O IPv6 usa 128 bits em vez dos 32 bits usados atualmente no IPv4. O
IPv6 usa números hexadecimais para representar os 128 bits. Ele oferece 640 sextilhões de
endereços. Essa versão do IP deve oferecer endereços suficientes para as futuras necessidades
das comunicações.
O uso de sub-redes é um método usado para gerenciar endereços IP dividindo classes inteiras
de endereços de redes em pedaços menores. Este método impediu, temporariamente, o
esgotamento completo dos endereços IP.
É importante saber quantas sub-redes, ou redes, e quantos hosts serão necessários em cada
Endereços Privados
Os endereços IP privados é outra solução para o problema da escassez iminente dos endereços
IP públicos. Como dito, as redes públicas exigem que os hosts tenham endereços IP exclusivos.
Entretanto, as redes privadas que não estão conectadas à Internet podem usar quaisquer
endereços de host, contanto que cada host dentro da rede privada seja exclusivo.
Muitas redes privadas existem em paralelo com as redes públicas. Porém, não é recomendável
que uma rede privada use um endereço qualquer, pois essa rede pode ser conectada à
Internet algum dia podendo causar erros no roteamento para certas redes públicas.
O RFC 1918 reserva três blocos de endereços IP para uso interno e privado. Esses três blocos
consistem de um endereço de classe A, um intervalo de endereços de classe B e um intervalo
de endereços de classe C:
Definida na RFC-1631 a NAT (Tradução de Endereço de Rede) foi criada para reduzir o número
de endereços públicos na internet permitindo que uma rede com endereço privado tenha
acesso à internet. Para isto é feita a conversão dos endereços privados em endereços públicos.
Ao realizar uma NAT alguns endereços são mantidos e outros são alterados dependendo da
direção do pacote em uma conexão. Um dispositivo habilitado para NAT geralmente opera na
borda de uma rede stub. Uma rede stub é uma rede que tem uma única conexão para a rede
externa.
Este roteador irá alterar o conteúdo do cabeçalho do pacote trocando o endereço privado de
origem pelo seu endereço publico. Este mapeamento é armazenado na tabela NAT e o pacote
será encaminhado. Ao responder o host da internet irá endereçar o pacote ao endereço
interno global, pois foi este quem o enviou. Ao receber a resposta o roteador saberá que esta
é uma resposta para o host interno por meio do mapeamento existente na tabela NAT criada
por ele.
A NAT não só torna desnecessária a utilização de endereços públicos para todos os sistemas
que necessitam de acesso à internet, mas também provê segurança. Caso um host da internet
tente se comunicar com um host da rede local esta comunicação será bloqueada, pois não
existe na tabela NAT um registro dessa comunicação. Desta forma a NAT permite que somente
sejam abertas conexões no sentido "rede local para Internet", impedindo ataques de hackers.
Como a NAT faz um mapeamento IP a IP (IP de origem a IP de destino) para que haja múltiplos
acessos a um mesmo destino seriam necessários vários endereços. Para prover este serviço,
sem que haja mapeamentos duplicados, a NAT utiliza uma multiplexação no nível das portas,
isto é feito por meio da PAT (Port Address Translation).
Apesar de todas as vantagens apresentadas pela NAT ela também possui desvantagens:
• Aumenta o atraso devido a tradução de cada endereço IP dentro dos cabeçalhos dos
pacotes;
• Perda da rastreabilidade IP ponta-a-ponta. Torna-se muito mais difícil rastrear pacotes
que passam por diversas alterações de endereço;
• Força alguns aplicativos que usam endereçamento IP a pararem de funcionar, porque
oculta os endereços IP ponta-a-ponta.
1. Montar a tabela de roteamento, sem utilizar Default Gateway, dos roteadores nos seguintes
ambientes:
5. Qual será o valor dos campos MAC de Origem, MAC de Destino, IP de Origem e IP de destino
do pacote, em cada segmento de rede, durante a comunicação do Host A com o Host B nas
topologias do exercício 1?
6. [Desafio] Projete uma rede local com acesso a internet com os seguintes requisitos:
Finalização
Sub-redes
Como dito anteriormente, o uso de sub-redes é um método usado para gerenciar endereços IP
dividindo classes inteiras de endereços de redes em pedaços menores. Este método impediu,
temporariamente, o esgotamento completo dos endereços IP. Com as sub-redes, a rede não
fica limitada às máscaras de rede padrão de classes A, B ou C, e há maior flexibilidade no
projeto da rede.
Essa estória de dividir classes inteiras de endereços em pedaços menores eu já tenho feito
aqui! Fiz sem avisar pra testar se alguém ia se tocar e falar que eu errei e também pra começar
acostumar a todos com o conceito de sub-redes. Mas porque fazer isso?? Tem uma série de
fatores, mas principalmente é feito para economizar endereços IPs. Você pode montar uma
rede simples sem utilizar sub-redes, mas para redes grandes ou extremamente grandes, a
divisão em sub-redes é necessária.
Dividir uma rede em sub-redes significa usar a máscara de sub-rede para dividir a rede em
segmentos menores, ou sub-redes, mais eficientes e mais fáceis de gerenciar. Gerando assim
números maiores de redes pequenas. Como fazer isso?? Por exemplo, o IP 10.0.0.0/8. Se você
for utilizar essa rede em uma rede local, voce vai ter "infinitos" endereços de hosts mas
somente um endereço de rede! Se você precisar de uma rede voltada para servidores
(serverfarm) você vai ter que usar outra rede, o que esse endereçamento não contempla!
Então a solução é o uso de sub redes.
Antes de "reduzir" a rede 10.0.0.0/8, vamos analisar. Esse endereço provê uma rede (10.0.0.0)
e inúmeros hosts (de 10.0.0.1 a 10.255.255.254). Como não precisamos de todos esses hosts
Endereço 10 0 0 0
Pra quem perdeu sobre numeração binária: Curso de Redes: Numeração Binária
Pra quem não o calcular do número de rede e host: Curso de Redes: Camada de Rede -
Parte 1
Podemos ver que os 2 primeiros octetos se referem a rede e os dois últimos ao host. Dessa
forma temos as seguintes características: Um endereçamento que provê 256 redes (de
10.0.0.0 até 10.255.0.0) e 65534 hosts por rede (de 10.0.0.1 a 10.0.255.254 ou de 10.1.0.1 até
10.1.255.255).
Muitos devem estar se perguntando: "porque não posso variar o primeiro octeto??" Porque a
ideia é criar redes dentro da rede, e qual é a nossa rede?? 10.0.0.0/8. A máscara de 8 bits fixa
o primeiro octeto. Fácil ne?? Se você parar pra pensar, eu simplesmente pego emprestado
alguns bits do endereço de host original e uso para endereçar a rede. Vamos analisar o IP
10.12.0.20
Assim podemos ver a porção de rede original (verde) a porção de rede pega emprestada
(vermelha), da antiga parte de host, e a parte de host restante (preta).
Um exemplo prático
Agora vamos complicar um pouco! Vamos supor que o chefe quer implementar algumas redes
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
para servidores: "Precisamos montar 4 redes para servidores! Cada rede tem que suportar até
10 servidores. Infelizmente só temos disponível para isso a rede 192.168.1.0/24.".
Nossa rede tem que suportar até 10 servidores, considerando o gateway desses servidores,
teremos que ter 11 endereços de Hosts nessa rede. Assim como em toda a computação, redes
funciona sempre em potências de 2. Dessa forma não vamos conseguir prover exatamente 11
endereços de hosts. Qual o próximo multiplo de 2 mais próximo de 11?? Vamos lá:
2^1 2 2
2^2 2x2 4
2^3 2x2x2 8
2^4 2x2x2x2 16
2^5 2x2x2x2x2 32
2^6 2x2x2x2x2x2 64
Ok!! A próxima potência de 2 é 16. Mas como sabemos, as redes tem 2 endereços reservados,
os endereços de rede - com a porção do host preenchida com zeros - e o endereço de
broadcast - com a porção de hosts preenchido com um. Dessa forma temos apenas 14 (16 - 2)
endereços de hosts úteis.
Vamos pra segunda parte! Quantos bits são necessários para escrever 14? vamos converter:
14 em decimal = 1100 em binário. Utilizamos 4 bits. Como vimos, temos 8 bits "livres". Como
precisamos de 4 para os hosts, nos sobram 4 para a rede (8 - 4 = 4). Então vamos ver na tabela!
Agora começa a parte complicada. Qual a máscara dessa "nova rede"?? 255.255.255.240 (/28).
Então vamos ver todas as possíveis subredes que teremos utilizando a máscara /28. Como já
vimos anteriormente, os uns da máscara define a porção de rede. Variando os bits da porção
de rede do endereço IP (bits em vermelho) temos as possíveis redes. Então vamos começar:
Sim, por mais estranho que isso possa parecer, isso são endereços de rede! Tem uma "manha"
pra calcular essas coisas. É só pegar a primeira rede (não zero), nesse caso a 192.168.1.16 e ir
incrementando com o último número (16). Então teremos 16+16=32 (192.168.1.32), 32+16=48
(192.168.1.48), 48+16=64 (192.168.1.64) e etc...
Vale relembrar que o primeiro endereço de host (com todos os bits da porção de hosts como
zero) é o endereço de rede (192.168.1.80) e o último endereço (com todos os bits da porção
de hosts como uns) é o endereço de broadcast (192.168.1.95). Você pode ver que o endereço
de broadcast é exatamente o endereço da próxima sub-rede (192.168.1.96) subtraído de um.
Essa "manha" é útil para quando você precisa saber rápidamente o endereço de broadcast de
uma rede. Observe também que o endereço de rede sempre é par e o endereço de broadcast
sempre é impar. No caso do cálculo dos endereços de hosts é mais simples pois só precisamos
incrementar com o número 1.
Pronto, missão cumprida! Temos agora 16 redes e cada uma com apenas 14 hosts. Atende a
As sub-redes são muito úteis também para reduzir o desperdício de redes. Em uma rede
grande é normal ter links não populados entre roteadores. Ex:
Se não utilizarmos subredes designaríamos uma rede de 254 hosts para conectar 2 roteadores,
o que é um desperdício extremo pois precisamos de apenas 2 endereços de hosts. Ai entra a
subrede. Se utilizarmos um IP com máscara /30 ou 255.255.255.252 teremos uma rede de
apenas 2 hosts. Vamos ver um exemplo prático. Vamos pegar o IP 172.16.32.0/30. Vamos
observar conforme feito anteriormente:
Como podemos ver temos uma economia enorme de endereços IPs. Isso é muito útil também
para redes wireless, cone temos muitos rádios ligados ponto-a-ponto, ou até mesmo em redes
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
ponto-a-multiponto que não tendem a crescer, desde que utilizamos uma máscara mais
aberta, /28 por exemplo.
Sumarização de rotas
A sumarização de rotas é a "abreviação" de rotas. Ela serve para manter uma tabela de
roteamento mais limpa. Tomando a imagem do exemplo anterior, podemos ver que cada
roteador terá pelo menos 6 rotas (incluindo as redes diretamente conectadas).
Quanto mais a rede cresce mais complexa será a tabela de roteamento. Se utilizarmos a
sumazação de rotas podemos ter tabelas mais consistentes e simples:
Mas como fazemos essa sumarização? Nos temos que projetar a rede de forma a obte-la,
como a imagem acima. Para configurar a sumarização temos que pegar a tabela de
roteamento de um roteador e analisar as rotas. Por exemplo, o R1. Sua tabela de roteamento
seria a seguinte:
Até onde esses 3 endereços IPs são iguais? Exatamente, todos os bits em verde (25 primeiros
bits) são comuns aos 3 endereços IPs, logo podemos sumarizar essas 3 redes em uma única
rede: 192.168.0.0/25. Magicamente 3 rotas viram uma!
Podemos ver que novamente os 25 primeiro bits são iguais. logo podemos resumir essas tres
redes em uma: 192.168.0.128/25.
Se repitirmos esse mesmo processo para os outros hosts veremos que será possivel sumarizar
as tabelas. Mas temos que ter muita atenção pois só podemos sumarizar rotas que possuem o
mesmo gateway.
Acabou que nesse exemplo eu utilizei outro recurso chamado VLSM (Variable length subnet
mask). O padrão de sub-redes é utilizar a a mesma mascara ao longo da sub-rede. Mas às
vezes é necesário variar a máscara para ter uma rede com mais hosts como era o caso. O VSLM
é um artifício que ajuda muito pra criar uma rede sumarizada.
Exercícios
1. 192.168.1.35/28
2. 172.16.193.0/10
A camada de transporte é uma camada fim a fim, que liga a origem ao destino. Em outras
palavras, um programa da máquina de origem mantém uma conversa com um programa
semelhante instalado na máquina de destino, utilizando cabeçalhos de mensagem e
mensagens de controle. Entre as camadas de transporte de diferentes hosts são trocadas
TPDUs (Transport Protocol Data Units) chamados de segmentos. Um segmento é composto
pelo cabeçalho da camada de transporte e os dados da camada de aplicação.
Muitos hosts são multiprogramados; isso significa que muitas conexões estarão entrando e
saindo de cada host. Desta forma é responsabilidade da camada de transporte multiplexar
todas as comunicações em um único canal determinando a qual conexão uma mensagem
pertence. Além da multiplexação é responsabilidade desta camada estabelecer conexões,
encerrá-las e controlá-las de forma que um host muito rápido não possa sobrecarregar um
host muito lento (controle de fluxo). Em redes IP são utilizados dois protocolos para a
implementação destas funções: o TCP e o UDP.
Os processos utilizam os TSAP (Transport Service Acess Point – Ponto de Acesso de Serviços de
Transporte) para se intercomunicarem. Em redes IP, o TSAP é um número de 16 bits chamado
de porta. O endereço da camada de transporte é um número de 48 bits, composto pela
agregação do endereço IP do host e o número da porta. Os serviços da camada de transporte
são obtidos através da comunicação entre os sockets do transmissor e do receptor.
Para uma melhor organização de serviços, algumas portas foram definidas pela IANA como
“portas bem conhecidas” (well-known ports). Estas são as portas abaixo de 1024, para
aplicações não padronizadas são utilizadas portas acima deste valor.
Os sockets são diferentes para cada protocolo de transporte, desta forma mesmo que um
socket TCP possua o mesmo número que um socket UDP, ambos são responsáveis por
aplicações diferentes. Os sockets de origem e destino são responsáveis pela identificação única
da comunicação. Desta forma é possível a implementação da função conhecida como
multiplexação. A multiplexação possibilita que haja várias conexões partindo de um único host
ou terminando em um mesmo servidor.
O UDP (Protocolo de Datagrama de Usuário) é um protocolo sem conexão não confiável para
aplicações que não necessitam nem de controle de fluxo nem da manutenção da seqüência
das mensagens enviadas. Ele é amplamente usado em aplicações em que a entrega imediata é
mais importante do que a entrega precisa, como a transmissão de dados de voz ou vídeo. O
UDP foi definido na RFC 768
O protocolo UDP é muito mais simples que o TCP, isto se deve ao fato dele não necessitar do
estabelecimento de uma conexão (sinalização), controle de fluxo, controle de erros,
retransmissão e sequênciamento dos dados. Todas essas funcionalidades são deixadas a cargo
da aplicação desenvolvida. Devido a esta simplicidade seu cabeçalho possui apenas 8 bytes,
composto por:
• Porta de Origem e Porta de Destino – Indicam os pares de porta que estão executando
a comunicação;
• Comprimento – Indica o comprimento de todo o datagrama isto é, cabeçalho e dados;
• Checksum – Verificação de integridade do datagrama;
Portas de Serviço
Como vimos, a numnerção de portas utiliza 16 bits. Se calcularmos (2^16) veremos que
existem ao todo 65536 portas a serem utilizadas. Isso para cada protocolo da camadas de
transporte. Logo temos 65536 portas para o TCP, 65536 portas para o UDP, 65536 portas...
Conhecer essas portas é fundamental para operar um Firewall de forma satisfatória.
"Ok, mas com tanta porta como vou poder saber todas elas??". Bem, você não precisa
conhecer todas. Até mesmo porque a maior parte delas não são especificadas. Para a nossa
alegria, apenas as primeiras 1024 são especificadas. Acho que não ajudou muito, ne?! Ok,
vamos melhorar. Para um administrador de rede é imprecindível saber pelomenos as portas
dos serviços básicos de Rede: telnet, SSh, FTP, SMTP, POP, HTTP, HTTPS... Não são muitas, mas
antes de ver isso, vamos entender que controla essas portas.
O uso das portas de 1 a 1024 é padronizada pela IANA (Internet Assigned Numbers Authority).
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
Essa entidade é responsável por alocar portas para determinados serviços. Essas portas são
chamadas de well-known ports.
É muito importante também conhecer a peculiaridade de cada serviço. Por exemplo, o FTP,
tem a possibilidade de utilizar o modo ativo ou passivo, em cada modo as portas são utilizadas
de uma forma e a sintaxe das regras de firewall irá mudar.
Uma recomendação de leitura para uma melhor entendimento sobre portas e protocolos pode
ser acessada aqui.
Encapsulamento
• A PDU das camadas de 7 a 5 são chamados de dados, pois esses são os dados
puramente ditos;
• A PDU da camada 4 é chamada de segmento;
• A PDU da camada 3 é chamada de pacote;
• A PDU da camada 2 é chamada de quadro/frame;
• A PDU da camada 1 é chamada de bits.
Camada de Sessão
Chega a parecer que a camada de sessão faz a mesma coisa que a camada de transporte mas
não se engane, são operações completamente diferentes. Enquanto a camada de transporte
se responsabiliza pelo controle de mensagens e congestionamento utilizando confirmações e
janelas deslizantes a camada de sessão controla a “logica” da troca de mensagens. Ela
especifica parâmetros utilizados, seqüências e finalizações para uma dada aplicação.
• RPC;
• SQL;
• NFS;
• Nomes NetBios;
• AppleTalk ASP;
• DECnet SCP.
Quando vocês verem a camada de aplicação ai é que vai complicar mesmo, porque vai parecer
que a aplicação faz a função da camada de sessão. Só que dessa vez é verdade! O controle de
sessões na verdade passou a ser implementado na aplicação.
Camada de Apresentação
• JPEG;
• ASCII;
• EBCDIC;
• TIFF;
• GIF;
• PICT;
• MPEG;
• MIDI.
Camada de Aplicação
Uma aplicação que se comunica com outros computadores está implementada os conceitos
referentes à camada de aplicação do modelo OSI. A camada de aplicação se refere aos serviços
de comunicação para aplicativos, em outras palavras a camada de aplicação é o próprio
aplicativo e suas regras (protocolos) de comunicação.
• Telnet;
• HTTP;
• FTP;
• Navegadores web;
• NFS;
• Gateways SMTP (clientes de e-mail);
• SNMP.
IPv6
Introdução
Ok, mas antes de falar em endereçamento vamos um pouco mais a fundo na estrutura do
IPv6.
Arquitetura do IPv6
Quando os projetistas criaram o IPv6 uma das principais preocupações era a velocidade.
Focando nesse ponto foram feitas algumas medidas para tentar tornar as redes IPv6
mais rápidas.
A primeira medida foi tornar o cabeçalho do pacote IPv6 de tamanho fixo. Essa medida
reduz o esforço dos ativos de rede por eles sabem exatamente o que cada bit significa,
sem haver a necessidade de um pre-processamento. Para que isso fosse possível alguns
campos do antigo cabeçalho IPv4 deixaram de existir, foram criados novos campos e
alguns tiveram seu significado modificado.
Outras medidas tomadas para tornar as redes IPv6 mais rápidas são:
• Versão (4 bits) - Este campo identifica a versão do protocolo usado para criar o
pacote.
• Prioridade (Classe de tráfego) (8 bits) - É equivalente ao campo Tipo de Serviço
do IPv4, que classifica o tipo do pacote.
• Rótulo de fluxo (20 bits) - Serve para identificar um fluxo.
• Tamanho (16 bits) - Este é o número de bytes de dados contidos no pacote
• após o cabeçalho.
• Próximo cabeçalho (8 bits) - Informa o protocolo que deve tratar o conteúdo do
pacote.
• Limite de saltos (8 bits) - É o número máximo de roteadores que o pacote deve
passar, a cada roteador este campo é decrementado, quando chega em zero o
pacote é descartado. Esse é o antigo Time to Live (TTL)
• Endereço de origem (128 bits) - Origem do pacote.
• Endereço de destino (128 bits) - Destino do pacote
Dentre os campos que foram eliminados, ressalto dois que merecem destaque:
Checksum e fragmentação.
O falecido Checksum
Para quem não lembra, a função do Checksum era verificar a integridade do cabeçalho,
em outras palavras, detectar erros no cabeçalho. É de conhecimento geral que a maioria
dos erros que ocorrem nas redes não é de transmissão mas sim nos roteadores, além do
mais, as técnicas de verificação de integridade de camada 2 já são muito eficientes.
Outro agravante do campo checksum era o desempenho dos roteadores. Como cada
roteador decrementava o campo Time to Live (TTL) era necessário realizar novamente
o calculo do checksum antes de retransmitir o pacote. Antes que alguém diga que isso é
um esforço mínimo vamos pensar assim: O roteador calcula o checksum ao receber o
pacote, para comparar com o que está no cabeçalho, realiza a decisão de roteamento,
decrementa o TTL, calcula o novo checksum e o inclui no cabeçalho, retransmite o
pacote. Considerando isso para milhares de pacotes por segundo é um esforço
tremendo!
O "migrado" Fragmentação
Esse simplesmente é uma convenção, ele não morreu de verdade! Decidiu-se que os
roteadores não serão mais responsáveis por fragmentar pacotes. caso o roteador receba
um pacote com o tamanho maior que o permitido ele será descartado, simples assim! Ao
descartar o pacote o roteador informará o ocorrido à origem, que deverá retransmitir o
pacote já fragmentado. Dessa forma tiramos mais um pouco a carga do roteador! O
porque de "migrado" vocês vão entender daqui a pouco!
Cabeçalhos complementares
Podemos notar que esses campos são voltados principalmente para origem e destino e
não interessa para os roteadores, com excessão do campo Hop-by-Hop. Podemos ver
também que o Fragmentação está lá, por isso chamei ele de "migrado"!
Endereçamento e Segmentação
Endereçamento IPv6
Como dito anteriormente no IPv6 os endereços IPs passaram de 32 bits para 128 bits. Com
essa mudança temos que alterar também a forma como escrevemos os endereço IP.
Antes o endereço IP era dividido em 4 octetos, onde cada octeto era composto por oito bits, e
escrito utilizando a notação decimal pontuada.
Como o novo endereço IP é muito extenso não podemos utilizar a notação decimal, dessa
forma utilizaremos caracteres hexadecimais. No total teremos 32 caracteres organizados em
oito quartetos e separados por dois pontos. Este é um exemplo de um endereço IPv6 válido:
2001:bce4:5641:3412:341:45ae:fe32:65
Vocês devem estar pensando: "Vou ter que decorar tudo isso?!?! 192.168.1.1 era muito mais
fácil!!!". Pensando nisso o endereço IPv6 pode ser abreviado, por exemplo, fee::1. Agora ficou
melhor... Só ressaltando que essa abreviação é válida para os zeros. Isso quer dizer que entre o
fee e o 1 existem 6 campos de 4 caracteres todos preenchidos com zero, por exemplo, o
endereço FEDC:0034:0000:0000:0000:0012:0ABC:00FF pode ser abreviado para
FEDC:34:0:0:0:12:ABC:FF ou FEDC:34::12:ABC:FF.
O mais interessante dos endereços IPv6 é a retrocompatibilidade. Você pode 'usar' o seu
antigo IPv4 como se fosse um IPv6 sem problemas. Digamos que antes seu IP era 192.168.1.1,
no IPv6 ele será 0:0:0:0:0:FFFF:192.168.1.1 ou ::FFFF:192.168.1.1. Esse é uma definição
relativamente nova. Anteriormente a compatibilidade era feita adicionando dois dois pontos,
::, da seguiinte forma, ::192.168.1.1, mas essa utilização caiu em desuso e o notação iniciada
por ::FFFF passou a ser adotada (vide RFC 4038). Mas esse é um assunto que abordaremos
mais tarde!
Segmentação de redes
Assim como no IPv4 o IPv6 também possui a estrutura de endereçamento de grupos lógicos
chamados de redes. Da mesma forma que no IPv4, utilizamos a máscara de rede para definir o
Como no IPv6 teremos muitas redes disponíveis não será necessário a utilização de NAT e
redes privadas. Com isso serão distribuídas redes de tamanho fixo.
Para termos uma idéia, um bloco /48 pode dividido em até 65.536 redes diferentes, cada uma
com 18.446.744.073.709.551.616 endereços diferentes. Um bloco /56 pode ser dividido em
256 redes diferentes, dada uma com 18.446.744.073.709.551.616 endereços diferentes.
Dessa forma podemos notar que o menor bloco possível é o /64 que corresponde à metade do
endereço IPv6. Considerando o menor bloco IPv6 os primeiros 64 bits, primeiros 4 grupos, são
designados para definição de redes. Por exemplo, no endereço 2001:bce4:0:0:0:0:0:1 a rede é
definida por 2001:bce4:0:0 enquanto o host é definido por 0:0:0:1.
O objetivo dessa segmentação definida é que cada conjunto de números do IPv6 servirá como
um identificador.
Atribuição de endereços
Ao atribuir endereços IPv6 aos hosts de uma rede temos duas opções:
Essa atribuição de IPs utilizando o MAC como identificador de host é uma ótima idéia pois
além de tornar os IPs únicos haverá uma "coerência" entre MAC e IP. Se o endereço da rede é
2001:bce4:0:0: e o endereço MAC do micro é 00:50:3E:E4:4C:00 podemos atribuir o seguinte
IP: 2001:bce4::0216:f2ff:fefe:34e1. "Espera ai, esse IP está diferente do MAC!". Sim, o
endereço MAC contém apenas 12 dígitos hexadecimais (48 bits) enquanto a porção de host do
IPV6 possui 16 dígitos hexadecimais (64 bits) por isso foi definido na RFC 2462 que seria
utilizado a definição EUI-64, então temos que adicionar os dígitos "fffE" entre o sexto e sétimo
dígito do endereço.
Está em estudo uma expansão dos endereços MAC das placas de rede, que passariam a ter 16
dígitos (64 bits), mas, enquanto isso não é colocado em prática, usamos essa regra.
Redes reservadas
No IPv6, da mesma forma que no IPv4, existem faixas de redes reservadas. Os endereços
iniciados com 2001: são reservados para provedores de acesso e carriers. Os endereços
iniciados com 3FFF:FFFF: e 2001:0DB8: são reservados para uso em documentação. exemplos
e testes e por isso não são roteáveis.
No IPv4 existiam as faixas de IPs reservados para redes locais, ou redes privadas: 10.0.0.0/8,
172.16.0.0/20 e 192.168.0.0/16. Isso também existia no IPv6 mas foi derrubada pela RFC 3879,
essas redes eram iniciadas com fec, fed, fee ou fef.
Outro endereço reservado no IPv4 muito famoso era o endereço 127.0.0.1 reservado para
interface de loopback, também acessada pelo nome localhost. No IPv6 foi escolhido o IP ::1,
que corresponde a 0:0:0:0:0:0:0:1.
Tipos de endereço
IPVX – CENTER, LDA
Rua da Samba, Morro da luz, Luanda – Angola
Telefones: (+244) 934 568 844 / (+244) 999 568 844 | Email: geral@ipvx.co.ao | www.ipvx.co.ao
O IPv6 mantem os tipos de endereço unicast e multicast e cria um novo chamado Anycast. O
tipo Broadcast foi eliminado, pois era ineficiente, além de muitas vezes gerar
congestionamento na rede. O broadcast será substituido pelo multicast.
O Multicast é um tipo de endereçamento que foi acrescentado ao IPv4, mas que já é nativo no
IPv6. Um pacote destinado a um endereço multicast é entregue a todas as interfaces que
fazem parte daquele grupo de endereços.
O Anycasting é um novo tipo de endereçamento, que surge com o IPv6 e permite que ao invés
de enviar um pacote a um servidor específico, este seja enviado a um endereço anycast
específico. O sistema de roteamento entregará então o pacote ao servidor mais próximo, de
acordo com a sua medida de distância, dentre um grupo de servidores. Isto é interessante, por
exemplo, para descobrir o servidor de nomes mais próximo.
ICMPv6
O ICMP do IPv6 é muito semelhante ao ICMP do IPv4, ele ainda tem a função de
informar características da rede, realizar diagnóstico e relatar erros no processamento de
pacotes. Estes processos são executados utilizando duas classes de mensagens: Erro e
Informação
Quando falamos sobre cabeçalhos IPv6 vimos que existem os cabeçalhos de extensão e
que eles são identificados no cabeçalho IPv6 pelo campo "Próximo cabeçalho" (Next
Header). O ICMP é identificado no campo "próximo cabeçalho" pelo valor 58. Dessa
forma teremos um encadeamento de cabeçalhos. É importante ressaltar que o cabeçalho
ICMPv6 NÃO É UM cabeçalho de extensão, pois o ICMPv6 é um protocolo de camada
3 e não faz "parte" do IPv6. Os cabeçalhos de extensão são "partes" do IPv6, eles
complementam as informações do cabeçalho IPv6, enquanto o ICMPv6 é um protocolo
"paralelo".
• Descoberta de vizinhança;
• Gerenciamento de grupos multicast;
• Mobilidade IPv6;
• Descoberta do path MTU.
• Echo request (Tipo 128) e Echo reply (Tipo 129) - utilizados pelo comando
ping;
• Multicast Listener Query (Tipo 130)/Report (Tipo 131)/Done (Tipo 132) -
Utilizadas no gerenciamento de grupos multicast;
• Router Solicitation (Tipo 133)/advertisement (Tipo 134), Neighbour
Solicitation (Tipo 135)/Advertisement (Tipo 136), Redirect Message (Tipo
137) - Utilizadas com o protocolo Descoberta de Vizinhança;
• Router Renumbering (Tipo 138) - Utilizada no mecanismo de Re-
endereçamento de roteadores;
• ICMP Node Information Query (Tipo 139)/Response (Tipo 140) - Utilizada
para descobrir informações sobre nomes e endereços, são atualmente limitadas a
ferramentas de diagnóstico, depuração e gestão de redes;
• Inverse Neighbor Discovery Solicitation (Tipo 141)/Advertisement (Tipo
142) - Utilizadas em uma extensão do protocolo de descoberta de vizinhança;
• Version 2 Multicast Listener Report (Tipo 143) - Utilizada no gerenciamento
de grupos multicast;
Podemos ver que estão listadas ai em cima funções dos protocolos ARP, ICMP e
DHCP. Para desempenhar essas funções o protocolo de descoberta de vizinhança se
utiliza das mensagens ICMP. Abaixo está a lista das cinco mensagens utilizadas por ele:
Todas essas mensagens possuem o campo "Máximo de saltos" no cabeçalho IPv6 setado
como 255. Dessa forma essa mensagem fica restrita a um único enlace pois, como está
configurado o limite de saltos, esse pacote não será encaminhado pelos roteadores.
Essas mensagens que possuam um valor máximo de saltos diferente de 255 serão
descartadas pelos roteadores.
De um modo geral, se um Host A quer descobrir o MAC do HOST B ele envia uma
mensagem "Neighbour Solicitation" para o endereço de multicast "Solicited-node
Multicast " (que é composto pelo prefixo FF02::1:FF00:0/104 e os últimos 24 bits do
endereço IPv6 que está sendo consultado) e recebe do HOST B uma resposta "Nighbor
Advertisement" contendo o MAC solicitado.
• Você emite um ping, do HOST A, para o HOST B (IP FAC1::2) como você não
conhece o MAC será realizada uma consulta;
• É enviada uam pacote mensagem "Neighbour Solicitation" para o IP de
multicast FF02::1:FF00:2 do HOST B.
• O HOST B envia, em resposta para ao HOST A, um "Nighbor Advertisement"
(em unicast) contendo o seu MAC.
Para quem não conhece multicast isso pode parecer um absurdo! "Como ele faz uma
consulta MAC a vários destinos usando um endereço que não seja broadcast??" É muito
estranho mesmo, mas depois que se entende como o multicast funciona, o broadcast se
mostra extremamente obsoleto! Um dia posto algumas coisas aqui sobre multicast!
Autoconfiguração Stateless
Esse mecanismo possibilita a atribuição automática de endereços unicast, a descoberta
de roteadores no mesmo enlace de camada 2 e a atribuição automática de mais alguns
parâmetros de rede. Essa atribuição é realizada sem a necessidade de servidores
adicionais, apenas com configurações mínimas dos roteadores.
Como no inicio desse processo os hosts não possuem endereços eles utilizam o
endereço reservado "link-local" que são gerados com o prefixo FE80::/64 com o MAC
'expandido' da interface. A rede "link-local" está presente em todas as interfaces de
qualquer dispositivo que fale IPv6. Essa rede não é roteavel e nem é divulgada por
protocolos de roteamento dinâmico mas pode ser utilizada para testes de conectividade
normalmente.
Essa descoberta pode ocorrer de duas formas: Consulta por parte de um Host ou
Anuncio gratúito de um roteador.
Anúncio Gratuito
Quando há um anuncio gratuito de um roteador, ele envia uma mensagem "Router
Advertisement" para o endereço "All-nodes Multicast" (endereço FF02::1) contendo
informações necessárias para a autoconfiguração. Com o conteúdo dessa mensagem o
host pode auto configurar os seguintes atributos: Gateway padrão; lista de endereçrede;
MTU; o "Máximo de Saltos" (para o cabeçalho IPv6); e as flags "Managed Addess
Configuration" e "Stateful Configuration".
Consulta de um Host
Quando há uma consulta por parte do host, é enviado uma mensagem "Router
Solicitation" para o endereço "All-routers Multicast" (endereço FF02::2) e os roteadores
do segmento respondem com uma mensagem "Router Advertisement".
"Então quer dizer que o DHCP morreu?!?!". Não, o DHCP ainda existe...
Autoconfiguração Stateful
No IPv4 essa função era feito pelo protocolo ARP utilizando ARPs gratuitos, já no IPv6
isso será feito utilizando mensagens "Neighbor Solicitation" para o endereço "All-nodes
Multicast". O detentor de um endereço IPv6 envia uma mensagem "Neighbor
Solicitation" e aguarda uma resposta. Caso haja uma resposta ele sabe que o IP que ele
utiliza está duplicado
• Neighbor Cache - Mantem uma lista de vizinhos locais para os quais foi
enviado tráfego recentemente. Essa lista contem o endereço IP, o endereço
MAC, uma flag que identifica se esse IP é um Host ou um Router, se há pacotes
na fila para serem enviados a esse destino, a sua acessibilidade e a próxima vez
que um evento de detecção de vizinhos está agendado. Essa tabela é
"semelhante" a tabela ARP do IPv4.
• Destination Cache - Mantem informações sobre destinos, locais e/ou remotos,
para os quais foi enviado tráfego recentemente. As entradas dessa tabela são
atualizadas com informações recebidas por mensagens "Redirect". A tabela
Neighbour Cache pode ser considerada como um subconjunto dessa tabela.
Redirecionamento