Como estão seus conhecimentos em Hexadecimais (O IPv6 vem ai!!)?

Confira nossos E-books, Cursos, Videoaulas e Artigos em Infra de Redes!

capa Dominando Sub-redes no IPv6 e IPv4 1a ed_batcapa 3a edição jpeg blog

Como estão seus conhecimentos em Hexadecimais (O IPv6 vem ai!!)?

Do original How Are Your Hexadecimal Skills? By jdoyle on Wed, 02/23/11 – 4:56am.

Traduzido e adaptado por Ademar Felipe Fey em 07/12/2011.

Trabalhar com o endereçamento IPv6 significa trabalhar com hexadecimais. Isto é mais fácil do que você imagina.

Eu terminei  minha postagem sobre endereços IPv6 dizendo que eu iria seguir, mostrando-lhes alguns truques simples para trabalhar com números hexadecimais. Então, o esgotamento há muito previsto pelo IANA de endereços IPv4 aconteceu, eu me distraí, e escrevi um par de posts sobre isso. Mas agora é hora de cumprir a minha promessa, mais vale tarde do que nunca.
A notação decimal pontuada é bem adequadoapara representar os endereços IPv4, os seus 32 bits são divididos em quatro octetos de 8 bits, nos quais cada um dos octetos são escritos em seu número decimal equivalente a algum decimal entre 0 e 255,  separados por pontos.
Um endereço de 128 bits é uma questão diferente. Em decimal pontuado, um endereço IPv6 pode parecer:

32.1.13.184.35.24.105.196.131.84.126.3.218.92.171.205

É longo, é mais difícil de ler, e a notação torna mais fácil, acidentalmente, a confusão de dígitos enquanto você lê-los. É difícil para os olhos.

Ao invés de quebrar o endereço IPv6 de 128 bits em até dezesseis octetos e cada octeto escrito como um número decimal, separados por pontos, vamos quebrar o mesmo endereço em oito segmentos de 16 bits e escrever cada segmento como um número hexadecimal separados por dois pontos:

2001:0db8:2318:69c4:8354:7e03:da5c:abcd

É certo que ainda não está tão arrumado como um endereço IPv4, mas é mais fácil de ler do que sua forma decimal pontuada. É mais curto, a maior variação em dígitos (16 ao invés de 10) faz com que seja mais fácil de ler, e quanto mais clara a separação dos dois pontos reduz o “fator de confusão.”

Apenas por diversão, o endereço IPv4 192.168.213.84 escrito em estilo IPv,6 em notação hexadecimal, é C0A8: d554. O endereço pode parecer estranho e intimidante para você, se você nunca trabalhou com hex antes, mas uma vez que você se acostumar com isso você vai achar que trabalhar com hex é mais fácil do que trabalhar com decimal pontuado. Em particular, é mais fácil converter entre hexadecimal e binário do que entre decimal e binário.

A razão para isto é que cada dígito hexadecimal tem 16 valores possíveis (0 – f), correspondente ao 16 valores possíveis de um número binário de 4 bits. É muito fácil de lembrar 16 valores ou rapidamente trabalhar com eles na sua cabeça:

Digito Hex

Equivalente Decimal

Equivalente Binário

0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
a 10 1010
b 11 1011
c 12 1100
d 13 1101
e 14 1110
f 15 1111

Um dígito decimal, por outro lado, tem apenas 10 valores possíveis (0-9), então não há a correspondência um-para-um entre dígitos decimais e qualquer grupo de dígitos binários. Em vez disso, nós optamos por decimalmente representar os 256 valores possíveis em um octeto, porque os computadores e roteadores trabalham regularmente com octetos (bytes). É difícil lembrar 256 valores diferentes, por isso, vamos recorrer a um pouco de aritmética para converter entre decimal e binário.

Por exemplo, pegue o número decimal 213. Se queremos encontrar seu equivalente binário, primeiro temos que conhecer os valores de cada posição do octeto binário, os quais, da esquerda para a direita, são:

128    64    32    16    8    4    2    1

Começamos com todos os oito valores dos lugares desconhecidos:
xxxxxxxx

213 é maior que 128, então nós escrevemos um 1 no lugar do “128”:

1xxxxxxx

213-128 = 85, é maior que 64, então nós escrevemos um 1 no lugar do “64”:

11xxxxxx

85-64 = 21. Que é menor que 32, então nós escrevemos um 0 naquela posição; é maior que 16, então nós escrevemos um 1 naquele lugar:

1101xxxx

21-16 = 5. Que é menor que 8, então nós escrevemos um 0 no lugar do “8”; é maior do que 4, então nós escrevemos um 1 no lugar do “4”:

110101xx

5-4 = 1, então há um 0 no lugar do “2” e um 1 no lugar “1”, e fizemos:

213 = 11010101

Convertendo de binário para decimal usa uma seqüência semelhante de passos de simples aritmética, exceto que adicionamos em vez de subtrair. Considere o octeto seguinte:

10011010

Conhecendo os valores das posições, podemos ver que há um (1) nas posições do 128, 16, 8 e 2. 128+16+ 8 +2 = 154. assim:

10011010 = 154

Essas conversões são fáceis e podem ser rapidamente trabalhadas em um pedaço de papel. Mas veja como é muito mais fácil para converter entre hexadecimal e binário. Considere o  número hexadecimal 8c (todos os valores possíveis de um octeto binário podem ser representados com dois dígitos hexadecimais):
Você sabe que sem a ajuda de papel que o equivalente binário de 8 é 1000
Você sabe que o equivalente binário do c (decimal 12) é de 1100.

Então, basta colocar os valores juntos, e você tem a sua conversão:

8c = 10001100

É tão fácil converter em outra direção. Tome em conta o octeto binário 01110101. Apenas dividi-lo em dois números de 4 bits, 0111 e 0101:

0111 = 7

0101 = 5

Então:

01110101 = 75

Você não tem sequer que memorizar os dezesseis números binários correspondentes aos dígitos hexadecimais; você só tem que saber que os quatro valores das posições são 8, 4, 2 e 1. Assim, por exemplo, 0101 é de 4 +1 = 5. 1110 é 8 +4 +2 = e (decimal 14).

Os endereços IPv6 representam 16 bits, ou 2 octetos, entre cada dois pontos. Conversões são tão fáceis. Tome o exemplo de endereço usada anteriormente neste artigo:

2001:0db8:2318:69c4:8354:7e03:da5c:abcd

Vamos dizer que você precisa ver o quarto segmento desse endereço, 69c4, em binário:

6 = 0110

9 = 1001

c = 1100

4 = 0100

Juntando tudo:

69c4 = 0110100111000100

Ou talvez você esteja trabalhando com uma parte binária de um endereço para visualizar um projeto de endereçamento, e precisa converter o resultado de volta para hex. Vamos usar o seguinte número de 16 bits:

1111000011001100

Novamente, basta dividi-lo em 4 bits partes, encontrar o equivalente hexadecimal de cada parte, e colocar os dígitos hex juntos:

1111 = f  (isto é certamente fácil!)

0000 = 0  (brincadeira!)

1100 = c

1100 = c

Então:

1111000011001100 = f0cc.

De vez em quando, você precisa converter entre decimal e hexadecimal, como quando se trabalha com um protocolo de tunelamento que incorpora um endereço IPv4 dentro de um endereço IPv6. Se você não tem uma calculadora científica na mão, você ainda pode fazer conversões rápidas num pedaço de papel de rascunho, usando o que você já sabe: Converter de decimal para binário e, em seguida, em hexadecimal, ou a partir de hex para binário e depois para decimal. As conversões entre hexadecimal e binário são tão fáceis, não há necessidade de adicionar mais truques para a sua sacola.

Quando você habilitar o IPv6 em sua rede, seus engenheiros e operadores de rede terão a necessidade de ser capazes de fazer conversões. Usando estas técnicas, é algo que você pode ensiná-los em uma aula/sessão rápida de 20 minutos.

Disponível em:  http://www.networkworld.com/community/blog/how-are-your-hexadecimal-skills

Acesso em: 28/02/2010

Traduzido e adaptado por Ademar Felipe Fey em 07/12/2011. 

Sobre ademarfey

Professor de TI aposentado. Escritor na área de Redes de Computadores e Telecomunicações. Também pesquisa a Imigração Alemã no Brasil desde 2017.
Esse post foi publicado em IPV6 e marcado , , , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s