
Entendo como as máscaras de sub-rede são usadas para dividir uma rede em sub-redes, mas por que cada computador da rede precisa conhecer a máscara de sub-rede e não apenas o roteador?
Eu poderia entender se cada computador estivesse fisicamente conectado entre si por um fio, mas todos os pacotes precisariam passar pelo roteador de qualquer maneira.
Digamos que eu tenha um computador em rede 192.168.0.0/255.255.255.0
, que tenha o IP 192.168.0.1
.
Se esse computador tentar alcançar um computador fora da sub-rede, digamos 192.168.1.1
, ele transmite a mensagem para o roteador, o roteador identifica que o IP está fora do intervalo de IP da sub-rede e, em vez de transmiti-lo na sub-rede, rede, ele o transmite para a rede à qual está conectado (talvez outro roteador).
Responder1
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 roteador de múltiplas portas.Comutador Ethernet. (Aqui está um exemplodiagrama.)
Isto significa que os computadoressãoconectados diretamente na camada 2 e podem enviar pacotes entre sisempassando pelo núcleo do roteador – eles são simplesmente retransmitidos entre as portas pelo chip do switch. (O roteador possui sua própria “porta” no switch.)
Portanto, se você observar 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.
(Presumo que você esteja falando sobre os 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 umseparadoroteador com uma porta por sub-rede e alguns switches separados (talvez um mestre 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" foi substituído por "ponte sem fio", também conhecido como "ponto de acesso". Em ambos os casos, os computadores conectados podem enviar pacotes diretamente entre si na camada 2,sempassando pelo roteador.
Comentários:
Quando afirmei roteador, na verdade quis dizer switch. Meu erro. O que quero dizer é que cada computador em uma sub-rede não está conectado entre si, mas sim a um switch, que pode então repassar os pacotes para o destino correto. Um quadro Ethernet não contém a máscara de sub-rede, pois o switch já possui esse conhecimento e, portanto, não precisa dele para fazer a comutação correta.
Isso está novamente incorreto. Os switches não possuem esse conhecimento; seu núcleo de comutação funciona na camada 2 e não sabequalquer coisasobre IP – ele encaminha 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 peer estiver dentro da mesma sub-rede, presume-se que sejano linkpor definição – então o quadro Ethernet terá o MAC do par como destino.
Para colegasforaa sub-rede, o quadro Ethernet terá oentradasMAC como destino.
(Isso se aplica à configuração padrão. Algumas redes especiais em 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 switches podem ser configurados para respostas ARP falsas de tal forma que mesmo "on-link "o tráfego é forçado através do gateway.)
Responder2
Como um computador sabe se umendereço de destinoestá na mesma sub-rede em outra?
Verificando oendereço locale amáscara de sub-rede.
Vamos verificar alguns exemplos:
Se meu computador tiver o IP 192.168.0.1
e a máscara estiver, 255.0.0.0
significa que qualquer endereço de 192.0.0.0
para 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 depois envie o pacote.
Mas, se meu computador tiver o IP 192.168.0.1
e a máscara for 255.255.255.128
, os computadores na mesma sub-rede serão apenas do endereço 192.168.0.0
IP 192.168.0.127
. Eles podem ser contatados 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.
Responder3
Algo não óbvio sobre o IP é que todo dispositivo IPé em si um roteador.
Isso pode ser visto em um PC normal com o comando “route print”. Você está conectado a duas redes: seu segmento Ethernet ou wifi 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 uma “privada”. Agora você definitivamente precisa da máscara de sub-rede para decidir em qual rede enviar o pacote.
Muitas pessoas descobrirão acidentalmente que um PC com uma única conexão de rede pode funcionar com uma submáscara configurada incorretamente: acabam enviando tudo para o gateway.
Responder4
O TCP/IP poderia ter sido projetado como você sugere - os nós folha enviariam tudo para o roteador e ele encaminharia para o destino, que pode estar na mesma sub-rede que o remetente.
Mas este não seria um design ideal, por duas razões:
Utiliza 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. Em redes onde o roteador também é o switch de rede, na verdade não há largura de banda extra, já que ela passaria pelo switch de qualquer maneira. Mas nem todas as tecnologias de rede funcionam assim. O projeto original da Ethernet era uma tecnologia de barramento, sem switch central ou repetidor.
Isso coloca mais carga no roteador. Mesmo que o roteador também seja o switch, é um pouco mais trabalhoso porque ele passou para a implementação de roteamento da Camada 3, em vez da comutação mais simples da Camada 2.
Uma filosofia geral que incorpora o projeto do TCP/IP é que os nós finais são dispositivos inteligentes, portanto, presume-se que eles sejam capazes de realizar parte do trabalho. Eles não precisam conhecer a topologia completa da rede como os roteadores de backbone, mas sabem o suficiente sobre o ambiente local para realizar 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 mais máscaras de sub-rede são usados para determinar qual placa de rede usar. Se você executa máquinas virtuais, é provável que haja uma sub-rede virtual conectando-as ao sistema host.