Camada de rede e encaminhamento
IPv4, subnetting, VLSM, escolha de rotas, ARP, fragmentação, NAT e IPv6.
Um host 192.0.2.77/26 precisa de decidir se entrega diretamente ao destino ou envia ao gateway; primeiro encontra a sua rede pelo prefixo. Os routers seguintes consultam o IP de destino para escolher cada saída, enquanto os protocolos de routing constroem as tabelas usadas nessas decisões.
IPv4 e prefixos
Um endereço IPv4 tem 32 bits. O prefixo /p indica bits de rede e os restantes identificam posições; a máscara tem uns seguidos de zeros. Faz AND entre endereço e máscara para obteres a rede.
Exemplo. 192.0.2.77/26 tem máscara 255.255.255.192. Em binário, o último octeto é 01001101 e a máscara é 11000000; o AND dá 01000000, ou 64. Os blocos começam em 0, 64, 128 e 192. O endereço pertence a 192.0.2.64/26, com broadcast .127 e intervalos usuais de hosts .65 a .126, total de 62.
A fórmula vale para sub-redes usuais que reservam rede e broadcast. Não é universal: /31 pode usar os dois endereços ponto a ponto e /32 é um só endereço. As classes A, B e C não substituem o CIDR do enunciado.
Os 62 endereços utilizáveis contam interfaces, incluindo a do router. Com um gateway e nenhum outro equipamento que precise de IP, cabem 61 computadores nessa LAN /26. Um comutador de camada 2 não precisa de um endereço IP por porta para reenviar tramas; se reservarmos um IP de gestão na mesma sub-rede, sobra menos um para computadores. Numa prova recente, a resposta 30 para uma LAN /27 com gateway esqueceu exatamente esta reserva: . Distingue «hosts utilizáveis», «terminais» e «terminais adicionais» num problema de dimensionamento.
VLSM e agregação
Para dividir 198.51.100.0/24 em grupos que precisem de 100, 50 e 20 hosts, começa pelos maiores:
| Necessidade | Prefixo | Bloco | Hosts usuais |
|---|---|---|---|
| 100 | /25 | 198.51.100.0–127 | .1–.126 |
| 50 | /26 | 198.51.100.128–191 | .129–.190 |
| 20 | /27 | 198.51.100.192–223 | .193–.222 |
O bloco .224/27 sobra. Cada bloco tem tamanho potência de dois e início alinhado, por isso não podes começar um /26 em .130 só porque há espaço disponível.
Na agregação, vários prefixos contíguos e alinhados podem ser anunciados por um prefixo mais curto. 192.0.2.0/25 e 192.0.2.128/25 agregam em 192.0.2.0/24. Agregar blocos não contíguos pode anunciar destinos que não eram pretendidos.
Crescimento das sub-redes
Adaptação do problema 9 e da resolução docente, com endereços de exemplo. Divide 192.0.2.0/24 por quatro departamentos com 72, 35, 20 e 18 computadores. Admitimos uma interface de gateway por sub-rede, já dentro da capacidade indicada abaixo.
| Departamento | Computadores | Rede | Máscara | Hosts utilizáveis |
|---|---|---|---|---|
| A | 72 | 192.0.2.0/25 | 255.255.255.128 | 126 |
| B | 35 | 192.0.2.128/26 | 255.255.255.192 | 62 |
| C | 20 | 192.0.2.192/27 | 255.255.255.224 | 30 |
| D | 18 | 192.0.2.224/27 | 255.255.255.224 | 30 |
Os quatro blocos ocupam os 256 endereços. Se D crescer para 34 computadores, precisa de /26, mas não pode simplesmente alargar .224/27, pois um /26 não começa em .224 e a região .192/26 contém C; reorganizar os endereços exige preservar também os outros departamentos.
Uma alternativa é dividir A em duas sub-redes: reserva .0/26 para 60 computadores de A e um gateway, .224/27 para os restantes 12 e outro gateway, .64/26 para D, e conserva B em .128/26 e C em .192/27. A passa a precisar de encaminhamento entre as suas duas sub-redes e de reconfiguração dos hosts. Somar computadores dá 161 após o crescimento, mas somar os blocos necessários com uma rede por departamento dá 288 endereços; a necessidade resulta do alinhamento e das potências de dois, não só da soma de hosts.
Longest prefix match
O router escolhe, entre as rotas que correspondem ao destino, a de prefixo mais longo. A rota por omissão /0 corresponde a tudo, mas perde para qualquer correspondência mais específica.
Com /0 por G0, 10.0.0.0/8 por G1 e 10.2.0.0/16 por G2, o destino 10.2.3.4 sai por G2 e 10.9.1.1 sai por G1.
A tabela indica saída e próximo salto. Se o destino for local, o próximo salto é o próprio destino. Se for remoto, é um router diretamente alcançável. IP do destino final e IP do próximo salto são campos com funções diferentes.
Passar de uma topologia a tabelas de rotas
Divide 172.20.8.0/24 para a topologia seguinte. A LAN A precisa de 80 endereços de hosts e a LAN B de 30, já incluindo as interfaces dos routers. A ligação entre routers usa um /30 por decisão deste exemplo. Não há NAT nem ligação a outras redes.
Começa pela maior necessidade, reserva rede e broadcast nas LANs, e alinha cada bloco. 80 não cabem num /26, que só dá 62 hosts, enquanto 30 cabem exatamente num /27.
| Segmento | Rede | Máscara | Hosts disponíveis | Broadcast |
|---|---|---|---|---|
| LAN A | 172.20.8.0/25 | 255.255.255.128 | .1 a .126 | .127 |
| LAN B | 172.20.8.128/27 | 255.255.255.224 | .129 a .158 | .159 |
| R1–R2 | 172.20.8.160/30 | 255.255.255.252 | .161 e .162 | .163 |
Atribui .1/25 à interface LAN de R1 e .129/27 à de R2. Na ligação entre ambos, R1 usa .161/30 e R2 .162/30. Cada interface tem o seu endereço e prefixo. Um router não tem um único endereço que se possa usar em qualquer segmento.
A tabela de R1, sem rota por defeito, precisa de conhecer as três redes:
| Destino | Próximo salto | Interface de saída |
|---|---|---|
172.20.8.0/25 | Diretamente ligado | LAN A |
172.20.8.160/30 | Diretamente ligado | Ligação R1–R2 |
172.20.8.128/27 | 172.20.8.162 | Ligação R1–R2 |
R2 tem as duas primeiras redes locais correspondentes, LAN B e ligação. Para chegar a 172.20.8.0/25, usa o próximo salto 172.20.8.161. As rotas diretamente ligadas são normalmente instaladas a partir da configuração das interfaces; a rota remota precisa de configuração estática ou aprendizagem por routing.
Um host 172.20.8.20/25 envia para 172.20.8.130 através do gateway .1. Na LAN A, resolve por ARP o MAC de .1; R1 encaminha por .162 e R2 entrega na LAN B, resolvendo o MAC de .130. Sem NAT, os IP de origem e destino mantêm-se, o TTL diminui em cada router e os endereços de ligação mudam por salto.
Para reduzir uma tabela por agregação, verifica alinhamento e próximo salto comum. Dois /27, .128/27 e .160/27, podem formar .128/26 se todos esses destinos tiverem a mesma saída pretendida. .0/27 e .64/27 não são dois blocos adjacentes; resumir ambos com /25 inclui outras redes. Menos linhas não justifica anunciar destinos incorretos.
ARP, DHCP e ICMP
ARP resolve um IPv4 do salto local para ligação. O pedido é difundido na LAN, o dono responde e o resultado pode ficar em cache. Para rede remota, resolve o MAC do gateway, não o do terminal remoto.
Exemplo com dois routers. T1 (10.20.1.1) envia a T2 (10.20.3.2) através de R1 e R2 em série. Se a cache ARP de R1 estiver vazia, R1 não pede o MAC de T2 nem o de T1: pede em broadcast o MAC do próximo salto, 10.20.2.2, que é o endereço que a sua tabela indica para este destino. Cada router resolve sempre o MAC do salto seguinte, nunca o do destino final quando este é remoto.
DHCP pode atribuir endereço, máscara, gateway, DNS e tempo de concessão. A sequência inicial habitual é Discover, Offer, Request, ACK, com UDP, portas 68 do cliente e 67 do servidor. Renovar uma concessão não exige repetir sempre a sequência broadcast inicial.
ICMP comunica controlo e erros IP. Echo request/reply suporta ping; time exceeded permite observar saltos com TTL crescente, como em traceroute. ICMP não torna IP fiável. Um pacote sem resposta ao ping pode estar bloqueado ou sem caminho de retorno, não apenas desligado.
Cabeçalho e fragmentação IPv4
O cabeçalho inclui origem, destino, comprimento, protocolo superior, TTL e campos de fragmentação. O TTL diminui nos routers e impede circulação indefinida, enquanto a checksum IPv4 protege o cabeçalho, não toda a carga útil.
A MTU é o maior pacote IP que a ligação leva sem fragmentar. Se exceder a MTU e a fragmentação for permitida, cada fragmento recebe cabeçalho; o offset conta blocos de 8 bytes da carga original e, exceto o último, a carga é múltipla de oito. O destino reconstitui por identificação e campos de fragmentação.
Exemplo. Datagrama de 4000 bytes, incluindo cabeçalho de 20, MTU 1500, sem opções e DF=0. Há 3980 bytes de dados. Cada fragmento completo leva 1480 bytes de dados.
| Fragmento | Dados | Comprimento | Offset | MF |
|---|---|---|---|---|
| 1 | bytes 0–1479 | 1500 | 0 | 1 |
| 2 | bytes 1480–2959 | 1500 | 185 | 1 |
| 3 | bytes 2960–3979 | 1040 | 370 | 0 |
Resultam comprimentos 1500, 1500 e 1040; offsets 0, 185 e 370; MF 1, 1 e 0. Não dividas o comprimento total original por oito: o offset refere-se aos dados e cada fragmento tem cabeçalho novo.
NAT e IPv6
NAT altera endereços; NAPT/PAT pode alterar também portas e manter uma tabela de associações. Vários clientes privados usam um endereço externo com portas distintas.
| Sentido | Origem | Destino | Tradução |
|---|---|---|---|
| Ida | 10.0.0.5:1234 | 203.0.113.7:80 | Regista 10.0.0.5:1234 como 198.51.100.9:5001 |
| Volta | 203.0.113.7:80 | 198.51.100.9:5001 | Repõe 10.0.0.5:1234 como destino |
Ligações iniciadas do exterior podem exigir uma associação estática, encaminhamento de portas ou outro mecanismo. NAT não substitui uma política de firewall.
IPv6 usa 128 bits, notação hexadecimal e compressão de um único trecho de zeros com ::. O cabeçalho base tem 40 bytes, não inclui checksum e usa Hop Limit. Routers IPv6 não fragmentam; se o pacote não couber na MTU da saída, descartam-no e enviam à origem ICMPv6 Packet Too Big, indicando a MTU. A origem pode reduzir os pacotes ou usar um cabeçalho de fragmentação. Neighbor Discovery, baseado em ICMPv6, substitui funções do ARP, e IPv6 usa multicast em funções em que IPv4 usava broadcast.
Quando comparares IPv4 e IPv6, identifica os mecanismos, em vez de assumir que mudar a dimensão do endereço garante segurança ou elimina toda a configuração.
Exercícios
Aproveitar um bloco livre e contar terminais
Uma empresa usa 192.0.2.0/24. As LANs .0/26 e .64/27 já estão atribuídas e não podem mudar. Escolhe uma única sub-rede para uma terceira LAN que permita o máximo de terminais sem sobreposição. Indica rede, máscara e broadcast.
Na nova LAN, reserva um IP para o gateway e um para gestão do comutador. Já existem três computadores. Quantos computadores pode ter no total e quantos mais cabem? Não existem outros equipamentos com IP nem endereços reservados.
Pista
Solução
As redes existentes ocupam .0 a .63 e .64 a .95. Sobram .96 a .255, mas .96/25 não está alinhado. O maior bloco único válido é 192.0.2.128/25, com máscara 255.255.255.128, broadcast .255 e interfaces utilizáveis .129 a .254. O bloco livre .96/27 fica separado.
O /25 tem 128 endereços; depois de rede e broadcast, ficam 126 interfaces. Gateway e gestão consomem duas, sobrando 124 para computadores. Como já há três, cabem mais 121. As portas do comutador não consomem automaticamente um IP cada; neste enunciado só reservámos um para gestão.
Confere a tua resposta:
- Escolho .128/25 como maior bloco único sem sobreposição.
- Obtenho broadcast .255 e 126 interfaces utilizáveis.
- Desconto gateway, gestão e os três computadores já presentes.
Configurar interfaces e rotas de duas LANs
Usa 10.8.0.0/24 para duas LANs com 50 e 10 hosts, já contando os routers. R1 liga a LAN A a R2, que liga à LAN B. A ligação R1–R2 usa /30. Distribui blocos do maior para o menor, atribui interfaces e escreve a tabela de R1 para as três redes, sem rota por defeito. Indica a rota de retorno de R2.
Pista
Escolhe o menor bloco que acomode hosts, rede e broadcast, começando pela LAN maior. Reserva depois a ligação entre routers num bloco alinhado.
Solução
LAN A: 10.8.0.0/26, hosts .1–.62, broadcast .63. LAN B: 10.8.0.64/28, hosts .65–.78, broadcast .79. Ligação: 10.8.0.80/30, hosts .81 e .82, broadcast .83.
Uma atribuição válida é R1 LAN .1/26, R2 LAN .65/28, R1 ligação .81/30 e R2 ligação .82/30. R1 tem .0/26 diretamente na LAN, .80/30 diretamente na ligação e .64/28 por .82 nessa ligação. R2 alcança .0/26 por .81, além das duas redes locais.
Confere a tua resposta:
- Escolho o menor bloco que satisfaz cada LAN, incluindo o router.
- Alinho os blocos e evito sobreposições.
- Atribuo um endereço e uma máscara a cada interface.
- Distingo rotas locais de rotas com próximo salto.
- Escolho um próximo salto diretamente alcançável.
Erros frequentes
Usar o broadcast numa interface, começar um bloco sem alinhamento ou escolher como próximo salto um endereço da LAN remota que R1 não alcança diretamente.
Resumir sem mudar os destinos
192.0.2.128/27 e 192.0.2.160/27 têm o mesmo próximo salto. Qual o prefixo único que cobre exatamente as duas redes?
Pista
Dois blocos de 32 endereços formam 64 endereços.
Solução
192.0.2.128/26. A máscara é 255.255.255.192 e o intervalo termina em .191. O mesmo próximo salto é necessário para manter o encaminhamento pretendido.
- 192.0.2.128/26. Cobre exatamente .128 a .191: dois /27 alinhados e adjacentes.
- 192.0.2.128/25. Inclui também .192 a .255, fora das duas redes dadas.
- 192.0.2.128/27. Só cobre a primeira rede, .128 a .159.
Escolher uma rota
Destino 10.2.3.4; rotas /0 por A, 10.0.0.0/8 por B, 10.2.0.0/16 por C. Qual a saída?
Pista
Não compares métricas entre prefixos diferentes antes de escolher a correspondência.
Solução
Sai por C, longest prefix match.
- C.. /16 é a correspondência mais longa.
- B.. Corresponde, mas é menos específica.
- A.. A rota por omissão perde para as outras correspondências.
Erros frequentes
Escolher a primeira rota da tabela ou a de menor prefixo.
Preencher a tabela de fragmentação
Um datagrama IPv4 tem 4000 bytes, incluindo 20 de cabeçalho sem opções. A MTU é 1500 e DF=0. Faz a tabela dos fragmentos com bytes de dados, comprimento total, offset e MF. Identifica o que a origem deve fazer para voltar a enviar o mesmo conteúdo se DF=1 e receber uma indicação de MTU 1500.
Pista
Mais uma pista
Solução
Restam 3980 bytes de dados. Cada fragmento não final pode transportar bytes.
| Fragmento | Dados | Total | Offset | MF |
|---|---|---|---|---|
| 1 | 1480 | 1500 | 0 | 1 |
| 2 | 1480 | 1500 | 185 | 1 |
| 3 | 1020 | 1040 | 370 | 0 |
O terceiro offset é , sem contar os cabeçalhos. Cada fragmento recebe cabeçalho e conserva a identificação necessária à reconstituição no destino. Com DF=1, o router não pode fragmentar: descarta e informa a origem por ICMP, quando possível. A origem deve enviar pacotes menores compatíveis com a MTU; não basta reenviar os mesmos 4000 bytes sem alteração.
Confere a tua resposta:
- Desconto o cabeçalho antes de repartir os dados.
- Uso múltiplos de oito nos fragmentos não finais.
- Calculo offsets da carga original.
- Respeito DF e adapto o tamanho na origem.
Encontrar quem pode fragmentar em IPv6
Um router IPv6 recebe um pacote de 2000 bytes que deve sair por uma ligação de MTU 1500. Não há túneis nem outros erros. O que faz?
Pista
IPv6 separa o papel da origem do papel do router.
Solução
Descarta o pacote e envia ICMPv6 Packet Too Big com a MTU 1500 à origem. Esta pode reduzir o tamanho dos pacotes ou fragmentar na origem. Não há uma fragmentação IPv6 automática em cada router como pode ocorrer em IPv4.
- Descarta o pacote e envia ICMPv6 Packet Too Big à origem.. O router indica a MTU. A origem pode adaptar o tamanho; o router não fragmenta IPv6.
- Divide o pacote em fragmentos e reenvia-os.. A fragmentação IPv6 pertence à origem, não aos routers do percurso.
- Reenvia o pacote inteiro, porque IPv6 não tem checksum de cabeçalho.. A ausência dessa checksum não altera a dimensão máxima da ligação.
Erros frequentes
Aplicar a regra de fragmentação IPv4 a IPv6 ou confundir MTU com checksum.
Traduzir ida e volta
Cliente 10.0.0.5:1234 pede a 203.0.113.7:80 através de NAT com endereço externo 198.51.100.9. A tabela associa 10.0.0.5:1234 a 198.51.100.9:5001. Indica endereços e portas na ida e na resposta.
Pista
A resposta chega ao endereço externo.
Solução
Ida: 10.0.0.5:1234 sai como 198.51.100.9:5001 para 203.0.113.7:80. Volta: 203.0.113.7:80 responde a 198.51.100.9:5001 e o router repõe 10.0.0.5:1234.
Confere a tua resposta:
- Na ida registo o par privado e escolho porta externa livre.
- Na volta procuro a associação pela porta externa.
- Os IP dos extremos mantêm-se fora da tradução NAT.
Reorganizar uma rede depois do crescimento
Adaptação do problema 9 docente. Em 192.0.2.0/24, A tem 72 computadores, B tem 35, C tem 20 e D tem 18. Cada sub-rede precisa também de um gateway. A ocupa .0/25, B .128/26, C .192/27 e D .224/27. D cresce para 34 computadores. Explica por que não pode apenas alargar a sua máscara e propõe uma distribuição dentro do mesmo /24. Podes dividir A em duas sub-redes, reconfigurar hosts e usar encaminhamento entre elas.
Pista
Solução
Com uma sub-rede por departamento, seriam precisos 128+64+32+64=288 endereços, mais que os 256 disponíveis. O /26 que contém .224 começa em .192 e sobrepõe-se a C. Alterar só a máscara de D não resolve.
Uma distribuição válida é A1=.0/26 com 60 computadores e um gateway; D=.64/26 com 34 e um gateway; B=.128/26 com 35 e um gateway; C=.192/27 com 20 e um gateway; A2=.224/27 com 12 e um gateway. Cada /26 dá 62 hosts e cada /27 dá 30. Os blocos estão alinhados e não se sobrepõem. A passa a ter duas sub-redes, exigindo endereços, gateways e rotas coerentes com a nova distribuição.
Confere a tua resposta:
- Alinho os blocos sem sobreposição.
- Mostro que quatro sub-redes passariam a exigir 288 endereços.
- Proponho uma divisão de A que cabe no /24.
- Conto uma interface de gateway por nova sub-rede.