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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 Gniazda - Wstęp Oprogramowanie systemów równoległych i rozproszonych Dr inż. Tomasz Olas Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Domena adresowa 1/?? Podstawa mechanizmu wejścia-wyjścia dla sieci w systemie Unix jest abstrakcyjny mechanizm znany jako gniazda (ang. socket). Gniazdo należy traktować jako jako uogólnienie mechanizmu dostępu do plików udostępniajace jeden z końców łacza komunikacyjnego. Każdy z komunikujacych się ze soba procesów tworzy po swojej stronie jedno gniazdo. Główna różnica pomiędzy deskryptorami plików i gniazdami polega na tym, że system operacyjny wiaże deskryptor z określonym plikiem lub urzadzeniem, natomiast gniazda można tworzyć bez wiazania ich z określonym adresem odbiorcy. Gniazdo jest opisywane za pomoca kombinacji trzech atrybutów: domeny adresowej, sposobu komunikacji i protokołu sieciowego. Sposób komunikacji Wykład 5 p Domena adresowa określa domenę w której będzie realizowana komunikacja: PF_LOCAL (PF_UNIX) - komunikacja w obrębie jednej maszyny, PF_INET - Internet, czyli używamy protokołów z rodziny TCP/IP, PF_IPX - protokoły IPX/SPX (Novell), PF_PACKET - niskopoziomowy interfejs do odbierania pakietów w tzw. surowej (ang. raw) postaci. Zamiennie używa się notacji PF_xxx (PF - Protocol Family) oraz AF_xxx (AF - Address Family). Gniazda typu SOCK_STREAM - komunikacja w modelu połaczeniowym (zwykle zwiazane z protokołem TCP warstwy transportowej) Gniazda typu SOCK_DGRAM - komunikacja w modelu bezpołaczeniowym korzystajaca z tzw. datagramów (zwykle zwiazane z protokołem UDP warstwy transportowej) Gniazda typu SOCK_RAW - komunikacja na niskim poziomie - dostęp do surowych pakietów na poziomie warstwy sieciowej TCP/IP. 3/?? Wykład 5 p

2 Funkcja socketpair Zamknięcie gniazda Do tworzenia gniazdek w domenie unixowej może zostać wykorzystana funkcja socketpair: int socketpair(int family, int type, int protocol, int sockvec[2]); Funkcja zwraca deskryptor gniazda. family - oznacza domenę komunikacyjną (czyli rodzinę protokołów adresów) w jakiej będzie funkcjonować nowe gniazdo. W systemie Linux jedyna obsługiwana domena jest PF_UNIX. type - określa rodzaj gniazda, protocol - protokół z jakiego gniazdo korzysta, sockver - gdy nie wystapi bład zostana do tej zmiennej zapisana para deskryptorów gniazd w domenie Unixa. Otrzymuje się w ten sposób łacze strumieniowe z możliwościa dwustronnej komunikacji. Funkcję close służy do zamykania gniazda i kończenia połaczenia: int close(int fd); fd - deskryptor gniazda, 0 - w przypadku sukcesu, -1 - jeśli wystapił bład. Przy wywoływaniu funkcji close zmniejszany jest licznik odwołań do deskryptora. Gdy proces się kończy, system operacyjny zamyka wszystkie gniazda, które były wówczas otwarte. Przesyłanie danych 5/?? read/write Wykład 5 p Przesyłanie danych poprzez gniazda może odbywać się z wykorzystaniem pięciu różnych funkcji systemowych: send/write, sendto/recvfrom, sendmsg/recvmsg, write/read, writev/readv. Procedury send/recv, sendto/redvfrom oraz sendmsg/recvmsg wymagaja aby gniazdo było przyłaczone, gdyż nie umożliwiaja podania adresu odbiorcy. read/write readv/writev + send/recv + wiele dodatkowe adres informacje buforów znaczniki partnera kontrolne sendto/recvfrom + + sendmsg/recvmsg ssize_t read(int fd, void *buf, size_t count) ssize_t write(int fd, const void *buf, size_t count) fd - deskryptor, buff - adres danych do odczytania/zapisania, length - rozmiar danych do odczytania/zapisania. liczba odczytanych/zapisanych bajtów - w przypadku sukcesu, -1 - w przypadku błędu. 7/?? Wykład 5 p

3 socketpair - przykład (1) socketpair - przykład (2) #include <unistd.h> #include <iostream> const int SIZE = 40; int main() int sockets[2]; socketpair(pf_unix, SOCK_STREAM, 0, sockets); int pid = fork(); if (pid == 0) // proces potomny close(sockets[1]); char buf[size]; sprintf(buf, "proces potomny: %d", getpid()); write(sockets[0], buf, sizeof(buf) + 1); read(sockets[0], buf, SIZE); close(sockets[0]); std::cout << "#1: " << getpid() << "\n#1: " << buf << std::endl;... else // proces macierzysty close(sockets[0]); char buf[size]; read(sockets[1], buf, SIZE); std::cout << "#0: " << getpid() << "\n#0: " << buf << std::endl; sprintf(buf, "proces macierzysty: %d", getpid()); write(sockets[1], buf, sizeof(buf) + 1); close(sockets[1]); return 0; socketpair - przykład (3) 9/?? Model klient serwer Przykładowy rezultat działania programu: #0: 1458 #0: proces potomny: 1459 #1: 1459 #1: proces macierzysty: 1458 Termin serwer odnosi się do każdego programu, który oferuje usługę dostępna poprzez sieć. Serwer przyjmuje przez sieć zamówienia, wykonuje usługę i zwraca wyniki zamawiajacemu. Klientem staje się program, który wysyła zamówienie do serwera i czeka na odpowiedź. W przypadku modelu klient serwer każde połaczenie sieciowe jest tworzone przez klienta wysyłajacego żadania do stale oczekujacego na nie klienta. Gniazda używane przez procesy klienckie nazywane sa gniazdami aktywnymi (one inicjuja połaczenie), natomiast gnizda wykorzystywane w serwerach nazywane sa analogicznie gniazdami pasywnymi. 11/??

4 Komunikacja połaczeniowa Tworzenie gniazd Użytkownik identyfikuje gniazda za pomoca deskryptorów (wykorzystywanych przy każdorazowym odwoływaniu się do gniazda) Funkcja socket tworzy nowe gniazdo i zwraca jego deskryptor: int socket (int family, int type, int protocol); family - oznacza domenę komunikacyjną (czyli rodzinę protokołów adresów) w jakiej będzie funkcjonować nowe gniazdo, np: PF_INET - intersieć TCP/IP, PF_UNIX - system plików systemu Unix, PF_APPLETALK - itersieć firmy Apple Computer Incorporated, type - określa rodzaj gniazda, protocol - protokół z jakiego gniazdo korzysta (w przypadku 0 będzie to domyślny protokół dla danego rodzaju gniazda). Określanie adresu lokalnego 13/?? Struktura sockaddr Poczatkowo nowo utworzone gniazdo nie jest zwiazane z żadnym adresem lokalnym ani odległym. Po utworzeniu gniazda serwer wiaże z nim adres lokalny za pomoca funkcji systemowej bind: int bind(int fd, struct sockaddr *my_addr, int addrlen) fd - deskryptor gniazda, my_addr - wskaźnik na strukturę adresów odpowiednia dla rodziny protokołów, do której należy gniazdo, addrlen - rozmiar tej struktury. Dla domeny uniksowej: struct sockaddr_un short sun_family; /* AF_UNIX */ char sun_data; /* ścieżka */ ; Dla domeny internetowej: struct sockaddr_in short sin_family; /* AF_INET */ u_short sin_port; /* 16-bitowy numer portu */ struct in_addr sin_addr; /* 32-bitowy internetowy */ /* adres hosta */ char sin_zero[8]; /* zarezerwowane */ ; 15/??

5 Serwer - przyjmowanie połaczeń (I) Serwer - przyjmowanie połaczeń (II) Serwer używa funkcji socket, bind i listen do utworzenia gniazda. Wywołanie bind wiaże gniazdo z powszechnie znanym portem protokołu, ale nie powoduje podłaczenia gniazda do żadnego odległego odbiorcy. Zamiast odległego odbiorcy podaje się adres uogólniajacy (ang. wildcard), by gniazdo mogło przyjmować połaczenia od dowolnych klientów. Po utworzeniu gniazda serwer czeka na połaczenia. W tym celu wywołuje procedurę systemowa accept. Gdy nadchodzi żadanie, system wypełnia strukturę addr adresem klienta, który je zgłosił. Następnie system tworzy nowe gniazdo, które jest połaczone z klientem i dostarcza wywołujacemu programowi deskryptor tego gniazda. Pierwotne gniazdo nadal nie jest połaczone z żadnym konkretnym odległym klientem i pozostaje w dalszym ciagu otwarte. Dzięki temu serwer nadal może czekać na żadania nadchodzace za pośrednictwem tego gniazda. Wywołanie accept kończy się po nadejściu żadania połaczenia. Serwer może obsługiwać nadchodzace żadania po kolei, badź też współbieżnie. listen 17/?? accept Funkcja listen ustala maksymalna długość kolejki klientów oczekujacych na połaczenie. int listen(int fd, int backlog); fd - deskryptor gniazda, backlog - maksymalna liczba zgłoszeń połaczenia z serwerem. 0 - w przypadku sukcesu, wartość ujemna - jeśli wystapił bład. W przypadku rodziny Unixa gniazdo musi być strumieniowe i mieć dowiazan a nazwę. W przypadku rodziny Internetu, jeśli gniazdo nie ma nazwy, to listen automatycznie je dowiaże. Funkcja accept służy do oczekiwania na połaczenie - proces jest blokowany aż do momentu nawiazania połaczenia przez inny proces. W momencie nawiazania połaczenia i funkcja zwraca nowy deskryptor gniazda, który następnie jest używany do wymiany danych z klientem: #include &ltsys/types.h> #include &ltsys/socket.h> int accept(int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen); fd - deskryptor gniazda, upeer_sockaddr - wskaźnik na nazwę gniazda klienta (jako dodatkowy wynik) upeer_addrlen - rozmiar nazwy upeer_sockaddr (jako dodatkowy wynik) 0 - w przypadku sukcesu, -1 - jeśli wystapił bład. 19/??

6 Serwer - przykład (I) Server - przykład (II) #include <sys/un.h> #include <unistd.h> #include <iostream> const char name[] = "my_socket"; int main() int orginal_socket = socket(af_unix, SOCK_STREAM, 0); sockaddr_un server_address; server_address.sun_family = AF_UNIX; strcpy(server_address.sun_path, name); unlink(name); bind(orginal_socket, (sockaddr*)&server_address, sizeof(server_address.sun_family) + sizeof(server_address.sun_path)); listen(orginal_socket, 1); sockaddr_un client_address; socklen_t client_length = sizeof(client_address); int new_socket = accept(orginal_socket, (sockaddr*)&client_address, &client_length); char buf[255]; read(new_socket, buf, sizeof(buf)); std::cout << buf << std::endl; close(new_socket); close(orginal_socket); unlink(name); return 0; Łaczenie gniazda z adresem odbiorcy 21/?? connect Bezpośrednio po utworzeniu gniazda znajduje się ono w stanie niepołaczonym, co oznacza, że nie jest ono zwiazane z żadnym adresatem. Procedura systemowa connect trwale łaczy gniazdo z adresem odbiorcy, zmieniajac jednocześnie stan gniazda na połaczony. W przypadku gniazda odpowiadajacego niezawodnym strumieniom klient przed rozpoczęciem przesyłania danych za pośrednictwem gniazda musi wywołać procedurę connect w celu uzyskania połaczenia. Gniazda używane z usługami bezpołaczeniowego przesyłania datagramów nie wymagaja podłaczania przed użyciem, ale dzięki podłaczeniu można wysyłać dane do gniazdka, nie określajac adresu odbiorcy. Funkcja connect umożliwia nawiazanie połaczenia przy użyciu podanego gniazda z gniazdem nasłuchujacym: int connect(int fd, struct sockaddr *uservaddr, int addrlen); fd - deskryptor gniazda, uservaddr - struktura określajaca adres, z którym należy zwiazać wskazane gniazdo, addrlen - rozmiar adresu serwera. 0 - w przypadku sukcesu, wartość ujemna - w przypadku błędu, np: EBADF - fd jest nieprawidłowym deskryptorem, ENOTSOCK - fd nie jest deskryptorem gniazda, EISCONN - jest już zrealizowane polaczenie. 23/??

7 Klient - przykład Komunikacja bezpołaczeniowa #include <sys/un.h> #include <unistd.h> #include <iostream> const char name[] = "my_socket"; int main() int orginal_socket = socket(af_unix, SOCK_STREAM, 0); sockaddr_un server_address; server_address.sun_family = AF_UNIX; strcpy(server_address.sun_path, name); connect(orginal_socket, (sockaddr*)&server_address, sizeof(server_address.sun_family) + sizeof(server_address.sun_path)); char buf[] = "hello"; write(orginal_socket, buf, sizeof(buf)); close(orginal_socket); return 0; 25/?? Funkcje send i sendto Funkcje recv i recvfrom ssize_t send(int s, const void *buf, size_t len, int flags); 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); s - deskryptor gniazda, przez które wysyłamy dane, buf - wskaźnik do bufora, który chcemy wysłać, len - liczba bajtów bufora do wysłania, flags - dodatkowe flagi (np. codemsg_dontwait - Przełacza funkcję w tryb nieblokujacy), to - wskaźnik do struktury zawierajacej adres odbiorcy, addrlen - rozmiar struktury zawierajacej adres. liczba odczytanych/zapisanych bajtów - w przypadku sukcesu, -1 - w przypadku błędu. 27/?? ssize_t recv(int s, void *buf, size_t len, int flags); ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen); s - deskryptor gniazda, przez które odbieramy dane, buf - adres (wskaźnik) bufora, który będzie zawierał dane po ich odebraniu, len - rozmiar bufora (maksymalna liczba bajtów, która można jednorazowo odebrać), flags - dodatkowe flagi, to - wwskaźnik do struktury, przez która zwrócony zostanie adres nadawcy, addrlen - rozmiar struktury zawierajacej adres.

8 Przykład - serwer Przykład - klient const char name[] = "my_socket"; int main() int orginal_socket = socket(af_unix, SOCK_DGRAM, 0); unlink(name); sockaddr_un server_address; server_address.sun_family = AF_UNIX; strcpy(server_address.sun_path, name); bind(orginal_socket, (sockaddr*)&server_address, sizeof(server_address.sun_family) + sizeof(server_address.sun_path)); char buf[255]; while (true) socklen_t client_length; recvfrom(orginal_socket, buf, sizeof(buf), 0, (sockaddr*)&server_address, &client_length); std::cout << buf << std::endl; close(orginal_socket); return 0; 29/?? Adres sieciowy const char name[] = "my_socket"; int main(int argc, char** argv) int orginal_socket = socket(af_unix, SOCK_DGRAM, 0); sockaddr_un server_address; server_address.sun_family = AF_UNIX; strcpy(server_address.sun_path, name); bind(orginal_socket, (sockaddr*)&server_address, sizeof(server_address.sun_family) + sizeof(server_address.sun_path)); sendto(orginal_socket, argv[1], sizeof(argv[1]), 0, (sockaddr*)&server_address, sizeof(sockaddr)); close(orginal_socket); return 0; Numer portu Każdy host w sieci ma przynajmniej dwa tylko właściwe sobie adresy: 48-bitowy adres ethernetowy (przypisywany ethernetowej karcie sieciowej przez producenta), 32-bitowy adres internetowy (tzw. numer IP). W interakcji z użytkownikiem jest on podzielony na cztery 8-bitowe liczby dziesiętne separowane kropkami. Każda z tych liczb może się zawierać w przedziale od 0 do 255, choć wartości brzegowe sa używane jako wartości specjalnego przeznaczenia. Numer portu jest liczba 16-bitowa bez znaku. Jednoznacznie identyfikuje połaczenie sieciowe w ramach jednego adresu IP. Para (adres IP, numer portu) jednoznacznie określa komputer w sieci, jak również konkretny proces działajacy na tym komputerze. 31/??

9 Funkcja gethostbyname (I) Funkcja gethostbyname (II) W przypadku domeny internetowej procesy musza dysponować swoimi adresami hostów i numerami portów, aby mogły ze soba nawiazać kontakt. Funkcja gethostbyname zwraca pełne informacje o hoście, którego nazwę podano w argumentach: #include <netinet/in.h> #include <netdb.h> hostent* gethostbyname(const char* name); name - wskaźnik na napis zawierajacy nazwę hosta. Jeśli nazwa hosta zostanie znaleziona funkcja zwróci wskaźnik na strukturę hostent, w przeciwnym wypadku zwróci NULL. struct hostent char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; #define h_addr h_addr_list[0] ; h_name - oficjalna nazwa hosta, h_aliases - lista aliasów, h_addrtype - typ adresu hosta, h_length - długość adresu, h_addr_list - lista adresów z serwera nazw. Zmiana kolejności bajtów 33/?? gethostbyname - przykład (I) Poszczególne typy komputerów różnia się sposobem przechowywania liczb, a protokoły TCP/IP określaja niezależny od maszyny standard porzadku bajtów liczb. System Unix BSD oferuje cztery procedury biblioteczne służace do konwersji między porzadkiem bajtów na danym komputerze oraz sieciowym porzadkiem bajtów (<netinet/in.h>): Do zamiany liczby z reprezentacji sieciowej do reprezentacji lokalnej (network to host) służa funkcje: uint16_t ntohs(uint16_t netshort); uint32_t ntohl(uint32_t netlong); Do konwersji liczb z porzadku danego komputera na porzadek sieciowy (host to network) służa funkcje: uint16_t htons(uint16_t hostshort); uint32_t htonl(uint32_t hostlong); hostent *host; std::string hostname; std::cout << "Podaj nazwe hosta: " << std::flush; std::getline(std::cin, hostname); host = gethostbyname(hostname.c_str()); if (host!= NULL) std::cout << "Oficialna nazwa: " << host->h_name << std::endl << "Aliasy: " << std::endl; while (*host->h_aliases) std::cout << " " << *host->h_aliases << std::endl; ++host->h_aliases; std::cout << "Typ adresu: " << host->h_addrtype << std::endl << "Dlugosc adresu: " << host->h_length << std::endl << "Lista adresów: " << std::endl; 35/??

10 gethostbyname - przykład (II) Domena internetowa - serwer (I) while (*host->h_addr_list) in_addr in; memcpy(&in.s_addr, *host->h_addr_list, sizeof(in.s_addr)); std::cout << "[" << host->h_addr_list << "] = " << *host->h_addr_list << inet_ntoa(in) << std::endl; ++host->h_addr_list; Przykładowy wynik działania programu: Podaj nazwe hosta: localhost Oficialna nazwa: localhost Aliasy: Typ adresu: 2 Dlugosc adresu: 4 Lista adresów: [0x804a648] = Domena internetowa - serwer (II) 37/?? #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <iostream> #include "local.h" int main() int orginal_socket = socket(af_inet, SOCK_STREAM, 0); if (orginal_socket < 0) perror("blad generowania"); exit(1); sockaddr_in server_address; memset(&server_address, 0, sizeof(sockaddr_in)); server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = htonl(inaddr_any); server_address.sin_port = htons(port); Domena internetowa - serwer (III) if (bind(orginal_socket, (sockaddr*)&server_address, sizeof(server_address)) < 0) perror("blad dowiazania"); exit(2); if (listen(orginal_socket, 5) < 0) perror("blad nasluchu"); exit(3); do sockaddr_in client_address; socklen_t client_len = sizeof(client_address); int new_socket = accept(orginal_socket, (sockaddr*)&client_address, &client_len); if (new_socket < 0) perror("blad akceptowania"); exit(4); if (fork() == 0) int len; const int BUFSIZE = 255; char buf[bufsize]; while ((len = read(new_socket, buf, BUFSIZE)) > 0) for (int i = 0; i < len; i++) buf[i] = toupper(buf[i]); write(new_socket, buf, len); if (buf[0] ==. ) break; close(new_socket); exit(0); else close(new_socket); while (true); 39/??

11 Domena internetowa - klient (I) Domena internetowa - klient (II) int main(int argc, char** argv) hostent *host = gethostbyname(argv[1]); sockaddr_in server_address; memset(&server_address, 0, sizeof(server_address)); server_address.sin_family = AF_INET; memcpy(&server_address.sin_addr, host->h_addr, host->h_length); server_address.sin_port = htons(port); int orginal_socket = socket(af_inet, SOCK_STREAM, 0); if (orginal_socket < 0) perror("blad generowania"); exit(3); char buf[255]; std::string line; do std::cout << "> " << std::flush; getline(std::cin, line); write(orginal_socket, line.c_str(), line.size()+1); read(orginal_socket, buf, 255); std::cout << buf << std::endl; while (line[0]!=. ); close(orginal_socket); exit(0); if (connect(orginal_socket, (sockaddr*)&server_address, sizeof(server_address)) < 0) perror("blad polaczenia"); exit(4); Lokalne i odległe adresy gniazd 41/?? Obsługa wielu klientów Do ustalenia adresu odbiorcy, z którym jest połaczone dane gniazdo służy funkcja: int getpeername(int s, struct sockaddr *name, socklen_t *namelen); Procedura getsockname dostarcza lokalnego adresu zwiazanego z danym gniazdem: int getsockname(int s, struct sockaddr *name, socklen_t *namelen); Funkcje accept, send, recv, sendto, recfrom sa blokujace. Aby serwer mógł obsługiwać wielu klientów należy: utworzyć dla każdego klienta oddzielny proces, obsługiwać poszczególnych klientów przy użyciu dodatkowych watków, wykorzystać funkcję select. 43/??

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

Programowanie aplikacji równoległych i rozproszonych. Wykład 4 Wykład 4 p. 1/44 Programowanie aplikacji równoległych i rozproszonych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Gniazda - Wstęp

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe dr Tomasz Tyrakowski Dyż ury: wtorki 12:00 13:00 czwartki 14:00 15:00 pokój B4-5 e-mail: ttomek@amu.edu.pl materiały: http://www.amu.edu.pl/~ttomek 1 Wymagania podstawowa znajomość

Bardziej szczegółowo

Gniazda. S. Samolej: Gniazda 1

Gniazda. S. Samolej: Gniazda 1 Gniazda dr inż. Sławomir Samolej Katedra Informatyki i Automatyki Politechnika Rzeszowska Program przedmiotu oparto w części na materiałach opublikowanych na: http://wazniak.mimuw.edu.pl/ oraz na materiałach

Bardziej szczegółowo

Programowanie przy użyciu gniazdek

Programowanie przy użyciu gniazdek Programowanie przy użyciu gniazdek Gniazdo (ang. socket) pojęcie abstrakcyjne reprezentujące dwukierunkowy punkt końcowy połączenia. Dwukierunkowość oznacza możliwość wysyłania i przyjmowania danych. Wykorzystywane

Bardziej szczegółowo

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

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej

Bardziej szczegółowo

2. Interfejs gniazd. 2.1. Gniazdo

2. Interfejs gniazd. 2.1. Gniazdo 2. 2.1. Gniazdo Gniazdo (ang. socket): pewna abstrakcja wykorzystywana do wysyłania lub otrzymywania danych z innych procesów. Pełni rolę punktu końcowego w linii komunikacyjnej. to interfejs między programem

Bardziej szczegółowo

Podstawowe typy serwerów

Podstawowe typy serwerów Podstawowe typy serwerów 1. Algorytm serwera. 2. Cztery podstawowe typy serwerów. iteracyjne, współbieżne, połączeniowe, bezpołączeniowe. 3. Problem zakleszczenia serwera. 1 Algorytm serwera 1. Utworzenie

Bardziej szczegółowo

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1 Komunikacja międzyprocesowa Krzysztof Banaś Systemy rozproszone 1 Komunikacja międzyprocesowa Dla funkcjonowania systemów rozproszonych konieczna jest sprawna komunikacja pomiędzy odległymi procesami Podstawowym

Bardziej szczegółowo

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1

Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 Komputery i Systemy Równoległe Jędrzej Ułasiewicz 1 1 Interfejs gniazdek Jednolity interfejs API (Application Program Interface) do mechanizmów komunikacji sieciowej. Wprowadzony w wersji Unixa BSD 4.2

Bardziej szczegółowo

1. Model klient-serwer

1. Model klient-serwer 1. Model klient-serwer 1.1. Model komunikacji w sieci łącze komunikacyjne klient serwer Tradycyjny podział zadań: Klient strona żądająca dostępu do danej usługi lub zasobu Serwer strona, która świadczy

Bardziej szczegółowo

Architektura typu klient serwer: uproszczony klient POP3

Architektura typu klient serwer: uproszczony klient POP3 Architektura typu klient serwer: uproszczony klient POP3 Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej dr inż. Łukasz Szustak Składniki systemu poczty e-mail

Bardziej szczegółowo

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC plan programowanie sieciowe BSD/POSIX Socket API systemy RPC interfejsy obiektowe CORBA DCOM RMI WebServices WSDL/SOAP XML-RPC REST

Bardziej szczegółowo

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq) Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER

Bardziej szczegółowo

Krótkie wprowadzenie do korzystania z OpenSSL

Krótkie wprowadzenie do korzystania z OpenSSL Krótkie wprowadzenie do korzystania z OpenSSL Literatura: http://www.openssl.org E. Rescola, "An introduction to OpenSSL Programming (PartI)" (http://www.linuxjournal.com/article/4822) "An introduction

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe email: dawid@us.edu.pl Programowanie warstwy transportu. - Berkeley sockets. - koncepcja gniazda - bibliteka sockets (connect(),socket(),bind(),listen(),accept(),read(),write() )

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 6 dr inż. Komunikowanie się procesów Z użyciem pamięci współdzielonej. wykorzystywane przede wszystkim w programowaniu wielowątkowym. Za pomocą przesyłania

Bardziej szczegółowo

Gniazda BSD UNIWERSYTET GDAŃSKI WYDZIAŁ MATEMATYKI I FIZYKI. Jacek Nowicki

Gniazda BSD UNIWERSYTET GDAŃSKI WYDZIAŁ MATEMATYKI I FIZYKI. Jacek Nowicki UNIWERSYTET GDAŃSKI WYDZIAŁ MATEMATYKI I FIZYKI Gniazda BSD Jacek Nowicki Praca magisterska napisana pod kierunkiem prof. dra hab. Andrzeja Mostowskiego Gdańsk 2003 Spis treści Wstęp...3 1. Krótki rys

Bardziej szczegółowo

iseries Programowanie z użyciem gniazd

iseries Programowanie z użyciem gniazd iseries Programowanie z użyciem gniazd iseries Programowanie z użyciem gniazd Copyright International Business Machines Corporation 2000, 2001. Wszelkie prawa zastrzeżone. Spis treści Część 1. Programowanie

Bardziej szczegółowo

Serwer współbieżny połączeniowy

Serwer współbieżny połączeniowy Serwery współbieżne 1. Serwery współbieżne serwery połączeniowe, usuwanie zakończonych procesów, serwery bezpołączeniowe, 2. Jednoprocesowe serwery współbieżne. koncepcja i implementacja. 1 Serwer współbieżny

Bardziej szczegółowo

PROTOKOŁY WARSTWY TRANSPORTOWEJ

PROTOKOŁY WARSTWY TRANSPORTOWEJ PROTOKOŁY WARSTWY TRANSPORTOWEJ Na bazie protokołu internetowego (IP) zbudowane są dwa protokoły warstwy transportowej: UDP (User Datagram Protocol) - protokół bezpołączeniowy, zawodny; TCP (Transmission

Bardziej szczegółowo

Internet Control Message Protocol Aplikacja ping

Internet Control Message Protocol Aplikacja ping Internet Control Message Protocol Aplikacja ping Zagadnienia: Protokół ICMP. Specyfikacja projektu ping. Specyfikacja struktur i funkcji programu. Struktura programu. dr Zbigniew Lipiński Instytut Matematyki

Bardziej szczegółowo

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

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int

Bardziej szczegółowo

Beej s Guide to Network Programming

Beej s Guide to Network Programming Używanie gniazd internetowych Brian "Beej" Hall beej@piratehaven.org Bartosz Zapałowski bartek@klepisko.eu.org Copyright 1995-2001 Brian "Beej" Hall Historia zmian Zmiana Wersja 1.0.0 Sierpień, 1995 Revised

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6

Oprogramowanie systemów równoległych i rozproszonych. Wykład 6 Wykład 6 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 6 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Wykład 6 p.

Bardziej szczegółowo

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna 1 Plan wykładu 1. Model ISO/OSI warstwy modelu OSI transmisja w modelu OSI 2. Model TCP/IP protokół UDP protokół TCP 3. Połączenie i rozłączenie w TCP 4. Programowanie z wykorzystaniem gniazd. 2 Model

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2014/2015 Michał Cieśla pok. D-2-47, email: michal.ciesla@uj.edu.pl konsultacje: środy 10-12 http://users.uj.edu.pl/~ciesla/

Bardziej szczegółowo

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

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet Sieci Komputerowe Wykład 1: TCP/IP i adresowanie w sieci Internet prof. nzw dr hab. inż. Adam Kisiel kisiel@if.pw.edu.pl Pokój 114 lub 117d 1 Kilka ważnych dat 1966: Projekt ARPANET finansowany przez DOD

Bardziej szczegółowo

Serwery współbieżne c.d.

Serwery współbieżne c.d. Serwery współbieżne c.d. 1. Serwery wielousługowe i wieloprotokołowe. 2. Sterowanie współbieżnością w serwerze współbieżność sterowana zapotrzebowaniem, alokacja wstępna procesów podporządkowanych. 3.

Bardziej szczegółowo

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. Tunelowanie, kapsułkowanie, XDR 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR. 1 Transmisja tunelowa i kapsułkowanie Sieci komputerowe rozwijały się stopniowo

Bardziej szczegółowo

Schemat dla UDP. = możliwe zablokowanie aplikacji KLIENT SERWER. s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,...

Schemat dla UDP. = możliwe zablokowanie aplikacji KLIENT SERWER. s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,... Schemat dla UDP = możliwe zablokowanie aplikacji KLIENT s=socket(...) [bind(s,...)] sendto(s,...) recvfrom(s,...) sendto(s,...) close(s) SERWER s=socket(...) bind(s,...) recvfrom(s,...) sendto(s,...) recvfrom(s,...)

Bardziej szczegółowo

5. Algorytmy serwera

5. Algorytmy serwera 5. Algorytmy serwera 5.1. Typy serwerów Serwer iteracyjny (ang. iterative server) obsługuje zgłoszenia klientów sekwencyjnie, jedno po drugim. Serwer współbieżny (ang. concurrent server) obsługuje wiele

Bardziej szczegółowo

Komunikacja z użyciem gniazd aplikacje klient-serwer

Komunikacja z użyciem gniazd aplikacje klient-serwer Programowanie obiektowe Komunikacja z użyciem gniazd aplikacje klient-serwer Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Architektura

Bardziej szczegółowo

Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo

Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo Interfejs programowy Windows Sockets 2. Aplikacja klient-serwer TCP Echo Zagadnienia Omówienie biblioteki Winsock. Specyfikacja klienta tcpecho. Specyfikacja serwera tcpecho. dr Zbigniew Lipiński Instytut

Bardziej szczegółowo

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

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol) Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol) W latach 1973-78 Agencja DARPA i Stanford University opracowały dwa wzajemnie uzupełniające się protokoły: połączeniowy TCP

Bardziej szczegółowo

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Akademia Techniczno-Humanistyczna w Bielsku-Białej Akademia Techniczno-Humanistyczna w Bielsku-Białej Wydział Budowy Maszyn i Informatyki Laboratorium z sieci komputerowych Ćwiczenie numer: 9 Temat ćwiczenia: Aplikacje klient-serwer. 1. Wstęp teoretyczny.

Bardziej szczegółowo

1 Sposób zaliczenia przedmiotu

1 Sposób zaliczenia przedmiotu Jerzy Czepiel 2 KOMUNIKACJA W SIECI 1 Sposób zaliczenia przedmiotu Wymagania: Maksymalnie 2 nieobecności nieusprawiedliwione. Projekty na zajęciach (40 punktów). Krótkie programiki, będące rozwinięciem

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie aplikacji rozproszonej w Sun RPC Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki

Bardziej szczegółowo

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

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1 Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego

Bardziej szczegółowo

Sieci komputerowe. Zajęcia 5 Domain Name System (DNS)

Sieci komputerowe. Zajęcia 5 Domain Name System (DNS) Sieci komputerowe Zajęcia 5 Domain Name System (DNS) DNS - wstęp System nazw domenowych to rozproszona baza danych Zapewnia odwzorowanie nazwy na adres IP i odwrotnie DNS jest oparty o model klient-serwer.

Bardziej szczegółowo

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Schemat Internetu R R R R R R R 2 Model Internetu 3 Protokoły komunikacyjne stosowane w sieci Internet Protokoły warstwy

Bardziej szczegółowo

Protokół DNS. Aplikacja dnsquery

Protokół DNS. Aplikacja dnsquery Protokół DNS Domain Name System Aplikacja dnsquery dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Protokół DNS DNS, (ang.) Domain Name System.

Bardziej szczegółowo

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ]

JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA. Marcin Lewandowski [ mlew@ippt.gov.pl ] JĘZYK PYTHON - NARZĘDZIE DLA KAŻDEGO NAUKOWCA Marcin Lewandowski [ mlew@ippt.gov.pl ] PROGRAMOWANIE SIECIOWE 2 TCP/IP = UDP + TCP TCP/IP składa się z dwóch podstawowych protokołów: TCP i UDP. TCP jest

Bardziej szczegółowo

Przykłady interfejsu TCP i UDP w Javie

Przykłady interfejsu TCP i UDP w Javie Przykłady interfejsu TCP i UDP w Javie W Javie interfejsy TCP i UDP znajdują się w pakiecie java.net http://docs.oracle.com/javase/6/docs/api/java/net/packagesummary.html 1 Przykład interfejsu UDP Protokół

Bardziej szczegółowo

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1 Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1 aplikacji transportowa Internetu dostępu do sieci Sieci komputerowe Wykład 5 Podstawowe zadania warstwy transportowej Segmentacja danych aplikacji

Bardziej szczegółowo

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Rodzina protokołów TCP/IP. Aplikacja: ipconfig. Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Opcje IP i gniazda surowe laboratorium: 10 Kraków, 2014 10. Programowanie Usług

Bardziej szczegółowo

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców METODY WYMIANY INFORMACJI W SIECIACH PAKIETOWYCH Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców TRANSMISJA

Bardziej szczegółowo

Programowanie rozproszone w języku Java

Programowanie rozproszone w języku Java Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w języku Java Wojciech Rząsa wrzasa@prz-rzeszow.pl Katedra Informatyki i Automatyki, Politechnika Rzeszowska 25 maja 2015 Wojciech Rząsa, KIiA PRz

Bardziej szczegółowo

Sieci równorzędne, oraz klient - serwer

Sieci równorzędne, oraz klient - serwer Sieci równorzędne, oraz klient - serwer podział sieci ze względu na udostępnianie zasobów: równorzędne, peer-to-peer, P2P, klient/serwer, żądanie, odpowiedź, protokół sieciowy, TCP/IP, IPX/SPX, admin sieciowy,

Bardziej szczegółowo

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości.

Plan wykładu. Domain Name System. Hierarchiczna budowa nazw. Definicja DNS. Obszary i ich obsługa Zapytania Właściwości. Sieci owe Sieci owe Plan wykładu Domain Name System System Nazw Domen Definicja DNS Hierarchiczna budowa nazw Obszary i ich obsługa Zapytania Właściwości Sieci owe Sieci owe Definicja DNS DNS to rozproszona

Bardziej szczegółowo

1. Model klient-serwer

1. Model klient-serwer 1. 1.1. Model komunikacji w sieci łącze komunikacyjne klient serwer Tradycyjny podziała zadań: Klient strona żądająca dostępu do danej usługi lub zasobu Serwer strona, która świadczy usługę lub udostępnia

Bardziej szczegółowo

Sieci komputerowe Warstwa sieci i warstwa transportowa

Sieci komputerowe Warstwa sieci i warstwa transportowa Sieci komputerowe Warstwa sieci i warstwa transportowa Ewa Burnecka / Janusz Szwabiński ewa@ift.uni.wroc.pl / szwabin@ift.uni.wroc.pl Sieci komputerowe (C) 2003 Janusz Szwabiński p.1/43 Model ISO/OSI Warstwa

Bardziej szczegółowo

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Komunikacja za pomocą potoków. Tomasz Borzyszkowski Komunikacja za pomocą potoków Tomasz Borzyszkowski Wstęp Sygnały, omówione wcześniej, są użyteczne w sytuacjach błędnych lub innych wyjątkowych stanach programu, jednak nie nadają się do przekazywania

Bardziej szczegółowo

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1 Architektury systemów rozproszonych LABORATORIUM Ćwiczenie 1 Temat: Aplikacja klient-serwer - implementacja w środowisku QT Creator. Przykładowy projekt aplikacji typu klient - serwer został udostępniony

Bardziej szczegółowo

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4 Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Mechanizm wywołania Wywoływanie procedur zdalnych main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces (int pid){ int stat; stat

Bardziej szczegółowo

Sieci komputerowe. Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2007/2008. Michał Cieśla

Sieci komputerowe. Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2007/2008. Michał Cieśla Sieci komputerowe Wykład dla studentów Informatyki Stosowanej i Fizyki Komputerowej UJ 2007/2008 Michał Cieśla pok. 440a, email: ciesla@if.uj.edu.pl konsultacje: wtorki 10-12 http://users.uj.edu.pl/~ciesla/

Bardziej szczegółowo

Przykład aplikacji UDP

Przykład aplikacji UDP #include #include #include /* atoi */ #include /* htons, ntohs... */ #include /* memset */ #include /* inet_ntoa */ #include

Bardziej szczegółowo

J. Ułasiewicz Programowanie aplikacji współbieżnych 1

J. Ułasiewicz Programowanie aplikacji współbieżnych 1 J. Ułasiewicz Programowanie aplikacji współbieżnych 1 9. Komunikacja przez pamięć dzieloną Metoda komunikacji przez wspólną pamięć może być użyta gdy procesy wykonywane są na maszynie jednoprocesorowej

Bardziej szczegółowo

Łącza nienazwane(potoki)

Łącza nienazwane(potoki) 8. Łącza nienazwane(potoki) Łącze (potok, ang. pipe) jest to urządzenie komunikacyjne pozwalające na przesyłanie informacji w jedną stronę. Jeden proces wysyła dane do łącza za pomocą funkcji write, zaś

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Inżynierii Elektrycznej i Komputerowej Politechnika Krakowska programowanie usług sieciowych Usługa DNS laboratorium: 03 Kraków, 2014 03. Programowanie Usług Sieciowych

Bardziej szczegółowo

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak Protokół TCP/IP Protokół TCP/IP (Transmission Control Protokol/Internet Protokol) to zestaw trzech protokołów: IP (Internet Protokol), TCP (Transmission Control Protokol), UDP (Universal Datagram Protokol).

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak Wykład 3 / Wykład 4 Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak 1 Wprowadzenie do Modułu 3 CCNA-E Funkcje trzech wyższych warstw modelu OSI W jaki sposób ludzie wykorzystują

Bardziej szczegółowo

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

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź

1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź 1. W protokole http w ogólnym przypadku elementy odpowiedzi mają: a) Postać tekstu b) Postać HTML c) Zarówno a i b 2. W usłudze DNS odpowiedź autorytatywna dotycząca hosta pochodzi od serwera: a) do którego

Bardziej szczegółowo

Model sieci OSI, protokoły sieciowe, adresy IP

Model sieci OSI, protokoły sieciowe, adresy IP Model sieci OSI, protokoły sieciowe, adresy IP Podstawę działania internetu stanowi zestaw protokołów komunikacyjnych TCP/IP. Wiele z używanych obecnie protokołów zostało opartych na czterowarstwowym modelu

Bardziej szczegółowo

ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ DHCP

ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ DHCP ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ dr inż. Artur Sierszeń, asiersz@kis.p.lodz.pl dr inż. Andrzej Frączyk, a.fraczyk@kis.p.lodz.pl DHCP 1 Wykład Dynamiczna konfiguracja

Bardziej szczegółowo

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP FILTROWANIE IP mechanizm decydujący, które typy datagramów IP mają być odebrane, które odrzucone. Odrzucenie oznacza usunięcie, zignorowanie datagramów, tak jakby nie zostały w ogóle odebrane. funkcja

Bardziej szczegółowo

Adresy w sieciach komputerowych

Adresy w sieciach komputerowych Adresy w sieciach komputerowych 1. Siedmio warstwowy model ISO-OSI (ang. Open System Interconnection Reference Model) 7. Warstwa aplikacji 6. Warstwa prezentacji 5. Warstwa sesji 4. Warstwa transportowa

Bardziej szczegółowo

Współbieżność, tunelowanie i kapsułkowanie, XDR i RPC

Współbieżność, tunelowanie i kapsułkowanie, XDR i RPC Współbieżność, tunelowanie i kapsułkowanie, XDR i RPC 1. Serwery wielousługowe i wieloprotokołowe. 2. Sterowanie współbieżnością w serwerze współbieżność sterowana zapotrzebowaniem, alokacja wstępna procesów

Bardziej szczegółowo

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

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP. Wprowadzenie Gniazdo (ang. socket) z naszego punktu widzenia (czyli programów w.net) reprezentuje najniższy poziom

Bardziej szczegółowo

MODEL OSI A INTERNET

MODEL OSI A INTERNET MODEL OSI A INTERNET W Internecie przyjęto bardziej uproszczony model sieci. W modelu tym nacisk kładzie się na warstwy sieciową i transportową. Pozostałe warstwy łączone są w dwie warstwy - warstwę dostępu

Bardziej szczegółowo

Laboratorium Sieci Komputerowych - 2

Laboratorium Sieci Komputerowych - 2 Laboratorium Sieci Komputerowych - 2 Analiza prostych protokołów sieciowych Górniak Jakub Kosiński Maciej 4 maja 2010 1 Wstęp Zadanie polegało na przechwyceniu i analizie komunikacji zachodzącej przy użyciu

Bardziej szczegółowo

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

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe N, Wykład 4: Protokoły TCP/UDP i usługi sieciowe 1 Adres aplikacji: numer portu Protokoły w. łącza danych (np. Ethernet) oraz w. sieciowej (IP) pozwalają tylko na zaadresowanie komputera (interfejsu sieciowego),

Bardziej szczegółowo

ZiMSK. Konsola, TELNET, SSH 1

ZiMSK. Konsola, TELNET, SSH 1 ZiMSK dr inż. Łukasz Sturgulewski, luk@kis.p.lodz.pl, http://luk.kis.p.lodz.pl/ dr inż. Artur Sierszeń, asiersz@kis.p.lodz.pl dr inż. Andrzej Frączyk, a.fraczyk@kis.p.lodz.pl Konsola, TELNET, SSH 1 Wykład

Bardziej szczegółowo

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

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci. Struktura komunikatów sieciowych Każdy pakiet posiada nagłówki kolejnych protokołów oraz dane w których mogą być zagnieżdżone nagłówki oraz dane protokołów wyższego poziomu. Każdy protokół ma inne zadanie

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe Wykład 5: Java sieciowa cd. mgr inŝ. Paweł Kośla mgr Marcin Raniszewski Łódź, 2009 1 Plan wykładu ServerSocket serwer TCP DatagramSocket i DatagramPacket UDP FTP 2 Serwer TCP Gniazdo

Bardziej szczegółowo

Programowanie z użyciem RPC

Programowanie z użyciem RPC Programowanie z użyciem RPC 1. Zastosowanie modelu zdalnie wywoływanych procedur. 2. Biblioteka RPC. 3. Podział programu na część lokalną i zdalną. 4. Narzędzie rpcgen. 5. Generowanie programu rozproszonego.

Bardziej szczegółowo

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński. www.agh.edu.

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński. www.agh.edu. Sieci komputerowe Protokoły warstwy transportowej Wydział Inżynierii Metali i Informatyki Przemysłowej dr inż. Andrzej Opaliński Plan wykładu Wprowadzenie opis warstwy transportowej Protokoły spoza stosu

Bardziej szczegółowo

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

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta Sieci komputerowe 1 Sieci komputerowe 2 Skąd dostać adres? Metody uzyskiwania adresów IP Część sieciowa Jeśli nie jesteśmy dołączeni do Internetu wyssany z palca. W przeciwnym przypadku numer sieci dostajemy

Bardziej szczegółowo

Statystyka protokołów i połączeń sieciowych.

Statystyka protokołów i połączeń sieciowych. Statystyka protokołów i połączeń sieciowych. Aplikacja netstat. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Statystyka połączeń sieciowych.

Bardziej szczegółowo

1 Moduł Diagnostyki Sieci

1 Moduł Diagnostyki Sieci 1 Moduł Diagnostyki Sieci Moduł Diagnostyki Sieci daje użytkownikowi Systemu Vision możliwość badania dostępności w sieci Ethernet komputera lub innych urządzeń wykorzystujących do połączenia protokoły

Bardziej szczegółowo

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura The Graphics View Framework Oprogramowanie i wykorzystanie stacji roboczych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska The Graphics View

Bardziej szczegółowo

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych Ustawienia serwera 1. Uruchomić serwer KEPServerEX w trybie administracji 2. Wywołać ustawienia serwera 3. W zakładce Runtime Process ustawić opcję Process Mode w tryb Interactive 4. Zaakceptować ustawienia

Bardziej szczegółowo

Sieciowa komunikacja procesów - XDR i RPC

Sieciowa komunikacja procesów - XDR i RPC *** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania

Bardziej szczegółowo

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

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, e-mail. A. Kisiel,Protokoły DNS, SSH, HTTP, e-mail N, Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, e-mail 1 Domain Name Service Usługa Domain Name Service (DNS) Protokół UDP (port 53), klient-serwer Sformalizowana w postaci protokołu DNS Odpowiada

Bardziej szczegółowo

Pobieranie argumentów wiersza polecenia

Pobieranie argumentów wiersza polecenia Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:

Bardziej szczegółowo

Protokół sieciowy Protokół

Protokół sieciowy Protokół PROTOKOŁY SIECIOWE Protokół sieciowy Protokół jest to zbiór procedur oraz reguł rządzących komunikacją, między co najmniej dwoma urządzeniami sieciowymi. Istnieją różne protokoły, lecz nawiązujące w danym

Bardziej szczegółowo

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

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1 Laboratorium Technologie Sieciowe Podstawowe protokoły transportowe stosowane w sieciach IP cz.1 Wprowadzenie Ćwiczenie przedstawia praktyczną stronę następujących zagadnień: połączeniowy i bezpołączeniowy

Bardziej szczegółowo

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 Programowanie w modelu przesyłania komunikatów specyfikacja MPI, cd. Krzysztof Banaś Obliczenia równoległe 1 MPI dynamiczne zarządzanie procesami MPI 2 umożliwia dynamiczne zarządzanie procesami, choć

Bardziej szczegółowo

URZĄDZENIA TECHNIKI KOMPUTEROWEJ

URZĄDZENIA TECHNIKI KOMPUTEROWEJ Adres IP jest 32-bitową liczbą, składającą się z następujących części: części sieciowej części hosta Oprogramowanie sieciowe IP, na podstawie kilku pierwszych bitów adresu IP, określa jego klasę. Istnieją

Bardziej szczegółowo

Wykład Nr 4. 1. Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Wykład Nr 4. 1. Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia Sieci komputerowe Wykład Nr 4 1. Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia Sieci bezprzewodowe Sieci z bezprzewodowymi punktami dostępu bazują na falach radiowych. Punkt dostępu musi mieć

Bardziej szczegółowo

2.1 Pojęcie wątku... 13 2.2 Modele wielowątkowości... 15 2.3 Wybrane zagadnienia wielowątkowości... 16 2.4 Wątki POSIX... 18

2.1 Pojęcie wątku... 13 2.2 Modele wielowątkowości... 15 2.3 Wybrane zagadnienia wielowątkowości... 16 2.4 Wątki POSIX... 18 Spis treści Spis treści 1 Procesy 1 1.1 Definicja procesu............................................. 1 1.2 Operacje na procesach.......................................... 3 1.3 Planowanie procesów...........................................

Bardziej szczegółowo

Protokół wymiany sentencji, wersja 1

Protokół wymiany sentencji, wersja 1 Protokół wymiany sentencji, wersja 1 Sieci komputerowe 2011@ MIM UW Osowski Marcin 28 kwietnia 2011 1 Streszczenie Dokument ten opisuje protokół przesyłania sentencji w modelu klientserwer. W założeniu

Bardziej szczegółowo

Sieci komputerowe. Wstęp

Sieci komputerowe. Wstęp Sieci komputerowe Wstęp Sieć komputerowa to grupa komputerów lub innych urządzeń połączonych ze sobą w celu wymiany danych lub współdzielenia różnych zasobów, na przykład: korzystania ze wspólnych urządzeń

Bardziej szczegółowo

Protokół ARP. dr Zbigniew Lipiński. Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl

Protokół ARP. dr Zbigniew Lipiński. Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Protokół ARP Aplikacja printarp dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Address Resolution Protocol ARP, (ang.) Address Resolution

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo