Systemy rozproszone. Krzysztof Banaś Obliczenia równoległe 1

Podobne dokumenty
Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Systemy rozproszone. Wstęp. Krzysztof Banaś Systemy rozproszone 1

Klient-Serwer Komunikacja przy pomocy gniazd

Iteracyjny serwer TCP i aplikacja UDP

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP

Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta

Gniazda BSD. komunikacja bezpołączeniowa

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Protokoły sieciowe - TCP/IP

Programowanie sieciowe

Programowanie współbieżne i rozproszone

Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Programowanie Sieciowe 1

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Programowanie przy użyciu gniazdek

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Gniazda BSD implementacja w C#

Komunikacja sieciowa - interfejs gniazd

Podstawowe typy serwerów

Dr Michał Tanaś(

Protokoły sieciowe model ISO-OSI Opracował: Andrzej Nowak

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Sieci Komputerowe Modele warstwowe sieci

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

5. Model komunikujących się procesów, komunikaty

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Model warstwowy Warstwa fizyczna Warstwa łacza danych Warstwa sieciowa Warstwa transportowa Warstwa aplikacj. Protokoły sieciowe

Wybrane działy Informatyki Stosowanej

Mechanizmy pracy równoległej. Jarosław Kuchta

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Instytut Teleinformatyki

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Przesyłania danych przez protokół TCP/IP

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

TCP - receive buffer (queue), send buffer (queue)

Adresy w sieciach komputerowych

Model OSI. mgr inż. Krzysztof Szałajko

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC

PI-12 01/12. podłączonych do innych komputerów, komputerach. wspólnej bazie. ! Współużytkowanie drukarek, ploterów czy modemów

Czas w systemach rozproszonych. Krzysztof Banaś Systemy rozproszone 1

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Rywalizacja w sieci cd. Protokoły komunikacyjne. Model ISO. Protokoły komunikacyjne (cd.) Struktura komunikatu. Przesyłanie między warstwami

Programowanie Sieciowe 1

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Podstawowe pojęcia dotyczące sieci komputerowych

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Warstwa transportowa. Warstwa transportowa. Enkapsulacja. Zapewnienie niezawodnego przesyłania danych /wg ISO/ Transmisja bezpołączeniowa

Dwa lub więcej komputerów połączonych ze sobą z określonymi zasadami komunikacji (protokołem komunikacyjnym).

Tryb bezpołączeniowy (datagramowy)

1. Model klient-serwer

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

Sieci komputerowe 1 DSRG

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Wprowadzenie. Dariusz Wawrzyniak 1

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013

Bazy danych 2. Wykład 1

Gniazda. S. Samolej: Gniazda 1

Serwer współbieżny połączeniowy

Warstwy i funkcje modelu ISO/OSI

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Działanie komputera i sieci komputerowej.

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Sieci komputerowe Warstwa transportowa

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Sieci komputerowe. Wstęp

Uniwersalny Konwerter Protokołów

SIECI KOMPUTEROWE. Podstawowe wiadomości

Dr Michał Tanaś(

ZiMSK. Charakterystyka urządzeń sieciowych: Switch, Router, Firewall (v.2012) 1

Rok szkolny 2014/15 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. SIECI KOMPUTEROWE kl. 2c

Programowanie aplikacji równoległych i rozproszonych. Wykład 4

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Sieci komputerowe Wykład

Protokół sieciowy: Zbiór formalnych reguł i konwencji dotyczących formatu i synchronizacji w czasie wymiany komunikatów między procesami

ARP Address Resolution Protocol (RFC 826)

SIECI KOMPUTEROWE mgr inż. Adam Mencwal Katedra Informatyki Stosowanej

Protokoły internetowe

Sieci komputerowe. Wykład 1: Podstawowe pojęcia i modele. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006

Sieciowe Systemy Operacyjne

Gniazda - Wstęp. Oprogramowanie systemów równoległych i rozproszonych. Sposób komunikacji. Domena adresowa. olas@icis.pcz.pl

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Zadania z sieci Rozwiązanie

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.

Transkrypt:

Systemy rozproszone Krzysztof Banaś Obliczenia równoległe 1

Historia i pojęcia wstępne Przetwarzanie współbieżne realizacja wielu programów (procesów) w taki sposób, że ich trwanie od momentu rozpoczęcia do momentu zakończenia może się na siebie nakładać współbieżność pojawiła się wraz z wielozadaniowymi systemami operacyjnymi (lata 60 te, Multics 1965) i nie wymusza równoległości współbieżność związana jest z szeregiem problemów teoretycznych wynikłych z prób realizacji wielozadaniowych systemów operacyjnych istnieje wiele mechanizmów niskiego poziomu (systemowych) do rozwiązywania problemów współbieżności Krzysztof Banaś Obliczenia równoległe 2

Historia i pojęcia wstępne Obliczenia równoległe: dwa lub więcej procesów (wątków) jednocześnie współpracuje (komunikując się wzajemnie) w celu rozwiązania pojedynczego zadania (najczęściej z określonej dziedziny zastosowań) rozwój związany z powstaniem w latach siedemdziesiątych komputerów równoległych problemy obliczeń równoległych (poza klasycznymi zagadnieniami współbieżności) są najczęściej związane z konkretnymi algorytmami obliczenia równoległe były silnie związane z dziedziną obliczeń wysokiej wydajności (i obliczeniami naukowo technicznymi) dziś, w czasach procesorów wielordzeniowych, programowanie równoległe jest koniecznością przetwarzanie równoległe jest jedynym sposobem wykorzystania pełnej mocy współczesnego sprzętu Krzysztof Banaś Obliczenia równoległe 3

Historia i pojęcia wstępne Przetwarzanie rozproszone realizacja programów na systemach (najczęściej odrębnych komputerach) połączonych siecią, z zasobami lokalnymi rozwój związany z popularyzacją sieci komputerowych i Internetu w latach osiemdziesiątych i dziewięćdziesiątych XX wieku problem wspólnego korzystania z rozproszonych zasobów luźniejsze powiązanie współpracujących procesów niż w przypadku obliczeń równoległych (niekonieczna synchronizacja czasowa, zastępowana przez przyczynowo skutkową) wykorzystanie infrastruktury sieciowej (protokoły, bezpieczeństwo) Krzysztof Banaś Obliczenia równoległe 4

Systemy rozproszone Możliwa definicja: Co najmniej dwa zasoby, z których co najmniej jeden jest komputerem, połączone siecią, komunikujące się ze sobą i realizujące usługi jako całościowy system Uwagi: zasoby są względnie autonomiczne (posiadają własne systemy operacyjne, mogą funkcjonować także niezależnie od rozważanego systemu rozproszonego) wrażenie całościowego systemu ma istnieć po stronie użytkownika, dla którego fakt rozproszenia zasobów powinien pozostać w jak największym stopniu niewidzialny komunikacja odbywa się przez przesyłanie wiadomości działanie elementów systemu jest współbieżne Krzysztof Banaś Obliczenia równoległe 5

Systemy rozproszone Systemy rozproszone muszą posiadać specyficzne oprogramowanie (poza oprogramowaniem systemowym zasobów i oprogramowaniem sieci łączącej) gwarantujące osiągnięcie podstawowego celu: realizacji usług jako całościowy system Przykłady systemów rozproszonych rozproszony system plików rozproszona baza danych system obsługi bankomatów systemy urządzeń mobilnych system GIS systemy gridowe Krzysztof Banaś Obliczenia równoległe 6

Sieć lokalna jednolity dostęp do każdej stacji roboczej pojedynczy system plików przeźroczystość realizacji niektórych usług Krzysztof Banaś Obliczenia równoległe 7

Sieć obsługi bankomatów konieczność zagwarantowania bezpieczeństwa i niezawodności transakcji spójność danych odporność na uszkodzenia Krzysztof Banaś Obliczenia równoległe 8

Urządzenia mobilne w systemach rozproszonych Internet Host intranet WAP Wireless LAN Home intranet gateway Printer Camera Mobile phone Laptop Host site Krzysztof Banaś Obliczenia równoległe 9

System informacji geograficznej Krzysztof Banaś Obliczenia równoległe 10

Wzorcowe środowisko gridowe Grid Information Service Grid Resource Broker R 2 R 3 database R 4 Application Grid Resource Broker R 5 R N R 6 R 1 Resource Broker Grid Information Service Krzysztof Banaś Obliczenia równoległe 11

Zalety systemów rozproszonych Oferowanie usług niedostępnych w systemach lokalnych Zwiększenie możliwości użytkowników systemów informatycznych Polepszenie jakości oferowanych usług Zwiększenie stopnia wykorzystania sprzętu Wydajność możliwa wysoka wydajność bezwzględna bardzo często dobry stosunek wydajności do ceny Niezawodność systemy rozproszone mogą tolerować uszkodzenia pojedynczych elementów Możliwość stopniowego wzrostu Krzysztof Banaś Obliczenia równoległe 12

Modelowe architektury systemów rozproszonych Modelowe architektury dotyczą układu komponentów systemu, przy czym najczęściej komponent jest rozumiany jako proces Najbardziej typowymi architekturami systemów rozproszonych są: architektura klient serwer architektura trójwarstwowa i wielowarstwowa architektura równy z równym (peer to peer, p2p) Określenie klient, serwer, peer odnosi sie do roli jaką dany komponent oprogramowania odgrywa w systemie Na bazie pojęć klient, serwer, peer można opisywać funkcjonowanie bardziej złożonych architektur Krzysztof Banaś Obliczenia równoległe 13

Problematyka systemów rozproszonych Współdzielenie zasobów (z założenia współbieżne) sprzętowych (komputery, sieci, rozmaite urządzenia) programowych (systemy operacyjne, programy w różnych językach) danych (w rozmaitych formatach, na nośnikach różnych typów) Rozproszenie zasobów konieczność niezawodnej komunikacji, często o dużym zasięgu Niejednorodność konieczność wprowadzania warstw pośrednich ujednolicających interfejsy różnych systemów operacyjnych Skalowalność możliwość ekonomicznego wzrostu systemu i liczby użytkowników efektywność w sytuacji wzrastającej liczby zasobów i klientów Krzysztof Banaś Obliczenia równoległe 14

Problematyka systemów rozproszonych Niezawodność działania dostępność nieprzerwane dostarczanie usług mimo uszkodzeń (konieczność replikacji i nadmiarowości) wykrywanie usterek i ich tolerowanie Otwartość zdolność do rozszerzania o nowe usługi, zasoby pomocne oparcie na standardach i publicznych interfejsach przydatne odpowiednie oprogramowanie warstwy pośredniej (middleware) Bezpieczeństwo ochrona dostępu do przechowywanych i przesyłanych danych ochrona przed szkodliwymi działaniami Krzysztof Banaś Obliczenia równoległe 15

Problematyka systemów rozproszonych Przezroczystość jednolity obraz systemu z punktu widzenia użytkownika przezroczystość: dostępu taki sam z każdego miejsca lokalizacji zasobów migracji zasobów replikacji danych współbieżności współużytkowania systemu uszkodzeń wydajności wydajność niezależna od obciążenia Krzysztof Banaś Obliczenia równoległe 16

Komunikacja międzyprocesowa Krzysztof Banaś Obliczenia równoległe 17

Komunikacja międzyprocesowa Dla funkcjonowania systemów rozproszonych i równoległych z pamięcią rozproszoną konieczna jest sprawna komunikacja pomiędzy odległymi procesami Podstawowym mechanizmem komunikacji międzyprocesowej jest wymiana komunikatów między procesami Wymiana komunikatów polega na istnieniu pary operacji wyślij/odbierz (send/receive) wywoływanych odpowiednio przez nadawcę i odbiorcę komunikatu Poza mechanizmami wymiany komunikatów istnieją inne formy komunikacji międzyprocesowej nadbudowane nad podstawowym mechanizmem send/receive, takie jak np. zdalne wywołanie procedur (RPC, remote procedure call) czy zdalne wywołanie metod (funkcji składowych obiektów, RMI, remote method invocation) Krzysztof Banaś Obliczenia równoległe 18

Cechy komunikacji międzyprocesowej Różne realizacje techniki wymiany komunikatów charakteryzują się różnymi własnościami jeśli chodzi o: sposób adresowania (wyszukiwania serwera przez klienta) format danych przekazywanych w komunikatach (np. strumienie bajtów, zmienne określonych typów) sposób synchronizacji operacji send i receive: każda z operacji może być blokująca lub nieblokująca w ramach konkretnej realizacji można ustalić precyzyjnie kiedy następuje powrót z określonej procedury niezawodność gwarancje dostarczenia komunikatu uporządkowanie kolejność dostarczania komunikatów w odniesieniu do kolejności nadawania komunikatów Krzysztof Banaś Obliczenia równoległe 19

Cechy komunikacji międzyprocesowej Dla analizy cech komunikacji procedurę przesyłania wiadomości rozbija się często na etapy: umieszczenie przez proces danych w buforze wysyłania przesłanie danych z bufora wysyłania do bufora odbierania dostarczenie danych z bufora odbierania do procesu Niezawodność komunikacji dwupunktowej (point topoint) określają cechy: ważność (validity) każdy komunikat z bufora wysyłania jest dostarczony do bufora odbierania integralność (integrity) komunikat odebrany jest identyczny z komunikatem wysłanym Krzysztof Banaś Obliczenia równoległe 20

Funkcjonowanie systemów rozproszonych Zazwyczaj procesy w systemie rozproszonym są procesami z warstwy programów użytkowych i korzystają z usług należących do niższych warstw oprogramowania (oprogramowanie warstwy pośredniej middleware, lokalny system operacyjny, oprogramowanie sprzętowe lokalnych zasobów, zwłaszcza urządzeń sieciowych) W zrozumieniu funkcjonowania systemów rozproszonych pomocne jest stosowanie warstwowych modeli komunikacji sieciowej (ISO/OSI, Internet) Krzysztof Banaś Obliczenia równoległe 21

Warstwy w modelu ISO OSI Layers Application Presentation Session Transport Network Data link Message sent Message received Physical Sender Communication medium Recipient Krzysztof Banaś Obliczenia równoległe 22

Model ISO/OSI Warstwa fizyczna służy przekazaniu sygnału poprzez medium fizyczne Warstwa łącza danych służy przesyłaniu danych pomiędzy bezpośrednio połączonymi węzłami (wykorzystuje adresy sprzętowe, np. numery MAC w Ethernecie) Warstwa sieciowa służy przekazywaniu danych pomiędzy dowolnie położonymi węzłami, stosuje trasowanie (routing), wykorzystuje własny mechanizm adresowania (np. adresy Internetowe, IPv4, IPv6) Warstwa transportowa służy do przekazywania danych między procesami, dostarcza dodatkowe mechanizmy wspomagające przesyłanie danych Krzysztof Banaś Obliczenia równoległe 23

Technologie komunikacyjne Znajomość technologii komunikacyjnych ma istotne znaczenie dla projektowania systemów rozproszonych Tworząc system rozproszony trzeba odpowiedzieć na pytania: które mechanizmy komunikacyjne można stosować (ze względów dostępności, wydajności itp.)? czy usługi świadczone przez oprogramowanie komunikacyjne jest wystarczające dla potrzeb systemu rozproszonego (np. ze względu na jego niezawodność lub bezpieczeństwo)? w jaki sposób uwzględnić przewidywaną ewolucję systemu rozproszonego i technologii komunikacyjnych? Krzysztof Banaś Obliczenia równoległe 24

Charakterystyki technologii komunikacyjnych Przewodowe: Przykład Zasięg Pasmo (Mbps) Zwłoka (ms) LAN Ethernet 1-2 km 10-1000 1-10 WAN IP routing światowy 0.010-600 100-500 MAN ATM 250 km 1-150 10 Internetwork Internet światowy 0.5-600 100-500 Bezprzewodowe: WPAN Bluetooth 10-30m 0.5-2 5-20 (802.15.1) WLAN WiFi (IEEE 802.11) 0.15-1.5 km 2-54 5-20 WMAN WiMAX (802.16) 550 km 1.5-20 5-20 WWAN GSM, 3G światowy 0.01-02 100-500 Krzysztof Banaś Obliczenia równoległe 25

Wydajność systemów rozproszonych Wydajność pojedynczych zasobów Wydajność łączy komunikacyjnych Skalowalność Równoważenie obciążenia Wpływ mechanizmów bezpieczeństwa i niezawodności na wydajność Projektowanie systemów rozproszonych ze względu na wydajność Krzysztof Banaś Obliczenia równoległe 26

Protokoły Protokół zestaw reguł umożliwiających porozumienie w zastosowaniu do komunikacji sieciowej: sekwencja komunikatów, które muszą być wymienione między stronami specjalny format kolejnych komunikatów standaryzacja protokołów gwarantuje otwartość komunikacji sieciowej protokół zazwyczaj składa się z początkowej wymiany komunikatów, nawiązania połączenia przekazania danych sprawdzenia poprawności przekazania danych Krzysztof Banaś Obliczenia równoległe 27

Warstwa transportowa Z punktu widzenia programowania systemów rozproszonych warstwą, której specyfikę często uwzględnia się jest warstwa transportowa: protokół UDP (User Datagram Protocol) przesyłanie datagramów brak gwarancji dostarczenia (można wbudować na poziomie aplikacji) wysoka efektywność komunikacji protokół TCP (Transport Control Protocol) dodatkowe mechanizmy oba protokoły oparte są na sieciowym protokole IP (Internet Protocol) Krzysztof Banaś Obliczenia równoległe 28

Protokół TCP Protokół TCP gwarantuje dostarczenie wszystkich danych odbiorcy, w takiej samej kolejności jak zostały wysłane TCP łączy w sobie funkcje warstwy transportowej i warstwy sesji Wbudowane dodatkowe mechanizmy: sterowanie przepływem kontrola kolejności pakietów (numerowanie) powtarzanie przesyłu buforowanie komunikatów sprawdzanie poprawności pakietów za pomocą sum kontrolnych Krzysztof Banaś Obliczenia równoległe 29

Protokół TCP/IP Layers Message Application Transport Internet Network interface Messages (UDP) or Streams (TCP) UDP or TCP packets IP datagrams Network-specific frames Underlying network Krzysztof Banaś Obliczenia równoległe 30

Budowa ramki dla kombinacji Ethernet/TCP/IP Application message TCP header port IP header TCP Ethernet header IP Ethernet frame Krzysztof Banaś Obliczenia równoległe 31

Port Port jest programowo definiowanym miejscem, z którego dane przekazywane są do związanego z portem procesu Porty są mechanizmem adresowania wykorzystywanym w protokołach TCP i UDP w ramkach TCP i UDP znajdują się numery portów związanych z procesem nadawcą i adresatem Procesy tworzą porty, które po zgłoszeniu zarządzane są przez system operacyjny i oprogramowanie obsługi sieci Popularne usługi sieciowe mają przydzielone sobie na stałe numery portów Krzysztof Banaś Obliczenia równoległe 32

Komunikacja międzyprocesowa gniazda Gniazda są podstawowym interfejsem programowania (API) niskiego poziomu dla aplikacji korzystających z protokołów TCP/IP Obsługa gniazd realizowana jest najczęściej z poziomu systemu operacyjnego Podstawowy interfejs gniazd powstał dla systemu 4.2 BSD Unix (Berkeley Software Distribution Unix) w 1983 Istnieją wersje API gniazd dla różnych systemów operacyjnych (Unix/Linux, MS Windows) i różnych języków programowania (C/C++, Java, C#) Krzysztof Banaś Obliczenia równoległe 33

Komunikacja międzyprocesowa gniazda Gniazda zostały pierwotnie zaprojektowane jako ogólny mechanizm komunikacji międzyprocesowej szczególnym przypadkiem jest funkcjonowanie gniazd do obsługi sieci Internet Gniazda tworzone są przez procesy i wiązane z portami TCP/IP Gniazda pozwalają na wysyłanie i odbieranie komunikatów przy pomocy portów Cechą charakterystyczną gniazd jest wykorzystanie procedur obsługi typowych dla plików: zapis sekwencji bajtów i odczyt sekwencji bajtów Krzysztof Banaś Obliczenia równoległe 34

Komunikacja międzyprocesowa gniazda Interfejs gniazd Unixa zaprojektowany został do realizacji modelu przetwarzania klient serwer Serwer jest programem oczekującym na żądania klientów i realizującym różnorodne usługi Klient jest programem, który zgłasza serwerowi żądanie i następnie odbiera rezultaty działania serwera W programowaniu dla modelu klient serwer istnieją dwa istotne problemy techniczne: wyszukiwanie serwera (usługodawcy) przez klienta przesyłanie danych pomiędzy klientem i serwerem W API gniazd klient musi znać adres internetowy serwera i związany z nim numer poru Przesyłanie danych odbywa się za pomocą strumienia bitów Krzysztof Banaś Obliczenia równoległe 35

Komunikacja międzyprocesowa gniazda Pełne połączenie komunikacyjne (asocjacja) jest tworzone przez adres węzła i numer portu po stronie serwera, adres węzła i numer portu po stronie klienta oraz ustalony protokół Gniazdo można utożsamiać z tzw. półasocjacją czyli trójką (protokół, adres węzła, numer portu) Dla realizacji wymiany komunikatów konieczne jest połączenie gniazd serwera i klienta W ramach interfejsu gniazd rozróżnia się dwa podstawowe sposoby komunikacji: transmisja połączeniowa z wykorzystaniem TCP dla przesyłania danych w postaci strumieni bajtów transmisja bezpołączeniowa z wykorzystaniem UDP dla przesyłania pakietów datagramów Gniazda umożliwiają także komunikację dla innych protokołów Krzysztof Banaś Obliczenia równoległe 36

Interfejs gniazd Typowy przebieg wymiany informacji między klientem i serwerem w transmisji połączeniowej: serwer: socket() bind() listen() accept() read() write() klient: socket() connect() write() read() Typowy przebieg wymiany informacji między klientem i serwerem w transmisji bezpołączeniowej: serwer: socket() bind() recvfrom() sendto() klient: socket() bind() sendto() recvfrom() Krzysztof Banaś Obliczenia równoległe 37

Specyfikacja interfejsu gniazd UNIXA int socket(int domain, int type, int protocol); int bind(int sockfd, struct sockaddr *addr, socklen_t addrlen) int listen(int sockfd, int max_dl_kol) int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); ssize_t write(int fd, const void *buf, size_t count); ssize_t read(int fd, void *buf, size_t count); ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); Krzysztof Banaś Obliczenia równoległe 38

Komunikacja połączeniowa Przykład utworzenia gniazda przez serwer do komunikacji połączeniowej: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> struct sockaddr_in adres_serwera; socklen_t dl_adr_serw; gniazdo_serwera_fd = socket( AF_INET, SOCK_STREAM, 0 ); adres_serwera.sin_family = AF_INET; inet_aton( 127.0.0.1, &(adres_serwera.sin_addr) ); adres_serwera.sin_port = htons( 6543 ); dl_adr_serw = sizeof( adres_serwera ); bind( gniazdo_serwera_fd, (struct sockaddr *) &adres_serwera, dl_adr_serw); Krzysztof Banaś Obliczenia równoległe 39

Komunikacja bezpołączeniowa Przykładowa wymiana komunikatów w transmisji bezpołączeniowej strona serwera: for(;;){ } info = recvfrom(gniazdo_serwera_fd, bufor, dl_buf, 0, (struct sockaddr *) &adres_klienta, &dl_adr_kli); // adres klienta jest uzyskiwany // po otrzymaniu komunikatu... // dowolne operacje związane z otrzymanymi danymi sendto(gniazdo_serwera_fd, bufor, dl_buf, 0, (struct sockaddr *) &adres_klienta, dl_adr_kli); // do zwrotnego wysłania danych // używany jest otrzymany adres Krzysztof Banaś Obliczenia równoległe 40

Komunikacja bezpołączeniowa Przykładowa wymiana komunikatów w transmisji bezpołączeniowej strona klienta: gniazdo_klienta_fd = socket( AF_INET, SOCK_DGRAM, 0 ); // nadanie odpowiednich wartości elementom struktury adresu klienta: adres_klienta.sin_family = AF_INET; adres_klienta.sin_addr.s_addr = htonl( INADDR_ANY ); adres_klienta.sin_port = htons( 0 );... // nadanie nazwy gniazdu klienta (bind)... // nadanie odpowiednich wartości elementom struktury adresu serwera sendto(gniazdo_klienta_fd, buf, dlb, 0, (struct sockaddr *) &adres_serwera, dl_adr_serw); recvfrom(gniazdo_klienta_fd, buf, dlb, 0, (struct sockaddr *) &adres_serwera, &dl_adr_serw); close( gniazdo_klienta_fd ); Krzysztof Banaś Obliczenia równoległe 41

Rozmaitości Oprócz procedur read, write, recvfrom, sendto istnieją inne (recv, send, recvmsg, sendmsg) umożliwiające bardziej złożoną wymianę informacji Istnieje wiele parametrów sterujących funkcjonowaniem gniazd można zmieniać ich wartości i uzyskiwać o nich informacje za pomocą procedur setsockopt, ioctl, fcntl, getsockopt Informacje o adresie związanym lokalnie z gniazdem lub adresie procesu odległego połączonego z gniazdem można uzyskać wywołując getsockname lub getpeername Krzysztof Banaś Obliczenia równoległe 42

Serwery Wiele systemów komputerowych działa w sieci jako specjalizowane serwery komputery z działającymi nieprzerwanie programami serwerami oczekującymi na żądania klientów Programy serwery są w takich systemach uruchamiane najczęściej przy starcie systemu i następnie pracują w tle Przykładami takich programów są demony Unixowe Przykładami demonów są takie programy jak: httpd, sshd, moused, swapd, cupsd, itd Krzysztof Banaś Obliczenia równoległe 43

Serwer współbieżny Serwer współbieżny jednoczesna obsługa wielu klientów: sockfd = socket(...) bind( sockfd,...) listen( sockfd, 5 ) for(;;){ sockfd_n = accept( sockfd,... ) if( fork() == 0 ) { close( sockfd ); obsługa_żądania( sockfd_n ); exit(0); } else { close( sockfd_n ); } } Krzysztof Banaś Obliczenia równoległe 44

Demony Demon Unixowy jest procesem działającym w sposób ciągły w tle, bez powiązania z terminalem i bez udziału użytkownika uruchamiającego demona (demony często uruchamiane są przy starcie systemu) Tworzenie demonów Unixowych jako serwerów wykorzystujących mechanizm gniazd do odbierania żądań od klientów wymaga poza opisanymi poprzednio krokami dodatkowych operacji związanych z odbieraniem sygnałów, standardowymi plikami, obsługą plików i katalogów, itp. Krzysztof Banaś Obliczenia równoległe 45

Demony Przykładem często stosowanego demona jest demon Internetu inetd (lub xinetd), który może służyć jako super serwer dla innych serwerów Internetowych Jednym z zadań inetd jest zmniejszenie liczby procesów oczekujących na żądania klientów poprzez zastąpienie ich jednym oczekującym procesem inetd jest uruchamiany przy starcie sytemu i nasłuchuje czy nie są zgłaszane żądania dla dowolnego z serwerów zarejestrowanych w pliku konfiguracyjnym (/etc/inetd.conf lub /etc/xinetd.conf) W przypadku nadejścia żądania inetd uruchamia odpowiedni serwer i kontynuuje nasłuchiwanie Krzysztof Banaś Obliczenia równoległe 46

Rozmaitości Obsługa wielu gniazd funkcja select : int select( int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) Funkcja sprawdza deskryptory plików z jednego z trzech zbiorów: pliki odczytujące (readfds), zapisujące (writefds) i w stanie błędu (exceptfds), a następnie zwraca liczbę deskryptorów, których stan uległ zmianie ( nfds jest liczbą sprawdzanych deskryptorów, a timeout określa czas, po którym procedura przerywa działanie) Zbiorami deskryptorów, na których operuje select, zarządza się za pomocą makr: FD_ZERO (inicjowanie zbioru), FD_SET (wstawienie deskryptora do zbioru), FD_CLR (usunięcie deskryptora ze zbioru), FD_ISSET (sprawdzenie czy deskryptor należy do zbioru) Krzysztof Banaś Obliczenia równoległe 47

Użycie funkcji select do obsługi wielu gniazd #include<select.h> fd_set gniazda_czyt, gniazda_test; int gn_serw, gn_kli, gniazdo, liczba; gn_serw = socket(...); bind(gn_serw,...); listen(gn_serw,...); FD_ZERO( &gniazda_czyt ); FD_SET( gn_serw, &gniazda_czyt ); for(;;){ gniazda_test=gniazda_czyt; liczba = select( FD_SETSIZE, &gniazda_test, (fd_set*)0, (fd_set*)0, 0); if(liczba < 1) exit( 1); for( gniazdo=0; gniazdo < FD_SETSIZE ; gniazdo++ ){ if( FD_ISSET (gniazdo, &gniazda_test) ) { if( gniazdo == gn_serw ) { // zmiana stanu serwera > nowy klient gn_kli = accept( gn_serw,...); FD_SET( gn_kli, &gniazda_czyt); } else {... // zmiana stanu jednego z klientów > obsługa klienta } } } } Krzysztof Banaś Obliczenia równoległe 48