Informática

IPv6: como abreviar endereços, tipos e prefixos, com exercícios

O IPv6 aparece nas provas de Informática de duas formas: a questão teórica (quantos bits, que tipos de endereço existem, o que aconteceu com o broadcast) e a questão prática de reescrever um endereço de forma abreviada. A segunda é puro treino de regras, e quase todo erro vem de abreviar com excesso de zelo. Este guia usa como fontes o RFC 4291 (arquitetura de endereçamento IPv6) e o RFC 5952 (recomendação de representação em texto), ambos lidos em texto integral. Não há lei sobre o tema: a referência é a documentação aberta do IETF.

Estrutura do endereço

O endereço IPv6 tem 128 bits, escritos como oito blocos de 16 bits, cada um com um a quatro dígitos hexadecimais, separados por dois-pontos. A forma preferida do RFC 4291 é x:x:x:x:x:x:x:x. Comparação rápida: o IPv4 tem 32 bits, escritos em quatro octetos decimais. A diferença de largura é o motivo central do IPv6: muito mais endereços possíveis. Para o IPv4, veja endereçamento IPv4, máscara e CIDR.

As regras de abreviação

O RFC 4291 permite dois atalhos: omitir zeros à esquerda de cada bloco e usar “::” para representar um ou mais blocos de zeros seguidos. O RFC 5952 acrescenta as regras da forma recomendada:

  1. Zeros à esquerda são suprimidos. O bloco 0001 vira 1. Um bloco inteiro 0000 é escrito 0.
  2. “::” só pode aparecer uma vez, pois se aparecesse duas vezes não se saberia quantos blocos cada uma representa.
  3. “::” deve ser usado ao máximo: se há uma sequência de blocos zerados que pode ser comprimida, deve-se comprimir.
  4. “::” não deve abreviar um único bloco 0000. Nesse caso, escreve-se 0.
  5. Se há mais de uma sequência de zeros, comprime-se a mais longa. Se houver empate, comprime-se a primeira.
  6. Letras em minúsculas na forma recomendada.

O RFC 5952 ainda esclarece que implementações devem aceitar qualquer formato legítimo do RFC 4291; as regras acima orientam como gerar texto.

Exercícios resolvidos

Exercício 1

Abrevie 2a01:0db8:0000:0000:0000:0000:0002:0001.

  1. Retire zeros à esquerda: 2a01:db8:0:0:0:0:2:1.
  2. Há quatro blocos zerados seguidos; substitua por “::”.
  3. Resposta: 2a01:db8::2:1.

Exercício 2

Abrevie 2a01:0DB8:0000:0001:0000:0000:0000:0001.

  1. Sem zeros à esquerda e em minúsculas: 2a01:db8:0:1:0:0:0:1.
  2. Há duas sequências de zeros: um bloco (o terceiro) e três blocos (do quinto ao sétimo). A mais longa é a segunda.
  3. Resposta: 2a01:db8:0:1::1.

Exercício 3

Abrevie 2a01:db8:0:0:1:0:0:1.

  1. Há duas sequências de zeros, ambas com dois blocos. É empate.
  2. A regra manda comprimir a primeira.
  3. Resposta: 2a01:db8::1:0:0:1.

Exercício 4

O endereço 2a01:db8:0:1:1:1:1:1 pode ser escrito como 2a01:db8::1:1:1:1:1?

Não: o “::” não deve abreviar um único bloco de zeros. A forma correta é a que já está escrita.

Exercício 5

Expanda fe80::2aa:ff:fe28:9c5a para a forma completa.

  1. Conte os blocos escritos: fe80, 2aa, ff, fe28 e 9c5a, ou seja, 5 blocos.
  2. Oito menos cinco dá 3: o “::” substitui três blocos de zeros.
  3. Insira os zeros e recomponha os quatro dígitos de cada bloco: fe80:0000:0000:0000:02aa:00ff:fe28:9c5a.

Esse é o procedimento padrão: oito menos os blocos escritos é o número de blocos que o “::” substitui.

Prefixos

O prefixo é escrito como endereço/comprimento, em que o comprimento é o número de bits mais à esquerda que formam o prefixo, parecido com o CIDR do IPv4. O RFC 4291 traz um exemplo instrutivo, adaptado aqui com outro valor no primeiro bloco: o prefixo de 60 bits 2a01:db8:0:cd30::/60 pode ser escrito como 2a01:0DB8:0000:CD30:0000:0000:0000:0000/60. Não é válido escrever 2a01:0DB8:0:CD3/60, porque se podem suprimir zeros à esquerda de um bloco, mas não à direita.

Um uso prático: um bloco /48 pode ser dividido em sub-redes /64. Como 64 − 48 = 16, cabem 2^16 = 65.536 sub-redes /64.

Tipos de endereço

O RFC 4291 define três tipos de comunicação:

Tipo Significado
Unicast Identifica uma única interface
Anycast Identifica um conjunto de interfaces; o pacote vai à mais próxima, segundo o roteamento
Multicast Identifica um conjunto de interfaces; o pacote vai a todas elas

Não existe broadcast no IPv6; a função dele foi substituída pelo multicast. Esse é um dos itens mais cobrados.

Alguns endereços especiais e prefixos, conforme a tabela do RFC:

Tipo Representação
Não especificado ::/128
Loopback ::1/128
Multicast ff00::/8
Unicast de enlace local (link-local) fe80::/10

Os endereços anycast saem do espaço de unicast e não se distinguem deles pela sintaxe.

Pegadinhas

  • Usar “::” duas vezes no mesmo endereço (inválido).
  • Dizer que o IPv6 tem broadcast.
  • Confundir loopback (::1) com endereço não especificado (::).
  • Contar 4 grupos de 4 bits e achar que são 128: o correto é 8 blocos de 16 bits.
  • Escrever 2a01:db8::1:1:1:1:1 como forma recomendada de 2a01:db8:0:1:1:1:1:1.

Próximos passos

Veja VLSM e sumarização, DNS, DHCP e NAT e OSI e TCP/IP.

Fontes e atualização

Sem norma jurídica sobre o tema. Fontes técnicas lidas: RFC 4291 (seções 2.2 a 2.4) e RFC 5952 (seção 4), do IETF. Exercícios conferidos por programa. Confira o edital e veja a metodologia do site.

Leia também

Para continuar no site

Viu algo errado, desatualizado ou confuso? Relatar erro nesta página