Manual
do
Maker
.
com
Resolvi escrever sobre endereçamento de rede IPv4 porque, conversando com um amigo, notei que essa necessidade não é uma coisa incomum. E para quem trabalha com IoT não é diferente, aliás, pode ser pior, porque tem sido muito comum interconectar dispositivos utilizando simplesmente o DHCP da rede do cliente. Mas e se for necessário sair do tradicional 192.168.0.x? Então vamos aos conceitos e uma dica ao final, que deve lhe trazer bastante satisfação.
Não é um bom assunto para entrar em detalhes e não vou desviar o foco. Apenas gostaria de salientar que na pungência do IPv6, pode não parecer tão adequado falar sobre IPv4. Acredite, o IPv4 vai perdurar por um longo tempo ainda.
Se quiser uma introdução modesta sobre rede IPv6, republiquei em 2011 um artigo que escrevi em 2004 sobre o tema. Hoje as coisas estão com diferenças significativas, mas a introdução ainda é válida.
Vamos começar pela formação do endereço de rede IPv4. A primeira coisa a saber é que os endereços de rede IPv4 são formados por 4 octetos; 4 bytes. Além disso, esses endereços formam classes de A a E, sendo que utilizamos tradicionalmente as primeiras 3 classes. Existem também as máscaras de rede, que definem em uma rede o que é rede e o que é host. Veremos em detalhes, de uma maneira descomplicada.
Antes de começarmos a discorrer sobre endereços, vamos entender e decorar um byte. Apenas 1 byte; sendo 8 bits, temos:
11111111 = 255
Binário se lê da direita para a esquerda, sempre exponenciando a posição a 2.
2^0 = 1, porque qualquer número elevado a 0 é 1. Então:
00000001 = 1.
Depois temos 2^1, que é igual a 2, resultando em 00000010. Daí temos 2^2, que é 4, e assim por diante.
Se quisermos o número 3, sabendo que 3 é a soma de 1+2:
Em 8 bits temos então:
1, 2, 4, 8, 16, 32, 64, 128.
O ideal é lermos sempre da direita para a esquerda. Desse modo, tenha em mente a seguinte sequência:
128, 64, 32, 16, 8, 4, 2, 1.
Se o primeiro byte do endereço IP for 128, então teríamos 10000000. Seja qual for o valor (entre 0 e 255), ele estará contido na combinação dos bits.
Para exemplificar, vamos usar como o tradicional IP de roteadores domésticos:
192.168.0.1 = 128+64.128+32+8.0.1. Passando para binário:
11000000.10101000.00000000.00000001.
Tendo destrinchado o endereço, agora podemos identificar a classe, usando apenas o primeiro octeto para isso. Tenha em mente que o que define a classe são os bits à esquerda do primeiro octeto.
Classe A:
1 à 127 - Até aqui, temos 0 bits à esquerda.
Classe B:
128 a 191 - Até aqui, temos 1 bit à esquerda.
Classe C:
192 a 223 - Até aqui, temos 2 bits à esquerda.
Classe D:
224 a 239 - Até aqui, temos 3 bits à esquerda.
Classe E:
240 em diante.
Então, se usamos uma rede classe C em casa, quer dizer que podemos trocar 192 por um 223? Bem, até dá pra configurar uma rede local com esse endereço, mas uma série de problemas surgiriam. Como o objetivo aqui é esclarecer endereçamento, vamos direto ao que importa:
Para a classe A, a definição dos padrões dita que o endereçamento de rede privada é 10.0.0.0/8.
Para a classe B, a definição dos padrões dita que o endereçamento de rede privada é a faixa de 172.16.0.0/16 à 172.31.0.0/16.
Para a classe C, a definição dos padrões dita que o endereçamento de rede privada é 192.168.0.0/24.
Nos endereçamentos IP de redes privadas citados anteriormente, estão os valores /8, /16 e /24. Essa é uma representação simplificada da máscara e vou explicar logo após falar sobre máscara de rede.
A máscara de rede define duas reservas: uma é a rede, a outra, os hosts. Isso significa que quando falamos da rede 192.168.0.0/24, sabemos que a rede é 192.168.0 e podemos ter máquinas indo de 1 até 254. O zero é reserva da rede e o 255 é o broadcast.
Na rede 192.168.0.0/24, a máscara “24” significa “24 bits”. Sabendo que cada octeto tem 8 bits, fica claro que a máscara é:
11111111.11111111.11111111.00000000. Onde for 1, é reserva de rede, então não podemos usar para hosts (os computadores que estarão conectados à essa rede).
Outro ponto muito importante a notar é que: reserva de rede sempre é uma sequência de 1’s, nunca haverá um 0 entre os bits da reserva de rede.
Agora vamos observar a classe B. A máscara é 16 bits, portanto se eu tiver uma rede:\
172.20.0.0/16, significa que podemos ter 2 octetos de hosts:
172.20.0.1-254
172.20.1.1-254
E assim por diante. Desse modo, temos um total de 256*256-512 (tirando a reserva de rede e broadcast, que são esses 512 IPs subtraídos na conta), totalizando 65.024. Observe que 256*256 dá 65.536 IPs. Logo, quanto mais subnets forem criadas em uma classe, menos hosts serão alocados ao final.
Pra ficar “bem” claro, voltemos à classe C:
192.168.0.0/24 = 256-2 hosts (por causa da reserva e do broadcast), totalizando 254 computadores possíveis.
192.168.0.0/25 = 128: 11111111.1111111.1111111.10000000. Assim, temos 2 subnets:
192.168.0.1-126 e 192.168.129-254. Perde-se a reserva e o broadcast, então onde cabiam 254 hosts, agora cabem 128-2 por rede.
Isso significa que o IP 192.168.0.1 não conhecerá o IP 192.168.0.129, porque são redes diferentes, agora dependentes de roteamento para se conhecerem. Mais uma vez: dividir uma rede em redes menores é chamado de subnet. Também é possível fazer o contrário, criando supernets. Mas vamos ficar na introdução, talvez algum dia eu aprofunde o assunto e descreva a comunicação TCP/IP e socket UNIX.
Exceto sua rede não precise acessar a internet ou outra rede, não é necessário um gateway em uma rede. Porém, a partir do momento em que precisamos acessar um endereço fora de uma rede conhecida, é fundamental que haja um caminho de saída conhecido pelo sistema. Outra vez, vamos usar como exemplo a rede doméstica padrão na maioria dos roteadores:
192.168.0.0/24.
O gateway pode ser qualquer IP da rede 192.168.0.0/24 usada nesse exemplo, mas tradicionalmente utiliza-se 192.168.0.1 como gateway nesses roteadores. Quando seu computador recebe o IP por DHCP, em uma operação padrão ele deve receber também o DNS que resolverá nomes para a Internet e o gateway para que se saiba o caminho de saída da sua rede. Assim, ao acessar uma URL como manualdomaker.com, seu computador fará a consulta ao servidor DNS para resolver o endereço IP relacionado à URL (sendo “essa” a tarefa principal do servidor DNS). Isso deve retornar o IP 147.182.209.95, que é um endereço tão desconhecido quanto o do DNS que resolveu o nome. Mas seu computador saberá o caminho de saída para qualquer endereço diferente de 192.168.0.0/24 graças ao gateway.
Não sabe. Do mesmo modo, seu roteador tem um gateway, que está no modem da operadora que lhe provê o acesso à Internet. E do mesmo modo, o modem tem um gateway, que é a saída de rede de sua operadora. Os gateways vão encaminhando a requisição até chegar ao destino. Isso se chama “salto”, ou “hop”, e varia conforme operadora e região. As rotas para chegar em manualdomaker.com a partir de minha casa são:
Calcular uma subnet
É muito bom saber calcular, mas é mais importante o conceito de rede. Para calcular, podemos usar ferramentas como ipcalc ou sipcalc:
Repare o comando ipcalc 192.168.0.0/24 25. A sintaxe diz para fazer uma subnet da rede padrão /24 para redes /25. Como resultado, temos as duas redes explicadas anteriormente; seus gateways, broadcasts e hosts.
Bora fazer uma rede IoT? Então não se esqueça de colocar uma rota para sua rede. Mas isso ficará para outro artigo, onde faremos um roteador com Raspberry Pi.
Se precisar de mais referências, use esse link como ponto de partida e desça até os links importantes.
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.