Protokół Ethernet – Specyfikacja i opis protokołu Ethernet II 802.3 na przykładzie Wireshark

Ethernet to najpopularniejszy w obecnych czasach protokół warstwy łącza (warstwa 2.), czyli protokół będący tym najprostszym składnikiem komunikacji w kablowej sieci lokalnej – ta warstwa jest bezpośrednio tłumaczona na na warstwę fizyczną, czyli poziomy napięć w przewodach sieci (warstwa 1.).

Najpierw przyrzyjmy się rysunkowi, a dalej go omówimy.


Każda ramka sieci Ethernet składa się z części logicznej (zawierającą w sobie jakieś informacje) oraz z części elektrycznej (służącej tylko do synchronizacji urządzeń odbiorczych i nadawczych). Pierwsze 56 bitów (7 bajtów) składające się z naprzemiennych 0 i 1 mają poinformować urządzenia, iż następuje transmisja oraz dać im możliwość zsynchronizowania się. Następnie wysyłany jest jeszcze 1 bajt (8 bitów) zwany SFD (z ang. start frame delimiter), który informują o końcu synchronizacji – czyli końcu tzw. preambuły. Bitowo oraz szesnastkowo wygląda to tak:

10101010101010101010101010101010101010101010101010101010 10101011
AAAAAAAAAAAAAA AB

Dalsza część ramki Ethernet to adres MAC odbiorcy i nadawcy oraz oznaczenie typu ramki. To już logiczna część ramki, którą już możemy podglądnąć za pomocą aplikacji Wireshark. Wygląda to tak jak poniżej. W górnej części obrazka mamy analizę, a w dolnej zapis szesnastkowy i ASCII.

Najpierw widać, że mamy Destination czyli 6 bajtów MAC adresu odbiorcy, tutaj:
00:26:24:93:a4:30 (adres MAC przypisany firmie Thomson).

Dalej mamy Source, czyli 6 bajtów adresu MAC nadawcy, tutaj:
00:16:17:d6:86:36 (adres MAC przypisany firmie MSI)

Teraz widać pewną różnicę między górnym rysunkiem oraz screen-shotem z Wiresharka. Oba obrazki różnią się polem 802.1Q, które to pole jest opcjonalne. Oznacza to, że w normalnych sieciach to pole raczej nie występuje. Występuje ono w nowszych sieciach, które obsługują VLANy i inne dodatkowe funkcjonalności Na początku tego pola mamy fragment zwany TPID (Tag Protocol Identifier) składający się z 16 bitów o wartości 0×8100, które właśnie sygnalizują pole 802.1Q. Dalej jest fragment zwany TCI (Tag Control Identifier). Składa się on z 3 jeszcze mniejszych części.

Pierwsza to PCP (Priority Code Point). 3 bity które oznaczają priorytet ramki Ethernet. Są tu wartości od 0 do 7. Pole to może posłużyć do różnych priorytetów dla mowy, wideo i danych. Takie rozróżnienie nazywa się CoS (Class of Service).

Dalej jest CFI (Canonical Format Indicator), czyli 1 bit mówiący czy bity w bajtach pola adresu MAC powinny być interpretowane od lewej do prawej, czy od prawej do lewej. Fizycznie błąd interpretacji nie robi zazwyczaj żadnej różnicy w działaniu, tyle tylko, że zmienia interpretacje w ASCII. Jednak, gdy switch obsługuje kilka różnych typów sieci, musi zwracać uwagę na to pole.

Dalej jest VID (VLAN Identifier), czyli 12 bitów oznaczające numer VLANa. Na tym polu kończy się opcjonalne pole IEEE 802.1Q.

Wracamy więc do standardowej ramki Ethernet. Dalej mamy 2 bajty oznaczone jako Ethertype. Gdy to pole ma wartość mniejszą niż 0×0600 oznacza długość danych w ramce Ethernet (bez nagłówka, więc max. 1500 bajtów), gdy większą oznacza typ pakietu z warstwy 3 (warstwa sieci). Dla przykładu, wartość 0×0806 oznacza protokół ARP.

Dalej mamy faktyczne dane połączone z nagłówkami protokołów wyższych warstw. Długość wynosi od 46 do 1500 bajtów. Mniejsze dane uzupełniane są zerami do minimalnej długości. Ta minimalna długość danych wynika z chęci usunięcia sytuacji, gdy nadawca kończy nadawać bardzo krótką ramkę danych, zanim będzie fizycznie w stanie odebrać sygnał o wystąpieniu kolizji na linii.

Na samym końcu mamy 4 bajty (FCS) Frame Check Sequence zawierające kod CRC.

Po FCS następuje znowu elektroniczna część ramki Ethernet. Jest to 12 bajtów ciszy, które oznaczają koniec transmisji.

Na koniec tylko dodamy, że każdy producent kart sieciowych i sprzętu musi śledzić setki stron dokumentacji RFC opisującej nie tylko różne wersje formatów ramek, ale także opisują szczegóły modulacji, timingów i dużo, dużo więcej.