Przejdź do głównej zawartości

Systemy rozproszone...

Witam. Poniżej przedstawiam moją publikację o systemach rozproszonych. Publikacja jest też dostępna pod adresem www.jpn.hmcloud.pl/os . Zapraszam.

 Wprowadzenie

Systemy rozproszone to systemy w których wiele komputerów połączonych w sieć tworzy jeden system. Użytkownik takiego systemu, niezależnie od tego, z którego komputera korzysta, postrzega zawsze system rozproszony jako jedną spójną całość. Inaczej mówiąc jest to zbiór procesorów, które nie dzielą pamięci ani zegara. Każdy procesor ma własną pamięć lokalną, a procesory komunikują się ze sobą za pomocą różnych technik komunikacyjnych.. Cechy rozproszonych systemów operacyjnych :
  • niezawodność - jeżeli niektóre z komputerów tworzących system rozproszony ulegną awarii, to pozostałe komputery mogą je zastąpić i pracować bezawaryjnie.

  • współdzielenie zasobów - system rozproszony może udostępniać swoim użytkownikom wszystkie zasoby znajdujące się w obrębie globalnego systemu. Użytkownik stanowiska A może na przykład korzystać z drukarki laserowej na stanowisku B. W tym samym czasie użytkownik stanowiska B może czytać plik znajdujący się na stanowisku A.

  • przetwarzanie równoczesne - wiele komputerów może przetwarzać to samo zadanie jednocześnie.

  • tolerowanie awarii – całość powinna działać możliwe poprawnie, mimo występujących błędów w częściach systemu.

  • przenośność – system powinien pozwalać na łatwe przenoszenie na inne serwery, zarówno w celu konserwacji, jak i zbicia kosztów.

Typy sieci w rozproszonym systemie operacyjnym

Istnieją dwa podstawowe typy sieci : sieci lokalne (LAN) i sieci rozległe (WAN). Podstawową różnicą między nimi jest ich rozmieszczenie geograficzne.
  • Sieci lokalne LAN (skrótowiec angielskiej nazwy Local Area Network, „lokalna sieć komputerowa”) to typ połączenia umożliwiający współpracę komputerów i urządzeń peryferyjnych na określonym obszarze. Za pomocą LAN można stworzyć połączenie sprzętów w zasięgu nie większym niż 1 kilometr. Istnieje kilka typów sieci LAN :

    • Bezprzewodowe sieci LAN (WLAN) – by umożliwić urządzeniom działanie, nie wymagają żadnych kabli ani innych fizycznych połączeń. W tym przypadku najczęściej stosuje się Wi-Fi.

    • Przewodowe sieci LAN – aby funkcjonować należy połączyć je za pomocą przewodu, najczęściej w postaci kabla lub światłowodu.

    • Wirtualne sieci LAN (VLAN - (ang. Virtual Local Area Network) to technologia sieciowa, która pozwala w ramach jednej fizycznej sieci lokalnej tworzyć wiele sieci logicznych (sieci wirtualnych), opisana w standardzie 802.1Q.

  • Sieci rozległe WAN są to sieci zbudowane z autonomicznych procesorów rozłożonych w welkim obszarze geograficznym.

Komunikacja w rozproszonym systemie operacyjnym - model klient-serwer

Standardowym modelem komunikacji w sieci jest model “klient-serwer”. Polega on na tym, że jeden proces zwany serwerem dostarcza usługi pod określonym adresem IP i numerem portu. Drugi proces zwany klientem znając adres IP i numer portu serwera, może skorzystać z jego usługi. Przykładowy scenariusz mógłby wyglądać tak :
  • Proces, zwany serwerem, rozpoczyna pracę w pewnym systemie komputerowym. Po zainicjowaniu pracy serwer “zasypia” czekając na proces, zwany klientem, który skontaktuje się z nim, zamawiając jakąś usługę.

  • Proces zwany klientem, rozpoczyna pracę albo w tym samym systemie, co serwer, albo w innym systemie połączonym z systemem serwera za pomocą sieci komputerowej. Klient wysyła zamówienie do serwera, prosząc o pewien rodzaj usługi (na przykład serwer musi podać klientowi dokładną godzinę).

  • Kiedy serwer zakończy wykonywanie usługi dla klienta, wtedy znowu zasypia i oczekuje na nadejście następnego żądania.

Protokoły komunikacyjne 

Komunikacja w sieci oparta jest na protokołach. Protokoły są to formalne reguły postępowania. Na przykład w stosunkach międzynarodowych, protokoły minimalizują problemy wynikające z różnic kulturowych przy współpracy różnych narodów. Zgadzając się na wspólny zestaw ogólnie przyjętych reguł, które są niezależne od jakichkolwiek zwyczajów narodowych, protokoły dyplomatyczne minimalizują nieporozumienia; każdy wie jak się zachować i jak interpretować zachowania innych. Podobnie przy łączności komputerów konieczne jest zdefiniowanie reguł, które rządzą komunikacją w sieci. Ponieważ zdefiniowanie takich zasad jest niesłychanie trudne, Międzynarodowa Organizacja ds. Standardów (ang. International Standards Organization [ISO]) opracowała model architektury służący do opisu zasad komunikacji w sieci. Model odniesienia łączenia systemów otwartych (ang. Open System Interconnect [OSI] Reference Model) gwarantuje uzyskanie wspólnego mianownika dla zagadnień komunikacyjnych. Wszystko co zostało zdefiniowane za pomocą tego modelu jest ogólnie rozumiane i szeroko stosowane przez osoby zajmujące się komunikacją w sieci. Model OSI składa się z siedmiu warstw na których znajduje się jeden lub więcej protokołów, które opisują sposoby realizacji zadań przeznaczonych dla danej warstwy. Zbiór protokołów obowiązujących na różnych warstwach i mogących stanowić podstawę dla użytecznej sieci nazywamy rodziną protokołów (ang. protocol family).

Rodzinę TCP/IP (ang. Transmission Control Protocol / Internet Protocol) będącą rodziną protokołów odpowiedzialną za komunikację w Internecie również możemy przedstawić za pomocą modelu OSI, ale za pomocą czterech warstw : warstwa kanałowa; warstwa sieciowa; warstwa transportowa; warstwa zastosowań. W modelu czterowarstwowym rodzinę protokołów wyznaczają dwie warstwy : transportowa (protokół TCP i protokół UDP) oraz sieciowa (protokół IP). Natomiast w jedną warstwę kanałową są połączone protokoły i cechy charakterystyczne sieci na poziomie jej topologii oraz użytego sprzętu (Ethernet albo Token ring). Przestrzenią programów użytkowych jest zaś warstwa zastosowań.

Do najważniejszych protokołów z rodziny TCP/IP należą :
  • Protokół IP (ang. Internet Protocol) jest protokołem warstwy sieciowej i jest on fundamentalnym elementem Internetu. Do najważniejszych jego zadań należą między innymi obsługa doręczania pakietów dla protokołów z warstwy transportowej takich jak TCP i UDP oraz definiowanie schematu adresowania w Internecie.

  • Protokół TCP (ang. Transmission Control Protocol) jest protokołem połączeniowym znajdującym się na warstwie transportowej. Umożliwia niezawodne i w pełni dwukierunkowe (ang. full-duplex) przesyłanie strumienia danych. W większości internetowych programów stosuje się ten protokół.

  • Protokół UDP (ang. User Datagram Protocol) jest protokołem bezpołączeniowym znajdującym się na warstwie transportowej. W odróżnieniu od protokołu TCP, który jest niezawodny, protokół UDP nie daje gwarancji, że dana wiadomość dotrze do wyznaczonego celu.

Budowa protokołu HTTP

Kolejnym ważnym protokołem, który chciałbym opisać, jest protokół HTTP (ang. Hypertext Transfer Protocol). Na pierwszy rzut oka HTTP jest prostym protokołem tekstowym zbudowanym na bazie protokołów TCP/IP. Sesja inicjowana jest przez ustanowienie połącznia TCP z serwerem poprzez port 80. 

Budowa protokołu IP

Protokół internetowy IP jestem standardowym mechanizmem komunikacyjnym działający w trzeciej warstwie modelu OSI ( warstwa sieciowa ). Istnieją dwie wersje protokołu IP. IP w wersji czwartej obecnie stosowany w internecie oraz IP w werji 6 będący następcą IP v4. Protokół IP w wersji 6 jest stopniowo wdrażany i ma całkowicie zastąpić swojego poprzednika.

Protokół IP w wersji czwartej

Protokół IP w wersji 4 jest obecnie standardowym internetowym protokołem warstwy sieciowej modelu OSI. 

  • wersja - zawiera numer wersji protokołu IP (w tym wypadku to będzie IPv4).

  • IHL (długość nagłówka) - jest to czterobitowa wartość określająca łączna długość nagłówka IP.

  • Typ usługi - zawiera 8-bitową wartość, która używana jest do określenia priorytetu danego pakietu

  • Długość pakietu - jest to całkowita wielkość pakietu, zawierającą nagłówek oraz dane.

  • Indetyfikator - jest to ośmiobitowa wartość określająca protokół danych przenoszonych przez pakiet IP ( TCP lub UDP).

  • Adres nadawcy - jest to adres IP urządzenia, który jest nadawcą danych.

  • Adres odbiorcy - jest to adres IP komputera do którego kierowane są dane.

  • Opcje - jest to miejsce na dodatkowe pola w nagłówku IPv4 do obsługi innych usług 

Komunikacja w rozproszonym systemie operacyjnym - model OSI

Model OSI to standard zdefiiowany przez organizację ISO opisujący strukturę komunikacji w systemach rozproszonych. Jest to sruktura warstwowa, która upraszcza problem komunikacji w danych systemach.. Każda warstwa w jednym komputerze komunikuje się z równoważną jej warstwą w innym komputerze. Opis warstw :
  • warstwa aplikacji - umożliwia bezpośrednią interakcję między użytkownikami systemu rozproszonego.

  • warstwa prezentacji - zajmuje się konwersją danych i definowaniem formatu czyli przedstawia dane swoim użytownikom końcowym w łatwo zrozumiałej formie.

  • warsrwa sesji - pozwala użytkownikom końcowym na skonfigurowanie aktywnej sesji komunukacyjnej między sobą.

  • warstwa transportowa - gwarantuje bezbłędne połączenie między dwoma komputerami lub urządzeniami w systemie rozproszonym. Powyższa warstwa pobiera dane z górnej wartwy (warstwy aplikacji) i dzieli je na mniejsze pakiety zwane segmentami. Następnie przekazuje je do warstwy niższej ( warstwy sieciowej ). W tej warstwie są zaimplementowane dwa protokoły ko,munikacyjne TCP oraz UDP.

  • warstwa sieciowa - odpowiada za zmianę segmentów na pakiety i określenie najlepszej trasy do miejsca docelowego. W tej wasrstwie został zaimplementowany protokół IP.

  • warstwa łącza danych - odpowiada za zmianą pakietów na ramki danych. Główną funkcją tej warstwy jest wykrywanie błędów.

  • warstwa fizczna - odowiada za zamianę ramek z danymi na pojedyncz bity. Następnie wysyła je po medium transmisyjnym.

 

Komunikacja w systemach rozproszonych za pomocą gniazd

A Aby zgłębić tematykę gniazd zapraszam do mojej pracy magisterakiej - Gniazda BSD. A tak w skrócie. Gniazda były w pierwotnie częścią systemu operacyjnego UNIX BSD. Obecnie gniazda są dostępne w wielu systemach operacyjnych takich jak różne odmiany Linux'a czy Microsoft Windows.
 
Definiacja gniazda
Kombinacja adresu IP i numeru portu nosi nazwę gniazda (ang. socket). Można powiedzieć, że gniazdo jest programową abstrakcją używaną do reprezentowania końcówki połączenia między dwoma komputerami. Dla każdego połączenia istnieją gniazda na obydwu uczestniczących w nim komputerach (aplikacjach działających na tych komputerach). Wyobraźmy sobie rozciągający się pomiędzy komputerami kabel, którego końce są wpięte do tych gniazd. Formalnie gniazdo powinniśmy zdefiniować jako zbiór trzyelementowy :
  • {protokół komunikacyjny, adres-obcy, proces-obcy} - pierwsze gniazdo

  • {protokół komunikacyjny, adres-lokalny, proces-lokalny} – drugie gniazdo

Wartością adres-lokalny i adres-obcy są identyfikatory stacji lokalnej oraz stacji odległej. Natomiast elementy proces-lokalny i proces-obcy określają konkretne procesy działające na obu komputerach. Te trzyelementowe zbiory stanowią punkty końcowe komunikacji w sieci zwane półasocjacjami. Jeżeli rozpocznie się komunikacja między powyższymi komputerami, zostanie utworzony pięcioelementowy zbiór wystarczający do pełnego określenia obu komunikujących się ze sobą procesów.
  • {protokół, adres-lokalny, proces-lokalny, adres-obcy, proces, obcy}

Ten zbiór nazywamy asocjacją.

Procedury wykorzystywane dla organizacji komunikacji między dwoma gniazdami

Oto naajważnijsze procedury :
  • socket() - tworzy gniazdo i zwraca jego całkowitoliczbowy identyfikator.

  • bind() - wiąrze gniazdo z danym adresem protokołowym.

  • accept() - umieszcza gniazdo w trybie oczekiwania na żądanie połączenia.

  • connect() - tworzy dla danego gniazda połączwnie z serwerem.

  • send() / receive() - służy do nadania/ odebrania danych przez serwer lub klienta w danym gnieździe.

  • close() - zamyka gniazdo po stronie klienta lub serwera.

 

Usługi sieciowe w rozproszonym systemie operacyjnym

Serwery nazw - DNS
DNS (ang. Domain Name System) to system używany do tłumaczenia adresów IP na nazwy przyjazne człowiekowi. Każda nazwa komputera składa się z ciągów alfanumerycznych segmentów oddzielonych kropkami. System DNS używa interakcji typu klient-serwer. Ogólnie mówiąc cały system nazw DNS działa jak wielka, rozproszona baza danych. Za każdym razem, gdy program użytkowy na zamienić nazwę na adres IP, stajke się on klientem systemu nazw.
 
Protokół FTP
Najbardziej rozpowzechiona usługa przesyłania piików wykorzystuje protokół FTP (ang. File Transfer Protocol). FTP jest protokołem ogólnego przeznaczenia, który może być wykorzystany do kopiowania dowolnego pliku z jednego komputera na inny. Protokó ten zawiera również mechanizm, który pozwala na to, aby pliki miały okreąślonych właścicieli oraz ograniczenia dostępnośi.
 
Strony i przeglądarki WWW
Strony WWW stanowią rozproszoną i hipermedialną składnicę informacji, z których można korzystać za pomocą przeglądarki internetowej. Dokumenty WWWW są zapisane w języku HTML. Zewnętrzne dokumenty są wskazywanw za pomocą adresów URL. Przeglądarka odczytuje z adresu URL nazwę protokołu, nazwę komputera i nazwę dokumentu przechowywanego przez dany kommputer. Adres URL zaczya się od ciągu znaków http:// i wskazue na dokument, który należy pobrać za pomocą protokołu HTTP.
 
Usługi katalogowe czyli protokół LDAP oraz Active Directory

Active Directory to windowsowska implementacja protokołu LDAP (ang. Lightweight Directory Access Protocol ). LDAP to usługa katalogowa czyli hierarchiczna baza danych zawierająca informacje o użytkownikach, grupach użytkowników, komputerach, a także zasobach sieciowych, działających w sieciach firmowych, które wykorzystują systemy operacyjne z rodziny Windows. Active Directory pomaga administratorowi zarządzać całym zbiorem użytkowników w sieci. A także określać ich uprawnienia do zasobów sieciowych i konfigurowć komputery podłączone do sieci.

Java jako programowa platforma dla systemu rozproszonego

  • Java to zorientowany obiektowo język programowania wysokiego poziomu. Programowanie obiektowe ułatwia tworzenie oprogramowania systemowego poprzez zbór współpracująych ze sobą niezależnych obiektów.

  • Podczas tworzenia aplikacji typu klient-serwer w Javie z reguły wykorzystuje się połączenia sieciowe przez tzw. gniazda (ang. sockets) za pomocą standardowej biblioteki java.net.

  • Jak wcześniej pisałem, gniazda to dostępna na wielu systemach unixowych oraz windowsowych metoda komunikacji sieciowej miedzy dwoma aplkikacjami. Inaczej mówiąc jest to kanał komunikacyjny, gdzie jedna aplikacja wpisuje do niego dane w postaci strumienia bajtów, a druga je odbiera.

 

To na razie wszystko. Postaram się w przyszłości rozwinąć ten post. Zapraszam do wstawiania komentarzy.

 

Komentarze