Co piszczy w ramce Wi-Fi? 4 adresy MAC!

Mówiąc o adresach MAC w ramce sieciowej na pierwszą myśl przychodzi ramka ethernetowa, a w niej adresy source i destination. W zasadzie to wszystko czego potrzebujemy w celu jej poprawnego zaadresowania. Zatem co takiego szczególnego jest w sieci Wi-Fi, że w ramce mamy miejsce na aż 4 adresy MAC?

Topologie w świecie Wi-Fi

Zacznijmy od form i rodzajów powiązań, które możemy spotkać w sieci Wi-Fi. Nie są to wszystkie możliwości, wybrałem tylko takie, których zrozumienie jest niezwykle istotne w celu sprawnego przejścia do tematu adresacji w dalszej części artykułu.

Basic Service Set

Podstawową topologią w sieci Wi-Fi jest BSS, czyli Basic Service Set, do którego należą Access Point oraz klienci bezprzewodowi. Stacje klienckie wchodzą w skład BSS wtedy, gdy są w stanie komunikować się z Access Pointem po warstwie drugiej modelu ISO/OSI, a także jednocześnie posiadają status associated (połączony z Access Pointem). Poniższy rysunek przedstawia BSS złożony z jednego Access Pointa oraz trzech stacji klienckich.

Basic Service Set składający się z AP i trzech klientów, źródło: CWNP
Basic Service Set składający się z AP i trzech klientów, źródło: CWNP

„Czy wiesz że…?”

W standardowym rozwiązaniu ruch pomiędzy dwiema stacjami klienckimi należącymi do tego samego BSS musi zawsze przejść przez Access Pointa, który w takim rozwiązaniu pełni rolę pośrednika. Organizacja Wi-Fi Alliance opracowała technologię Wi-Fi Direct, dzięki której komunikacja pomiędzy dwoma klientami może odbyć się bezpośrednio, tym samym omijając Access Pointa.

Basic Service Set Identifier

Ściśle powiązany z BSS jest BSSID, czyli Basic Service Set Identifier. Jest to identyfikator pozwalający w sposób jednoznaczny rozpoznać dany BSS na poziomie warstwy drugiej modelu ISO/OSI.

W praktyce jest to po prostu adres MAC konkretnej sieci bezprzewodowej, na konkretnym radiu, na konkretnym Access Poincie. Dzięki temu klient jest w stanie rozróżnić np. dwie sieci bezprzewodowe o tej samej nazwie, które rozgłaszane są przez dwa różne Access Pointy.

Distribution System

Standard IEEE 802.11 definiuje także pojęcie Distribution System (DS), którego zadaniem jest zapewnienie łączności przewodowej danemu BSS. W praktyce oznacza to po prostu sieć LAN, całą infrastrukturę kablową i Switche, dzięki którym pojedynczy BSS lub wiele odrębnych BSS mogą otrzymać połączenie kablowe z pozostałą częścią sieci. We współczesnych wdrożeniach w zasadzie jedynym spotykanym rozwiązaniem dla utworzenia DS jest użycie standardu IEEE 802.3 Ethernet. Poniższy rysunek przedstawia Distribution System łączący dwa odrębne BSS.

Distribution System łączący dwa odrębne BSS, źródło: CWNP
Distribution System łączący dwa odrębne BSS, źródło: CWNP

Wireless Distribution System

WDS, czyli Wireless Distribution System jest bezpośrednio związany z pojęciem DS. Jedyną różnicą jest to, że w tym przypadku BSS jako „wyjście na świat” używa połączenia bezprzewodowego zamiast przewodowego. WDS spotkamy zatem we wdrożeniach sieci typu Mesh, a także w przypadku repeaterów Wi-Fi i mostów Wi-Fi.

Poniższy rysunek przedstawia ułamek wdrożenia sieci typu Mesh. W tym przypadku Access Pointy komunikują się między sobą przy użyciu częstotliwości 5 GHz, i właśnie to połączenie to dla nich WDS. Warto dodać, że w tym przykładzie dla klientów Wi-Fi przeznaczona jest tylko częstotliwość 2.4 GHz.

Wireless Distribution System na przykładzie sieci typu Mesh
Wireless Distribution System na przykładzie sieci typu Mesh, źródło: CWNP

Independent Basic Service Set

Kiedyś, gdy nie posiadałem jeszcze domowego Routera Wi-Fi, chcąc połączyć co najmniej dwa laptopy rozpoczynałem długą i usłaną problemami zabawę w celu utworzenia połączenia ad hoc. Jest to nazwa używana zamiennie z IBSS, czyli Independent Basic Service Set, dla określenia połączeń bezprzewodowych bezpośrednio pomiędzy stacjami klienckimi, w sieci nie posiadającej Access Pointa. Poniższy rysunek przedstawia sieć IBSS złożoną z czterech urządzeń.

Independent Basic Service Set złożony z czterech urządzeń
Independent Basic Service Set złożony z czterech urządzeń

Co z tymi czterema adresami?

No właśnie, o co tu chodzi? W sieci Ethernet wystarczą tylko dwa adresy, wspomniane już source i destination, w celu przesłania ramki pomiędzy dwoma urządzeniami w tej samej domenie rozgłoszeniowej. Sytuacja mocno komplikuje się w sieci bezprzewodowej, gdzie zwyczajnie mamy więcej możliwych przypadków, które należy prawidłowo obsłużyć.

Bardzo wysoki High Level View na temat czterech adresów MAC w ramce IEEE 802.11
Bardzo wysoki High Level View na temat czterech adresów MAC w ramce IEEE 802.11

Zacznijmy jednak od podstawowej informacji, czyli od budowy ramki Wi-Fi. Standard IEEE 802.11 definiuje ją w taki sposób, jak jest to przedstawione na poniższym rysunku.

Format ramki IEEE 802.11
Format ramki IEEE 802.11

W tym momencie skupię się wyłącznie na elementach bezpośrednio dotyczących adresacji. Przede wszystkim należy zajrzeć do środka pola Frame Control, które składa się z 16 bitów, tak jak przedstawiono na poniższym rysunku.

Zawartość pola Frame Control w ramce IEEE 802.11
Zawartość pola Frame Control w ramce IEEE 802.11

Uwagę należy zwrócić na dwa pola – To DS i From DS, czyli po prostu To Distribution System i From Distribution System. Są to dwie flagi, których ustawienie wpływa na użycie poszczególnych pól z adresami MAC. Oba pola przenoszą tylko jeden bit danych, mamy zatem cztery możliwe kombinacje:

Możliwe kombinacje pól To DS i From DS oraz odpowiadające im ustawienia pól adresowych
Możliwe kombinacje pól To DS i From DS oraz odpowiadające im ustawienia pól adresowych

Zanim wyjaśnię o co chodzi w danej kombinacji musimy przyjrzeć się bliżej skrótom, które pojawiły się w powyższej tabeli:

  • Source Address (SA) – adres MAC oryginalnej stacji nadawczej, czyli takiej, z której faktycznie dana ramka została wysłana. SA może pochodzić zarówno od stacji bezprzewodowej, jak i od urządzenia podłączonego do sieci kablem.
  • Destination Address (DA) – adres MAC końcowej stacji odbiorczej, czyli takiej, do której faktycznie adresowana jest dana ramka. DA może pochodzić zarówno od stacji bezprzewodowej, jak i od urządzenia podłączonego do sieci kablem.
  • Transmitter Address (TA) – adres MAC radia na urządzeniu posiadającym kartę bezprzewodową (może to być Access Point, ale także klient bezprzewodowy), które wysyła ramkę do medium bezprzewodowego.
  • Receiver Address (RA) – adres MAC radia na urządzeniu posiadającym kartę bezprzewodową (może to być Access Point, ale także klient bezprzewodowy), które odbiera ramkę z medium bezprzewodowego.
  • Basic Service Set Identifier (BSSID) – adres MAC radia na Access Poincie.

Ustawienie flag To DS i From DS wpływa bezpośrednio na użycie czterech pól adresowych z adresami MAC, każde o długości 6 bajtów. Przyjrzyjmy się wszystkim możliwym kombinacjom.

UWAGA! W każdym poniższym przykładzie rozpatrujemy adresację ramki wyłącznie na połączeniu bezprzewodowym.

To DS = 0, From DS = 0

W tym przypadku ramka ani nie pochodzi z Distribution System, ani nie zmierza w jego kierunku. Są dwie możliwości wystąpienia takiej sytuacji. Pierwsza z nich to ramki typu Management oraz Control. Poniższy rysunek przedstawia adresację ramki Association Response, która została wysłana przez Access Pointa w kierunku bezprzewodowej stacji klienckiej. RA jest jednakowe z DA i oznacza adres MAC klienta, TA jest jednakowe z SA i oznacza adres MAC radia na Access Poincie, a BSSID to dodatkowa informacja, w tym przypadku to również adres MAC radia na Access Poincie. Pole Address 4 nie jest używane w tej kombinacji.

Adresacja ramki Association Response wysłanej z AP do klienta
Adresacja ramki Association Response wysłanej z AP do klienta

Druga możliwość to komunikacja wewnątrz IBSS. W tym przypadku RA jest jednakowe z DA i oznacza adres MAC klienta-odbiorcy, TA jest jednakowe z SA i oznacza adres MAC klienta-nadawcy, a BSSID to wirtualny adres danego IBSS, wygenerowany automatycznie przez pierwszą stację do niego podłączoną. Pole Address 4 ponownie nie jest używane.

Adresacja ramki wewnątrz IBSS
Adresacja ramki wewnątrz IBSS

To DS = 0, From DS = 1

W tej kombinacji mamy do czynienia z ramką danych, która pochodzi z Distribution System (np. urządzenie podłączone po kablu do sieci), a jej adresatem jest bezprzewodowa stacja kliencka. W tym przypadku RA jest jednakowe z DA i oznacza adres MAC klienta bezprzewodowego, TA jest jednakowe z BSSID i oznacza adres MAC radia na Access Poincie, a SA oznacza adres MAC urządzenia podłączonego do sieci po kablu. Pole Address 4 nie jest używane w tej kombinacji.

Adresacja ramki wysłanej przez Access Point w konfiguracji To DS = 0, From DS = 1
Adresacja ramki wysłanej przez Access Point w konfiguracji To DS = 0, From DS = 1

To DS = 1, From DS = 0

W tym przypadku ramka danych została wysłana przez klienta bezprzewodowego w kierunku stacji podłączonej do sieci po kablu. RA jest jednakowe z BSSID i oznacza adres MAC radia na Access Poincie, TA jest jednakowe z SA i oznacza adres MAC klienta bezprzewodowego, a DA oznacza adres MAC urządzenia podłączonego do sieci po kablu. Pole Address 4 nie jest używane w tej kombinacji.