Czy mogę utworzyć sieć Ethernet bez użycia adresu IP

14

Jak rozumiem z modelu ISO-OSI, adresy MAC działają na innej warstwie niż adresy IP. To dla mnie jasne.

Mogę zaakceptować fakt, że Ethernet (LAN) po prostu nie wykorzystuje adresów IP do komunikacji, ale używa adresów MAC. Rozumiem, że tych adresów MAC nie można używać do routingu poza siecią LAN, ponieważ nie są one zdefiniowane hierarchicznie. Rozumiem również, że IP to najlepszy sposób na routing przez duży Internet. Nie jestem do końca przekonany, że adresy MAC są najlepszym sposobem komunikacji w sieci LAN


Moje pytania są następujące:

  1. Czy Ethernet nie mógł wykorzystywać adresów IP do wysyłania wiadomości? Nie twierdzę, że powinno, tylko pytam, czy mógł to zrobić.
  2. Ponieważ Ethernet używa adresów MAC do komunikacji, czy mogę stworzyć sieć Ethernet, w której urządzenia nie miałyby adresu IP, tylko adres MAC?
Michael
źródło
Z definicji sieć Ethernet to sieć, w której urządzenia nie mają adresów IP. Jak zauważyłeś, sieć TCP / IP to zupełnie inna sprawa, a IP nie dba o to, czy działa w oparciu o IEEE 802.3, 802.11 lub 802.5.
miken32

Odpowiedzi:

5

Czy Ethernet mógł użyć adresów IP zamiast własnych adresów warstwy łącza danych? Z pewnością nie, jeśli chce być agnostyczny w kwestii używanego protokołu warstwy 3.

Projektujemy protokoły sieciowe w warstwach, abyśmy mogli łączyć i dopasowywać warstwy.

Ethernet został pierwotnie opracowany przez Boba Metcalfe i in. W Xerox PARC, aby był niezależny od warstwy sieci, ponieważ ich celem nie był tylko dostęp TCP / IP, ale także własny stos XerS / pakiet protokołów sieciowych Xerox.

DEC (Digital Equipment Corporation) stał się kolejnym wczesnym odbiorcą, wykorzystując go przede wszystkim do stosu / pakietu protokołów DECnet.

Na przełomie lat 80. i 90. istniało wiele konkurencyjnych pakietów protokołów LAN (wszystkie całkowicie niezależne od TCP / IP) działających na korporacyjnych sieciach Ethernet LAN. Oprócz XNS i DECnet istniał AppleTalk Apple (EtherTalk), IPX firmy Novell, Banyan VINES, NetBEUI, DLC / LLC, IBM SNA, OSI / ISO i inne, o których zapomniałem.

Tak, możesz korzystać z Ethernetu bez adresu IP. Wiele sieci korporacyjnych robiło to w latach 80. i 90.

Ponieważ Ethernet został zaprojektowany z myślą o tym, aby nie przejmować się tym, na czym działał protokół Layer-3 (warstwa sieciowa), te korporacyjne sieci LAN mogły stosunkowo łatwo obsługiwać różne urządzenia różnych dostawców i stosunkowo łatwo było dodać IPv4 wsparcie, gdy Internet wystartował w połowie lat 90., a teraz stosunkowo łatwo było dodać obsługę IPv6.

Spiff
źródło
1
Dziękujemy za udzielenie odpowiedzi, w której umieścisz rzeczy w kontekście! Chciałbym jednak, abyś rozwinął nieco więcej w drugiej części pytania. Czy byłoby możliwe stworzenie działającej sieci LAN opartej na Ethernet bez użycia protokołów warstwy sieci? Jeśli skonfiguruję krzyżowe połączenie Ethernet z innym hostem, dlaczego muszę używać adresów IP do komunikacji z tym hostem? Czy można używać TCP przez MAC zamiast TCP przez IP?
jj_
4

Ponieważ Ethernet używa adresów MAC do komunikacji, czy mogę stworzyć sieć Ethernet, w której urządzenia nie miałyby adresu IP, tylko adres MAC?

Jeśli pisałeś całe swoje oprogramowanie od zera, z pewnością możesz to zrobić. Wystarczy, aby oprogramowanie zaakceptowało adres MAC w dowolnym miejscu, w którym normalny odpowiednik tego programu zaakceptowałby adres IP. Użyj wszystkich wywołań systemowych, aby wysłać surowe pakiety Ethernet zamiast adresu IP i będzie działać - ale byłby to ogromny kłopot.

Zasadniczo adresy MAC w sieci nie są zgodne z żadnym wzorcem. Są wypalane na sprzęcie przez producenta. Są długie i nieporęczne. Mój obecnie to C8-60-00-CA-4B-9A. Komputer obok mnie to 00-40-F4-48-1B-88.

Aby maszyny mogły ze sobą rozmawiać, możesz nadać każdej maszynie zakodowaną listę wszystkich adresów MAC wszystkich innych komputerów w sieci, aby wiedział, gdzie wysłać pakiety. Jest to bardzo podatne na błędy pisanie, a za każdym razem, gdy zmieniasz dowolny sprzęt sieciowy, musisz obejść i zmienić wszystkie listy, aby odzwierciedlić nowe adresy MAC.

Jest to ogromny kłopot, więc prawdopodobnie skończyłbyś ze sposobem, w jaki maszyny w sieci będą automatycznie odkrywać swoje adresy MAC za pomocą pakietów rozgłoszeniowych. Następnie dasz im sposób na identyfikację się z jakimś znaczącym adresem, więc będziesz musiał wpisać polecenia takie jak „telnet C8-60-00-CA-4B-9A”.

Okazuje się, że właśnie to robi IP - jest to sposób na użycie znaczących liczb do adresowania hostów w sieci, a nie kodowania adresów MAC na stałe. Dodaj DNS nad IP i możesz wpisać polecenie takie jak „telnet webserver”.

Czy Ethernet nie mógł wykorzystywać adresów IP do wysyłania wiadomości? Nie twierdzę, że powinno, tylko pytam, czy mógł to zrobić.

Adresy MAC to 6 bajtów informacji, a adresy IP to tylko 4 bajty, więc nie można wykonać żadnego mapowania 1 do 1. Potrzebujesz sposobu na znalezienie adresu MAC (w celu umieszczenia w pakiecie) z adresu IP (dostarczonego przez oprogramowanie, które chce komunikować się z innym hostem w sieci).

Jednym ze sposobów (twardego rdzenia) byłoby przejście do każdego komputera w sieci i zmiana jego sprzętowego adresu MAC, aby wyglądał jak adres IP, poprzez ustawienie dwóch górnych bajtów na zera (lub na inny stały numer, który jest taki sam dla każdego komputera w sieci) i ustaw dolne cztery bajty na „adres IP”, który ma mieć w sieci. (Większość kart sieciowych pozwoli ci wejść i zmodyfikować adres MAC przypisany przez dostawcę)

Aby to faktycznie działało, musisz również zhakować kod ze stosu sieciowego, aby faktycznie korzystać z tego systemu. Zerwałbyś wszystko, co ma związek z ARP (metoda IP używa do tłumaczenia adresów IP na adresy MAC). Zerwałbyś części, które budują / czytają nagłówki IP. Zamiast tego zastąpiłbyś to wszystko bardzo prostym kodem, który biorąc pod uwagę pakiet IP, który ma zostać wysłany do hosta pod adresem wxyz, zbuduj ramkę Ethernet z adresem DEST ustawionym na 00-00-wxyz.

Potrzebny byłby również sposób wskazania odbiorcy pakietu, dla którego protokołu (UDP, TCP) jest on przeznaczony. Prawdopodobnie możesz to gdzieś umieścić w nagłówku ethernetowym, zastępując istniejące pole. Może użyć jednego z dwóch górnych bajtów adresu źródłowego? Nie wpłynęłoby to na zdolność odbierania komputerów docelowych, ale mogłoby zepsuć niektóre przełączniki. Możesz także dodać protokół na początku lub na końcu ramki Ethernet i zwiększyć rozmiar ładunku o jeden - ale zaczyna to pachnieć jak nagłówek IP.

Więc co by to wszystko kupiło?

Po pierwsze pozwoliłoby ci to zaoszczędzić na wyszukiwaniu w tabeli ARP na każdym wychodzącym pakiecie. Jest to prawdopodobnie rzędu zaledwie mikrosekund.

Oszczędzasz pracę przy obliczaniu sum kontrolnych nagłówka IP i pamięć potrzebną do ich przechowywania. Prawdopodobnie nie ma to większego znaczenia na nowoczesnym sprzęcie.

Zapisujesz 16 bajtów w każdym pakiecie w sieci, ponieważ nie byłoby nagłówków IP. Może się to sumować w zależności od aplikacji.

Największą korzyścią byłoby to, że nie musiałbyś wykonywać żadnych zapytań ARP. Wysłanie standardowego pakietu IP do nowego hosta uruchamia wymianę ARP, która może potrwać milisekundy i jest nieprzewidywalna. Może to być ogromny zysk w przypadku niektórych aplikacji, które są bardzo wrażliwe na opóźnienia i fluktuacje.

W przypadku niektórych bardzo specjalistycznych aplikacji ma to sens. Kiedyś pracowałem w systemie czasu rzeczywistego, który używał tylko pakietów rozgłoszeniowych UDP do całej komunikacji między hostami tylko dlatego, że unikał uruchamiania tych sekwencji ARP i nieprzewidywalnie dodaje opóźnienia i fluktuacji. Raz pracowałem również nad wbudowanym systemem o ograniczonych zasobach, który działał, wysyłając ładunki UDP bezpośrednio do pakietów IP (bez nagłówka IP), ponieważ oszczędzał całą złożoność i pamięć potrzebną do wdrożenia całej ARP i maski sieci oraz dodatkowych sum kontrolnych.

bigjosh
źródło
1

Czy Ethernet nie mógł wykorzystywać adresów IP do wysyłania wiadomości? Nie twierdzę, że powinno, tylko pytam, czy mógł to zrobić

Myślę, że Ethernet mógł użyć czterobajtowych adresów, takich jak IPv4, zamiast sześciobajtowych adresów. Pewnie dobrze, że nie zrobili tego, bo zabrakło już liczb, założę się.

Ponieważ Ethernet używa adresów MAC do komunikacji, czy mogę stworzyć sieć Ethernet, w której urządzenia nie miałyby adresu IP, tylko adres MAC?

Możesz, jeśli masz programy, które będą działać z adresami MAC zamiast adresów IP. Oczywiście utkniesz w tej sieci i nie będziesz mógł dotrzeć do innych bez odrobiny hakowania.

Warstwa IP jest naprawdę potrzebna tylko wtedy, gdy planujesz routing, szczególnie jeśli inna sieć może używać innej technologii warstwy 2 niż Ethernet, takiej jak Token Ring, co było realną możliwością, gdy większość z nich została opracowana. Kto wie, czy inna technologia warstwy 2 może stać się wszechobecna w przyszłości, jeśli tak, IP jest od niej niezależna.

LawrenceC
źródło
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.

Jeśli mówisz o Ethernet jako o warstwie sieci, to nie, nie może. Warstwa sieci wymaga adresu fizycznego urządzenia sieciowego. Adres IP to dowolny numer przypisany do adresu MAC dla uproszczenia. Adresy IP to rozwiązanie programowe, a nie część karty sieciowej - rozwiązanie sprzętowe. Dlatego adresy IP można łatwo zmienić, a adresy MAC są na stałe zakodowane na karcie i nie można ich zmienić (niezależnie od oprogramowania do fałszowania adresów MAC, które nawet nie zmienia adresu tak bardzo, jak to leży na temat tego, jaki jest adres )

> 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?

Tak, możesz, ale nie podobałoby ci się korzystanie z niego, ponieważ jego funkcjonalność byłaby bardzo ograniczona i wcale nie byłaby przyjazna dla użytkownika. Istnieje powód, dla którego wdrożono warstwę transportową.

Z WikiPedia , warstwa transportowa kontroluje niezawodność danego łącza poprzez kontrolę przepływu, segmentację / desegmentację i kontrolę błędów. Niektóre protokoły są zorientowane na stan i połączenie. Oznacza to, że warstwa transportowa może śledzić segmenty i przesyłać ponownie te, które uległy awarii. Warstwa transportowa zapewnia również potwierdzenie pomyślnej transmisji danych i wysyła następne dane, jeśli nie wystąpią żadne błędy.

Zatem bez użycia warstwy transportowej, która obecnie oznacza protokół TCP / IP, nie miałbyś możliwości zapewnienia, że ​​twoje dane dotrą do miejsca docelowego, ani możliwości automatycznego zresetowania brakujących elementów.

Christopher N. Boisjoli
źródło
Adres MAC z pewnością można zmienić. Mój (dawno zmarły) komputer PC od lat używał MAC z uszkodzonej karty Ethernet, ponieważ mój dostawca ADSL go związał i naliczył, aby go zmienić (zajęło to również kilka dni).
vonbrand
0

Z pewnością możliwe jest komunikowanie się maszyn w sieci lokalnej bez warstwy routingu. Po prostu osadzasz wiadomość w ramce Ethernet i masz nadzieję na najlepsze. To trochę tak, jakby umieścić notatkę na pocztówce i mieć nadzieję, że poczta spełni swoje zadanie.

Musisz mieć nadzieję, że odbiornik nasłuchuje, i uważnie słuchaj wiadomości zwrotnej (potencjalnie wśród wielu innych wiadomości z innych węzłów). Będziesz odpowiedzialny za samodzielne uporządkowanie wszystkich tych wiadomości.

Jeśli chcesz takich wiadomości, jak wiadomości 1: 1, potrzebujesz ramek na ramkach Ethernet, aby obsłużyć cały proces nasłuchiwania. Często stosuje się do tego protokół PPP (Point to Point Protocol), przez Ethernet nazywany jest PPPoE. PPPoE zapewnia uwierzytelnianie i szyfrowanie, oba bardzo dobre pomysły w sieci rozgłoszeniowej.

Ale bez jakiejkolwiek formy informacji o routingu możesz komunikować się tylko z węzłami w sieci lokalnej. Gdy tylko zaczniesz używać informacji o routingu do przekazywania wiadomości (np. Do Internetu), potrzebujesz jakiejś formy protokołu routingu, takiego jak IP lub IPX. I prawdopodobnie będziesz również chciał kontroli transmisji (TCP) ...

david25272
źródło
0

Sieci IP są abstrakcją, warstwą pośrednią, to znaczy, że są siecią wirtualną - niepowiązaną na stałe z żadną konkretną fizyczną metodą lub urządzeniem.

Host Ethernet ma jeden adres MAC (na kartę sieciową), który jednoznacznie identyfikuje go globalnie. Jednak ten host może jednocześnie należeć do wielu sieci IP, dla których każdy ma inny adres IP, zawsze używając jednego adresu MAC.

To oddzielenie adresowania fizycznego i logicznego lub wirtualizacja adresowania pozwala na pewną elastyczność, taką jak przenoszenie hosta IP (np. Serwera) z jednej maszyny fizycznej na inną, z innym adresem MAC, ale bez konieczności rekonfiguracji innych hostów (np. oprogramowanie klienckie).

IP lub protokół internetowy i Ethernet rozwiązują różne problemy: Ethernet zapewnia komunikację na poziomie sieci LAN i tylko w jednej sieci LAN, nie ma znaczenia, z którymi innymi sieciami sieć LAN może być podłączona za pośrednictwem routera. Z kolei IP dotyczy pracy w sieci i dlatego jest agnostyczny dla sieci LAN. Czy więc Ethernet mógł wykorzystać adresy IP zamiast adresów MAC? Jasne, ale tak naprawdę nic cię to nie zyska, ponieważ te wiadomości byłyby nadal ograniczone do sieci LAN.

Jako odpowiedź na twoje drugie pytanie, taka sytuacja występuje w różnych momentach w sieci Ethernet LAN, która wykorzystuje protokół dynamicznej konfiguracji hosta (DHCP) do przydzielania adresów IP. Kiedy nowy host łączy się z siecią LAN, nie ma adresu IP, więc wysyła rozgłaszaną ramkę Ethernet do wszystkich urządzeń i czeka na odpowiedź z serwera DHCP. W tym momencie klient nie zna ani adresu MAC serwera DHCP, ani adresu IP, stąd nadawanie. Po otrzymaniu żądania serwer zna teraz adres MAC klienta, dzięki czemu może poprawnie adresować odpowiedź.

chritohnide
źródło