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
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ń.
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.{protokół komunikacyjny, adres-obcy, proces-obcy} - pierwsze gniazdo
{protokół komunikacyjny, adres-lokalny, proces-lokalny} – drugie gniazdo
{protokół, adres-lokalny, proces-lokalny, adres-obcy, proces, obcy}
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
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
Prześlij komentarz