Por que precisamos fornecer endereços IP para cada interface? Não basta dar um para cada dispositivo?
Por que precisamos fornecer endereços IP para cada interface? Não basta dar um para cada dispositivo?
Respostas:
Conectar uma interface a uma rede faz dela parte dessa rede. Portanto, o endereço IP é uma propriedade da conexão, não o host.
Da mesma forma, um host pode ter muitas conexões de rede e, consequentemente, endereços IP. As interfaces diferentes geralmente têm funções diferentes, por isso é importante distinguir entre elas (por exemplo, console interno, serviços públicos, iSCSI).
Os roteadores requerem vários endereços IP para suas interfaces.
Não.
Dito isto, vamos ver um exemplo simplificado:
Eu tenho um computador com três interfaces: eth0
(Ethernet com fio), wlan0
(wifi) e vboxnet0
(caixa virtual). Uma das interfaces está conectada a uma rede interna, uma está conectada à Internet e a última está conectada a uma rede de computadores virtuais. Digamos que eu tenho apenas um endereço, 10.1.2.3, e desejo enviar muitos pacotes para 192.168.1.2, alcançáveis em uma dessas redes - para onde os envio? Não é possível simplesmente enviá-los para todos os lugares, esse comportamento inundaria todas as redes em pouco tempo.
Mas se a interface eth0 tiver 192.168.1.3, wlan0 tiver 10.1.2.3 e vboxnet0 tiver 172.0.0.1, a tabela de roteamento padrão provavelmente dirá "envie eth0". (Isso obviamente pode ficar muito mais complicado com regras de roteamento mais complexas).
Por outro lado, talvez eu queira executar um serviço apenas na interface aberta à rede privada - portanto, quando uma solicitação chega em uma interface diferente, ela não é tratada de maneira alguma.
Caso 1: roteadores
Teoricamente, isso seria possível.
No entanto, normalmente um pacote IP é enviado "diretamente" para o destino quando o endereço IP "corresponde" a uma determinada máscara de rede (por exemplo, 10.0.0.0/28); caso contrário, o pacote será enviado por um roteador.
Isso significa:
Pacotes enviados de um computador para outro em uma das duas redes não passam por um roteador.
Isso significa que os endereços IP de cada computador correspondem à máscara de rede da rede à qual estão conectados.
Os pacotes enviados ao roteador (isso inclui os pacotes roteados pelo roteador!) Não são enviados de um computador para o roteador por meio de um segundo roteador.
Isso significa que o endereço IP do roteador deve corresponder às máscaras de rede de ambas as redes.
Os pacotes IP enviados de um computador em uma rede para um computador na outra rede são enviados pelo roteador.
Isso significa que os endereços IP dos computadores em uma rede não devem corresponder à máscara de rede da outra rede.
É quase impossível escolher um endereço IP e duas máscaras de rede, de forma que um endereço IP corresponda às duas máscaras de rede, mas muitos endereços IP correspondem apenas a uma máscara de rede.
Caso 2: Diferentes redes privadas
Poderíamos ter o caso de um computador estar conectado a duas redes privadas que não podem trocar dados entre si.
Nesse caso, um computador pode ter o mesmo endereço IP nas duas redes.
No caso do IPv4, a maioria dos sistemas operacionais não suporta isso porque os sistemas operacionais usam as máscaras de rede das duas redes para distinguir entre elas. As redes precisam ter máscaras de rede diferentes ...
No caso do IPv6 (usando endereços "link-local"), um computador pode ter o mesmo endereço IP (link-local) em duas redes diferentes - e, portanto, duas placas de rede podem ter o mesmo endereço IP!
Fiquei me perguntando, por que precisamos fornecer endereços IP para cada interface? Não daria para cada dispositivo o suficiente?
Deixe-me começar desafiando sua suposição. Por que você diz que não é assim que as máquinas se comportam? Digamos que eu atribua 192.168.1.1/24 a eth1 e 192.168.2.1/24 a eth2. Além de instalar uma rota para 192.168.1.0/24 de saída eth1 e 192.168.2.0/24 de saída eth2 e determinar o endereço IP de origem preferido para pacotes enviados ao longo dessa rota, quanto importa realmente a qual interface atribuo o endereço IP? O que realmente muda? Em que sentido a máquina não se comporta como se todos os endereços IP atribuídos às interfaces na máquina pertencessem à máquina?
Ambas as abordagens são usadas. A abordagem mais comum é na verdade um híbrido dessas duas abordagens.
No extremo "fornecer um endereço IP a um dispositivo", você pode imaginar um dispositivo que se comportasse como se todas as suas interfaces estivessem conectadas a uma ponte de filtragem com um endereço IP atribuído à ponte.
No extremo "dê a cada interface um endereço IP", você pode imaginar um dispositivo que se comportasse como se cada interface tivesse uma máquina separada. (Veja aqui se você acha que é assim que os dispositivos funcionam atualmente ou pensa em alguém que se conecta a um endereço IP atribuído a uma interface, mas os pacotes chegam e são enviados por outro.)
Na prática, a maioria das máquinas opera em algum lugar intermediário. Eles agem como se todos os endereços IP pertencessem à máquina. A atribuição de um IP a um dispositivo específico não faz muito mais do que dizer ao sistema operacional para instalar uma rota padrão nessa interface e definir o endereço IP de origem padrão para pacotes enviados nessa interface em que o endereço IP de origem não é ' forçado.
Caso contrário, eles se comportam como se todos os endereços IP pertencessem à máquina. A maneira como um pacote é processado não depende muito da interface em que é recebido - os pacotes com um endereço IP de origem atribuído a uma interface recebida em outra são rotineiros. A qual interface um endereço está atribuído não tem efeito direto em qual interface um pacote é enviado, a tabela de roteamento determina isso.
Um dispositivo que possui um endereço IP existe dentro de uma rede.
Um roteador é um dispositivo cujo objetivo principal é transmitir tráfego entre redes .
Para que um roteador passe pacotes entre duas redes, ele deve existir nas duas redes.
O roteador terá um "braço" dentro de cada rede - ou como chamamos, uma interface . E a maneira como uma interface existe em uma rede é atribuindo a ela um endereço IP na rede.
Assim, ao configurar um roteador, cada interface de receber um endereço IP para identificar as redes que que Router pertence dentro .
Disclaimer: O link acima é para o meu blog. Meu blog não é monetizado. Não tenho lucro com você lendo. Estou fornecendo um link simplesmente para seu benefício (e de qualquer outro leitor).
No caso geral, você precisa de um IP por rede local à qual se conectar, e é assim que o TCP / IP foi definido: cada host em uma determinada rede local possui um endereço IP, o que permite:
Desde que você tenha redes locais com vários dispositivos conectados a ele (a maioria das redes locais 802.x, incluindo Ethernet, Wi-Fi), é muito difícil contornar isso, a menos que você altere fundamentalmente a maneira como o TCP / IP funciona.
No entanto, é realmente possível evitar isso, embora seja bastante específico.
Considere uma rede que possua apenas links ponto a ponto (Ethernet ponto a ponto entre dois dispositivos sem um comutador ou hub, links DSL, links SONET / SDH, Frame Relay ou ATM VCs ...).
A convenção usual é usar um / 30 para cada link, para que o dispositivo em cada extremidade tenha um endereço IP nesse link.
Mas você pode usar "IP não numerado" e não associar nenhum endereço IP a esses links. Agora, você atribui um IP à interface de loopback do dispositivo (qualquer interface realmente, mas a loopback é a mais fácil para essa finalidade) e usa um protocolo de roteamento dinâmico (IS-IS, OSPF, EIGRP ...). Esse protocolo de roteamento anunciará como rotear o tráfego para esse endereço IP através dos vários links não numerados.
Os endereços IP incluem informações de roteamento. Um endereço IP é dividido em dois componentes, o número da rede e o número do host , com base no tamanho do prefixo atribuído (que foi originalmente expresso como uma máscara de rede, e ainda é assim que é implementado internamente nas pilhas de rede).
Para que o roteamento funcione corretamente, todos os dispositivos conectados a uma rede específica devem ter endereços com o mesmo número de rede. Os remetentes determinam se o destinatário está na mesma rede ou em uma rede diferente comparando seu próprio número de rede com o endereço do destinatário. Se estiverem na mesma rede, eles enviarão diretamente; caso contrário, eles enviam para um roteador cujo trabalho é aproximar a mensagem do destino.
Portanto, se um dispositivo estiver conectado a várias redes, ele precisará de um endereço em cada uma dessas redes para que possa ser acessado pelos dispositivos dessa rede.
Dito isto, não é realmente necessário que os endereços sejam atribuídos especificamente a interfaces de rede específicas. O dispositivo pode ter apenas uma lista de todos os IPs que possui em uma única tabela. Mas as interfaces ainda precisam de informações sobre a qual rede elas estão conectadas. Ao atribuir um IP e uma máscara de rede a cada interface, colocamos essas informações em um único local, simplificando o design. Não há necessidade de código extra para manter a lista de IPs consistente com a lista de redes às quais as interfaces estão conectadas.
Pode ser suficiente ter um IP no caso padrão, mas, como destacado por outras respostas, há muitos casos em que não é.
Outras respostas já mencionaram o caso de um roteador. Um deles menciona o virtualbox, que é o caso das máquinas virtuais: você pode estar executando em um único dispositivo físico vários dispositivos virtuais. Outro caso são as VLANs, na verdade você pode estar conectado a uma única placa de rede, várias LANs virtuais diferentes, com endereços IP diferentes. E, por alguns motivos, você pode ter uma interface com vários IPs, por exemplo, porque deseja executar vários servidores Web na porta TCP 80. Essa configuração não é incomum para servidores, o hardware que você aluga pode ter uma única placa de interface de rede , mas você terá vários endereços IP configurados.