Entendo como as máscaras de sub-rede são usadas para dividir uma rede em sub-redes, mas, por que todos os computadores na rede precisam conhecer a máscara de sub-rede e não apenas o roteador?
Eu poderia entender, se cada computador estivesse fisicamente conectado um ao outro por um fio, mas todos os pacotes precisariam passar pelo roteador de qualquer maneira.
Digamos que eu tenho um computador em uma rede 192.168.0.0/255.255.255.0
, que tenha o IP 192.168.0.1
.
Se esse computador tentar acessar um computador fora da sub-rede, digamos 192.168.1.1
, transmitir a mensagem ao roteador, o roteador identificará que o IP está fora do intervalo de IP da sub-rede e, em vez de transmiti-lo na sub-rede transmite à rede à qual está conectado (talvez outro roteador).
if each computer were physically connected to each other with a wire
- você deve se lembrar que o TCP / IP foi inventado em um momento em que esse é realmente o caso. Google10-base-2
. Existem outros protocolos que funcionam de forma diferente do TCP / IP, mas nos últimos 20 anos o IPv4 venceu a batalha do protocolo.Respostas:
Suas suposições originais não estão totalmente corretas. O que você chama de "roteador" são dois dispositivos em um - um roteador de duas portas conectado internamente a um switch Ethernet de várias portas . (Aqui está um diagrama de exemplo ).
Isso significa que os computadores estão conectados diretamente na camada 2 e podem enviar pacotes um ao outro sem passar pelo núcleo do roteador - eles são simplesmente retransmitidos entre as portas pelo chip do switch. (O roteador tem sua própria "porta" no comutador.)
Portanto, se você observar os pacotes usando o Wireshark, verá que eles usam diretamente os endereços MAC um do outro, enquanto os pacotes "externos" sempre têm o MAC do roteador como destino.
(Suponho que você esteja falando dos típicos "roteadores sem fio" encontrados na maioria das residências, que são a causa comum desse tipo de pergunta. Uma rede maior teria um roteador separado com uma porta por sub-rede e alguns comutadores separados (talvez um mestre mais um por andar / sala) e várias dezenas de computadores conectados a esses comutadores.)
É praticamente o mesmo com as redes Wi-Fi, exceto que "switch" é substituído por "wireless bridge", também conhecido como "access point". Nos dois casos, os computadores conectados podem enviar pacotes diretamente um para o outro na camada 2, sem passar pelo roteador.
Comentários:
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 IP - ele encaminha os quadros Ethernet puramente com base 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 par estiver na mesma sub-rede, presume-se que ele esteja no link por definição - para que o quadro Ethernet tenha o MAC do 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 "on-link" extras para sub-redes adicionais; por outro lado, alguns comutadores podem ser configurados como respostas ARP falsas, de modo que mesmo "on-link" "o tráfego é forçado através do gateway.)
fonte
Como um computador sabe se um endereço de destino está na mesma sub-rede ou em outro?
Verificando o endereço local e a máscara de sub-rede .
Vamos verificar alguns exemplos:
Se o meu computador tiver o IP
192.168.0.1
e a máscara255.0.0.0
, significa que qualquer endereço de192.0.0.0
para192.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, em seguida, envie o pacote.Mas, se o meu computador tem o IP
192.168.0.1
ea máscara é255.255.255.128
, em seguida, os computadores na mesma sub-rede são de adddress IP192.168.0.0
a192.168.0.127
única. Eles podem ser acessados diretamente (envie ARP, encontre o endereço MAC, etc.). Qualquer outro endereço, por exemplo,192.168.0.200
deve ser alcançado passando pelo roteador.fonte
Algo não óbvio sobre IP é que todo dispositivo IP é um roteador .
Isso pode ser visto em um PC normal com o comando "route print". Você está conectado a duas redes: o segmento Ethernet ou wifi local e a rede localhost. Todo pacote precisa estar sujeito a uma decisão sobre em qual rede colocá-lo.
Isso se torna mais aparente se você colocar o computador em duas redes, por exemplo, "pública" e "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 uma sub-máscara configurada incorretamente: eles acabam enviando tudo para o gateway.
fonte
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 em qual interface física enviar tráfego IP com base 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 enviá-lo (se você não configurou uma rota explicitamente), o computador poderá verificar as interfaces para ver se subnet_mask & destination_ip == subnet_mask & interface_ip (
&
quero dizer bit a bit e e==
quero afirmar a igualdade), e se houver uma correspondência, escolha essa interface.Dessa forma, se você tem, por exemplo:
E você envia um pacote para 192.168.2.123 e não possui 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 e 192.168.2.97 .
Isso não seria possível se a máscara de sub-rede não fosse conhecida e, portanto, seria necessário configurar uma rota para cada endereço IP para o qual você enviou dados.
fonte
O TCP / IP poderia ter sido projetado como você sugere - os nós folha enviariam tudo para o roteador e o encaminhavam para o destino, que pode estar na mesma sub-rede que o remetente.
Mas esse não seria o design ideal, por dois motivos:
Ele usa mais largura de banda: todos os pacotes entre dispositivos na mesma sub-rede devem ser transmitidos duas vezes: uma vez do remetente para o roteador e outra vez do roteador para o receptor. Nas redes em que o roteador também é o comutador de rede, na verdade não há largura de banda extra, pois ele passaria pelo comutador de qualquer maneira. Mas nem todas as tecnologias de rede funcionam assim. O design original da Ethernet era uma tecnologia de barramento, sem comutador ou repetidor central.
Coloca mais carga no roteador. Mesmo que o roteador também seja o comutador, é um pouco mais trabalhoso, porque foi implementado no roteamento da Camada 3, em vez da comutação mais simples da Camada 2.
Uma filosofia geral que incorpora o design do TCP / IP é que os nós finais são dispositivos inteligentes e, portanto, supõe-se que eles possam executar parte do trabalho. Eles não precisam conhecer a topologia de rede completa, como os roteadores de backbone, mas sabem o suficiente sobre o ambiente local para executar algumas das tarefas iniciais de roteamento local versus remoto. Não é preciso muito código para implementar esse roteamento inicial simples.
Além disso, os dispositivos que não sã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 possuem Ethernet e WiFi. E cada um deles pode ser conectado 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.
fonte
Se olharmos para uma tabela de roteamento (essa é a minha máquina desktop):
rota ip
rota
Qualquer visualização transmite a mesma informação. As máscaras de sub-rede indicam quais hosts estão diretamente acessíveis nessa rede e outros hosts são encontrados usando um gateway. Em particular, precisamos saber que o gateway é acessível, caso contrário, não poderíamos enviar pacotes para o encaminhamento.
Você poderia, em princípio, enviar tudo via seu host de gateway. Isso pareceria
ou
Eu não tentei isso, mas pode ser usado para encaminhamento forçado por MAC .
fonte
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 um roteador. Para deixar claro que não são apenas roteadores, esses dispositivos podem executar o NAPT (que não é roteamento) e possuem um switch integrado (um switch faz a ponte, o que não está roteando) - distinções entre um switch e uma ponte não são tão bem definidos - pode-se dizer que uma ponte geralmente possui 2 portas e conecta diferentes meios de rede (por exemplo, ethernet e não ethernet), enquanto um switch tem várias portas e o mesmo meio de rede). Um switch faz uma ponte.
Se o switch fosse separado do "roteador", seria mais claro. Quando o endereço IP estiver na mesma rede, o pacote
será direcionado paradesce o cabo até o próximo ponto fisicamente, que é o comutador e, em última análise, é destinado a outro computador na rede (a menos que fosse um comutador gerenciado e você estivesse se conectando ao comutador, por exemplo, telnet ou http e o comutador tivesse seu próprio IP ) e, como o pacote não é destinado a outra rede, ele não alcançará o roteador. Quando é destinado a um computador em uma rede diferente, é claro que ainda vai para o switch, mas continua depois para o roteador (o switch direcionou o pacote para o roteador e o endereço MAC de destino do pacote que chega ao o switch seria o endereço MAC do roteador) e a rota o encaminharia para a interface correta do roteador.Com essas coisas normalmente chamadas de roteadores, que possuem comutadores dentro deles (como não os roteadores Cisco / Juniper de estilo profissional), o comutador fica dentro. Mas esse é apenas o local do comutador. Ainda é quando o IP está ativado Na mesma rede, o pacote é endereçado ao switch e não ao roteador. E vai apenas para o switch dentro do roteador e não chega ao roteador.
o que você quer dizer aqui .. Se todos os computadores em uma rede inteira estivessem fisicamente conectados com um fio, acho que você não precisaria de um switch ou roteador. O que você está descrevendo parece um pouco com a Ethernet original ... e se todos estiverem conectados com um fio, provavelmente não seria uma rede tão grande. De qualquer forma, não será um fio como você está acostumado. Teria computadores conectados ao longo do caminho com "torneiras". Então eu não sei por que você acabou de lançar essa frase.
então você quer deixar de lado a idéia de todos os computadores conectados a um fio sem roteador.
E não, mesmo em sua casa, eles não passam pelo roteador toda vez. Mesmo com o seu "roteador doméstico", chame-o de uma caixa de internet. Eles vão para o interruptor nele.
para o switch, em seguida, a partir do switch que vai para o roteador
bem, o roteador identifica para qual interface de rede é. Ele envia de uma interface para outra interface. Uma distinção - além de qual interface, seria se uma rede está diretamente conectada ou não. Poderia enviar para um switch e depois para um computador. Ou poderia enviar para um computador. Ou, se a rede não estiver conectada diretamente, ela será direcionada para outro roteador.
e sua última frase foi
e então o que, você de repente decidiu parar de escrever?bem, eu não colocaria assim. Cada interface no roteador tem um intervalo de IP diferente.
Mas, com o seu roteador consumidor ou roteador doméstico, o que acontece é que é como um roteador com duas interfaces, uma do seu lado possui um switch conectado a ele. E as várias portas são portas do switch.
Portanto, se você pensa em termos de parte do roteador, não é como se isto estivesse dentro da sub-rede e fora, porque há potencialmente muitas redes. Há um em cada interface. E o roteador não o estará transmitindo de volta para a mesma rede de onde veio. A razão pela qual alcançou o roteador em primeiro lugar é justamente porque o switch (que alcançou primeiro) viu o endereço MAC e, portanto, viu que esse 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 ao qual está destinado (ou seja, se o computador estiver na mesma rede). Ou (se o computador estiver em outra interface do roteador), será o endereço MAC do roteador. Eu acho que isso pode responder diretamente ao título da sua pergunta, 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.
fonte
O computador / dispositivo faz usar a máscara de sub-rede, a fim de calcular o endereço de broadcast IP.
As interfaces IP que não estão no modo promíscuo são configuradas para responder ao endereço de broadcast IP e ao seu próprio endereço IP.
fonte
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 com que outras máquinas em uma rede um host se comunicará. Se um host estiver fora da minha sub-rede, tentarei conversar com essa máquina através do meu gateway. Se esse host estiver dentro da minha sub-rede, falarei com ele diretamente (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 surdos e serão descartados imediatamente.
Por que isso é relevante para você? Como se não usássemos máscaras de rede, você tentaria falar com o servidor DNS do Google (8.8.8.8) exigiria que você (e TODOS os outros hosts que conversam com ele) soubessem seu endereço físico (endereço MAC). Isso resultaria no seu computador e em todos os outros que precisariam criar uma entrada ARP para todas as máquinas da Internet com as quais você fala. Isso desperdiçaria sua RAM e reduziria a velocidade de todas as redes, pois o endereço físico das máquinas é transmitido muito além do necessário.
fonte