Format ramki Ethernet – krótka historia w trzech odsłonach

Komentarze: 2 | , autor: Damian Michalak

PODAJ TO

Wydawałoby się, że na temat formatu nagłówka ramki Ethernet nie da się zbyt wiele powiedzieć. Jego konstrukcja jest stosunkowo prosta i przejrzysta, składa się z zaledwie kilku pól o łatwych do zrozumienia przeznaczeniach. I można by w sumie ten temat zakończyć już w tym momencie gdyby nie fakt, że możemy się spotkać aż z trzema różnymi formatami ramki Ethernet! Skąd taka różnorodność? Dlaczego akurat trzy? Czym one się różnią…? No to po kolei…

1. Początki Ethernetu i format DIX

Jednym z autorów protokołu Ethernet był Robert Metcalfe, pracownik Xeroxa. Na początku lat 80-tych ubiegłego wieku nad standaryzacją Ethernetu pracowały głównie trzy firmy: Digital, Intel oraz wspomniany już Xerox. Stąd też opracowany przez nich format ramki Ethernet nazywamy potocznie „Ethernet DIX”. Pierwsza wersja tego standardu została opublikowana w 1980 roku, natomiast dziś używamy wersji drugiej zrewidowanej przez IEEE – stąd też powszechna nazwa Ethernet II. Warto również wspomnieć, że jest to najczęściej dziś spotykany format ramki Ethernet.

Konstrukcja nagłówka ramki jest bardzo prosta, dlatego też nie będę omawiał poszczególnych pól, a skupię się jedynie na polu Type/Length. Wartość tego pola w specyfikacji Ethernet II (DIX) określa nam zenkapsulowany protokół warstwy trzeciej. Najczęściej spotykaną tam wartością będzie oczywiście 0x0800 – czyli IP. Dlaczego zatem, pole to nie zostało po prostu nazwane Type? Odpowiedź pod koniec artykułu 🙂

2. IEEE Ethernet 802.3

W tym samym czasie gdy DIX pracował nad swoją wersją Ethernetu, IEEE podejmowało już pierwsze kroki w kierunku standaryzacji tego protokołu. Prace w IEEE rozpoczęły się w lutym 1980 roku – stąd też numer grupy roboczej 802, gdzie podgrupa 802.3 jest dedykowana Ethernetowi. To właśnie w tej wersji standardu pojawia się po raz pierwszy CSMA/CD.

Ramka w oryginalnym standardzie Ethernet 802.3 różni się nieco od tej zaproponowanej przez DIX:

Zauważyć można m.in. następujące różnice:

  • 8-bajtowa preambuła została rozbita na 7-bajtową preambułę i 1-bajtowy Start of Frame Delimiter. Pomimo to w obu przypadkach mamy do czynienia z takim samym wzorcem bitowym: ciągiem naprzemiennych zer i jedynek, zakończonym dwoma jedynkami.
  • Pole Type/Length zostało zastąpione polem Length, które określa ilość bajtów między tym polem a polem FCS. Więcej na temat tego pola na koniec artykułu.
  • Dodano elementy podwarstwy LLC (802.2) – pola DSAP (Destination Service Access Point), SSAP (Source Service Access Point) oraz Control. W tym artykule skupimy się jedynie na polu DSAP – to właśnie ono określa zenkapsulowany protokół warstwy trzeciej. Pole to jest 8-bitowe, z czego jeden bit jest zarezerwowany do innych zastosowań. Pozostaje więc jedynie 7 użytecznych bitów. Po jakimś czasie okazało się że 7 bitów to za mało aby za pomocą tego pola identyfikować wszystkie nadrzędne protokoły.

3. IEEE Ethernet 802.3 z nagłówkiem SNAP

Gdy IEEE zorientowało się jak bardzo ograniczający jest rozmiar pola DSAP, postanowiło wydać kolejną wersję Ethernet. Dodano w niej nagłówek określany nazwą SNAP (Subnetwork Access Protocol). Zawiera on dwa pola: OUI oraz Type:

Pole Type ma w zasadzie dokładnie takie samo zastosowanie jako pole Type/Length w ramce Ethernet DIX. Widać zatem, że IEEE trochę się zagalopowało w rozwijaniu własnej specyfikacji Ethernet. Co prawda SNAP oferuje pewne rozwiązania, które się nadal stosuje po dziś dzień – ale jest to temat na osobny artykuł.

4. IEEE dostrzega elegancję specyfikacji DIX…

…i w 1997 roku wypuszcza wspomniany w pierwszym punkcie standard Ethernet II wzorowany dość mocno na oryginalnym formacie DIX 😉 I historia zatoczyła koło. Warto mieć na uwadze, że wszystkie wymienione tu standardy używane są do dziś, przy czym najczęściej będziecie spotykać ramki w formacie Ethernet II. Pozostaje zatem pytanie: w jaki sposób NIC rozróżnia z jakim formatem ramki ma do czynienia? W tym miejscu wracamy do pola Type/Length w ramce Ethernet II. Jeśli wartość tego pola to 1536 lub więcej to jest to format Ethernet II i liczba ta reprezentuje typ danych zenkapsulowanych w tej ramce. Jeśli jest to mniej niż 1536 to pole to traktowane jest jako Length a NIC interpretuje format ramki jako oryginalny IEEE 802.3. Idąc dalej mamy pola LLC 802.2 – jeśli DSAP oraz SSAP mają wartość 0xAA to jest to wskazówka dla NICa że po polu Control znajduje się nagłówek SNAP. I tak oto doszliśmy do trzeciego rodzaju nagłówka 🙂

SPODOBAŁ CI SIĘ TEN ARTYKUŁ?
Dołącz do moich subskrybentów, a nie przegapisz kolejnych ciekawych artykułów!

Nie ujawnię nikomu Twojego adresu. Zero spamu.
Damian MichalakFormat ramki Ethernet – krótka historia w trzech odsłonach
  • Amadeusz Jakóbczak

    Bardzo ciekawy zbiór bezużytecznych informacji 🙂 Ale w imieniu pasjonatów sieci dziękuję 😉

    • Niestety, ale właśnie tego typu bezużyteczne informacje są egzaminowane na CCIE Written…