Você já parou para pensar sobre como o seu computador ou smartphone consegue acessar páginas na web? Ou, na empresa que você trabalha, como o seu PC se comunica com a máquina de alguém em outro andar? Isso é possível porque, tanto em redes locais quanto na internet, cada dispositivo conectado tem um endereço único: o IP, sigla para Internet Protocol.
Antes de começarmos, devo destacar que este texto aborda o IPv4. Se você procura informações sobre a versão mais recente do protocolo, abordamos o assunto na pagina IPV6.
Há várias formas de estabelecer comunicação entre computadores. No entanto, os protocolos TCP/IP (sigla para Transmission Control Protocol/Internet Protocol) são a base para internet e para a grande maioria das redes locais (dentro de um prédio, por exemplo).
Em poucas palavras, o TCP/IP é um conjunto de protocolos, isto é, de padrões de comunicação. Grossamente falando, é como se fosse uma linguagem: se todos os computadores "falam" esse idioma e respeitam as suas regras, conseguem se comunicar e trocar informações.
Apesar de a sigla TCP/IP fazer referência a dois protocolos — Transmission Control Protocol e Internet Protocol —, o conjunto conta com vários outros padrões, com cada um sendo responsável por determinada tarefa.
Para facilitar a compreensão, a estrutura da Internet foi organizada em camadas. Essencialmente, há 7 delas: Fisica, Enlace, Rede, Transporte, Sessão, Apresentação e Aplicação.
A camada física define especificações elétricas e físicas dos dispositivos. Em especial, define a relação entre um dispositivo e um meio de transmissão, tal como um cabo de cobre ou um cabo de fibra óptica. Isso inclui o layout de pinos, tensões, impedância da linha, especificações do cabo, temporização, hubs, repetidores, adaptadores de rede, adaptadores de barramento de host (HBA usado em redes de área de armazenamento) e muito mais. A camada física é responsável por definir se a transmissão pode ser ou não realizada nos dois sentidos simultaneamente. Sendo a camada mais baixa do modelo OSI, diz respeito a transmissão e recepção do fluxo de bits brutos não-estruturados em um meio físico. Ela descreve as interfaces elétricas, ópticas, mecânicas e funcionais para o meio físico e transporta sinais para todas as camadas superiores.
A camada de ligação de dados também é conhecida como de enlace ou link de dados. Esta camada detecta e, opcionalmente, corrige erros que possam acontecer no nível físico. É responsável por controlar o fluxo (recepção, delimitação e transmissão de quadros) e também estabelece um protocolo de comunicação entre sistemas diretamente conectados.
A camada de rede fornece os meios funcionais e de procedimento de transferência de comprimento variável de dados de sequências de uma fonte de acolhimento de uma rede para um host de destino numa rede diferente (em contraste com a camada de ligação de dados que liga os hosts dentro da mesma rede), enquanto se mantém a qualidade de serviço requerido pela camada de transporte. A camada de rede realiza roteamento de funções, e também pode realizar a fragmentação e remontagem e os erros de entrega de relatório. Roteadores operam nesta camada, enviando dados em toda a rede estendida e tornando a Internet possível. Este é um esquema de endereçamento lógico - os valores são escolhidos pelo engenheiro de rede. O esquema de endereçamento não é hierárquico.
A camada de rede pode ser dividida em três subcamadas:
Sub-rede de acesso - considera protocolos que lidam com a interface para redes, tais como X.25;
Sub-rede dependente de convergência - necessária para elevar o nível de uma rede de trânsito, até ao nível de redes em cada lado;
Sub-rede independente de convergência - lida com a transferência através de múltiplas redes. Controla a operação da sub rede roteamento de pacotes, controle de congestionamento, tarifação e permite que redes heterogêneas sejam interconectadas.
A camada de transporte é responsável por receber os dados enviados pela camada de sessão e segmentá-los para que sejam enviados a camada de rede, que por sua vez, transforma esses segmentos em pacotes. No receptor, a camada de Transporte realiza o processo inverso, ou seja, recebe os pacotes da camada de rede e junta os segmentos para enviar à camada de sessão.
Isso inclui controle de fluxo, ordenação dos pacotes e a correção de erros, tipicamente enviando para o transmissor uma informação de recebimento, garantindo que as mensagens sejam entregues sem erros na sequência, sem perdas e duplicações.
A camada de transporte separa as camadas de nível de aplicação (camadas 5 a 7) das camadas de nível físico (camadas de 1 a 3). A camada 4, Transporte, faz a ligação entre esses dois grupos e determina a classe de serviço necessária como orientada à conexão, com controle de erro e serviço de confirmação ou sem conexões e nem confiabilidade.
O objetivo final da camada de transporte é proporcionar serviço eficiente, confiável e de baixo custo. O hardware e/ou software dentro da camada de transporte e que faz o serviço é denominado entidade de transporte.
A entidade de transporte comunica-se com seus usuários através de primitivas de serviço trocadas em um ou mais TSAP (Transport Service Access Point), que são definidas de acordo com o tipo de serviço prestado: orientado ou não à conexão. Estas primitivas são transportadas pelas TPDU (Transport Protocol Data Unit).
Na realidade, uma entidade de transporte poderia estar simultaneamente associada a vários TSA e NSAP (Network Service Access Point black). No caso de multiplexação, associada a vários TSAP e a um NSAP e no caso de splitting, associada a um TSAP e a vários NSAP.
A ISO define o protocolo de transporte para operar em dois modos:
Orientado à conexão
Não-Orientado à conexão.
Como exemplo de protocolo orientado à conexão, temos o TCP, e de protocolo não orientado à conexão, temos o UDP. É óbvio que o protocolo de transporte não orientado à conexão é menos confiável. Ele não garante - entre outras coisas - a entrega das TPDU, nem tão pouco a ordenação das mesmas. Entretanto, onde o serviço da camada de rede e das outras camadas inferiores é bastante confiável - como em redes locais - o protocolo de transporte não orientado à conexão pode ser utilizado, sem o overhead inerente a uma operação orientada à conexão.
O serviço de transporte baseado em conexões é semelhante ao serviço de rede baseado em conexões. O endereçamento e controle de fluxo também são semelhantes em ambas as camadas. Para completar, o serviço de transporte sem conexões também é muito semelhante ao serviço de rede sem conexões. Constatado os fatos acima, surge a seguinte questão: "Por que termos duas camadas e não uma apenas?". A resposta é sutil, mas procede: A camada de rede é parte da sub-rede de comunicações e é executada pela concessionária que fornece o serviço (pelo menos para as WAN). Quando a camada de rede não fornece um serviço confiável, a camada de transporte assume as responsabilidades, melhorando em suma importância a qualidade do serviço.
Responsável pela troca de dados e a comunicação entre hosts, a camada de Sessão permite que duas aplicações em computadores diferentes estabeleçam uma comunicação, definindo como será feita a transmissão de dados, pondo marcações nos dados que serão transmitidos. Se porventura a rede falhar, os computadores reiniciam a transmissão dos dados a partir da última marcação recebida pelo computador receptor.
A camada de Apresentação, também chamada camada de Tradução, converte o formato do dado recebido pela camada de Aplicação em um formato comum a ser usado na transmissão desse dado, ou seja, um formato entendido pelo protocolo usado. Um exemplo comum é a conversão do padrão de caracteres (código de página) quando o dispositivo transmissor usa um padrão diferente do ASCII. Pode ter outros usos, como compressão de dados e criptografia.
Os dados recebidos da camada 7 estão descomprimidos, e a camada 6 do dispositivo transmissor fica responsável por comprimir esses dados. A transmissão dos dados torna-se mais rápida, já que haverá menos dados a serem transmitidos: os dados recebidos da camada 4 foram "encolhidos" e enviados à camada 1.
Para aumentar a segurança, pode-se usar algum esquema de criptografia neste nível, sendo que os dados só serão descodificados na camada 6 do dispositivo receptor.
Ela trabalha transformando os dados em um formato no qual a camada de aplicação possa aceitar, minimizando todo tipo de interferência.
A camada de aplicação corresponde às aplicações (programas) no topo da camada OSI que serão utilizadas para promover uma interação entre a máquina-usuário (máquina destinatária e o usuário da aplicação). Esta camada também disponibiliza os recursos (protocolo) para que tal comunicação aconteça, por exemplo, ao solicitar a recepção de e-mail através do aplicativo de e-mail, este entrará em contato com a camada de Aplicação do protocolo de rede efetuando tal solicitação (POP3 ou IMAP).
Tudo nesta camada é relacionado ao software. Alguns protocolos utilizados nesta camada são: HTTP, SMTP, FTP, Telnet, SIP, RDP, IRC, SNMP, NNTP, POP3, IMAP, BitTorrent, DNS, ICMP.
Quando você deseja enviar uma carta a alguém... Ok, você não envia mais cartas; prefere WhatsApp ou deixar recado no Facebook. Vamos então melhorar o exemplo: quando você quer enviar um presente a alguém, basta contratar os Corrreios ou uma transportadora para fazer a entrega no endereço informado.
Graças ao endereço, é possível encontrar exatamente a pessoa a ser presenteada. Também é graças ao seu endereço — único para cada residência ou estabelecimento — que você recebe contas de energia, boletos, aquele produto que você comprou em uma loja on-line, enfim.
Na internet, o princípio é parecido. Para que seja encontrado, o seu computador precisa ter um endereço único. O mesmo vale para qualquer site, como o InfoWester: este fica hospedado em um servidor, que por sua vez precisa ter um endereço para ser localizado na internet. Isso é feito via endereço IP (IP Address), recurso também utilizado para redes locais, como a rede Wi-Fi da sua casa: o seu roteador atribui um IP a cada dispositivo conectado a ele.
O endereço IP é uma sequência de números composta por 32 bits. Esse valor consiste em um conjunto de quatro sequências de 8 bits. Cada uma é separada por um ponto e recebe o nome de octeto ou simplesmente byte, pois um byte é formado por 8 bits. O número 172.31.110.10 é um exemplo. Repare que cada octeto é formado por números que podem ir de 0 a 255, não mais do que isso.
A divisão de um IP em quatro partes facilita a organização da rede, da mesma forma que a divisão do seu endereço em cidade, bairro, CEP, número, etc, torna possível a organização das casas da região onde você mora.
Nesse sentido, os dois primeiros octetos de um endereço IP podem ser usados para identificar a rede, por exemplo. Em uma escola que tem, vamos imaginar, uma rede para alunos e outra para professores, pode-se ter 172.31.x.x para a primeira rede e 172.32.x.x para a segunda, sendo que os dois últimos octetos são utilizados na identificação dos computadores.
Você já sabe que os endereços IP podem ser utilizados tanto para identificar o seu computador ou celular (ou qualquer outro dispositvo) dentro de uma rede quanto para identificá-lo na internet.
Se na rede do trabalho o seu computador tem, como exemplo, o IP 172.31.100.10, uma máquina em outra rede pode ter o mesmo número, afinal, ambas as redes são distintas e não se comunicam — uma nem sabe da existência da outra.
Mas, como a internet é uma rede global, cada dispositivo conectado nela precisa ter um endereço único. O mesmo vale para uma rede local: nesta, cada dispositivo conectado deve receber um endereço exclusivo. Se duas ou mais máquinas tiverem o mesmo IP, tem-se então um problema chamado "conflito de IP", que dificulta ou impede a comunicação desses dispositivos e pode inclusive atrapalhar toda a rede.
Para que seja possível termos IPs para uso em redes locais e IPs para utilização na internet, contamos com um esquema de distribuição estabelecido pelas entidades IANA (Internet Assigned Numbers Authority) e ICANN (Internet Corporation for Assigned Names and Numbers) que, basicamente, divide os endereços em três classes principais e mais duas complementares. São elas:
Classe A: 0.0.0.0 até 127.255.255.255 — permite até 128 redes, cada uma com até 16.777.214 dispositivos conectados;
Classe B: 128.0.0.0 até 191.255.255.255 — permite até 16.384 redes, cada uma com até 65.536 dispositivos;
Classe C: 192.0.0.0 até 223.255.255.255 — permite até 2.097.152 redes, cada uma com até 254 dispositivos;
Classe D: 224.0.0.0 até 239.255.255.255 — multicast;
Classe E: 240.0.0.0 até 255.255.255.255 — multicast reservado.
As três primeiras classes são assim divididas para atender às seguintes necessidades:
- Os endereços IP da classe A são usados em locais onde são necessárias poucas redes, mas uma grande quantidade de máquinas nelas. Para isso, o primeiro byte é utilizado como identificador da rede e os demais servem como identificador dos dispositivos conectados (notebooks, smartphones, impressoras, etc);
- Os IPs da classe B são usados nos casos em que a quantidade de redes é equivalente ou semelhante ao número de dispositivos. Para isso, usam-se os dois primeiros bytes do endereço IP para identificar a rede e os restantes para identificar os dispositivos;
- Os endereços IP da classe C são usados em locais que requerem grande quantidade de redes, mas com poucos dispositivos em cada uma. Assim, os três primeiros bytes são usados para identificar a rede e o último é utilizado para identificar as máquinas.
Quanto às classes D e E, elas existem por motivos especiais: a primeira é usada para a propagação de pacotes especiais para a comunicação entre os dispositivos, enquanto que a segunda está reservada para aplicações futuras ou experimentais.
Vale frisar que há vários blocos de endereços reservados para fins especiais. Por exemplo, quando o endereço começa com 127, geralmente indica uma rede "falsa", isto é, utilizada apenas para testes. No caso do endereço 127.0.0.1, este normalmente se refere ao próprio dispositivo, ou seja, ao próprio host, o que o faz ser chamado de localhost. Já o endereço 255.255.255.255 é utilizado para propagar mensagens para todos os hosts de uma rede de maneira simultânea.
Há conjuntos de endereços das classes A, B e C que são privados. Isso significa que eles não podem ser usados na internet, pois foram reservados para aplicações locais. São, essencialmente, estes:
- Classe A: 10.0.0.0 à 10.255.255.255;
- Classe B: 172.16.0.0 à 172.31.255.255;
- Classe C: 192.168.0.0 à 192.168.255.255.
Suponha então que você tenha que gerenciar uma rede com cerca de 50 computadores. Você pode destinar a essas máquinas endereços de 192.168.0.1 até 192.168.0.50, por exemplo. Todas elas precisam de acesso à internet. O que fazer? Adicionar mais um IP para cada uma delas?
Não. Na verdade, basta conectá-las a um servidor ou equipamento de rede — como um roteador Wi-Fi — que recebe a conexão à internet e a compartilha com todos os dispositivos conectados a ele. Com isso, somente este equipamento precisará de um endereço IP para acesso à internet.
As classes IP ajudam na organização do endereçamento, mas também podem representar desperdício. Uma solução bastante interessante para isso atende pelo nome de máscara de sub-rede, recurso em que parte dos números de um octeto destinado a identificar dispositivos conectados (hosts) é "trocada" para aumentar a capacidade da rede.
Para compreendermos, vamos enxergar as classes A, B e C da seguinte forma:
- A: N.H.H.H;
- B: N.N.H.H;
- C: N.N.N.H.
N significa Network (rede) e H indica Host. Com o uso de máscaras, podemos fazer uma rede do N.N.H.H se "transformar" em N.N.N.H. Em outras palavras, as máscaras de sub-rede permitem determinar quantos octetos e bits são destinados para a identificação da rede e quantos são utilizados para identificar os dispositivos.
Para isso, utiliza-se o seguinte esquema, basicamente: se um octeto é usado para identificação da rede, este receberá a máscara de sub-rede 255; se um octeto é aplicado para os dispositivos, seu valor na máscara de sub-rede será 0 (zero). A tabela a seguir mostra um exemplo dessa relação:
Perceba que podemos ter então redes com máscara 255.0.0.0, 255.255.0.0 e 255.255.255.0, cada uma indicando uma classe. Mas, como já dito, ainda pode haver situações de desperdício.
Suponha que uma faculdade tenha que criar uma rede para cada um de seus cinco cursos. Cada curso possui 20 computadores. A solução seria então criar cinco redes classe C? Pode ser melhor do que utilizar classes B, mas ainda haverá desperdício. Uma forma de contornar o problema é criar uma rede classe C dividida em cinco sub-redes. Para isso, as máscaras novamente entram em ação.
Nós utilizamos números de 0 a 255 nos octetos, mas estes, na verdade, representam bytes (linguagem binária). 255 em binário é 11111111. O número zero, por sua vez, é 00000000. Assim, a máscara de um endereço classe C, 255.255.255.0, é:
11111111.11111111.11111111.00000000
Note então que temos aqui uma máscara formada por 24 bits 1: 11111111 + 11111111 + 11111111 (se estiver confuso, leia este artigo sobre bits e bytes). Para criarmos as nossas sub-redes, temos que ter um esquema com 25, 26 ou mais bits, conforme a necessidade e as possibilidades. Em outras palavras, precisamos trocar alguns zeros do último octeto por 1.
Suponha que trocamos os três primeiros bits do último octeto (sempre trocamos da esquerda para a direita), resultando em:
11111111.11111111.11111111.11100000
Se fizermos o número 2 elevado pela quantidade de bits "trocados", teremos a quantidade possível de sub-redes. Em nosso caso, temos 2^3 = 8. Podemos então criar até oito sub-redes. Sobrou cinco bits para o endereçamento dos hosts. Fazemos a mesma conta: 2^5 = 32. Assim, temos 32 dispositivos em cada sub-rede (estamos fazendo esses cálculos sem considerar limitações que possam impedir o uso de todos os hosts e sub-redes).
11100000 corresponde a 224, logo, a máscara resultante é 255.255.255.224.
Saiba que esse esquema de "trocar" bits pode ser empregado também em endereços classes A e B, conforme a necessidade. Vale ressaltar ainda que não é possível usar 0.0.0.0 ou 255.255.255.255 como máscara.
Você já deve ter ouvido falar desses termos. A explicação é mais simples do que você imagina. O IP fixo (ou IP estático) é um endereço atribuído permanentemente a um dispositivo. Assim, esse equipamento vai sempre ter esse IP, mesmo que ele seja desconectado e volte à rede mais tarde. O IP só deixa de ser fixo se for mudado manualmente ou em algum procedimento específico.
Já o IP dinâmico é um endereço atribuído a um dispositivo no momento de conexão à rede. Cada vez que houver uma nova conexão, o roteador ou o equipamento que controla a rede irá atribuir ao dispositivo qualquer IP que estiver disponível, ou seja, não reservará a ele um endereço exclusivo.
Para facilitar a compreensão, imagine que uma empresa tem 80 computadores ligados em rede. Usando IPs dinâmicos, a empresa disponibiliza 100 endereços IP para essas máquinas. Como nenhum IP é fixo, um computador que acaba de ser ligado receberá um endereço IP que estiver livre entre os 100 existentes.
É mais ou menos assim que os provedores de internet trabalham. Na maioria deles, o endereço IP do seu acesso à internet mudará cada vez que uma nova conexão for estabelecida.
O método mais utilizado na distribuição de IPs dinâmicos é o protocolo DHCP (Dynamic Host Configuration Protocol).
Você já sabe que os sites na web também necessitam de um IP. Mas, se você digitar em seu navegador www.infowester.com, por exemplo, como é que o seu computador sabe qual o IP do site ao ponto de conseguir encontrá-lo?
Quando você digita um endereço qualquer de um site, um servidor de DNS (Domain Name System) é consultado. Ele é que informa qual IP está associado a cada site.
O DNS possui uma hierarquia bem definida. Se, por exemplo, o site www.cger.com.br é requisitado, o sistema envia a solicitação a um servidor responsável por terminações ".com". Esse servidor localizará qual o IP correspondente e responderá à solicitação. Se o site solicitado termina com ".br", um servidor responsável por esta terminação é consultado e assim por diante.
Se por alguma razão você precisar descobrir o IP de um site — do Google, por exemplo — pode fazê-lo de várias maneiras. Supondo que você use o Windows 10, basta digitar o comando cmd no campo de pesquisa da Barra de Tarefas e, na sequência, a instrução ping www.google.com.br.
O padrão de IP abordado aqui é chamado de IPv4. Há um formato mais recente, conhecido como IPv6, que é muito mais promissor e ganha cada vez mais espaço. Você já vai entender o porquê.
Até um passado recente, a gente só conectava notebooks ou desktops às redes de nossas casas. Hoje, conectamos também smartphones, smartwatches (relógios inteligentes), tablets, TVs e por aí vai. A tendência é a de que, nos próximos anos, praticamente todos os dispositivos do lar estejam on-line: geladeira, cafeteira, luminárias e assim por diante.
Esse cenário em que tudo é conectado corresponde ao conceito de Internet das Coisas. Mas há um problema: o número de IPs disponíveis não dá conta de tantas conexões. A solução está no IPv6, uma especificação capaz de suportar até — respire fundo — 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços, um número absurdamente alto!
O IPv6 não consiste, necessariamente, apenas no aumento da quantidade de octetos. Um endereço do tipo pode ser, por exemplo:
FEDC:2D9D:DC28:7654:3210:FC57:D4C8:1FFF
Para compreender o que isso significa e saber mais detalhes, acesse o texto o que é IPv6.
Com o surgimento do IPv6, tem-se a impressão de que a especificação tratada neste texto, o IPv4, vai sumir do mapa. Isso até pode acontecer, mas vai demorar bastante. Enquanto isso, o que veremos é a "convivência" entre ambos os padrões. Não por menos, praticamente todos os sistemas operacionais atuais e a maioria dos equipamentos de rede estão aptos a lidar tanto com um quanto com o outro.
Por isso, se você é ou pretende ser um profissional que trabalha com redes ou simplesmente quer conhecer mais o assunto, procure se aprofundar nas duas especificações.
A essa altura, você também deve estar querendo descobrir qual o IP da sua conexão. Cada sistema operacional tem uma forma de mostrar isso. Se você é usuário do Windows 10, pode fazê-lo digitando cmd no campo de pesquisa da Barra de Tarefas e, na janela que surgir, informar o comando ipconfig /all. Em ambientes Linux, o comando é ifconfig.
Se você estiver conectado a partir de uma rede local, como o Wi-Fi da sua casa, o IP será fornecido pelo roteador. Para sabe o endereço IP da conexão à internet em si, você pode consultar a página de configuração do seu equipamento de rede ou pesquisar por "qual o meu IP" no Google. Os resultados mostrarão várias páginas que dão essa informação.
Fonte: https://www.infowester.com/ip.php
Texto adaptado por: Luciano Ribeiro.
Como desenvolvedor ou como engenheiro de redes, pode ser que você precise procurar os valores das máscaras de sub-rede e descobrir o que significam.
Para facilitar sua vida, a comunidade do freeCodeCamp criou essa ficha informativa simples. É só rolar pela página ou usar Ctrl/Cmd + f para encontrar o valor que você está procurando.
Aqui estão as tabelas, seguidas de algumas explicações sobre o que elas significam.
* /31 é um caso especial detalhado no RFC 3021 onde as redes com esse tipo de máscara de sub-rede podem atribuir dois endereços IP como link ponto-a-ponto.
E aqui temos uma tabela de conversões de decimal para binário para a máscara de sub-rede e octetos coringa:
Observe que o coringa é o inverso da máscara de sub-rede.
Por fim, essa ficha informativa, bem como o resto do arquivo, tem como foco os endereços IPv4, em vez dos novos endereços com o protocolo IPv6. Se quiser aprender mais sobre IPv6, confiram os posts sobre IPV6 no menu superior.
Os endereços IPv4, como 192.168.0.1, são apenas representações decimais de quatro blocos binários.
Cada bloco tem 8 bits e representa números de 0 a 255. Como os blocos são grupos de 8 bits, cada bloco é conhecido como um octeto. Pelo fato de haver quatro blocos de 8 bits, cada endereço IPv4 é de 32 bits.
Por exemplo, aqui temos a aparência do endereço IP 172.16.254.1 em binário:
Para converter um endereço IP entre suas formas decimal e binária, use esta tabela:
A tabela acima representa um octeto de 8 bits.
Agora, digamos que você queira converter o endereço IP 168.210.225.206. Tudo o que você precisa fazer é quebrar o endereço em quatro blocos
(168, 210, 225 e 206) e converter cada um em binário usando a tabela acima.
Lembre-se de que, em binário, 1 é equivalente a "ligado" e 0 é "desligado". Desse modo, para converter o primeiro bloco, 168, em binário, comece do início da tabela e coloque um 1 ou um 0 naquela célula até chegar a uma soma de 168.
Por exemplo:
128 + 32 + 8 = 168, que é o binário 10101000.
Se fizer isso para o resto dos blocos, obtemos 10101000.11010010.11100001.11001110.
Se você olhar para a tabela acima, pode parecer que o número de endereços IP é praticamente ilimitado. Afinal, há quase 4,2 bilhões de endereços IPv4 possíveis e disponíveis.
Se você pensar, no entanto, no quanto a internet cresceu e na quantidade de dispositivos conectados nos dias de hoje, não é surpresa que já haja uma escassez de endereços IPv4.
Como a escassez já foi reconhecida a alguns anos, os desenvolvedores encontraram uma forma de dividir um endereço IP em redes menores, chamadas de sub-redes.
Esse processo, chamado, em inglês, de subnetting, usa a seção do host do endereço IP para dividi-lo em redes menores, ou sub-redes.
Em geral, um endereço IP é composto de bits de rede e bits host:
Assim, de modo geral, o uso de sub-redes faz duas coisas: nos dá uma forma de dividir redes em sub-redes e permite que dispositivos determinem se outro dispositivo/endereço IP está ou não na mesma rede local.
Uma boa forma de pensar nas sub-redes é imaginar sua rede wireless em casa.
Sem as sub-redes, cada dispositivo conectado à internet precisaria de seu próprio endereço IP exclusivo.
Como você está em um roteador wireless, no entanto, precisa apenas de um endereço IP para seu roteador. Esse endereço IP público ou externo geralmente é tratado automaticamente, sendo atribuído por seu provedor de serviços de internet (ISP).
Então, cada dispositivo conectado ao roteador tem seu próprio endereço IP privado ou interno:
Agora, se o seu dispositivo com o endereço IP interno 192.168.1.101 quiser se comunicar com outro dispositivo, ele usará o endereço IP de outro dispositivo e a máscara de sub-rede.
A combinação dos endereços IP e da máscara de sub-rede permite que o dispositivo em 192.168.1.101 descubra se outro dispositivo está na mesma rede (como o dispositivo em 192.168.1.103) ou em uma rede completamente diferente em algum outro lugar on-line.
De modo interessante, o endereço IP externo atribuído ao seu roteador por seu ISP provavelmente é parte de uma sub-rede, que pode incluir muitos outros endereços IP de casas ou empresas próximas a você. E, assim como, endereços IP internos, esse endereço também precisa de uma máscara de sub-rede para funcionar.
As máscaras de sub-rede servem como uma espécie de filtro para um endereço IP. Com uma máscara de sub-rede, os dispositivos podem olhar para um endereço IP e descobrir quais partes são os bits da rede e quais são os bits do host.
Usando-as, é possível descobrir a melhor forma desses dispositivos se comunicarem.
Se você já andou dando uma olhada nas configurações de rede no seu roteador ou computador, você provavelmente viu esse número: 255.255.255.0.
Se já fez isso, viu uma máscara de sub-rede muito comum para redes caseiras simples.
Como os endereços IPv4, as máscaras de sub-rede são de 32 bits. E, assim como converter um endereço IP em binário, você pode fazer o mesmo com uma máscara de sub-rede.
Por exemplo, aqui está sua tabela de antes:
Agora, vamos converter o primeiro octeto, 255:
É simples, não é? Desse modo, qualquer octeto que seja 255 é simplesmente 11111111 em binário. Isso significa que 255.255.255.0 é, de fato, 11111111.11111111.11111111.00000000 em binário.
Agora, vamos ver uma máscara de sub-rede e um endereço IP juntos e calcular quais partes do endereço IP são os bits da rede e os bits do host.
Aqui estão os dois, em decimal e em binário:
Com os dois dispostos assim, fica fácil separar 192.168.0.101 em bits da rede e bits do host.
Sempre que um bit em uma máscara de sub-rede binária for 1, o mesmo bit em um endereço IP binário é parte da rede, não do host.
Como o octeto 255 é 11111111 em binário, o octeto inteiro no endereço IP é parte da rede. Assim, os primeiros três octetos, 192.168.0, são a porção da rede do endereço IP, enquanto 101 é a porção do host.
Em outras palavras, se o dispositivo em 192.168.0.101 quiser se comunicar com outro dispositivo, usando a máscara de sub-rede, ele sabe que qualquer coisa que tenha o endereço IP 192.168.0.xxx está na mesma rede local.
Outra forma de expressar isso é com um ID de rede, que é apenas a porção de rede do endereço IP. Assim, o ID de rede do endereço 192.168.0.101 com uma máscara de sub-rede de 255.255.255.0 é 192.168.0.0.
O mesmo acontece para outros dispositivos da rede local (192.168.0.102, 192.168.0.103 e assim por diante).
O que significa CIDR e o que é a notação CIDR?
CIDR é a sigla para Classless Inter-Domain Routing (roteamento interdomínios sem classe). Ele é usado em IPv4 e, mais recentemente, no roteamento de IPv6.
O CIDR surgiu em 1993 como uma forma de desacelerar o uso de endereços IPv4, que estavam sendo exauridos rapidamente no antigo sistema de endereçamento IP com classes, a partir do qual a internet foi construída inicialmente.
O CIDR consiste em alguns conceitos principais.
O primeiro desses conceitos é o de tamanho de sub-rede variável, ou Variable Length Submasking (VLSM), que, basicamente, permitiu que os engenheiros de rede criassem sub-redes dentro de sub-redes. Aquelas sub-redes podem ser de tamanhos diferentes. Assim, haveria menos endereços IP não utilizados.
O segundo conceito importante que o CIDR introduziu foi a notação CIDR.
A notação CIDR é, de fato, apenas a abreviação para a máscara de sub-rede, representando o número de bits disponíveis do endereço IP. Por exemplo, o /24 em 192.168.0.101/24 é equivalente ao endereço IP 192.168.0.101 e à máscara de sub-rede 255.255.255.0.
Para descobrir a notação CIDR para uma determinada máscara de sub-rede, tudo o que você precisa fazer é converter a máscara de sub-rede em binário, e contar o número de dígitos 1 ou "ligados". Por exemplo:
Como há três octetos de 1s, há 24 bits "ligados", o que significa que a notação CIDR é /24.
Não importa a maneira que você escrever, mas sei que você concorda que /24 é muito mais fácil de escrever que 255.255.255.0.
Isso geralmente é feito com um endereço IP. Então, vamos ver a mesma máscara de sub-rede com um endereço IP:
Os primeiros três octetos da máscara de sub-rede são todos bits "ligados". Assim, isso significa que os mesmos três octetos no endereço IP são todos bits de rede.
Vamos ver o quarto e último octeto mais detalhadamente:
Neste caso, como todos os bits para este octeto na máscara de sub-rede estão "desligados", podemos ter certeza de que todos os bits correspondentes para este octeto no endereço IP são parte do host.
Ao escrever a notação CIDR, isso geralmente é feito com o ID de rede ID. Desse modo, a notação CIDR do endereço IP 192.168.0.101 com uma máscara de sub-rede de 255.255.255.0 é 192.168.0.0/24.
Para ver mais exemplos de como calcular a notação CIDR e o ID de rede para determinados endereço IP e máscara de sub-rede, confira este vídeo:
Agora que vimos alguns exemplos básicos sub-rede e CIDR, vamos olhar mais de perto o que é conhecido como endereçamento IP com classes (classful).
Antes do desenvolvimento das sub-redes, todos os endereços IP pertencem a uma classe específica:
Observe que há endereços IP de classe D e E, mas veremos estes em mais detalhes mais tarde.
Os endereços IP com classes deram aos engenheiros de redes uma forma de fornecer a organizações diversas um intervalo de endereços IP válidos.
Havia muitos problemas com essa abordagem e que, por fim, levaram às sub-redes. Antes de entrarmos nesses problemas, no entanto, vamos olhar mais de perto essas diferentes classes.
Para os endereços IP classe A, o primeiro octeto (8 bits/1 byte) representa o ID de rede, enquanto os três octetos restantes (24 bits/3 bytes) são o ID do host.
Os endereços IP classe A vão de 1.0.0.0 a 127.255.255.255, com uma máscara padrão de 255.0.0.0 (ou /8 em CIDR).
Isso significa que o endereçamento de classe A pode ter um total de 128 (27) redes e 16,777,214 (224-2) endereços usáveis por rede.
Além disso, observe que o intervalo de 127.0.0.0 a 127.255.255.255 na faixa da classe A está reservado para o endereço de loopback do host (consulte o RFC5735).
Para os endereços IP classe B, os primeiros dois octetos (16 bits/2 bytes) representam o ID de rede e os dois octetos restantes (16 bits/2 bytes) são o ID do host.
Os endereços IP classe B vão de 128.0.0.0 a 191.255.255.255, com uma máscara de sub-rede padrão de 255.255.0.0 (ou /16 em CIDR).
O endereçamento de classe B pode ter 16.384 (214) endereços de rede e 65.534 (216) endereços usáveis por rede.
Para os endereços IP classe C, os primeiros três octetos (24 bits/3 bytes) representam o ID de rede e o último octeto (8 bits/1 byte) é o ID do host.
Os endereços IP classe C vão de 192.0.0.0 a 223.255.255.255, com uma máscara de sub-rede padrão de 255.255.255.0 (ou /24 em CIDR).
A classe C responde por 2.097.152 (221) redes e 254 (28-2) endereços usáveis por rede.
As últimas duas classes são as classes D e E.
Os endereços IP de classe D são reservados para multicasts. Eles ocupam o intervalo de 224.0.0.0 a 239.255.255.255.
Os endereços IP de classe E são experimentais, sendo qualquer endereço a partir de 240.0.0.0.
O problema principal dos endereços IP com classes está no fato de não serem eficientes, podendo levar a muitos endereços IP desperdiçados.
Por exemplo, imagine que você é parte de uma grande organização da época. Sua empresa tem 1.000 funcionários, pertencendo, assim, à classe B.
Se você olhar acima, no entanto, verá que uma rede de classe B pode dar suporte a 65.534 endereços utilizáveis. Isso é muito mais do que sua organização provavelmente precisaria, mesmo que cada funcionário tivesse diversos dispositivos, cada um com um endereço exclusivo.
Também não haveria modo de sua organização fazer parte da classe C. Neste caso, não haveria endereços IP suficientes para ela.
Assim, embora os endereços IP com classes fossem usados na época em que os endereços IPv4 eram amplamente difundidos, tornou-se claro, rapidamente, que um sistema melhor seria necessário para garantir que não seriam consumidos todos os aproximadamente 4,2 bilhões de endereços utilizáveis.
Os endereços IP com classes não foram mais usados desde que foram substituídos pelo CIDR, em 1993. Eles são, em grande parte, estudados para entender a arquitetura inicial da internet e o motivo de as sub-redes serem importantes.
Fonte: https://www.freecodecamp.org/portuguese/news/ficha-informativa-de-sub-redes-mascara-de-sub-rede-24-30-26-27-29/
Texto adaptado por: Luciano Ribeiro