Skoro mamy adresy IP w warstwie trzeciej modelu OSI to po co nam w sumie dodatkowa adresacja w L2? Jaki jest sens warstwy drugiej? Choć obecnie prym w komunikacji sieciowej wiedzie architektura TCP/IP, to w zrozumieniu funkcjonowania sieci komputerowych cały czas przydatny jest model referencyjny ISO/OSI. Zdefiniował on zasady, które określają w jaki sposób przebiega komunikacja między urządzeniami w sieciach komputerowych. Dzisiaj chcę przyjrzeć się bliżej warstwie drugiej modelu ISO/OSI, czyli warstwie łącza danych.
Czym jest warstwa łącza danych?
Możliwe, że znane jest już Ci stwierdzenie, że switch jest urządzeniem warstwy drugiej, a router urządzeniem warstwy trzeciej (co oczywiście tylko częściowo jest prawdą, więcej na ten temat napisaliśmy w tym artykule). Odniesienia te nawiązują właśnie do warstw modelu sieciowego ISO/OSI, dlatego płynne poruszanie się między funkcjami zdefiniowanymi w poszczególnych jego warstwach jest bardzo przydatne.
Komunikacja sieciowa to proces, w trakcie którego poszczególne warstwy ściśle ze sobą współpracują. W zasadzie nie da się mówić o warstwie drugiej, w oderwaniu od pozostałych warstw.
Przypomnijmy więc sobie jak wygląda model ISO/OSI. Definiuje on siedem warstw (ang. layers) odpowiedzialnych za poszczególne etapy komunikacji między urządzeniami. Nasze dane mogą poruszać się od warstwy aplikacji w dół do warstwy fizycznej – proces ten nazywa się enkapsulacją. Transfer danych w drugą stronę to dekapsulacja.
Należy również pamiętać, że w trakcie enkapsulacji dane nie zmieniają się, ale poszczególne warstwy dodają do nich dodatkowe informacje (w postaci nagłówka lub stopki) istotne z punktu widzenia danej warstwy. W przypadku dekapsulacji dane te są usuwane. W ten sposób w każdej warstwie powstają różne typy danych (ang. Protocol Data Unit, w skrócie PDU). W warstwie drugiej podstawową jednostką będą ramki.
Funkcje warstwy drugiej
Za jakie funkcje w komunikacji sieciowej odpowiedzialna jest więc warstwa druga? Łączy ona dwa bardzo odmienne oblicza sieci komputerowych. Z jednej strony jest warstwa fizyczna, związana z przesyłaniem surowych zer i jedynek przez media transmisyjne. Z drugiej strony jest warstwa sieciowa stanowiąca logiczne połączenia między urządzeniami znajdującymi się w różnych sieciach.
Tak naprawdę w zakresie funkcji jakie pełni warstwa druga możemy znaleźć wiele analogii do wyższych warstw ISO/OSI. Adresowanie, odnajdywanie tras, multipleksacja, kontrola przepływu, wykrywanie błędów. Funkcje te odnajdziesz w warstwie sieciowej i transportowej, ale również w warstwie łącza danych, tylko że w innej skali i formie. Warstwa trzecia i czwarta będą koncentrować się na komunikacji hostów znajdujących się w różnych, często bardzo odległych sieciach. Warstwa druga jest natomiast ściśle związana z siecią LAN rozumianą jako zbiór wszystkich urządzeń znajdujących się w tej samej domenie rozgłoszeniowej (szerzej na temat domeny rozgłoszeniowej możesz przeczytać w tym artykule). Ma więc zapewniać komunikację między urządzeniami, które są ze sobą fizycznie połączone.
Warstwa druga jest więc swego rodzaje pomostem, umożliwiającym komunikację między różnymi protokołami warstwy sieciowej, ale przede wszystkim między różnorodnymi mediami transmisyjnymi, zarówno przewodowymi jak i bezprzewodowymi.
W zależności od wykorzystywanego medium i użytego standardu, mogą występować różnice w zakresie wykorzystywanych mechanizmów, czy samej budowy ramki. W ramach tego artykułu chciałbym się skupić na standardzie Ethernet 802.3 opracowanym przez IEEE (Institute of Electrical and Electronics Engineers), ponieważ jest on powszechnie znany i na jego bazie najłatwiej będzie Ci zrozumieć działanie warstwy łącza danych.
Główne zadania warstwy drugiej
Mówiąc ogólnie można określić, że do głównych zadań warstwy drugiej będzie należeć:
- Odebranie danych z warstwy trzeciej;
- Odpowiednie zapakowanie danych, by były one możliwe do przesłania przez medium transmisyjne;
- Przesłanie danych do kolejnego hosta;
- Kontrola dostępu do medium transmisyjnego.
Jak sam widzisz przed warstwą drugą stoi wiele poważnych wyzwań. Aby prawidłowo połączyć funkcje warstwy pierwszej i trzeciej warstwa łącza danych podzielona jest na dwie podwarstwy:
LLC – Logical Link Control;
MAC – Media Access Control.
Zobaczmy czym dokładnie zajmują się te podwarstwy.
Cykl artykułów o VLANach
Artykuły publikowane w ramach cyklu o VLANach można czytać niezależnie, ale najlepsze efekty osiągniesz, jeśli zapoznasz się z nimi po kolei. Cały cykl składa się z następujących artykułów:
Jaka jest rola podwarstwy LLC?
Na potrzeby podwarstwy Logical Link Control IEEE opracował oddzielny standard 802.2.
Jednym z głównych zadań LLC jest współpraca z warstwą sieciową. LLC umieszcza w ramce informacje, które umożliwiają identyfikację protokołu sieciowego. Dzięki temu wiele różnych protokołów, jak choćby IPv4, IPv6, ARP czy MPLS może uzyskać dostęp do medium transmisyjnego. Mechanizm ten nazywa się multipleksacją (ang. multiplexing).
Tak jak wspomniałem wcześniej, podstawową jednostką danych warstwy drugiej jest ramka. Na temat tego jak kształtowała się historia budowy ramki Ethernetowej możesz przeczytać tutaj. Najczęściej wykorzystywanym w sieciach formatem jest obecnie ramka Ethernet II. Informacje na temat protokołu warstwy trzeciej zawarte są w polu Type/Lenght. Przykładowo dla IPv4 wartość tego pola wynosi 0x0800, a dla IPv6 jest to 0x86DD.
Kolejną istotną funkcją LLC jest kontrola przepływu (ang. flow control). Jej zadaniem jest synchronizacja przesyłu danych między hostami. Kontrola przepływu ogranicza i koordynuje ilość danych, które nadawca może wysłać do odbiorcy. Funkcja ta chroni więc przed sytuacją, gdy nadawca przesyła większą ilość danych, niż jest w stanie otrzymać odbiorca.
Do czego służy podwarstwa MAC?
Głównym zadaniem podtwarstwy MAC jest przygotowanie danych do wysyłki poprzez medium transmisyjne. W tym celu wykorzystuje więc ramki, które następnie są zamieniane na strumienie bitów.
Bardzo ważną funkcją jest adresowanie MAC. Adres MAC w standardzie Ethernet ma postać sześciu par cyfr hexadecymalnych (razem 48 bitów) rozdzielonych najczęściej dwukropkiem lub myślnikiem. Jest on przydzielany już na etapie produkcji danego urządzenia, dlatego też często nazywany jest adresem fizycznym i z założenia jest niezmienny. Dzięki temu zagwarantowana jest unikalność adresów MAC. Pozwala to uniknąć konfliktów w sieci wynikających z powtarzających się adresów, a jednocześnie odciąża administratora, który musi przecież dbać jeszcze o adresację IP.
Pamiętaj, że adres MAC ma umożliwić komunikację między urządzeniami, które są ze sobą fizycznie połączone. Jeśli koncepcja adresów fizycznych i adresów IP nadal nie jest dla Ciebie zrozumiała to wyobraź sobie sytuację, że zamawiasz paczkę z dużego sklepu Internetowego. Żeby mógł Ci ją dowieźć kurier musisz podać swój adres domowy. Pełni on taką samą funkcję jak adres IP, czyli umożliwia wysyłkę na duże odległości. Jednak zanim Twoja przesyłka trafi do kuriera, musi opuścić magazyn. Aby magazynier mógł przekazać paczkę kurierowi potrzebuje informacji, gdzie znajduje się ona w magazynie. Musi wiedzieć konkretnie na jakim regale oraz półce się znajduje – taką rolę pełni właśnie adres MAC. Pamiętaj, że protokołem, który będzie odpowiedzialny za mapowanie adresów MAC sąsiadów jest ARP, czyli Address Resolution Protocol.
Kontrola dostępu do medium
Podwarstwa MAC odpowiada również za kontrolę dostępu do medium. W początkowej fazie rozwoju sieci przewodowych Ethernet wszystkie urządzenia podłączano do wspólnego medium, którym był kabel koncentryczny. Należało więc opracować sposób, dzięki któremu mogły one wspólnie korzystać z medium, jednocześnie nie zakłócając wzajemnie transmisji. Wykorzystano do tego mechanizm detekcji kolizji (ang. Carrier Sense Multiple Access with Collision Detection – CSMA/CD).
Choć kiedyś kontrola dostępu była niezbędna dla prawidłowego funkcjonowania sieci Ethernet, to w dzisiejszych czasach, z racji powszechnego wykorzystania switchy, funkcja ta nie jest już tak istotna. Wynika to z tego, że każdy port na switchu stanowi osobną domenę kolizyjną, co stanowi barierę dla kolizji.
Dodatkowo przy wysyłaniu ramki dodawana jest stopka (ang. trailer), w której zawiera się suma kontrolna ramki (ang. FCS – Frame Check Sequence). Umożliwia ona wykrywanie potencjalnych błędów (ang. error detection) pojawiających się podczas transmisji danych. Do obliczenia sumy kontrolnej wykorzystujemy z kolei specjalny algorytm CRC (ang. Cyclic Redundancy Check). Po otrzymaniu ramki urządzenie oblicza jej sumę kontrolną. Jeśli wynik jest taki sam jak w sumie zawartej w polu FCS, to znaczy, że ramkę przesłano bez zakłóceń.
Co ważne, w przypadku wykrycia błędów lub utraty części danych ramka zostanie odrzucona. W warstwie drugiej nie został więc zaimplementowany mechanizm naprawy błędów (ang. error recovery). W przypadku potrzeby retransmisji będzie wykorzystywana warstwa transportowa i protokół TCP.
Relacje między warstwami, a standardami Ethernet
Warstwy, podwarstwy, różne media transmisyjne, mnogość standardów Ethernet… Z pewnością nie jednemu administratorowi sieci ogarnięcie tych wszystkich relacji sprawia kłopot. Żeby lepiej zrozumieć te zależności warto przyjrzeć im się z innej perspektywy. Przeczytasz o tym w naszym darmowym NSSletterze – mailingu dla sieciowców głodnych wiedzy.
Dołączając uzyskasz dostęp również do archiwum – tematykę tego artykułu rozszerzyliśmy w NSSleterze 21. Rozwiń swoją wiedzę już teraz i zapisz się używając formularza poniżej.