Model OSI (Open Systems Interconnection) opisuje sposób przepływu informacji między aplikacjami software'owymi w jednej stacji sieciowej a software'owymi aplikacjami w innej stacji sieciowej przy użyciu kabla sieciowego. Model OSI jest modelem koncepcyjnym, skomponowanym z siedmiu warstw, z których każda opisuje określone funkcje sieciowe. Model został opracowany przez ISO (International Standardization Organization) w 1984 r. i w zasadzie powinien być znany przez każdego, kto zajmuje się sieciami komputerowymi. Model OSI dzieli zadanie przesyłania informacji między stacjami sieciowymi na siedem mniejszych zadań składających się na poszczególne warstwy. Zadanie przypisane każdej warstwie ma charakter autonomiczny i może być implementowane niezależnie.
Należy wyraźnie zaznaczyć, że model OSI jest tylko ogólnym modelem koncepcyjnym komunikacji między stacjami podłączonymi do sieci. Model OSI nie określa szczegółowych metod komunikacji. Mechanizmy rzeczywistej komunikacji są określone w formie protokołów komunikacyjnych (Communication Protocols).
Protokołem komunikacyjnym nazywamy zbiór formalnych reguł i konwencji szczegółowo określających mechanizmy wymiany informacji między stacjami połączonymi medium transmisyjnym (kablem sieciowym).
Protokół realizuje funkcje jednej lub wielu warstw modelu OSI. Zwracamy uwagę, że istniejąca obecnie bardzo duża liczba różnych protokołów komunikacyjnych utrudnia często zorientowanie się w mechanizmach działania sieci. Pomocne może okazać się uświadomienie sobie podziału wszystkich protokołów komunikacyjnych na następujące klasy:
Protokoły sieci lokalnych obsługują funkcje dwóch najniższych warstw modelu OSI (warstw Fizycznej i Łącza danych). Protokoły sieci rozległych obsługują funkcje trzech najniższych warstw modelu OSI (Fizycznej, Łącza danych i Sieciowej) i definiują komunikację przez różne media stosowane w sieciach rozległych. , Protokoły trasowania, obsługujące warstwę Sieciową modelu OSI, są odpowiedzialne za określanie tras przepływu pakietów. Protokoły sieciowe to zbiory wielu różnych protokołów obsługujących wyższe warstwy modelu OSI (np. AppleTalk, DECnet, SNA, IP, IPX).
Informacja przesyłana z aplikacji programowej w jednej stacji sieciowej (np. A) do aplikacji software'owej w innej stacji sieciowej (np. B) musi przejść każdą warstwę modelu OSI w obu stacjach.
Na przykład w sytuacji, gdy stacja sieciowa A, mając do przesłania aplikację programową do stacji B, sprawia, że program aplikacyjny w stacji A wysyła swoje informacje do warstwy Aplikacja (warstwa 7). Warstwa Aplikacja przesyła następnie informację do warstwy Prezentacja (warstwa 6), która przesyła informację do warstwy Sesja (warstwa 5) itd., aż do warstwy Fizycznej (warstwy 1). W warstwie Fizycznej informacja zostaje przekazana do medium, po którym dociera do stacji sieciowej B. Tutaj warstwa Fizyczna stacji B odbiera informację i przekazuje ją do warstwy Łącza danych (warstwa 2), która przesyła ją do warstwy Sieciowej (warstwa 3) itd., aż do warstwy Aplikacja (warstwa 7) w stacji sieciowej B. Na zakończenie tego procesu warstwa Aplikacja stacji B przesyła informację do odbiorczego programu aplikacyjnego w celu zakończenia procesu komunikacji.
Warstwy modelu OSI używają różnych form informacji sterujących służących do komunikowania się równorzędnych warstw różnych stacji sieciowych. Wspomniane informacje sterujące zawierają żądania i instrukcje wymieniane między równorzędnymi warstwami modelu OSI.
Informacje sterujące mogą mieć jedną z dwóch form: nagłówka lub końcówki. Nagłówek jest przedrostkiem dodawanym do informacji przesyłanej "w dół", począwszy od najwyższej warstwy. Końcówka zaś jest uzupełnieniem informacji przesyłanej "w dół", począwszy od warstwy najwyższej.
Nagłówki, końcówki i dane są pojęciami zależnymi od warstwy, w której analizowana jest jednostka informacji. Na przykład w warstwie Sieciowej jednostka informacji składa się z nagłówka warstwy 3 i danych. W warstwie Łącza danych cała informacja przesyłana w dół przez warstwę Sieciową (nagłówek warstwy Sieciowej i dane) jest traktowana jako dane.
Inaczej mówiąc, porcja danych jednostki informacyjnej w konkretnej warstwie modelu OSI może zawierać nagłówki, końcówki i dane pochodzące ze wszystkich wyższych warstw. Jest to znane pod nazwą kapsułkowania.
Wymiana informacji następuje między równorzędnymi warstwami modelu OSI. Każda warstwa w stacji nadawczej dodaje informacje sterujące (nagłówki i/lub końcówki) do danych, a każda warstwa w stacji odbiorczej analizuje i usuwa z tych danych informacje sterujące.
Jeśli stacja A ma w aplikacji software'owej dane do przesłania do stacji B, to dane te są przekazane do warstwy Aplikacja. Warstwa Aplikacja w stacji A komunikuje o tym dowolną informację sterującą wymaganą przez warstwę Aplikacja w stacji B przez dodanie nagłówka do danych. Wynikowa jednostka informacji (nagłówek i dane) zostaje przesłana do warstwy Prezentacja, która dodaje swój własny nagłówek, zawierający informację sterującą przeznaczoną dla warstwy Prezentacja w stacji B. Rozmiar jednostki informacji zwiększa się, ponieważ w każdej warstwie dodawany jest nowy nagłówek (a czasem także końcówka) zawierający informację sterującą przeznaczoną dla równorzędnej warstwy w stacji B. Warstwa Fizyczna stacji A całą jednostkę informacji przekazuje do medium sieciowego.
Warstwa Fizyczna w stacji B odbiera jednostkę informacyjną i przekazuje ją do warstwy Łącza danych. Warstwa ta odczytuje następnie informacje sterujące zawarte w nagłówku, przygotowane przez warstwę Łącza danych w stacji A. Następnie nagłówek zostaje usunięty, a pozostała zawartość jednostki informacji zostaje przekazana do warstwy Sieciowej. Każda warstwa realizuje taką sama czynność: odczytuje nagłówek przynależny tej warstwie, następnie usuwa go, a pozostałą jednostkę informacji przekazuje do następnej, wyższej warstwy. Po zrealizowaniu takiego zadania przez warstwę Aplikacja dane są przekazane do oprogramowania użytkowego w stacji B w formie, w jakiej zostały wysłane przez aplikacje w stacji A.
W sieci (lub intersieci) przesyłane są dane oraz informacje sterujące. Jedne i drugie mogą przyjmować różne formaty. Warto zwrócić uwagę na to, że nazwy tych formatów, zarówno w literaturze, jak i w praktyce, nie zawsze są używane konsekwentnie i, co gorsze, czasami zamiennie, co może powodować spore nieporozumienia.
Ramka, pakiet, komórka, datagram, segment, komunikat to formy (formaty) informacji przesyłane w sieci (lub intersieci):
Ramka (Frame) to jednostka informacji, której źródłem i przeznaczeniem jest warstwa Łącza danych (warstwa 2) modelu OSI. Ramka składa się z trzech elementów:
Nagłówek i końcówka zawierają informację sterującą przeznaczoną dla warstwy Łącza danych w stacji odbiorczej. Można powiedzieć, że dane z wyższej warstwy są otoczone (kapsułkowane) przez nagłówek i końcówkę warstwy Łącza danych. Przedstawiony tu format ramki ma charakter ogólny; każda technologia sieciowa (np. Ethernet, Token Ring, FDDI) ma swój specyficzny format ramki, przedstawiony szczegółowo przy opisie tych technologii.
Pakiet (Packet) to jednostka informacji, której źródłem i przeznaczeniem jest warstwa Sieciowa (warstwa 3) modelu OSI. Pakiet składa się z trzech elementów:
Nagłówek i końcówka zawierają informację sterującą przeznaczoną dla warstwy 3 w stacji odbiorczej. Można powiedzieć, że dane z wyższej warstwy są otoczone (kapsułkowane) przez nagłówek i końcówkę warstwy 3.
Komórka (Cell) to jednostka informacji złożona z dwóch elementów:
Komórka ma zawsze stałą długość 53 bajtów i odnosi się do warstwy Łącza danych (warstwa 2) modelu OSI. Komórki są używane w sieciach technologii ATM (Asynchronous Transfer Mode) i SMDS (Switched Multimegabit Data Service).
Datagram, segment, komunikat Datagram jest jednostką informacji, której źródłem i przeznaczeniem jest warstwa Sieciowa (warstwa 3) modelu OSI, używająca bezpołączeniowej obsługi sieci. Segment jest jednostką informacji, której źródłem i przeznaczeniem jest warstwa Transportowa modelu OSI. Komunikat jest jednostką informacji, której źródłem i przeznaczeniem jest zwykle warstwa Aplikacji.
Współczesne, coraz większe sieci komputerowe są zwykle zorganizowane hierarchicznie, co ułatwia ich zarządzanie, zwiększa elastyczność w razie modyfikacji i redukuje zbędny ruch. Dlatego Międzynarodowa Organizacja Standaryzacyjna ISO (International Organization for Standardization) sprecyzowała cztery pojęcia dla określania różnych części hierarchicznej struktury sieciowej. Są to:
System końcowy ES to urządzenie, często zwane stacją sieciową, nie wykonujące funkcji zmiany kierunku przepływu informacji, a w szczególności trasowania. Typowymi urządzeniami należącymi do klasy ES są terminale, personalne lub sieciowe komputery i drukarki.
System pośredniczący IS to urządzenie zmieniające kierunek przepływu informacji w sieci; należą tu takie urządzenia jak routery (Routers), przełączniki (Switches) i mosty (Bridges).
Obszarem A nazywamy grupę logiczną sieciowych segmentów i związane z nimi urządzenia. Obszary są częściami systemów autonomicznych. System autonomiczny AS jest zbiorem sieci znajdujących się pod działaniem wspólnego systemu zarządzającego i mającego wspólną strategię trasowania. Systemy autonomiczne czasem nazwane są segmentami.
Protokoły i obsługiwany przez nie ruch danych w sieci mogą mieć charakter połączeniowy lub bezpołączeniowy. W połączeniowej obsłudze danych używana jest trasa (ścieżka) między stacją nadawczą a stacją odbiorczą, utworzona tylko na czas trwania transmisji. W obsłudze bezpołączeniowej dane przepływają przez połączenie ciągle istniejące.
W usłudze połączeniowej można wyróżnić trzy fazy:
W wyniku budowy połączenia zostaje utworzona pojedyncza ścieżka między stacją nadawczą a stacją odbiorczą. Zasoby sieciowe powinny mieć rezerwę pozwalającą na zapewnienie realizacji usługi, np. zagwarantowaną szybkość przesyłania danych.
W fazie przesyłania dane są transmitowane przez utworzoną ścieżkę w sposób sekwencyjny. Dane docierają do stacji odbiorczej w kolejności ich wysyłania przez stację nadawczą.
W fazie likwidacji połączenia utworzone połączenie ulega przerwaniu. Dalsza transmisja między stacjami nadawczą i odbiorczą musi być ponownie poprzedzona fazą budowy połączenia.
Usługę połączeniową charakteryzują dwie istotne wady w porównaniu z usługą bezpołączeniową:
Statyczny wybór ścieżki jest kłopotliwy, ponieważ oznacza potrzebę przesyłania całego ruchu przez tę samą statyczną trasę; uszkodzenie jej w dowolnym miejscu powoduje zerwanie całego połączenia. Statyczna rezerwacja zasobów sieciowych stwarza kłopoty, ponieważ wymaga gwarantowanej szybkości transmisji oraz zaangażowania zasobów sieciowych, z których nie mogą korzystać inni użytkownicy sieci.
Należy jednak podkreślić, że połączeniowa usługa jest bardzo przydatna w aplikacjach nie tolerujących opóźnień. Na przykład zastosowania wymagające przesyłania głosu i obrazu są oparte na usługach połączeniowych.
W usłudze bezpołączeniowej nie buduje się jedynej ścieżki między stacją nadawczą i odbiorczą, pakiety do stacji odbiorczej mogą docierać w innej kolejności niż są wysyłane przez stację nadawczą, ze względu na to, że mogą być przesyłane różnymi trasami. W usłudze bezpołączeniowej dane przepływają przez trwałe połączenia między węzłami sieci, a każdy pakiet jest obsługiwany indywidualnie i niezależnie od innych pakietów danego komunikatu. Jest to możliwe pod warunkiem, że każdy pakiet jest kompletnie zaadresowany, to znaczy, że każdy z nich ma swój adres stacji nadawczej i stacji odbiorczej.
Usługa bezpołączeniowa ma dwie zalety:
Dynamiczna selekcja ścieżki umożliwia trasowanie z pominięciem uszkodzonego miejsca w sieci dzięki sterowaniu przepływem odnoszącym się do każdego pakietu z osobna. Dynamiczny przydział pasma jest bardzo efektywny, ponieważ pasmu nie przydziela się zasobów, jeśli nie są one używane.
Usługi bezpołączeniowe są zalecane przy transmisji danych w aplikacjach tolerujących pewne opóźnienia i powtórzenia.
Aby w sieci mogła poprawnie przebiegać transmisja informacji, interfejs każdego urządzenia lub grupy urządzeń musi mieś swój unikatowy adres. Mechanizmy adresowania są zależne od protokołu sieciowego i warstwy w modelu OSI. Można wyróżnić trzy zasadnicze typy adresów:
Adres warstwy 2 modelu OSI jednoznacznie identyfikuje każde połączenie urządzenia z siecią. Jest także często nazywany fizycznym adresem (Hardware Address).
Stacje sieciowe (systemy końcowe ES) mają zwykle tylko jedno fizyczne połączenie z siecią, co oznacza, że mają tylko jeden adres warstwy 2 modelu OSI. Natomiast routery i inne urządzenia intersieciowe mają zwykle wiele połączeń z siecią i w konsekwencji wiele adresów warstwy 2 modelu OSI.
Adresy MAC (Media Access Control) są podzbiorem adresów warstwy 2 modelu OSI. Adres MAC ma długość 48 bitów i jest pokazany na rysunku Fizyczny adres... w postaci 12 cyfr hexadecymalnych. Składa się z dwóch podstawowych części: w pierwszej z nich zapisany jest kod producenta karty sieciowej, przydzielany przez IEEE (Institute of Electrical and Electronic Engineers), a w drugiej - unikatowy adres karty sieciowej tego producenta. W dolnej części rysunku pokazano adres rozgłoszeniowy (Broadcast Address) karty Ethernet, używany przy stosowaniu protokołu ARP do automatycznego odszukiwania adresów fizycznych stacji sieciowych i routerów. Adresem rozgłoszeniowym jest 48 jedynek zapisanych w sześciu bajtach adresu.
Adresy warstwy Sieciowej zwykle należą do hierarchicznej przestrzeni adresowej i są także nazywane adresami wirtualnymi lub logicznymi. Bardzo ważna jest zależność między adresami warstwy sieciowej a urządzeniami sieciowymi.
W intersieci przestrzeń adresowa zwykle przyjmuje jedną z dwóch form: hierarchiczną lub płaską.
Hierarchiczna przestrzeń adresowa jest zorganizowana z myślą o podgrupach, z których każda kolejna zawęża adres aż do wskazania pojedynczego urządzenia.
Płaska przestrzeń adresowa odnosi się do jednej grupy.
Adresowanie hierarchiczne cechuje wiele zalet w porównaniu do adresowania płaskiego, np. sortowanie adresów jest znacznie uproszczone przez stosowanie operacji porównania.
Przydzielanie adresów Można wyróżnić trzy sposoby przydziału adresów:
Adresy statyczne przydziela administrator sieci stosownie do wcześniej przyjętego planu adresacji. Adres statyczny pozostaje niezmienionym aż do momentu zdecydowania o tym przez administratora sieci. Adresy dynamiczne są przydzielane urządzeniom w momencie podłączenia ich do sieci przez działanie pewnych specyficznych protokołów. Dowolne urządzenie używające dynamicznego adresowania często ma inny adres po każdym podłączeniu urządzenia do sieci. Adresy przydzielane przez serwer są ponownie przydzielane po uprzednim odłączeniu urządzenia od sieci, a następnie jego podłączeniu.
Urządzenia zainstalowane w sieci mają adresy z nimi związane. Nazwy są niezależne od lokalizacji i związane z urządzeniem, nawet jeśli urządzenie to zostaje przeniesione do innego miejsca (np. z budynku do budynku). Adresy niezależne od lokalizacji nie zmieniają się, gdy urządzenie zmienia lokalizację (chociaż adresy MAC należą do wyjątków).
Sterowanie przepływem polega na zapobieganiu przeciążaniu sieci przez unikanie nadmiaru informacji napływających do stacji odbiorczej ze stacji nadawczej. Istnieje wiele przyczyn powodujących przeciążanie sieci, np. bardzo szybki komputer może generować informację z szybkością większą niż przepływność sieci lub stacja odbiorcza jest zbyt wolna, by szybko napływającą informację odebrać i przetworzyć.
Są trzy metody zapobiegania przeciążeniom sieci komputerowej:
Buforowanie polega na chwilowym zapamiętywaniu nadmiaru informacji w pamięci (buforze) do czasu, kiedy będzie mogła być przetworzona. Okazjonalne "przepełnienia" danych są skutecznie obsługiwane przez mechanizm buforowania. Jeśli jednak "przepełnienia" są zbyt intensywne, mechanizm buforowania może zawieść i następuje "odrzucenie" niektórych datagramów.
Komunikaty ograniczające szybkość transmisji stacji nadawczej zapobiegają nadmiarom występującym w buforach stacji odbiorczych. Dzieje się to w ten sposób, że stacja odbiorcza wysyła komunikat do stacji nadawczej żądający zmniejszenia szybkości jej transmisji. Początkowo stacja odbiorcza zaczyna odrzucać przyjmowane dane, w miarę jak następuje przepełnianie buforów, po czym rozpoczyna wysyłanie komunikatu (żądającego zmniejszenia szybkości pracy) do stacji nadawczej z szybkością jednego komunikatu na jeden pakiet. Stacja odbiorcza, odbierając komunikaty żądające zmniejsza szybkości, wykonuje te polecenia aż do momentu, kiedy przestanie odbierać komunikaty. Wtedy stacja nadawcza stopniowo zaczyna zwiększać szybkość transmisji, ale tak by nie dopuścić do ponownego przyjmowania komunikatów.
Generowanie okien jest mechanizmem sterowania przepływem, w którym stacja nadawcza wymaga potwierdzenia przez stację odbiorczą faktu przetransmitowania pewnej liczby pakietów. Jeśli okno ma np. "szerokość pięć", to stacja nadawcza żąda potwierdzenia po przesłaniu pięciu pakietów. Mechanizm działa w następujący sposób:
Po odbiorze pięciu pakietów stacja odbiorcza wysyła potwierdzenie do stacji nadawczej, stacja nadawcza odbiera potwierdzenie i wysyła pięć pakietów więcej. Jeśli stacja odbiorcza nie odbiera jednego lub więcej pakietów z jakiegoś powodu, to nie odbiera ona wystarczającej liczby pakietów, aby wysłać potwierdzenie. Po tym fakcie stacja nadawcza retransmituje pakiety ze zmniejszoną szybkością.
Informacja przesyłana w sieci między stacją nadawczą i odbiorczą może ulec zniekształceniu lub zniszczeniu. Dlatego wymyślono mechanizmy sprawdzania błędów (Error-checking) na różnych poziomach modelu OSI.
Najpowszechniej stosowanym z nich jest kodowanie nadmiarowe CRC (Cyclic Redundancy Check), wykrywające i usuwające informacje zniekształcone. CRC jest skomplikowaną procedurą dopisywania do transmitowanego bloku danych pozycji kontrolnych wg reguły kodowania. Na podstawie tych bitów odbiornik jest w stanie wykryć błędy powstające podczas transmisji, a w pewnych przypadkach nawet je skorygować. Funkcje korekcji błędów są realizowane przez protokoły wyższych warstw (np. powtórzenie transmisji). Wartość CRC jest obliczana w stacji nadawczej. Stacja odbiorcza porównuje tę wartość z wartością obliczoną w stacji odbiorczej w celu stwierdzenia, czy w czasie transmisji wystąpił błąd. Na początku stacja nadawcza wykonuje cały szereg obliczeń na zawartości pakietu przeznaczonego do przesłania. Następnie obliczone wartości uzupełniają pakiet, który jest wysyłany przez stację nadawczą do stacji odbiorczej, która również wykonuje obliczenia na zawartości otrzymanego pakietu, po czym porównuje ją z zawartością pakietu. Jeśli wartości są równe, to uznaje się, że pakiet został przetransmitowany poprawnie, przy wartościach różnych - pakiet zawiera błędy i zostaje usunięty.