Vejo nesta questão , a tabela de roteamento possui:
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
O que significa ter uma máscara de sub-rede /32
e, nesse caso, qual será seu ID de rede? Um host pode existir sem um ID de rede caso consideremos o acima como um único host?
Tanto quanto eu sei, o ID da rede e o endereço IP atribuído a um host nessa rede são duas coisas diferentes. 192.168.0.0 é um ID de rede e se sua sub-rede for 255.255.255.0, então os hosts nesta rede podem ser 192.168.0.1 - 192.168.0.254. Neste caso, como um host pode existir sem um ID de rede?
Vinculado: Por que minha máscara de sub-rede é 255.255.255.255?
/32
endereçamentoDe um modo geral,
/32
significa que a rede possui apenas um único endereço IPv4 e todo o tráfego irá diretamente entre o dispositivo com esse endereço IPv4 e o gateway padrão. O dispositivo não seria capaz de se comunicar com outros dispositivos na sub-rede local.Existem algumas razões possíveis para isso que eu vi. Poderia ser:
ID de rede
A parte do ID de rede de um endereço IP é determinada pela máscara de sub-rede. Por exemplo:
/24
rede IPv4 tem uma máscara de sub-rede de1111.1111.1111.0000
, o que significa que os primeiros 3 octetos são o ID da rede e o último octeto é usado para atribuir IDs de host (256 IDs disponíveis, embora geralmente alguns sejam reservados)./16
rede IPv4 tem uma máscara de sub-rede de1111.1111.0000.0000
, o que significa que os primeiros 2 octetos são o ID da rede e o último octeto é usado para atribuir IDs de host (65536 IDs disponíveis, embora geralmente alguns sejam reservados).No caso de
/32
, isso não se aplica, pois o endereço é um ID de rede e um ID de host./31
endereços também são todos os IDs de host sem endereço 0 reservado.Há um pouco de confusão aqui; que /32 não se refere ao tamanho de nenhuma (sub)rede, mas ao intervalo de endereços aos quais se aplica uma determinada entrada da tabela de roteamento. Normalmente, os dois são iguais (porque você roteia uma rede ou sub-rede como uma unidade, certo?), mas o macOS faz as coisas um pouco diferentes para outros hosts na mesma rede local. Deixe-me adicionar algumas linhas antes das que você citou:
Observe que 192.168.1 (abreviação de 192.168.1.0/24) é roteado por en0 (também conhecido como link#4); não por meio de nenhum gateway, apenas pela própria interface. Esta é a rede em que o próprio Mac está. 192.168.1.1 e 192.168.1.125 são endereços específicos dentro desse intervalo de rede . Se você comparar essas entradas /32 com a entrada 192.168.1, elas são basicamente duplicatas redundantes; eles dizem a mesma coisa, apenas sobre endereços específicos em vez de todo o alcance da rede.
Não sei por que o macOS cria essas entradas redundantes específicas de endereço, mas provavelmente está relacionado a outra coisa que você pode ver na lista acima: o macOS lista suas entradas de tabela ARP na tabela de roteamento. A entrada "openwrt.lan" acima (que tenho quase certeza de que é 192.168.1.1, apenas listada por nome em vez de número) diz que é roteada via en0 para o endereço MAC 46:94:fc:63:fc:7 .
Portanto, o que você vê na lista de rotas é uma mistura de rotas de rede reais (como as entradas "padrão" e 192.168.1) e entradas por host (as entradas /32 e direcionadas a MAC).
a coisa mais fácil é pesquisar na web e ler artigos relacionados a
subnet mask
esubnet mask binary shorthand
eCIDR
e confira também
subnet calculators
o
/32
é o CIDR (abreviação) e refere-se a quantos 1s existem na máscara de sub-rede. Para/32
isso é255.255.255.255
ou11111111.11111111.11111111.1111111
isso significa que você só pode ter um endereço IP em sua rede antes de precisar de um gateway/roteador para sair dessa rede. com /32 é só você. Uma máscara de sub-rede é um número que define um intervalo de endereços IP disponíveis em uma rede
CIDR = roteamento entre domínios sem classe
o que significa usar /32: não acredito que seja uma configuração inválida, mas efetivamente desativa a rede ... ou limita a rede apenas para você ... você só pode falar consigo mesmo se não tiver um gateway configurar para alcançar fora dessa máscara de rede.
qual será o ID da rede: Presumo que você queira dizer qual será o endereço IP e o endereço IP será o que você definir. O endereço IP e a máscara de sub-rede (que é com o que você está lidando) são duas coisas diferentes, embora relacionadas.
um host pode existir sem um ID de rede [endereço IP?] : você pode existir sem ter um nome e sobrenome ou sem um endereço? sim, o host pode existir . meio que preciso definir melhor o que você quer dizer com existir .
É apenas o valor CIDR. Você pode aprender mais aqui sobre CIDR.
TL;DR
O que você está vendo não são máscaras de sub-rede . Eles são indicações do comprimento dos prefixos da tabela de roteamento¹.
Uma implementação ingênua de uma tabela de roteamento listaria todos os endereços IP possíveis para que, dado qualquer endereço IP, você procurasse aquele endereço exato e recuperasse as informações de roteamento² associadas a ele.
Claramente algum tipo de compressão é necessária. A natureza das informações de roteamento é que endereços adjacentes provavelmente usarão as mesmas informações, então podemos usar uma forma de árvore radix para comprimi-los juntos. Aqui, resumidamente, é como funciona.
Dados os números 0-7, podemos representá-los em binário da seguinte forma:
Agora, se tivermos duas entradas na tabela de roteamento, uma para os endereços 0 e 1 e outra para os endereços 2 e 3, podemos armazená-las sob os prefixos binários que eles compartilham. Se usarmos a
.
para indicar o bit "não utilizado" após o final do prefixo, teremos00.
para o intervalo 0-1 e01.
para o intervalo 2-3.Uma forma padrão de representar isso é com o menor número do intervalo seguido pelo comprimento do prefixo; neste caso, seriam
0/2
para o intervalo 0-1 e2/2
para o intervalo 2-3.Mas o que acontece se quisermos procurar as informações de roteamento para o endereço 6? Normalmente, adicionamos um conjunto "padrão" de informações de roteamento com prefixo
0/0
, ou seja, correspondendo a qualquer bit e, quando pesquisamos, procuramos as informações mais específicas, ou seja, o prefixo correspondente mais longo que podemos encontrar. Portanto, a tabela de roteamento completa que acabamos de descrever é:As máscaras de sub-rede podem ser descritas com prefixos da mesma maneira e, portanto, esse esquema é frequentemente usado para isso. Mas lembre-se de que só porque esse esquema pode ser usado para descrever sub-redes não significa que seja usado apenas para descrever sub-redes.
Como um exemplo de prefixos da tabela de roteamento que não são sub-redes, você pode ter duas interfaces de rede conectadas à mesma rede, digamos, 192.168.2.0/24. (Isso pode ser implementado conectando duas placas de rede separadas ao mesmo switch, cada uma com seu próprio cabo.) Você pode então configurar a tabela de roteamento para "equilibrar" o tráfego de saída nas duas interfaces usando duas entradas da tabela de roteamento:
Isso enviaria pacotes destinados aos endereços 0-127 naquela rede
eth0
, mas pacotes destinados aos endereços 128-255 naquela redeeth1
. Essa é uma maneira ruim de fazer isso (por motivos que não abordarei aqui), mas demonstra como os prefixos de roteamento e os endereços de rede podem não corresponder.¹ Infelizmente, o artigo da Wikipedia sobre tabelas de roteamento diz que o campo de prefixo contém o "ID da rede". Embora isso possa ser verdade em certas implementações específicas de tabelas de roteamento, nem sempre é um ID de rede no caso geral, como visto no exemplo que você forneceu e no meu exemplo mais adiante nesta resposta.
² Essas informações de roteamento geralmente incluem coisas como qual interface usar, qual roteador contatar nessa interface, se houver, o endereço MAC de um host para hosts diretamente acessíveis por meio dessa interface, qual endereço de origem devemos colocar no pacote se o host tem vários endereços de origem, informações de segurança e assim por diante. Há uma grande variedade de dados que podem estar lá, mas nada disso é importante para os propósitos desta discussão, pois estamos falando apenas sobre como você procura o conjunto de dados correto para um determinado endereço, não o que está no próprio conjunto de dados .
há também outro caso de uso, se você estiver familiarizado com o Cisco SD-Access (acesso definido por software). Cada switch de borda receberia um endereço /32 em sua interface de loopback e é considerado um host especial.