Posso creare una rete Ethernet senza usare l'IP


14

Come ho capito dal modello ISO-OSI, gli indirizzi MAC operano su un livello diverso rispetto agli indirizzi IP. Questo è chiaro per me.

Posso accettare che Ethernet (LAN) semplicemente non fa uso di indirizzi IP per fare comunicazione, ma usa indirizzi MAC. Comprendo che questi indirizzi MAC non possono essere utilizzati per il routing al di fuori di una LAN, in quanto non sono definiti gerarchicamente. Comprendo anche che l'IP è il modo migliore per eseguire il routing su Internet. Ciò di cui non sono del tutto convinto è che gli indirizzi MAC sono il modo migliore per comunicare in una LAN


Le mie domande sono le seguenti:

  1. Ethernet non potrebbe utilizzare gli indirizzi IP per inviare messaggi? Non sto dicendo che dovrebbe, sto solo chiedendo se avrebbe potuto scegliere di farlo.
  2. Poiché Ethernet utilizza gli indirizzi MAC per la comunicazione, è possibile creare una rete Ethernet in cui i dispositivi non avrebbero un indirizzo IP, ma solo un indirizzo MAC?

Per definizione, una rete Ethernet è una rete in cui i dispositivi non hanno indirizzi IP. Una rete TCP / IP, come sottolineato, è un'altra cosa e all'IP non importa se funziona su IEEE 802.3, 802.11 o 802.5.
miken32,

Risposte:


5

Ethernet avrebbe potuto utilizzare indirizzi IP anziché i propri indirizzi di livello collegamento dati? Certamente no, se voleva essere agnostico riguardo al protocollo di livello 3 utilizzato.

Progettiamo protocolli di rete in strati in modo da poter mescolare e abbinare i livelli.

Ethernet è stata originariamente sviluppata da Bob Metcalfe e altri presso Xerox PARC per essere agnostica a livello di rete, perché il loro obiettivo non era solo l'accesso TCP / IP ma anche lo stack / suite di protocollo di rete XNS proprietario di Xerox.

DEC (Digital Equipment Corporation) è diventato un altro adozione iniziale, utilizzandolo principalmente per il proprio stack / suite di protocollo DECnet.

Alla fine degli anni '80 e all'inizio degli anni '90 c'erano molte suite di protocolli LAN concorrenti (tutte completamente indipendenti da TCP / IP) in esecuzione su LAN Ethernet aziendali. Oltre a XNS e DECnet, c'erano AppleTalk (EtherTalk) di Apple, IPX di Novell, Banyan VINES, NetBEUI, DLC / LLC, IBM SNA, OSI / ISO e altri che ho dimenticato.

Quindi sì, puoi usare Ethernet senza IP. Molte reti aziendali lo hanno fatto negli anni '80 e '90.

Poiché Ethernet è stata progettata per non preoccuparsi di quale protocollo Layer-3 (Network Layer) era in esecuzione su di esso, era relativamente facile per quelle LAN aziendali supportare i mix di apparecchiature di vari fornitori ed era relativamente facile per quelle LAN aggiungere IPv4 supporto quando Internet è decollato tra la metà e la fine degli anni '90 ed è stato relativamente facile per noi aggiungere il supporto IPv6 ora.


1
Grazie per aver dato una risposta in cui metti le cose nel contesto! Vorrei che tu avessi ampliato un po 'di più anche la seconda parte della domanda .. Sarebbe possibile creare una LAN basata su Ethernet funzionante senza utilizzare alcun protocollo di livello di rete? Se installo una connessione Ethernet con cavi incrociati a un altro host, perché devo utilizzare gli IP per comunicare con quell'host? Potrebbe essere possibile utilizzare TCP su MAC anziché TCP su IP?
jj_

4

Poiché Ethernet utilizza gli indirizzi MAC per la comunicazione, è possibile creare una rete Ethernet in cui i dispositivi non avrebbero un indirizzo IP, ma solo un indirizzo MAC?

Se scrivessi tutto il tuo software da zero, allora potresti sicuramente farlo. Basta che il software accetti un indirizzo MAC ovunque che la normale controparte di quel programma avrebbe accettato un indirizzo IP. Usa tutte le chiamate di sistema per inviare pacchetti Ethernet grezzi anziché l'indirizzo IP e funzionerà, ma sarebbe una seccatura enorme.

In genere, gli indirizzi MAC sulla rete non seguono alcun modello. Vengono bruciati nell'hardware dal produttore. Sono lunghi e voluminosi. Il mio in questo momento è C8-60-00-CA-4B-9A. Il computer accanto a me è 00-40-F4-48-1B-88.

Affinché le macchine possano parlarti a vicenda, potresti dare a ciascuna macchina un elenco hardcoded di tutti gli indirizzi MAC di tutte le altre macchine sulla rete in modo da sapere dove inviare i pacchetti. Questo è un sacco di errori inclini a digitare e ogni volta che hai cambiato qualsiasi hardware di rete dovresti andare in giro e cambiare tutti gli elenchi per riflettere i nuovi indirizzi MAC.

Questa è una seccatura enorme, quindi probabilmente finirai per trovare un modo per le macchine sulla rete di scoprire automaticamente gli indirizzi MAC degli altri usando i pacchetti di trasmissione. Quindi daresti loro un modo per identificarsi con qualche indirizzo significativo, quindi dovresti digitare comandi come "telnet C8-60-00-CA-4B-9A".

Si scopre che questo è esattamente ciò che fa l'IP: è un modo per utilizzare numeri significativi per indirizzare gli host su una rete piuttosto che su indirizzi MAC con codifica rigida. Aggiungi DNS sopra IP e puoi digitare un comando come "telnet webserver".

Ethernet non potrebbe utilizzare gli indirizzi IP per inviare messaggi? Non sto dicendo che dovrebbe, sto solo chiedendo se avrebbe potuto scegliere di farlo.

Gli indirizzi MAC sono 6 byte di informazioni e gli indirizzi IP sono solo 4 byte, quindi non è possibile eseguire alcun tipo di mapping da 1 a 1. È necessario un modo per trovare l'indirizzo MAC (da inserire nel pacchetto) da un indirizzo IP (fornito dal software che desidera comunicare con un altro host sulla rete).

Un modo (hard core) per farlo sarebbe quello di entrare in ogni macchina della rete e cambiare il suo indirizzo MAC hardware in modo che assomigli a un indirizzo IP facendo diventare i primi due byte zero (o qualche altro numero fisso uguale) per ogni macchina sulla rete) e impostare i quattro byte inferiori sull'indirizzo IP che si desidera avere sulla rete. (La maggior parte delle schede di rete consente di accedere e modificare l'indirizzo MAC assegnato dal fornitore)

Per far sì che funzioni davvero, dovresti anche hackerare il codice nello stack di rete per utilizzare effettivamente questo sistema. Fondamentalmente potresti strappare tutto ciò che ha a che fare con ARP (il metodo che IP usa per tradurre gli indirizzi IP in indirizzi MAC). Strapperesti le parti che costruiscono / leggono le intestazioni IP. Invece, sostituiresti tutto con il codice molto semplice che, dato un pacchetto IP da inviare all'host all'indirizzo wxyz, crea un frame ethernet con l'indirizzo DEST impostato su 00-00-wxyz.

Avresti anche bisogno di un modo per indicare al destinatario di un pacchetto per quale protocollo (UDP, TCP) è destinato. Probabilmente potresti attaccarlo da qualche parte nell'intestazione Ethernet sovrascrivendo un campo esistente. Forse utilizzare uno dei primi due byte dell'indirizzo di origine? Ciò non influirebbe sulla capacità delle macchine di destinazione di ricevere, ma potrebbe rovinare alcuni switch. Potresti anche aggiungere il protocollo all'inizio o alla fine del frame Ethernet e aumentare la dimensione del payload di uno, ma questo inizia a puzzare come un'intestazione IP.

Quindi cosa ti comprerebbe tutto questo lavoro?

In primo luogo, si risparmierebbe il sovraccarico di una ricerca nella tabella ARP su ogni pacchetto in uscita. Questo è probabilmente nell'ordine di soli microsecondi.

Si salva il lavoro di calcolo dei checksum dell'intestazione IP e la memoria necessaria per conservarli. Questo probabilmente non è significativo per l'hardware moderno.

Si risparmiano 16 byte in ogni pacchetto sulla rete poiché non ci sarebbero intestazioni IP. Questo potrebbe sommarsi a seconda dell'applicazione.

Il vantaggio maggiore sarebbe che non dovresti fare alcuna richiesta ARP. L'invio di un pacchetto IP standard a un nuovo host attiva uno scambio ARP che può richiedere millisecondi ed è imprevedibile. Questo può essere un enorme vantaggio per alcune applicazioni che sono molto sensibili alla latenza e al jitter.

Per alcune applicazioni molto specializzate questo ha davvero senso fare. Una volta ho lavorato su un sistema in tempo reale che utilizzava solo pacchetti UDP di trasmissione per tutte le comunicazioni tra host, per il solo motivo che evitava di avviare quelle sequenze ARP e di aggiungere imprevedibilmente ritardo e jitter. Una volta ho anche lavorato su un sistema integrato a risorse limitate che ha funzionato inviando direttamente payload UDP all'interno dei pacchetti IP (nessuna intestazione IP) perché ha salvato tutta la complessità e la memoria necessarie per implementare tutta l'ARP e la maschera di rete e roba extra di checksum.


1

Ethernet non potrebbe utilizzare gli indirizzi IP per inviare messaggi? Non sto dicendo che dovrebbe, sto solo chiedendo se avrebbe potuto scegliere di farlo

Immagino che Ethernet avrebbe potuto usare indirizzi a quattro byte come IPv4 invece di indirizzi a sei byte. Probabilmente è bello che non lo abbiano fatto perché ormai avrei finito i numeri, scommetto.

Poiché Ethernet utilizza gli indirizzi MAC per la comunicazione, è possibile creare una rete Ethernet in cui i dispositivi non avrebbero un indirizzo IP, ma solo un indirizzo MAC?

Puoi, se hai programmi che funzioneranno con indirizzi MAC anziché con indirizzi IP. Naturalmente rimarrai bloccato su quella rete e non potrai raggiungere gli altri senza un po 'di pirateria informatica.

Hai davvero bisogno del livello IP solo se prevedi di eseguire il routing, specialmente se un'altra rete potrebbe utilizzare una tecnologia di livello 2 diversa da quella Ethernet, come Token Ring, che era una possibilità reale quando è stato sviluppato la maggior parte di questo. Chissà se un'altra tecnologia Layer 2 potrebbe diventare onnipresente in futuro, in tal caso, l'IP è indipendente da essa.


0
> Couldn't Ethernet make use of IP addresses to send messages? I'm not
> saying it should, I'm just asking if it could have chosen to do so.

Se ti riferisci a Ethernet come Network Layer, allora no, non può. Il livello di rete richiede l'indirizzo fisico del dispositivo di rete. Un indirizzo IP è un numero arbitrario che viene assegnato a un indirizzo MAC per semplicità. Gli indirizzi IP sono una soluzione software, non una parte della scheda di rete: la soluzione hardware. Ecco perché gli indirizzi IP possono essere facilmente modificati, mentre gli indirizzi MAC sono hardcoded sulla scheda e non possono essere modificati (nonostante il software di spoofing MAC-Address, che ancora non cambia l'indirizzo tanto quanto si trova su quale sia l'indirizzo )

> As Ethernet uses MAC addresses for communication, could I create an
> Ethernet network where devices would not have an IP address, just a
> MAC address?

Sì, potresti, ma non ti piacerebbe usarlo, poiché la funzionalità sarebbe molto limitata e non user-friendly. C'è un motivo per cui è stato implementato il livello di trasporto.

Da WikiPedia , il livello di trasporto controlla l'affidabilità di un determinato collegamento tramite controllo del flusso, segmentazione / desegmentazione e controllo degli errori. Alcuni protocolli sono orientati allo stato e alla connessione. Ciò significa che il livello di trasporto può tenere traccia dei segmenti e ritrasmettere quelli che non funzionano. Il livello di trasporto fornisce anche il riconoscimento della corretta trasmissione dei dati e invia i dati successivi se non si sono verificati errori.

Pertanto, senza utilizzare il livello di trasporto, che al giorno d'oggi significa il protocollo TCP / IP, non si sarebbe in grado di garantire che i dati arrivassero a destinazione, o che si potesse ripristinare automaticamente qualsiasi pezzo mancante.


L'indirizzo MAC può certamente essere modificato. Il mio (a lungo deceduto) PC ha usato il MAC da una scheda Ethernet rotta per anni, poiché il mio provider ADSL lo aveva legato e addebitato per cambiarlo (e ci sono voluti anche alcuni giorni).
vonbrand,

0

È certamente possibile che le macchine su una rete locale comunichino senza un livello di routing. Hai appena incorporato un messaggio in un frame Ethernet e speri per il meglio. È un po 'come mettere un biglietto su una cartolina e sperare che l'ufficio postale faccia il suo lavoro.

Devi sperare che il destinatario stia ascoltando e ascoltare attentamente un messaggio di risposta (potenzialmente tra molti altri messaggi provenienti da altri nodi). Sarai responsabile per risolvere tutti questi messaggi da solo.

Se vuoi cose come la messaggistica 1: 1, avrai bisogno di un altro protocollo sopra i frame Ethernet per gestire tutto questo ascolto per te. Il protocollo Point to Point (PPP) viene spesso utilizzato per questo, su Ethernet questo è noto come PPPoE. PPPoE ti offre autenticazione e crittografia, entrambe ottime idee su una rete di trasmissione.

Ma senza alcuna forma di informazioni di routing è possibile comunicare solo con nodi sulla rete locale. Non appena si inizia a utilizzare le informazioni di routing per inoltrare i messaggi (ad es. A Internet) si desidera una qualche forma di protocollo di routing, come IP o IPX. E probabilmente vorrai anche il controllo della trasmissione (TCP) ...


0

Le reti IP sono un'astrazione, uno strato di riferimento indiretto, vale a dire che sono una rete virtuale, non permanentemente vincolata a un particolare metodo o dispositivo di comunicazione fisica.

Un host Ethernet ha un indirizzo MAC (per NIC) che lo identifica in modo univoco a livello globale. Tuttavia, questo host potrebbe appartenere contemporaneamente a molte reti IP, con un indirizzo IP diverso per ciascuna, pur utilizzando sempre un indirizzo MAC.

Questa separazione di indirizzamento fisico e logico, o virtualizzazione di indirizzamento, consente una certa flessibilità, come lo spostamento di un host IP (ad esempio un server) da una macchina fisica a un'altra, con un indirizzo MAC diverso, ma senza richiedere una riconfigurazione di altri host (ad es. software client).

IP o Internet Protocol ed Ethernet risolvono diversi problemi: Ethernet fornisce la comunicazione a livello LAN e solo su una singola LAN, non importa a quali altre reti la LAN può essere connessa tramite un router. Considerando che IP è interessato con internetworking ed è quindi agnostico LAN. Quindi, Ethernet potrebbe aver fatto uso di indirizzi IP anziché di indirizzi MAC? Certo, ma non ti guadagna davvero nulla dal momento che quei messaggi sarebbero comunque limitati alla LAN.

Come risposta alla tua seconda domanda, questo tipo di situazione esiste in momenti diversi su una LAN Ethernet che utilizza il protocollo DHCP (Dynamic Host Configuration Protocol) per l'allocazione dell'indirizzo IP. Quando un nuovo host si connette alla LAN, non ha un indirizzo IP, quindi invia un frame Ethernet trasmesso a tutti i dispositivi e attende una risposta da un server DHCP. A questo punto, il client non conosce né l'indirizzo MAC del server DHCP né il suo indirizzo IP, quindi la trasmissione. Alla ricezione della richiesta, il server ora conosce l'indirizzo MAC del client e quindi può indirizzare correttamente la risposta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.