Por que as máscaras de sub-rede são relevantes para o computador individual na rede?

47

Entendo como as máscaras de sub-rede são usadas para dividir uma rede em sub-redes, mas, por que cada computador na rede precisa conhecer a máscara de sub-rede e não apenas o roteador?

Eu poderia entender, se cada computador estivesse fisicamente conectado uns aos outros com um fio, mas todos os pacotes precisam passar pelo roteador de qualquer maneira.

Digamos que eu tenha um computador em uma rede 192.168.0.0/255.255.255.0 , que tem o IP 192.168.0.1 .

Se esse computador tentar acessar um computador fora da sub-rede, digamos 192.168.1.1 , ele transmitirá a mensagem ao roteador, o roteador identificará que o IP está fora do intervalo IP da sub-rede e, em vez de transmitindo-o na sub-rede, ele o transmite para a rede à qual está conectado (talvez outro roteador).

    
por Orpedo 22.03.2017 / 10:51

9 respostas

77

Suas suposições originais não são totalmente corretas. O que você chama de "roteador" são dois dispositivos em um - um roteador de duas portas conectado internamente a um comutador Ethernet de várias portas . (Aqui está um exemplo de diagrama .)

Isso significa que os computadores estão conectados diretamente na camada 2, e podem enviar pacotes uns aos outros sem passar pelo núcleo do roteador - eles são simplesmente retransmitidos entre portas pelo chip switch. (O roteador tem sua própria "porta" no switch).

Então, se você olhar os pacotes usando o Wireshark, verá que eles usam diretamente os endereços MAC uns dos outros, enquanto os pacotes "externos" sempre têm o MAC do roteador como destino.

(Suponho que você esteja falando sobre os "roteadores sem fio" típicos encontrados na maioria das residências, que são a causa usual desse tipo de pergunta. Uma rede maior teria um separado roteador com uma porta por sub-rede e alguns switches separados (talvez um mestre um mais um por andar / sala) e várias dezenas de computadores conectados a esses switches.

É praticamente o mesmo com redes Wi-Fi, exceto que "switch" é substituído por "wireless bridge" ou "ponto de acesso". Em ambos os casos, os computadores conectados podem enviar pacotes diretamente uns aos outros na camada 2, sem passar pelo roteador.

Comentários:

When I stated router, I did actually mean switch. My mistake. My point beeing, that each computer in a subnetwork is not connected to each other, but rather to a switch, which then can pass on packages to the correct destination. An ethernet-frame does not contain the subnet-mask, as the switch already has this knowledge, and hence does not need it to do the correct switching.

Isso é novamente incorreto. Switches não possuem esse conhecimento; seu núcleo de comutação funciona na camada 2 e não sabe nada sobre o IP - encaminha os quadros Ethernet baseados puramente no campo 'endereço MAC de destino'.

Portanto, os hosts precisam da máscara de sub-rede para descobrir qual endereço MAC usar como destino:

  • Se o peer estiver na mesma sub-rede, será considerado on-link por definição - assim, o quadro Ethernet terá o MAC de um par como destino.

  • Para pares fora da sub-rede, o quadro Ethernet terá o MAC do gateway como destino.

(Isso se aplica à configuração padrão. Algumas redes especiais de floco de neve alteram isso - por exemplo, a maioria dos sistemas operacionais permite adicionar rotas "no link" adicionais para sub-redes adicionais; inversamente, algumas opções podem ser configuradas como falsas respostas ARP que mesmo o tráfego "on-link" é forçado através do gateway.

    
por 22.03.2017 / 11:10
32

Como um computador sabe se um endereço de destino está na mesma sub-rede em outro?

Verificando o adddress local e a máscara de sub-rede .

Vamos verificar alguns exemplos:

Se meu computador tiver% IP192.168.0.1 e a máscara for 255.0.0.0 , isso significa que qualquer endereço de 192.0.0.0 a 192.255.255.255 está na mesma sub-rede. Os pacotes para todos os outros computadores não precisam passar pelo roteador, eles podem ser enviados diretamente. Envie um pacote ARP para obter o endereço MAC do computador de destino e envie o pacote.

Mas, se meu computador tiver% IP192.168.0.1 e a máscara for 255.255.255.128 , os computadores da mesma sub-rede serão de endereço de IP 192.168.0.0 a 192.168.0.127 . Eles podem ser acessados diretamente (enviar ARP, encontrar endereço MAC, etc.) Qualquer outro endereço, por exemplo 192.168.0.200 , deve ser alcançado passando pelo roteador.

    
por 22.03.2017 / 11:04
11

Algo não óbvio sobre IP é que todo dispositivo IP é em si um roteador .

Isto pode ser visto em um PC normal com o comando "route print". Você está conectado a duas redes: seu segmento Ethernet ou Wi-Fi local e a rede localhost. Cada pacote precisa estar sujeito a uma decisão sobre em qual rede colocá-lo.

Isso se torna mais aparente se você colocar seu computador em duas redes, digamos uma "pública" e outra "privada". Agora você definitivamente precisa da máscara de sub-rede para decidir em qual rede enviar o pacote.

Muitas pessoas descobrem acidentalmente que um PC com uma única conexão de rede pode funcionar com um submask configurado incorretamente: elas acabam enviando tudo para o gateway.

    
por 22.03.2017 / 15:18
6

Eu vejo isso mencionado em algumas das outras respostas aqui, mas acho que poderia ser mais claro: em computadores com várias interfaces de rede, a máscara de sub-rede pode ser usada para determinar automaticamente qual interface física enviar Tráfego IP baseado no endereço IP de destino.

Se você estiver enviando um pacote para um dispositivo em uma LAN conectada a uma das interfaces, para saber em qual interface ele será enviado (se você não tiver configurado uma rota explicitamente), o computador poderá verificar interfaces para ver se subnet_mask & destination_ip == subnet_mask & interface_ip (por & quero dizer bitwise-e e por == pretendo afirmar a igualdade) e se houver uma correspondência, escolha essa interface.

Dessa forma, se você tiver, por exemplo:

  • Interface A com 192.168.1.42/24
  • Interface B com 10.0.0.15/24
  • Interface C com 192.168.2.97/24

E você envia um pacote para 192.168.2.123 e não tem uma rota configurada, pode ser determinado que a interface C deve ser usada porque 255.255.255.0 & 192.168.2.123 == 255.255.255.0 & 192.168.2.97 .

Isso não seria possível se a máscara de sub-rede não fosse conhecida e, portanto, você precisaria configurar uma rota para cada endereço IP para o qual enviou dados.

    
por 23.03.2017 / 09:32
5

Se olharmos para uma tabela de roteamento (essa é a minha máquina de desktop):

rota ip

default via 172.20.25.1 dev eth1 
172.20.25.0/24 dev eth1 proto kernel scope link src 172.20.25.33 
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1

rota

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.25.1     0.0.0.0         UG    0      0        0 eth1
172.20.25.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

Qualquer visualização transmite as mesmas informações. As máscaras de sub-rede indicam quais hosts são diretamente acessíveis nessa rede, e outros hosts são encontrados usando um gateway. Em particular, temos que saber que o gateway é acessível, caso contrário, não poderíamos enviar pacotes para ele.

Você poderia, em princípio, enviar tudo através do seu host de gateway. Isso seria parecido com

default via 172.20.25.1 dev eth1 
172.20.25.1 dev eth1 proto kernel scope link src 172.20.25.33 

ou

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.20.25.1     0.0.0.0         UG    0      0        0 eth1
172.20.25.1     0.0.0.0         255.255.255.255 U     0      0      

Eu não tentei isso, mas ele pode ser usado para Encaminhamento forçado de MAC .

    
por 22.03.2017 / 16:27
5

O TCP / IP poderia ter sido projetado como você sugere - nós de folha enviariam tudo para o roteador e o encaminharia para o destino, que poderia estar na mesma sub-rede que o remetente.

Mas isso não seria ideal, por dois motivos:

  1. Ele usa mais largura de banda: cada pacote entre dispositivos na mesma sub-rede deve ser transmitido duas vezes: uma vez do remetente para o roteador e novamente do roteador para o receptor. Nas redes em que o roteador também é o comutador de rede, isso na verdade não é uma largura de banda extra, já que ele passaria pelo switch de qualquer maneira. Mas nem todas as tecnologias de rede funcionam assim. O design original da Ethernet era uma tecnologia de barramento, sem comutador central ou repetidor.

  2. Coloca mais carga no roteador. Mesmo que o roteador também seja o switch, é um pouco mais trabalhoso, pois ele foi implementado na camada 3, em vez da simples comutação da Camada 2.

Uma filosofia geral que incorpora o design do TCP / IP é que os nós finais são dispositivos inteligentes, portanto, supõe-se que eles consigam fazer parte do trabalho. Eles não precisam conhecer a topologia de rede completa, como os roteadores de backbone, mas eles sabem o suficiente sobre o ambiente local para executar algumas das tarefas iniciais de roteamento entre local e remoto. Não é preciso muito código para implementar esse roteamento inicial simples.

Além disso, dispositivos não roteadores não estão necessariamente em apenas uma sub-rede. Você pode facilmente ter várias placas de rede em um PC - muitas têm Ethernet e WiFi. E cada uma delas pode ser conectada a uma sub-rede diferente, e endereços e máscaras de sub-rede são usados para determinar qual placa de rede usar. Se você executar máquinas virtuais, provavelmente haverá uma sub-rede virtual conectando-as ao sistema host.

    
por 24.03.2017 / 18:55
2

Okay, so I understand how subnet-masks are used to divide a network into sub-networks, but my question is, why does every computer in the network need to know the subnet-mask and not just the router?

bem, os dispositivos que as pessoas chamam de roteadores geralmente não são apenas roteadores. Portanto, as pessoas às vezes usam termos como NAPT Router, Home Router ou Consumer Router, para sugerir que não é puramente roteador. Para mostrar que eles não são apenas roteadores, esses dispositivos podem fazer o NAPT (que não é roteamento), e eles têm um switch embutido (um switch faz ponte, que não é roteamento - distinções entre um switch e uma ponte). são um pouco não tão bem definidos - pode-se dizer que uma bridge normalmente tem 2 portas e conecta diferentes meios de rede (por exemplo, ethernet e non-ethernet), enquanto um switch teria múltiplas portas e o mesmo meio de rede). Um switch faz ponte.

Se o switch fosse separado do "roteador", então, seria mais claro. Quando o endereço IP estiver na mesma rede, o pacote será direcionado para . o cabo para o que está próximo fisicamente, que é o switch, e é destinado a algum outro computador na rede (a menos que fosse um switch gerenciado e você estivesse conectando ao switch, por exemplo, telnet ou http e o switch tivesse seu próprio ip), e como o pacote não é destinado a outra rede, o pacote não alcançará o roteador. Quando ele é destinado a um computador em uma rede diferente, é claro que ele ainda vai para o switch, mas depois continua para o roteador, (o switch direcionou o pacote para o roteador e o endereço MAC de destino do pacote que vem para o switch teria sido o endereço MAC do roteador), e a rota o encaminharia para fora da interface correta do roteador.

Com essas coisas tipicamente chamadas de roteadores, que possuem switches dentro deles (como, não o estilo profissional de roteadores Cisco / Juniper), então o switch está dentro ... Mas é apenas a localização do switch .. Ainda é que quando o O IP está na mesma rede e o pacote é endereçado ao switch, não ao roteador. E vai apenas para o switch dentro do roteador e não alcança o roteador.

I could understand it, if each computer were physically connected to each other with a wire,

o que você quer dizer aqui .. Se todos os computadores em uma rede inteira estivessem fisicamente conectados com um fio ... então eu acho que você não precisaria de um switch ou roteador. O que você está descrevendo soa um pouco como a ethernet original ... e se eles estão todos conectados com um fio, provavelmente não seria uma rede tão grande. E de qualquer forma não será um fio como você está acostumado. Ele teria computadores conectados ao longo do caminho com "toques". Então eu não sei porque você simplesmente jogou essa frase.

but all packets needs to go through the router anyway.

então você quer dizer deixar de lado a ideia de todos os computadores conectados a um fio sem roteador.

E não, mesmo em sua casa, eles não passam pelo roteador todas as vezes. Mesmo com o seu "roteador doméstico", chame-o de caixa de internet. Eles vão para o interruptor.

Lets say that I have a computer on a network 192.168.0.0/255.255.255.0, which have the IP 192.168.0.1.

If that computer try to reach a computer outside the sub-network, lets say 192.168.1.1, it transmits the message to the router,

para o switch, em seguida, a partir do switch, ele vai para o roteador

the router identyfies that the IP is outside the sub-network IP-range, and rather than transmitting it on the sub-network, it transmits it to the network it is connected to (perhaps another router).

bem, o roteador identifica para qual interface de rede ele é. Ele envia de uma interface para outra interface. Uma distinção - além de qual interface, seria se uma rede está conectada diretamente ou não. Ele poderia enviar para um switch e depois para um computador. Ou pode enviar para um computador. Ou, se a rede não estiver diretamente conectada, ela será direcionada para outro roteador.

e sua última sentença foi

it transmits the message to the router,

e depois, de repente, você decidiu parar de escrever?

the router identyfies that the IP is outside the sub-network IP-range, and rather than transmitting it on the sub-network, it transmits it to the network it is connected to (perhaps another router).

bem, eu não colocaria assim. Cada interface no roteador tem um intervalo de IPs diferente.

Mas, com seu roteador de consumidor ou roteador doméstico, o que acontece é que é como um roteador com duas interfaces, uma em seu lado com um switch conectado a ele. E as múltiplas portas são portas do switch.

Então, se você pensa em termos da parte do roteador, não é como se isso estivesse dentro da sub-rede e isso estivesse fora, porque há potencialmente muitas redes. Existe um em cada interface. E o roteador não estará transmitindo de volta para a mesma rede de onde veio. A razão pela qual chegou ao roteador em primeiro lugar é precisamente porque o switch (que atingiu primeiro), viu o endereço MAC e assim viu que não é o endereço MAC do roteador.

O computador que enviou o pacote, verificará se o IP de destino do pacote está em sua própria rede ou na mesma rede e, com base nisso, escolherá o endereço MAC relevante. O endereço MAC do computador para o qual está destinado (se o computador estiver na mesma rede). Ou (se o computador estiver em outra interface do roteador), então será o endereço MAC do roteador. Eu acho que poderia responder o título da sua pergunta de forma bem direta, por que o computador precisaria conhecer a máscara de sub-rede .. No sistema TCP / IP como é .. é assim que funciona, o computador escolhe a camada relevante 2 endereço, por exemplo para ethernet, o endereço MAC.

    
por 22.03.2017 / 13:55
1

But why is the subnet-mask then given for the cuputer/device, when it does not need it for anything? – Orpedo Mar 22 at 13:45

O computador / dispositivo usa a máscara de sub-rede para calcular o endereço de transmissão IP.

As interfaces IP que não estão no modo promíscuo são configuradas para responder ao endereço de transmissão IP, bem como ao seu próprio endereço IP.

    
por 27.03.2017 / 07:11
0

Criei uma conta apenas para responder a isso, pois acho que outras pessoas estão complicando demais o papel de uma máscara de sub-rede.

A máscara de sub-rede determina em quais outras máquinas em uma rede um host se comunicará. Se um host estiver fora da minha sub-rede, tentarei falar com essa máquina através do meu gateway. Se esse host estiver na minha sub-rede, falarei diretamente com esse host (nenhum gateway é necessário). Além disso, se uma máquina fora da sub-rede de um host tentar falar com ela, esses pacotes cairão em ouvidos surdos e serão descartados imediatamente.

Por que isso é relevante para você? Porque, se não usarmos máscaras de rede, tentar conversar com o servidor DNS do Google (8.8.8.8) exigiria que você (e TODOS os outros hosts que falassem com ele) conhecessem seu endereço físico (endereço MAC). Isso resultaria em seu computador e todos os outros que precisam criar uma entrada ARP para cada máquina de internet que você fala. Isso iria desperdiçar sua memória RAM e retardar toda a rede, já que o endereço físico das máquinas é passado muito mais do que o necessário.

    
por 24.03.2017 / 19:25