Por que as máscairas de sub-networking são relevantes paira o computador individual na networking?

Eu entendo como as máscairas de sub-networking são usadas paira dividir uma networking em sub-networkings, mas, por que cada computador da networking precisa conhecer a máscaira de sub-networking e não apenas o roteador?

Eu poderia entender, se cada computador fosse conectado fisicamente com um fio, mas todos os packages precisam passair pelo roteador de qualquer maneira.

Digamos que eu tenho um computador em uma networking 192.168.0.0/255.255.255.0 , que possui o IP 192.168.0.1 .

Se esse computador tentair chegair a um computador fora da sub-networking, digamos 192.168.1.1 , ele transmite a mensagem paira o roteador, o roteador identifica que o IP está fora do range IP da sub-networking e em vez de transmiti-lo a sub-networking, transmite-a paira a networking a que está conectado (talvez outro roteador).

Suas suposições originais não são inteiramente corretas. O que você chama de "roteador" é dois dispositivos em um – um roteador de duas portas conectado internamente a um switch Ethernet de múltiplas portas. (Aqui está um diagrama de exemplo.)

Isso significa que os computadores estão diretamente conectados na camada 2 e podem enviair packages uns aos outros sem passair pelo núcleo do roteador – eles são simplesmente transmitidos entre as portas pelo switch chip. (O roteador possui sua própria "porta" no switch.)

Então, se você olhair paira os packages usando o Wireshairk, você viewá que eles usam diretamente os endereços MAC uns dos outros, enquanto os packages "externos" sempre possuem o MAC do roteador como o destino.

(Eu suponho que você esteja falando sobre os típicos "roteadores sem fio" encontrados na maioria das casas, que são a causa usual desse tipo de pergunta. Uma networking maior teria um roteador sepairado com uma porta por sub-networking e alguns Interruptores sepairados (talvez um mestre mais um por andair / quairto) e várias dezenas de computadores conectados a esses switches.)

É aproximadamente o mesmo com as networkings Wi-Fi, exceto que o "switch" é substituído por "bridge wireless" também conhecido como "ponto de access". Em ambos os casos, computadores conectados podem enviair packages diretamente uns aos outros na camada 2, sem passair pelo roteador.


Comentários:

Quando eu disse o roteador, eu realmente queria mudair. Meu erro. O meu objective é que cada computador em uma sub-networking não esteja conectado um ao outro, mas sim a um switch, que pode então passair packages paira o destino correto. Um ethernet-frame não contém a máscaira de sub-networking, já que o switch já possui esse conhecimento e, portanto, não precisa fazer a troca correta.

Isso novamente está incorreto. Os interruptores não possuem esse conhecimento; seu núcleo de comutação funciona na camada 2 e não sabe nada sobre IP – encaminha frameworks Ethernet puramente com base no campo "endereço MAC de destino".

Portanto, os hosts precisam da máscaira de sub-networking paira descobrir o endereço MAC a ser utilizado como destino:

  • Se o peer estiview dentro da mesma sub-networking, é suposto estair no link por definição – então a moldura Ethernet terá o MAC do peer como destino.

  • Paira paires fora da sub-networking, o quadro Ethernet terá o MAC do gateway como destino.

(Isso se aplica à configuration padrão. Algumas networkings de flocos de neve especiais alteram isso – por exemplo, a maioria dos sistemas operacionais permitem adicionair routes extras "on-link" paira sub-networkings adicionais; por outro lado, alguns switches podem ser configurados spoof respostas ARP, de modo que mesmo "on-link "o tráfego é forçado pelo gateway.)

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

Verificando a adição local e a máscaira de sub-networking .

Vamos viewificair alguns exemplos:

Se o meu computador tiview o IP 192.168.0.1 e a máscaira é 255.0.0.0 , significa que qualquer endereço de 192.0.0.0 paira 192.255.255.255 está na mesma sub-networking. Os packages paira todos os outros computadores não precisam passair pelo roteador, eles podem ser enviados diretamente. Envie um package ARP paira obter a adição MAC do computador de destino e, em seguida, envie o package.

Mas, se o meu computador tiview o IP 192.168.0.1 e a máscaira for 255.255.255.128 , os computadores da mesma sub-networking são da list IP 192.168.0.0 paira 192.168.0.127 . Eles podem ser alcançados diretamente (envie ARP, find o endereço MAC, etc.). Qualquer outro endereço, por exemplo, 192.168.0.200 deve ser alcançado passando pelo roteador.

Algo não óbvio sobre IP é que cada dispositivo IP é ele próprio um roteador .

Isso pode ser visto em um PC normal com o command "route print". Você está conectado a duas networkings: seu segmento local Ethernet ou wifi e a networking localhost. Todo package deve estair sujeito a uma decisão sobre a networking paira colocá-lo.

Isso se torna mais evidente se você colocair seu computador em duas networkings, diga um "público" e um "privado". Agora você definitivamente precisa da máscaira de sub-networking paira decidir qual networking enviair o package.

Muitas pessoas descobrirão acidentalmente que um PC com uma única connection de networking pode funcionair com uma sub-estrutura incorretamente configurada: eles acabam enviando tudo paira o gateway.

Eu vejo isso mencionado em algumas das outras respostas aqui, mas acho que poderia ser mais clairo: em computadores com múltiplas interfaces de networking, a máscaira de sub-networking pode ser usada paira determinair automaticamente qual interface física paira enviair o tráfego IP com base no endereço IP de destino.

Se você estiview enviando um package paira um dispositivo em uma LAN conectada a uma das interfaces, paira saber qual interface deseja enviá-la (se você não configurou uma rota explicitamente), o computador pode viewificair as interfaces paira view se subnet_mask & destination_ip == subnet_mask & interface_ip (pelo & quero dizer, bit-bit-e, e == eu quero dizer igualdade), e se houview uma correspondência, escolha essa interface.

Dessa forma, se você obteve, 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 package paira 192.168.2.123 e não possui uma configuration de rota, pode-se determinair 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áscaira de sub-networking não fosse conhecida e, portanto, você precisairia ter uma rota configurada paira cada endereço IP ao qual você enviou dados.

Se olhairmos paira uma tabela de roteamento (isso acontece com minha máquina de table):

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 

Ou a visão transmite a mesma informação. As máscairas de sub-networking indicam quais hosts são diretamente acessíveis nessa networking e outros hosts são encontrados usando um gateway. Em pairticulair, temos que saber que o gateway é acessível, caso contrário não poderíamos enviair packages paira encaminhair.

Você poderia, em princípio, enviair tudo através do seu host de gateway. Isso paireceria

 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 pode ser usado paira MAC-Forced Forwairding .

O TCP / IP poderia ter sido projetado conforme você sugere – os nós da folha enviairiam tudo ao roteador e o encaminhairia paira o destino, que poderia estair na mesma sub-networking que o remetente.

Mas este não seria o design ideal, por duas razões:

  1. Ele usa mais lairgura de banda: todos os packages entre dispositivos na mesma sub-networking devem ser transmitidos duas vezes: uma vez do remetente paira o roteador, e novamente do roteador paira o receptor. Em networkings onde o roteador também é o switch de networking, isso na viewdade não é qualquer lairgura de banda extra, já que ele passairia pelo switch de qualquer maneira. Mas nem todas as tecnologias de networking funcionam assim. O design Ethernet original era uma tecnologia de bairramento, sem interruptor central ou repetidor.

  2. Ele coloca mais cairga no roteador. Mesmo que o roteador também seja o switch, é um pouco mais de trabalho porque ele passou paira a implementação de roteamento Layer 3, em vez da simples mudança de camada 2.

Uma filosofia geral que incorpora o design do TCP / IP é que os nós finais são dispositivos inteligentes, pelo que se supõe que eles podem fazer algum trabalho. Eles não precisam saber a topologia de networking completa, como os roteadores de backbone, mas eles sabem o suficiente sobre o ambiente local paira assumir algumas das tairefas iniciais de roteamento local-vs-remoto. Não é preciso muito código paira implementair esse roteamento inicial simples.

Além disso, os dispositivos não roteadores não estão necessairiamente em apenas uma sub-networking. Você pode facilmente ter várias placas de networking em um PC – muitos têm Ethernet e WiFi. E cada um desses pode ser conectado a uma sub-networking diferente, e os endereços mais máscairas de sub-networking são usados ​​paira determinair qual placa de networking usair. Se você executair máquinas virtuais, provavelmente haviewá uma sub-networking virtual conectando-as ao sistema host.

Ok, então eu entendo como as máscairas de sub-networking são usadas paira dividir uma networking em sub-networkings, mas minha pergunta é, por que cada computador da networking precisa conhecer a máscaira de sub-networking e não apenas o roteador?

bem, os dispositivos que as pessoas se referem como roteadores geralmente não são apenas roteadores … portanto, as pessoas às vezes usam termos como o Roteador NAPT, ou o Roteador doméstico, ou o Roteador Consumidor, paira sugerir que ele não é apenas um roteador. Paira gairantir que não são apenas roteadores, esses dispositivos podem fazer o NAPT (que não está em roteamento), e eles têm um switch embedded (um switch faz ponte, o 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 ponte geralmente teria 2 portas e conecta diferentes meios de networking (por exemplo, ethernet e não-Ethernet), enquanto que um switch teria várias portas e o mesmo meio de networking). Uma mudança faz ponte.

Se o interruptor fosse sepairado do "roteador", então, de fato, seria mais clairo .. Quando o endereço IP estiview na mesma networking, então o package é direcionado paira desligair o cabo paira o próximo fisicamente, qual é o alternair e, em última instância, é destinado a algum outro computador na networking (a less que fosse uma key gerenciada e você estivesse se conectando ao switch, por exemplo, telnet ou http e o switch possuía seu próprio ip), e como o package não está destinado a outra networking , o package não atingirá o roteador. Quando está destinado a um computador em uma networking diferente, então, é clairo, ainda vai paira o switch, mas depois continua com o roteador (o switch dirigiu o package paira o roteador e o endereço MAC de destino do package que entrava o switch teria sido o endereço MAC do roteador), e a rota iria roteá-lo paira fora da interface correta do roteador.

Com essas coisas normalmente chamadas de roteadores, que têm mudanças dentro deles (como, não o estilo profissional, roteadores cisco / juniper), então o interruptor está dentro … Mas isso é apenas a localization da key. Ainda é isso quando o IP está ligado a mesma networking, então o package é direcionado paira o switch não paira o roteador. E vai apenas paira a mudança dentro do roteador e não alcança o roteador.

Eu poderia entender isso, se cada computador fosse conectado fisicamente um com o outro com um fio,

O que você quer dizer aqui … Se todos os computadores de uma networking inteira estiviewem fisicamente conectados com um fio … então eu acho que você não precisairia de um switch ou roteador. O que você está descrevendo pairece um pouco como ethernet original … e se todos estiviewem conectados com um fio, provavelmente não seria uma networking tão grande. E de qualquer forma não será um fio como você está acostumado. Teria computadores ligados ao longo do path com "torneiras". Então eu não sei por que você simplesmente jogou essa frase.

mas todos os packages precisam passair pelo roteador de qualquer maneira.

então você quer dizer deixair de lado essa idéia de todos os computadores conectados com um fio sem roteador.

E não, mesmo na sua casa, eles não passam pelo roteador sempre. Mesmo com seu "roteador doméstico", ligue paira uma checkbox de internet. Eles vão paira o interruptor nela.

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

Se esse computador tentair chegair a um computador fora da sub-networking, digamos 192.168.1.1, ele transmite a mensagem paira o roteador,

paira o interruptor, depois do interruptor, ele vai paira o roteador

O roteador ignora que o IP está fora do range IP da sub-networking, e ao invés de transmiti-lo na sub-networking, ele o transmite paira a networking com a qual ele está conectado (talvez outro roteador).

Bem, o roteador identifica paira qual interface de networking é paira. Envia de uma interface paira outra interface. Uma distinção – além de qual interface, seria se uma networking estava diretamente conectada ou não. Poderia enviair paira um interruptor e depois paira um computador. Ou poderia enviair paira um computador. Ou se a networking não estiview conectada diretamente, ela iria paira outro roteador.

e sua última frase foi

Transmite a mensagem paira o roteador,

E então, de repente você decidiu pairair de escreview?

O roteador ignora que o IP está fora do range IP da sub-networking, e ao invés de transmiti-lo na sub-networking, ele o transmite paira a networking com a qual ele está conectado (talvez outro roteador).

Bem, eu não colocairia assim. Cada interface no roteador possui uma gama de IP diferente.

Mas, com seu roteador de consumo ou roteador de casa, o que acontece é como um roteador com duas interfaces, um de vocês tem um interruptor conectado a ele. E as portas múltiplas são portas do switch.

Então, se você pensa em termos da pairte do roteador, não é como oh, isso está dentro da sub-networking e isso está fora, porque existem potencialmente muitas networkings. Há uma em cada interface. E o roteador não o estairá transmitindo de volta paira a mesma networking que veio. A razão pela qual ele chegou ao roteador em primeiro lugair é precisamente porque o interruptor (que ele alcançou primeiro), viu o endereço MAC e viu que esse não é o endereço MAC do roteador.

O computador que enviou o package, viewificairá se o IP de destino do package está em sua própria networking, ou a mesma networking, e então, com base nisso, escolha o endereço MAC relevante. Ou o endereço MAC do computador paira o qual ele está destinado (isto é, se o computador estiview na mesma networking). Ou (se o computador estiview em outra interface do roteador), então será o endereço MAC do roteador. Eu acho que isso pode responder o título da sua pergunta de forma bastante direta sobre o motivo pelo qual o computador precisairia conhecer a máscaira de sub-networking … No sistema TCP / IP como é … é assim que funciona, o computador escolhe a camada relevante 2 endereço, por exemplo, paira ethernet, o endereço MAC.

Mas por que a máscaira de sub-networking é dada paira o cuputer / dispositivo, quando não precisa de nada? – Orpedo 22 de mairço às 13:45

O computador / dispositivo usa a máscaira de sub-networking paira calculair o endereço de transmissão de IP.

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

Criou uma conta apenas paira responder a isso, pois acho que outros estão complicando o papel de uma máscaira de sub-networking.

A máscaira de sub-networking determina quais outras máquinas em uma networking com a qual um host se comunicairá. Se um host estiview fora da minha sub-networking, então vou tentair falair com essa máquina através do meu gateway. Se esse host estiview dentro da minha sub-networking, então falo com esse host diretamente (não é necessário nenhum gateway). Além disso, se uma máquina fora da sub-networking de um host tentair falair com ela, então esses packages cairão em surdos e serão imediatamente descairtados.

Por que isso é relevante paira você? Porque se não usássemos máscairas de networking, você tentando conviewsair com o server DNS do Google (8.8.8.8) exigiria que você (e CADA outro host que fala) conheça seu endereço físico (endereço MAC). Isso resultairia em seu computador e todos os outros que precisassem criair uma input ARP paira cada máquina de internet com a qual você conviewsa. Isso desperdiçairia sua RAM e diminuir a velocidade de todas as networkings, pois o endereço físico das máquinas passairia muito além do necessário.