O cabeçalho IPv4 possui um tamanho variável de 20 a 60 bytes, o cabeçalho IPv6 possui um tamanho fixo de 40 bytes. A estrutura do protocolo IPv6 foi enxugada em relação ao protocolo IPv4:
- O campo IHL no IPv4 deixou de existir porque o IPv6 tem o cabeçalho base fixado em 40 bytes.
- Os campos Identification, Flags e Grafment Offset foram integrados ao cabeçalho adicional Fragmentation no IPv6.
- O campo Header Checksum deixou de existir.
- O campo Version agora tem o valor 6 em vez de 4.
- O campo Type of Service foi substituído pelos campos Traffic Class e Flow Label. Esses campos implementam técnicas QoS.
- O campo Total Length (tamanho total do pacote) deu lugar ao campo Payload Length.
- O campo TTL (Time to Live) agora se chama Hop Limit. É o campo que contabiliza cada salto que o pacote faz na rede.
- O campo Protocol foi substituído pelo campo Next Header.
- Os campos Source Address (endereço de origem) e Destination Address (endereço de destino) foram mantidos inalterados, mas passaram de 32 para 128 bits cada.
- O IPv6 possui cabeçalhos de extensão que se localizam entre o cabeçalho base e o cabeçalho da camada imediatamente superior.
Cabeçalho IPv4:
Cabeçalho IPv6:
Endereçamento IPv6
Existem no IPv6 três tipos de endereços definidos:
- Unicast :: este tipo de endereço identifica uma interface de forma única e exclusiva (um-para-um), de modo que um pacote enviado a um endereço unicast é entregue a uma única interface e viabiliza que todas as interfaces do planeta possam ter conectividade fim-a-fim. Dividem-se em 3 grupos:
- Endereços Globais, que são os endereços visíveis na internet, semelhantes aos atuais IPs válidos publicados na internet. Qualquer endereço IPv6 navegando na Internet fará parte desse grupo.
Essa faixa vai de 2000::/3 até 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF. Ou seja, qualquer endereço que comece com 2000, 2001, 2002, etc., é um endereço navegável na internet.
- Endereços de Link Local, que são endereços que identificam um host apenas no enlace específico da interface, ou seja, na sua rede local.
O prefixo FE80::/64 foi destinado para esta finalidade e não tem nenhum semelhante no IPv4.
- Endereços Unique Local (ULA), são endereços semelhantes aos IPs privados descritos na RFC 1918. Esses endereços não sairão para a internet. O prefixo alocado para eles é FC00::/7 com flag local setada em 0 e FD00::/7 com flag local setada em 1.
- Anycast :: Identifica um conjunto de interfaces na qual um endereço é compartilhado por mais de um host. Um pacote encaminhado a um endereço anycast é entregue ao host mais próximo da origem. Um endereço anycast é utilizado em comunicações de um-para-um-de-muitos. Os DNSs são um ótimo exemplo de endereço anycast.
- Multicast :: Identifica um conjunto de interfaces, um grupo de hosts que recebem o mesmo fluxo de pacotes, porém, um pacote enviado a um endereço multicast é entregue à todas as interfaces associadas a esse endereço. Um endereço multicast é utilizado em comunicações de um-para-muitos como, por exemplo, transmissão de áudio e vídeo.
Diferente do IPv4, no IPv6 não existe endereço broadcast, responsável por direcionar um pacote para todos os nós de um mesmo domínio. No IPv6, essa função foi atribuída à tipos específicos de endereços multicast.
Os seguintes endereços, por exemplo:
1080:0:0:0:8:800:200C:417A | Endereço unicast |
FF01:0:0:0:0:0:0:101 | Endereço multicast |
0:0:0:0:0:0:0:1 | Endereço loopback |
0:0:0:0:0:0:0:0 | Endereços indeterminados |
Podem ser representados como:
1080::8:800:200C:417A | Endereço unicast |
FF01::101 | Endereço multicast |
::1 | Endereço loopback |
:: | Endereços indeterminados |
A representação dos endereços IPv6 em URLs (Uniform Resource Locators), passará a ser feita entre colchetes:
http://[2001:12ff:0:4::22]:8080
O localhost (127.0.0.1 em IPv4) é ::1 em IPv6. Para comprovar, execute no terminal:
ping ::1
E você verá se o IPv6 está instalado na sua máquina.
Porém, para verificar se ele realmente está habilitado em sua máquina, execute em uma janela do terminal o seguinte comando:
ping6 -c5 ::1
A saída deverá ser similar a essa:
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.034 ms
64 bytes fro m ::1: icmp_seq=2 ttl=64 time=0.045 ms
64 bytes fro m ::1: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes fro m ::1: icmp_seq=4 ttl=64 time=0.043 ms
64 bytes fro m ::1: icmp_seq=5 ttl=64 time=0.044 ms
--- ::1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.034/0.042/0.048/0.009 ms
Se o sistema não reconhecer este comando ou retornar algum erro carregue o módulo:
# modprobe ipv6
Se este comando retornar um erro, significa que seu kernel não tem suporte ao IPv6. Nesse caso você deverá recompilar o kernel com suporte ao IPv6.
Caso contrário, basta configurar o Debian Wheezy para carregar o módulo IPv6 automaticamente descomentando a linha:
alias net-PF-10 ipv6
No arquivo
/lib/modprobe.d/aliases.conf.
Dependendo da distribuição, procure por um desses arquivos:
/etc/modules.conf,
/etc/modprobe.conf ou
/etc/modprobe.d/aliases.
Para desabilitar o suporte ao IPv6 basta alterar a linha citada acima para:
alias net-PF-10 off
Ou comentá-la novamente.
Para ver as rotas IPv6 execute:
# route -6