Perché è necessario fornire indirizzi IP a ciascuna interfaccia? Dare uno a ciascun dispositivo non sarebbe sufficiente?
Perché è necessario fornire indirizzi IP a ciascuna interfaccia? Dare uno a ciascun dispositivo non sarebbe sufficiente?
Risposte:
La connessione di un'interfaccia a una rete ne fa parte. Pertanto, l'indirizzo IP è una proprietà della connessione, non l'host.
Allo stesso modo, un host può avere molte connessioni di rete e, di conseguenza, indirizzi IP. Interfacce diverse hanno spesso funzioni diverse, quindi è importante distinguerle (ad esempio console interna, servizi pubblici, iSCSI).
I router richiedono più indirizzi IP per le loro interfacce.
No.
Detto questo, vediamo un esempio semplificato:
Ho un computer con tre interfacce: eth0
(Ethernet cablata), wlan0
(wifi) e vboxnet0
(virtualbox). Una delle interfacce è connessa a una rete interna, una è connessa a Internet e l'ultima è connessa a una rete di computer virtuali. Diciamo che ho un solo indirizzo, 10.1.2.3, e desidero inviare un sacco di pacchetti a 192.168.1.2, raggiungibili su una di quelle reti - dove li mando? Non posso semplicemente inviarli ovunque, un tale comportamento inonderebbe tutte le reti in breve tempo.
Ma se l'interfaccia eth0 ha 192.168.1.3, wlan0 ha 10.1.2.3 e vboxnet0 ha 172.0.0.1, probabilmente la tabella di routing predefinita dirà "invia eth0". (Questo può ovviamente diventare molto più complicato con regole di routing più complesse).
E viceversa, potrei voler eseguire un servizio solo sull'interfaccia aperta alla rete privata, quindi quando una richiesta arriva su un'interfaccia diversa, non viene gestita affatto.
Caso 1: router
Teoricamente questo sarebbe possibile.
Tuttavia, normalmente un pacchetto IP viene inviato "direttamente" alla destinazione quando l'indirizzo IP "corrisponde" a una determinata maschera di rete (ad es. 10.0.0.0/28); in caso contrario il pacchetto viene inviato su un router.
Questo significa:
I pacchetti inviati da un computer a un altro all'interno di una delle due reti non passano un router.
Ciò significa che gli indirizzi IP di ciascun computer corrispondono alla maschera di rete della rete a cui sono collegati.
I pacchetti inviati al router (inclusi i pacchetti indirizzati dal router!) Non vengono inviati da un computer al router tramite un secondo router.
Ciò significa che l'indirizzo IP del router deve corrispondere alle maschere di rete di entrambe le reti.
I pacchetti IP inviati da un computer in una rete a un computer nell'altra rete vengono tuttavia inviati tramite il router.
Ciò significa che gli indirizzi IP dei computer in una rete non devono corrispondere alla maschera di rete dell'altra rete.
È quasi impossibile scegliere un indirizzo IP e due maschere di rete in modo che un indirizzo IP corrisponda a entrambe le maschere di rete, ma molti indirizzi IP corrispondono solo a una maschera di rete.
Caso 2: diverse reti private
Potremmo avere il caso che un computer sia collegato a due reti private che non possono scambiare dati tra loro.
In questo caso un computer può avere lo stesso indirizzo IP in entrambe le reti.
Nel caso di IPv4, la maggior parte dei sistemi operativi non lo supporta perché i sistemi operativi utilizzano le maschere di rete delle due reti per distinguerle. Le reti devono avere diverse maschere di rete ...
Nel caso di IPv6 (utilizzando indirizzi "link-local") un computer può avere lo stesso indirizzo IP (link-local) in due reti diverse - e quindi due schede di rete possono avere lo stesso indirizzo IP!
Un dispositivo con un indirizzo IP esiste all'interno di una rete.
Un router è un dispositivo il cui scopo principale è passare il traffico tra le reti .
Perché un router passi i pacchetti tra due reti, deve esistere all'interno di entrambe le reti.
Il router avrà un "braccio" all'interno di ogni rete - o come lo chiamiamo, un'interfaccia . E il modo in cui esiste un'interfaccia all'interno di una rete è assegnandogli un indirizzo IP all'interno della rete.
Quindi, quando si configura un router, ciascuna interfaccia riceve un indirizzo IP per identificare le reti che appartiene che il Router all'interno .
Disclaimer: il link sopra è al mio blog. Il mio blog non è monetizzato. Non traggo profitto da te leggendolo. Sto fornendo un link semplicemente per il tuo (e per qualsiasi altro lettore) beneficio.
Mi chiedevo, perché dobbiamo fornire indirizzi IP a ciascuna interfaccia? Non darebbe abbastanza per ogni dispositivo?
Vorrei iniziare sfidando la tua ipotesi. Perché dici che questo non è come si comportano le macchine? Supponiamo di assegnare 192.168.1.1/24 a eth1 e 192.168.2.1/24 a eth2. A parte l'installazione di una route per 192.168.1.0/24 su eth1 e 192.168.2.0/24 su eth2 e la determinazione dell'indirizzo IP di origine preferito per i pacchetti inviati lungo quella route, quanto conta davvero a quale interfaccia assegnerò l'indirizzo IP? Cosa cambia davvero? In che senso la macchina non si comporta come se tutti gli indirizzi IP assegnati alle interfacce sulla macchina appartenessero alla macchina?
Vengono utilizzati entrambi gli approcci. L'approccio più comune è in realtà un ibrido di questi due approcci.
Sull'estremo "Dai a un dispositivo un indirizzo IP", potresti immaginare un dispositivo che si comportava come se tutte le sue interfacce fossero collegate a un bridge di filtraggio con un indirizzo IP assegnato al bridge.
Sull'estremo "dai a ciascuna interfaccia un indirizzo IP", puoi immaginare un dispositivo che si comporta come se ogni interfaccia che aveva fosse come una macchina separata. (Vedi qui se pensi che sia il modo in cui i dispositivi attualmente funzionano o pensano a qualcuno che si connette a un indirizzo IP assegnato a un'interfaccia ma i pacchetti arrivano e ne vengono inviati un altro.)
In pratica, la maggior parte delle macchine opera da qualche parte nel mezzo. Agiscono come se tutti gli indirizzi IP fossero di proprietà della macchina. L'assegnazione di un IP a un determinato dispositivo non fa davvero molto oltre a dire al sistema operativo di installare una route predefinita su quell'interfaccia e di impostare l'indirizzo IP di origine predefinito per i pacchetti inviati a tale interfaccia in cui l'indirizzo IP di origine non è ' t forzato.
Altrimenti, si comportano come se tutti gli indirizzi IP appartenessero alla macchina. Il modo in cui un pacchetto viene elaborato non dipende molto dall'interfaccia su cui viene ricevuto: i pacchetti con un indirizzo IP di origine assegnato a un'interfaccia ricevuta su un'altra sono di routine. A quale interfaccia viene assegnato un indirizzo non ha alcun effetto diretto su quale interfaccia viene inviato un pacchetto, la tabella di routing lo determina.
In generale, è necessario un IP per rete locale a cui ci si connette, ed è proprio così che è stato definito TCP / IP: ogni host su una determinata rete locale ha un indirizzo IP, che consente:
Finché si dispone di reti locali con più dispositivi collegati (la maggior parte delle reti locali 802.x, tra cui Ethernet, Wi-Fi), è abbastanza difficile aggirarlo a meno che non si cambi sostanzialmente il modo in cui TCP / IP funziona.
Tuttavia, in realtà è possibile evitarlo, anche se è abbastanza specifico.
Prendi in considerazione una rete che ha solo collegamenti punto-punto (Ethernet punto-punto tra due dispositivi senza switch o hub, collegamenti DSL, collegamenti SONET / SDH, Frame Relay o VC ATM ...).
La consueta convenzione è quella di utilizzare un / 30 per ciascun collegamento, quindi il dispositivo a ciascuna estremità ha un indirizzo IP su quel collegamento.
Ma puoi usare "IP non numerato" e non associare alcun indirizzo IP a quei collegamenti. Ora, assegni un IP all'interfaccia di loopback del dispositivo (qualsiasi interfaccia in realtà, ma il loopback è il più semplice per questo scopo) e usi un protocollo di routing dinamico (IS-IS, OSPF, EIGRP ...). Questo protocollo di routing pubblicizzerà come instradare il traffico verso quell'indirizzo IP tramite i vari collegamenti non numerati.
Gli indirizzi IP includono informazioni di routing. Un indirizzo IP è suddiviso in due componenti, il numero di rete e il numero host , in base alla lunghezza di un prefisso assegnato (che era originariamente espresso come maschera di rete, e questo è ancora spesso il modo in cui viene implementato internamente negli stack di rete).
Per il corretto funzionamento del routing, tutti i dispositivi collegati a una determinata rete devono avere indirizzi con lo stesso numero di rete. I mittenti determinano se il destinatario si trova sulla stessa o su una rete diversa confrontando il proprio numero di rete con l'indirizzo del destinatario. Se sono nella stessa rete, inviano direttamente; in caso contrario, inviano a un router il cui compito è avvicinare il messaggio alla destinazione.
Quindi, se un dispositivo è connesso a più reti, ha bisogno di un indirizzo su ciascuna di quelle reti in modo che possa essere raggiunto dai dispositivi su quella rete.
Detto questo, non è realmente necessario che gli indirizzi vengano assegnati in modo specifico a particolari interfacce di rete. Il dispositivo potrebbe avere un elenco di tutti gli IP di cui è proprietario in una singola tabella. Ma le interfacce hanno ancora bisogno di informazioni su quale rete sono connesse. Assegnando un IP e una maschera di rete a ciascuna interfaccia mettiamo queste informazioni in un unico posto, semplificando il design. Non è necessario un codice aggiuntivo per mantenere coerente l'elenco di IP con l'elenco delle reti a cui sono collegate le interfacce.
Potrebbe essere sufficiente avere un IP nel caso standard, ma come evidenziato da altre risposte, ci sono molti casi in cui non lo è.
Altre risposte hanno già menzionato il caso di un router. Uno menziona virtualbox, come nel caso delle macchine virtuali: potresti essere in esecuzione su un singolo dispositivo fisico più di quelle virtuali. Un altro caso sono le VLAN, che potresti aver effettivamente connesso a una singola scheda di rete, diverse LAN virtuali diverse, con indirizzi IP diversi. E potresti anche per alcuni motivi avere un'interfaccia con più IP, ad esempio perché vuoi eseguire diversi server Web sulla porta TCP 80. Tale configurazione non è insolita per i server, l'hardware che noleggi potrebbe avere una singola scheda di interfaccia di rete , ma avrai diversi indirizzi IP configurati.