Instytut Teleinformatyki

Podobne dokumenty
Instytut Teleinformatyki

Instytut Teleinformatyki

Iteracyjny serwer TCP i aplikacja UDP

Instytut Teleinformatyki

Programowanie przy użyciu gniazdek

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

Klient-Serwer Komunikacja przy pomocy gniazd

Komunikacja sieciowa - interfejs gniazd

Programowanie Sieciowe 1

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2011/2012. Programowanie usług sieciowych

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

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

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

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

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

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

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

Programowanie współbieżne i rozproszone

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

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

Kolejki FIFO (łącza nazwane)

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

Instalacja i konfiguracja serwera telnet.

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

Bezpieczeństwo systemów informatycznych

Podstawowe typy serwerów

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

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

KARTA PRZEDMIOTU. Systemy Rozproszone D1_3

2. Interfejs gniazd Gniazdo

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Programowanie sieciowe

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Systemy operacyjne. Instrukcja laboratoryjna. Ćwiczenie 1: Polecenia systemu UNIX/LINUX. Opracował: dr inż. Piotr Szpryngier

KONFIGURACJA SIECIOWA SYSTEMU WINDOWS

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Gniazda BSD implementacja w C#

INSTALACJA I KONFIGURACJA SYSTEMU WINDOWS

Wybrane działy Informatyki Stosowanej

Kopiowanie plików. 1. Z sieci wewnętrznej PK. System Windows

1 Zapoznanie się ze środowiskiem Xenomai.

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

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

TRX API opis funkcji interfejsu

Krótkie wprowadzenie do korzystania z OpenSSL

Tworzenie aplikacji rozproszonej w Sun RPC

1. Model klient-serwer

4.2 Sposób korzystania z l acza

Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wywoływanie metod zdalnych

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Wprowadzenie do programowania i programowanie obiektowe

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Wywoływanie metod zdalnych

Zadanie 2: transakcyjny protokół SKJ (2015)

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

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

Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6

ZASADY ADRESOWANIA IP cz. II

Budowa i oprogramowanie komputerowych systemów sterowania. Laboratorium 4. Metody wymiany danych w systemach automatyki DDE

Aplikacje RMI

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

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

NS-2. Krzysztof Rusek. 26 kwietnia 2010

SYSTEMY CZASU RZECZYWISTEGO (SCR)

76.Struktura oprogramowania rozproszonego.

Laboratorium Ericsson HIS NAE SR-16

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

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

SIECI KOMPUTEROWE I TECHNOLOGIE INTERNETOWE

Systemy Operacyjne - Operacje na plikach

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do Programowania, laboratorium 02

Laboratorium - Poznawanie FTP

Programowanie rozproszone w języku Java

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Tryb bezpołączeniowy (datagramowy)

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Tutaj znajdziesz Odpowiedź na: Najczęściej Spotykane Problemy Najczęściej zadawane Pytania

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

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

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

Gniazda BSD. komunikacja bezpołączeniowa

Część 4 życie programu

Transkrypt:

Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Dziedzina Unix laboratorium: 06 Kraków, 2014

06. Programowanie Usług Sieciowych Dziedzina Unix 2 Spis treści Spis treści... 2 1. Wiadomości wstępne... 3 1.1. Tematyka laboratorium... 3 1.2. Zagadnienia do przygotowania... 3 1.3. Cel laboratorium... 4 2. Przebieg laboratorium... 5 2.1. Przygotowanie laboratorium... 5 2.2. Zadanie 1. Dowiązanie nazwy ścieżkowej do gniazda w dziedzinie Unix.... 5 2.3. Zadanie 2. Datagramowa obsługa komunikacji k-s w dziedzinie Unix.... 7 2.4. Zadanie 3. Przykład przekazania deskryptora... 8 3. Opracowanie i sprawozdanie... 9

06. Programowanie Usług Sieciowych Dziedzina Unix 3 1. Wiadomości wstępne Pierwsza część niniejszej instrukcji zawiera podstawowe wiadomości teoretyczne dotyczące protokołów dziedziny Unix. Poznanie tych wiadomości umożliwi prawidłowe zrealizowanie praktycznej części laboratorium. 1.1. Tematyka laboratorium Tematyką laboratorium jest programowanie aplikacji klient-serwer w oparciu o protokoły dziedziny Unix. Protokoły te nie stanowią rzeczywistej rodziny protokołów, lecz jedynie pewien sposób prowadzenia komunikacji między procesami klienta i serwera wykonywanymi w tej samej stacji. Umożliwiają stosowanie tego samego interfejsu API (ang. Application Program Interface), który służy do programowania klientów i serwerów wykonywanych w różnych stacjach. Istnieją dwa rodzaje gniazd w dziedzinie Unix: o strumieniowe przypominające gniazda TCP, o datagramowe przypominające gniazda UDP. Gniazda identyfikujemy za pomocą nazw ścieżkowych w obrębie zwykłego systemu plików. Nazwy te nie odnoszą się do zwykłych plików systemu Unix. Nie można pobierać danych z tych plików ani do nich zapisywać w zwyczajny sposób. Może to robić jedynie program, który powiązał taką nazwę ścieżkową z gniazdem w dziedzinie Unix. 1.2. Zagadnienia do przygotowania Przed przystąpieniem do realizacji laboratorium należy zapoznać się z zagadnieniami dotyczącymi aplikacji typu klient - serwer: o Jak wygląda połączenie. A także z zagadnieniami dotyczącymi gniazd: o Co to jest gniazdo; o Jak wygląda gniazdo w dziedzinie Unix; o Działanie funkcji socet(), bind(), listen(), accept(), connect() oraz close().

06. Programowanie Usług Sieciowych Dziedzina Unix 4 Literatura: [1] W.R. Stevens, Programowanie Usług Sieciowych, API: gniazda i XTI. [2] N. Matthew, R.Stones Linux programowanie. 1.3. Cel laboratorium Celem laboratorium jest zapoznanie się z możliwym wykorzystaniem gniazd w dziedzinie Unix. Podczas realizacji tego laboratorium zapoznasz się z: o sposobem komunikacji pomiędzy klientem i serwerem (uruchomionych na tej samej stacji) przy użyciu gniazd dziedziny Unix, o z możliwościami gniazd w dziedzinie Unix, o z technikami używania gniazd w dziedzinie Unix.

06. Programowanie Usług Sieciowych Dziedzina Unix 5 2. Przebieg laboratorium Druga część instrukcji zawiera zadania do praktycznej realizacji, które demonstrują zastosowanie technik z omawianego zagadnienia. 2.1. Przygotowanie laboratorium Przed przystąpieniem do dalszej części laboratorium należy skopiować cała zawartość katalog /home/shared/pus/pus_06_unixdomain do katalogu ~/pus/pus_06_unixdomain. 2.2. Zadanie 1. Dowiązanie nazwy ścieżkowej do gniazda w dziedzinie Unix. Treścią zadania jest przeanalizowanie programu wykorzystującego funkcję bind do dowiązania nazwy ścieżkowej podanej w linii poleceń do gniazda w dziedzinie Unix. W celu uruchomienia programu należy wykonać następujące czynności: 1. Przejdź do katalogu ze źródłem programu: $ cd ~/pus/pus_06_unixdomain 2. Skompiluj źródło: $ g++ unixbind.c o unixbind 3. Uruchom program podając w wierszu poleceń nazwę ścieżkową: $./unixbind /tmp/b 4. Wynikiem działania tego programu jest wypisanie na ekran naszej dowiązanej ścieżki i rozmiaru jej struktury gniazdowej: bound name = /tmp/b, returned len = 9 5. Analiza kodu:

06. Programowanie Usług Sieciowych Dziedzina Unix 6 (01)#include "unp.h" (02)int (03)main(int argc, char **argv) (04) { (05) int sockfd; (06) socklen_t len; (07) struct sockaddr_un addr1, addr2; (10) sockfd = socket(af_local, SOCK_STREAM, 0); (11) unlink(argv[1]); /* OK if this fails */ (12) bzero(&addr1, sizeof(addr1)); (13) addr1.sun_family = AF_LOCAL; (14) strncpy(addr1.sun_path, argv[1], sizeof(addr1.sun_path)-1); (15) bind(sockfd, (SA *) &addr1, SUN_LEN(&addr1)); (16) len = sizeof(addr2); (17) getsockname(sockfd, (SA *) &addr2, &len); (18) printf("bound name = %s, returned len =d\n",addr2.sun_path, len); (19) exit(0); (20) } Numer Funkcja Opis 11 unlink Usuwa nazwę ścieżkową 14 strncpy Kopiuje wiersz poleceń 15 bind Dowiązuje nazwę ścieżkową do gniazda 17 getsockname Pobiera tą samą nazwę ścieżkową, którą przed chwilą dowiązaliśmy Tabela Opis funkcji wykorzystanych w programie

06. Programowanie Usług Sieciowych Dziedzina Unix 7 2.3. Zadanie 2. Datagramowa obsługa komunikacji k-s w dziedzinie Unix. Przeanalizuj program i działanie klienta i serwera echa UDP, korzystający z gniazd w dziedzinie Unix. W programie klienta: o obie gniazdowe struktury mają typ danych sockaddr_un, o pierwszy argument przekazywany do funkcji socket ma wartość AF_LOCAL, tworząc gniazdo datagramowe w dziedzinie Unix, o zdefiniowana w pliku unp.h stała UNIXDG_PATH ma wartość /tmp/unix.dg, o inicjujemy gniazdową strukturę adresową, którą przekazujemy do funkcji bind, o wywołujemy funkcję dg_echo. W programie serwera: o gniazdową strukturą adresową jest struktura sockaddr_un, o przekazujemy do funkcji socket argument AF_LOCAL, o w sposób jawny wywołujemy funkcję bind, dowiązując nazwę ścieżkową do naszego gniazda, tak aby serwer otrzymał nazwę ścieżkową do której mógłby wysłać odpowiedzi, o wypełniamy nazwą ścieżkową przydzieloną serwerowi gniazdową strukturę adresową, o używamy funkcji dg_cli. W celu uruchomienia programu: 1. Przejdź do katalogu ~/pus/pus_06_unixdomain/dg: $ cd ~/pus/pus_06_unixdomain/dg 2. Uruchom plik do kompilacji Makefile: $. Makefile 3. Uruchom serwer korzystający z gniazd w dziedzinie Unix; $./unixdgserv01 4. Uruchamiamy klienta UDP: $./unixdgcli01 Następnie wpiszmy dowolny tekst w programie klienta i zaobserwujmy co się stało podczas wysłania komunikatu do serwera.

06. Programowanie Usług Sieciowych Dziedzina Unix 8 2.4. Zadanie 3. Przykład przekazania deskryptora Zadanie polega na przeanalizowaniu programu mycat.c, który będzie pobierał z wiersza poleceń nazwę ścieżkową, otwierał plik i kopiował zawartość do standardowego wyjścia. Zamiast wywoływać funkcję open, wywołujemy naszą funkcję my_open. Funkcja utworzy łącze strumieniowe i wywoła funkcje fork oraz exec, aby uruchomić inny program, który otworzy żądany plik. Ten inny program przekazuje otwarty deskryptor z powrotem do procesu macierzystego, używając łącza strumieniowego. Uruchomienie przez proces innego programu w celu otworzenia pliku ma taką zaletę, że dla programu można ustawić identyfikator użytkownika jako root. Zatem nasz program może otrzymać uprawnienia do otwierania dowolnych plików, czyli takich, które normalnie nie mielibyśmy prawa otworzyć. W celu uruchomienia programu: 1. Przejdź do katalogu ~/pus/pus_06_unixdomain/mycat: $ cd ~/pus/pus_06_unixdomain/mycat 2. Uruchom plik do kompilacji Makefile: $. Makefile 3. Uruchom program, który kopiuje plik do wyjścia standardowego: $./mycat sciezka_do_pliku

06. Programowanie Usług Sieciowych Dziedzina Unix 9 3. Opracowanie i sprawozdanie Realizacja laboratorium pt. Dziedzina Unix polega na wykonaniu wszystkich zadań programistycznych podanych w drugiej części tej instrukcji. Wynikiem wykonania powinno być sprawozdanie w formie wydruku papierowego dostarczonego na kolejne zajęcia licząc od daty laboratorium, kiedy zadania zostały zadane. Sprawozdanie powinno zawierać: o opis metodyki realizacji zadań (system operacyjny, język programowania, biblioteki, itp.), o algorytmy wykorzystane w zadaniach (zwłaszcza, jeśli zastosowane zostały rozwiązania nietypowe), o opisy napisanych programów wraz z opcjami, o trudniejsze kawałki kodu, opisane tak, jak w niniejszej instrukcji, o uwagi oceniające ćwiczenie: trudne/łatwe, nie/realizowalne podczas zajęć, nie/wymagające wcześniejszej znajomości zagadnień (wymienić jakich), o wskazówki dotyczące ewentualnej poprawy instrukcji celem lepszego zrozumienia sensu oraz treści zadań, o itp.