Klient-Serwer Komunikacja przy pomocy gniazd

Podobne dokumenty
RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

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

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

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

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

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

Podstawowe typy serwerów

Przesyłania danych przez protokół TCP/IP

PROTOKOŁY WARSTWY TRANSPORTOWEJ

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

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

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

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

Tworzenie aplikacji rozproszonej w Sun RPC

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

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

1. Model klient-serwer

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Programowanie współbieżne i rozproszone

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

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

Programowanie przy użyciu gniazdek

Kolejki FIFO (łącza nazwane)

Iteracyjny serwer TCP i aplikacja UDP

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

IPC: Kolejki komunikatów

Aplikacja Sieciowa wątki po stronie klienta

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

Remote Quotation Protocol - opis

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

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Programowanie Sieciowe 1

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

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

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

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Wydział Informatyki, Elektroniki i Telekomunikacji Katedra Telekomunikacji

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

KARTA PRZEDMIOTU. Systemy Rozproszone D1_3

5. Algorytm genetyczny przykład zastosowania

TCP/IP formaty ramek, datagramów, pakietów...

Protokoły zdalnego logowania Telnet i SSH

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Instytut Teleinformatyki

Laboratorium Sieci Komputerowych - 2

Model OSI. mgr inż. Krzysztof Szałajko

Złośliwe oprogramowanie Sandrorat (podszywające się pod oprogramowanie Kaspersky) na platformę Android WYNIKI ANALIZY

76.Struktura oprogramowania rozproszonego.

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

Zadanie 2: transakcyjny protokół SKJ (2015)

INFRA. System Connector. Opis wdrożenia systemu

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Opis komunikacji na potrzeby integracji z systemem klienta (12 kwiecień, 2007)

Protokoły sieciowe - TCP/IP

WYKŁAD: Przetwarzanie rozproszone typu klient-serwer.

Opis protokołu RPC. Grzegorz Maj nr indeksu:

Komunikacja między sterownikami przez protokół ADS

Dr Michał Tanaś(

System Rozproszone Komunikator Dokumentacja. Maciej Muszkowski Jakub Narloch

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

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

ROZPROSZONE SYSTEMY OPERACYJNE Dokumentacja końcowa Realizacja niezawodnych usług w OpenSSI. Marcin Najs 16 czerwca 2005

Serwer współbieżny połączeniowy

Sieci komputerowe - Protokoły warstwy transportowej

Przykłady interfejsu TCP i UDP w Javie

Komunikacja pomiędzy S i S7-300/400 przez Ethernet (1)

Pomoc dla użytkowników systemu asix 6. Strategia buforowa

Wykład 4. komputerowych Protokoły SSL i TLS główne slajdy. 26 października Igor T. Podolak Instytut Informatyki Uniwersytet Jagielloński

Programowanie sieciowe

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Warstwa transportowa. mgr inż. Krzysztof Szałajko

Wybrane działy Informatyki Stosowanej

asix5 Podręcznik użytkownika Strategia buforowa

Programowanie Sieciowe 1

Problemy z bezpieczeństwem w sieci lokalnej

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium przyrządów wirtualnych. Ćwiczenie 4

Funkcje sterownika CellBOX-UxR ModBUS RTU

Laboratorium Protokoły sieci teleinformatycznych

TRX API opis funkcji interfejsu

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

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

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

Wprowadzenie. Dariusz Wawrzyniak 1

Systemy operacyjne System sieciowy UNIX-a

Wywoływanie procedur zdalnych

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

1 Moduł Diagnostyki Sieci

Tryby komunikacji między procesami w standardzie Message Passing Interface. Piotr Stasiak Krzysztof Materla

IP: Maska podsieci: IP: Maska podsieci: Brama domyślna:

Laboratorium 6.7.2: Śledzenie pakietów ICMP

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

Ataki na serwery Domain Name System (DNS Cache Poisoning)

Sieci komputerowe i bazy danych

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Wywoływanie procedur zdalnych

Cele. Założenia. Format komunikatów

1. Wstęp Wieloschowek sieciowy

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Transkrypt:

II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu operacje na gniazdach : funkcje czytania: read, recv, recvfrom ( czytanie buforowane blokujące ) funkcje pisania: write, send, sendto ( pisanie buforowane nieblokujące lub blokujące przy pełnym buforze) funkcja utworzenia gniazda: funkcja połączenia gniazda z adresem zdalnym: connect funkcja połączenia gniazda z adresem lokalnym: bind funkcja kontroli połączenia : accept adresowanie gniazda: adres komputera + numer portu numery portów: 1-1023 zastrzeżone 1024-5000 przydzielane przez system powyżej 5000 porty użytkownika

Rodzaje komunikacji 1) komunikacja połączeniowa procesy nawiązują ze sobą połączenie kontrolowane przez system. Po nawiązaniu połączenia dane są wysyłane lub odbierane w postaci strumienia bajtów ( protokół TCP ) operacje klienta: connect read, write, recv, send - łączy się z serwerem - czyta lub pisze do gniazdka operacje serwera: bind listen accept - łączy gniazdo ze swoim adresem sieciowym i numerem portu - ustala maksymalną listę żądań połączeń które mogą czekać na usługę (po przekroczeniu następuje odrzucenie) - przyjmuje żądanie połączenia od klienta i wysyła komunikat read, write, send, recv - czyta lub pisze do gnizdka uwagi: Dane są przesyłane w postaci bloku bajtów. Może się zdarzyć że aktualny blok bajtów nie może być przesłany w całości. Funkcje read/ write nie sygnalizują wtedy błędu. Należy je wywołać powtórnie aby wysłać lub odebrać pozostałą resztę bajtów. Dlatego odczyt lub zapis przez gniazdo należy zaimplementować w postaci iteracyjnego wywoływania funkcji read/ write.

2) komunikacja bezpołączeniowa (datagramowa) procesy nawiązują połączenie bez kontroli połączenia. Dane są wysyłane lub odbierane w postaci pakietów (protkół UDP ) operacje klienta: bind - adresuje gniazdko do odbioru danych sendto, recvfrom - pisze lub czyta z gniazdka operacje serwera: bind sendto, recvfrom - adresuje gniazdko do odbioru danych - czyta lub pisze do gniazdka uwagi: 1) Pakiet stracony. Proces nadawca nie ma wiedzy czy pakiet został odebrany przez proces odbiorcy. Pakiet może nigdy nie dotrzeć do odbiorcy z powodu błędu (suma kontrolna). Odbiorca powinien w takim przypadku ponowić żądanie wysłania pakietu. 2) Ograniczenie wielkości pakietów. Maksymalna wielkość pakietu zależy protokołu i konfiguracji sieci 3) Zbyt małe pakiety Pakiety mogą dotrzeć do odbiorcy w innej kolejności niż zostały wysłane. W przypadku wysyłania dużej ilości danych nadawca powinien numerować pakiety a odbiorca szeregować je we właściwej kolejności.

Ćwiczenia Pliki: KLIENT_SERWER/ bufor.h monitory.c monitory.h gniazdo.h gniazdo.c echo_icserwer.c echo_iclient.c echo_idserwer.c echo_idclient.c 1. Aplikacja klienet-serwer: Program klienta łączy się z serwerem i wysyła do niego tekst a serwer odpowiada w postaci echa a) echo_icserwer.c komunikacja połączeniowa b) echo_idserwer.c komunikacja bezpołączeniowa kompilacja: g++ gniazdo.c echo_icserwer.c -o serwer_echo 2. Utworzyć serwer współbieżny 3. Utworzyć serwer współbieżny działający w tle (jako demon) 4. Utworzyć serwer przesyłający klientowi czas systemowy. Zadania: 1) aplikacja klient-serwer: gra w kości dla dwóch klientów Klient nawiązują połączenie z serwerem i wysyła do niego parę liczb losowych z zakresu 1-6. Serwer odbiera liczby od dwóch klientów oblicza sumy i wysyła do klientów komunikat wygrałeś lub przegrałeś. Uwagi: możliwość rozszerzenia na więcej graczy 2) aplikacja klient-serwer: program producent-konsument Serwer pełni rolę bufora rozproszonego dla problemu producent konsument. Działa dwóch klientów, jeden wysyła dane do serwera (np. liczby losowe), serwer je odbiera i gromadzi w buforze (tablica ograniczona), a drugi klient odbiera te dane od serwera, które serwer mu odsyła pobierając je wcześniej z bufora. Uwagi: Serwer powinien mieć dwa wątki: jeden obsługuje klienta producenta, a drugi klienta konsumenta. Wątki serwera powinny wpisywać lub odczytywać dane z bufora korzystając z monitora (MONITOR_PK w pliku monitory.c) Możliwość rozszerzenia na wielu producentów i konsumentów

3) aplikacja klient-serwer: serwer jako baza danych Serwer zawiera bazę danych np tablicę liczb. Klienci mogą odczytywać dane z bazy jak i je zapisywać. Klient wysyła komunikat do serwera typu (czyta, klucz) lub (pisze, klucz). Klucz oznacza identyfikator rekordu danych (np. indeks elementu tablicy ). Serwer powinien zezwalać na czytanie wielu klientom jednocześnie. W przypadku gdy klient zapisuje coś do bazy pozostali klienci nie mogą mieć w tym momencie dostępu do bazy. Uwaga: Problem czytelników i pisarzy 4) Synchronizacja zegarów: Jest ustalona liczba procesów np. 3 Procesy działające w różnych systemach operacyjnych mają synchronizować własne zegary. Każdy proces ma dodatkowy wątek. Proces w pętli nieskończonej co jakiś czas aktualizuje swój czas lokalny na podstawie wartości uzyskanej przez jego wątek, następnie ten zaktualizowany czas wysyła komunikatem do losowo wybranego procesu i wypisuje go na ekranie. Odbieraniem komunikatów zajmuje się wątek procesu. Zapisuje on największy czas (np. tmax ) jaki odbierze w komunikacie. Czas lokalny tego procesu (np. t1) jest aktualizowany gdy t1 < tmax na nową wartość t1 = tmax+1 po czym nowy czas jest wysyłany do losowo wybranego procesu. Komunikacja jest przedstawiona na schemacie: P1 P2 P3 wątek1 wątek2 wątek3 Strzałki pokazują kto jest odbiorcą komunikatu. Należy użyć protokołu UDP. Uwaga: zegarem procesu może być licznik w pętli nieskończonej, a aktualizacja czasu następuje co pewną stałą liczbę cykli w pętli. Jako licznika można użyć zmiennej double 5) Serwer rozproszony: W systemie rozproszonym działa serwer główny i trzy serwery na innych maszynach. Procesy klienta wysyłają komunikat do serwera głównego który kieruje go do jednego z trzech wolnych serwerów. Odpowiedni serwer odsyła echo komunikatu do klienta. Działanie aplikacji pokazuje schemat: S1 S2 S2 komunikacja bezpołączeniowa (UDP) SERWER C1 C2 komunikacja z kontrolą połączenia (TCP)