# Sub-rede

Uma sub-rede é uma subdivisão lógica de uma rede IP. A subdivisão de uma rede grande em redes menores resulta num tráfego de rede reduzido, administração simplificada e melhor performance de rede.
Dispositivos que pertencem a uma sub-rede são endereçados com um grupo de bit mais significativo comum e idêntico em seus endereços IP. Isto resulta na divisão lógica de um endereço IP em dois campos: um número de rede ou prefixo de roteamento; e o restante do campo ou identificador de host. O campo restante é um identificador para uma interface de hospedeiro ou rede específicos.
O prefixo de roteamento pode ser expressado em notação de Classless Inter-Domain Routing (CIDR) escrito como o primeiro endereço de uma rede, seguido por um "caractere barra" (/), e finalizando com o comprimento de bit do prefixo. Por exemplo, 192.168.1.0/24 é o prefixo da rede IPv4 começando no endereço fornecido, possuindo 24 bits aplicados para o prefixo de rede; e os 8 bits restantes reservados para endereçamento de hospedeiro. A especificação de endereço IPv6 2001:db8::/32 é um bloco de endereço amplo com 2$^{96}$ endereços, possuindo um prefixo de roteamento de 32 bits.
Para IPv4, uma rede pode ser caracterizada por sua máscara de sub-rede ou máscara de rede, que é a máscara de bit que, quando aplicada por uma operação de lógica AND para qualquer endereço IP na rede, produz o prefixo de roteamento. Máscaras de sub-rede também são expressadas na notação ponto-decimal como um endereço. Por exemplo, 255.255.255.0 é a máscara de sub-rede para o prefixo 192.168.1.0/24.
Para criar sub-redes, qualquer máquina tem que ter uma máscara de sub-rede que define qual parte do seu endereço IP será usada como identificador da sub-rede e qual será usada como identificador dos hosts.
Sub-redes são parte do protocolo IP que atua na camada de rede.

## Máscaras de sub-rede

Uma máscara de sub-rede, também conhecida como subnet mask ou netmask, é uma bitmask de 32 bits, que permite dividir uma rede específica em sub-redes menores, tornando mais efetivo o uso de um determinado espaço de endereço IP.
Normalmente, as máscaras de sub-rede são representadas com quatro números entre 0 e 255, separados por pontos, ou, menos comum, como oito dígitos na representação hexadecimal.
A máscara 255.255.255.0 (em hexadecimal, 0xffffff00, ou 11111111.11111111.11111111.00000000, em binário), por exemplo, indica que os três primeiros octetos do endereço correspondem à sub-rede, e o quarto octeto aos hosts.

## Motivações para criar sub-redes

As sub-redes não são a única forma para ultrapassar problemas de topologia, mas são uma forma eficaz para ultrapassar esses mesmos problemas ao nível do software do TCP/IP.
As razões topológicas para criar sub-redes incluem:
* Ultrapassar limitações de distância. Alguns hardwares de rede têm limitações de distância rígidas. Como, por exemplo, o comprimento máximo de um cabo ethernet é de 100 metros. O comprimento total de uma ethernet é de 2 500 metros, para distâncias maiores usamos roteadores. Cada cabo é uma ethernet separada;
* Interligar redes físicas diferentes. Os roteadores podem ser usados para ligar tecnologias de redes físicas diferentes e incompatíveis;
* Filtrar tráfego entre redes. O tráfego local permanece na sub-rede.
As sub-redes também servem outros propósitos organizacionais:
* Simplificar a administração de redes. As sub-redes podem ser usadas para delegar gestão de endereços, problemas e outras responsabilidades;
* Reconhecer a estrutura organizacional. A estrutura de uma organização (empresas, organismos públicos, etc.) pode requerer gestão de rede independente para algumas divisões da organização;
* Isolar tráfego por organização. Acessível apenas por membros da organização, relevante quando questões de segurança são levantadas;
* Isolar potenciais problemas. Se um segmento muito favorável é pouco viável, podemos fazer dele uma sub-rede.

## Exemplo de uma sub-rede

Tomemos como exemplo um endereço IP de classe C (sendo x igual a 0 ou 1) e dois bits movidos para a direita para criar uma sub-rede:
| endereço classe C: | xxxxxxxx.xxxxxxxx.xxxxxxxx.00000000 |
| máscara: | 11111111.11111111.11111111.11000000 |
Como estendemos a parte relacionada a rede em dois bits, podemos criar 2$^2$ = 4 sub-redes. Sobram 6 zeros, logo esta sub-rede pode endereçar 2$^6$ = 64 endereços por sub-rede, como temos que subtrair 2 endereços (o endereço de rede e de broadcast), temos um total de 62 endereços de hosts (64 - 2 = 62) em cada sub-rede. A máscara a aplicar é 255.255.255.192, correspondente ao número binário mostrado anteriormente.