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

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

Klient-Serwer Komunikacja przy pomocy gniazd

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Klasy adresów IP. Model ISO - OSI. Subnetting. OSI packet encapsulation. w.aplikacji w.prezentacji w.sesji w.transportowa w.

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

Podstawowe typy serwerów

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

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

Komunikacja sieciowa - interfejs gniazd

socket(int domain, int type, int protocol)

Programowanie sieciowe

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

PROTOKOŁY WARSTWY TRANSPORTOWEJ

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

Iteracyjny serwer TCP i aplikacja UDP

Gniazda BSD implementacja w C#

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

2. Interfejs gniazd Gniazdo

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

Gniazda. S. Samolej: Gniazda 1

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

Programowanie przy użyciu gniazdek

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

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

Programowanie Sieciowe 1

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

Gniazda BSD. komunikacja bezpołączeniowa

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

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

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

1. Model klient-serwer

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

Tryb bezpołączeniowy (datagramowy)

Architektura typu klient serwer: uproszczony klient POP3

MODEL WARSTWOWY PROTOKOŁY TCP/IP

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Programowanie współbieżne i rozproszone

Instytut Teleinformatyki

Sieci komputerowe 1 DSRG

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

Programowanie sieciowe

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

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

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

Routing. część 1: adresowanie. Sieci komputerowe. Wykład 2. Marcin Bieńkowski

Programowanie Programowanie z użyciem gniazd

iseries Programowanie z użyciem gniazd

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

Programowanie Programowanie z użyciem gniazd

Protokoły sieciowe - TCP/IP

Przesyłania danych przez protokół TCP/IP

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

Serwer współbieżny połączeniowy

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

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

Instytut Teleinformatyki

1. Model klient-serwer

Bazy Danych i Usługi Sieciowe

Programowanie sieciowe

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

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

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

IBM i Wersja 7.2. Programowanie Programowanie z użyciem gniazd

Sockety TCP/IP - podstawy. Sieci Komputerowe II Wyk ład 2

Dr Michał Tanaś(

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

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC

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

Przykład aplikacji UDP

Ping. ipconfig. getmac

Router programowy z firewallem oparty o iptables

Warstwa transportowa. mgr inż. Krzysztof Szałajko

Administracja systemem Linux

Beej s Guide to Network Programming

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

Sieci komputerowe - Protokoły warstwy transportowej

Internet Control Message Protocol Aplikacja ping

Akademia Techniczno-Humanistyczna w Bielsku-Białej

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

Aplikacja Sieciowa wątki po stronie klienta

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

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Podstawowe typy serwerów

Protokoły wspomagające. Mikołaj Leszczuk

Programowanie Sieciowe 1

Kolejki FIFO (łącza nazwane)

1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy

Bezpieczeństwo systemów informatycznych

SIECI KOMPUTEROWE I TECHNOLOGIE INTERNETOWE

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

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

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

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

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

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Serwery współbieżne c.d.

pasja-informatyki.pl

MODEL OSI A INTERNET

1 Sposób zaliczenia przedmiotu

Transkrypt:

Procesy w środowisku sieciowym! Obsługa! Protokół! Numery portów i ogólnie znane adresy! Połączenie (asocjacja) i gniazdo (półasocjacja)! Model klient-serwer " Serwer - bierne otwarcie kanału " Klient - czynne otwarcie kanału! Serwer iteracyjny i współbieżny! Obsługa w trybie połączeniowym i bezpołączeniowym Zbigniew Suski 1 Zbigniew Suski 2 Gniazda podstawowe funkcje dla serwera! Utwórz punkt końcowy socket( )! Dowiąż adres bind( )! Określ kolejkę listen( )! Czekaj na połączenie accept( )! Prześlij dane read( ), write( ) recv( ), send( )! Prześlij datagramy recvfrom( ), sendto( )! Zakończ close( ), shutdown( ) Gniazda podstawowe funkcje dla klienta! Utwórz punkt końcowy socket( )! Dowiąż adres bind( )! Połącz z serwerem connect( )! Prześlij dane read( ), write( ) recv( ), send( )! Prześlij datagramy recvfrom( ), sendto( )! Zakończ close( ), shutdown( ) Zbigniew Suski 3 Zbigniew Suski 4 1

Gniazda funkcje podstawowe <sys/types.h>, <sys/socket.h> --------------------------------------------------- int socket ( int rodzina, int typ, int protokoł ) int bind ( struct sockaddr *adres_własny, int rozmiar ) int close ( int deskryptor ) Gniazda funkcje podstawowe int connect ( struct sockaddr *adres_serwera, int rozmiar ) int listen ( int liczba_żądań ) int accept ( struct sockaddr *adres_partnera, int *rozmiar ) Zbigniew Suski 5 Zbigniew Suski 6 Gniazda funkcje podstawowe Gniazda funkcje podstawowe int send ( int recv ( int flagi ) int flagi ) int sendto ( int flagi, struct sockaddr *odbiorca, int rozmiar ) int recvfrom ( int flagi, struct sockaddr *nadawca, int *rozmiar ) Zbigniew Suski 7 Zbigniew Suski 8 2

Protokół połączeniowy Protokół bezpołączeniowy Serwer Serwer listen() accept() blokada do momentu połączenia z klientem read() Ustanowienie połączenia Dane (żądanie) Klient connect() write() recvfrom() Blokada do momentu otrzymania danych od klienta Dane (żądanie) Klient sendto() Przetwarzanie żądania Przetwarzanie żądania write() Dane (odpowiedź) read() sendto() Dane (odpowiedź) recvfrom() Zbigniew Suski 9 Zbigniew Suski 10 Przekształcanie kolejności bajtów Operacje na ciągach bajtów Kolejność mniejsze niżej mniejsze wyżej sieciowa ( w ramach protokołu) include < sys/types.h > include < netinet/in.h > Od stacji do sieci: u_long htonl ( u_long hostlong ) u_short htons ( u_short hostshort ) Od sieci do stacji: u_long ntohl ( u_long netlong ) u_short ntohs ( u_short netshort ) Kopiowanie bcopy ( char *źródło, char *wynik, int liczba_bajtów ) Powielanie bajtów pustych bzero ( char *wynik, int liczba_bajtów) Porównanie ciągów bajtów bcmp ( char *zródło1, char *źródło2, int liczba_bajtów ) Zwraca 0 gdy ciągi są identyczne. System V memset memcopy memcmp Zbigniew Suski 11 Zbigniew Suski 12 3

Przekształcanie adresów (Internet) include < sys/socket.h > include < netinet/in.h > include < arpa/inet.h > unsigned long inet_addr ( char *łańcuch ) char *inet_ntoa ( struct in_addr *adres ) - inne funkcje readv, writev czytanie i pisanie do/z buforów nieprzyległych sendmsg, recvmsg jw. (tylko dla gniazd) getpeername pobranie identyfikacji procesu partnera getsockname pobranie identyfikacji gniazda gethostbyname pobranie identyfikacji hosta gethostbyaddr pobranie identyfikacji getsockopt pobranie atrybutów (ustawień gniazda) setsockopt ustawienie atrybutów gniazda Zbigniew Suski 13 Zbigniew Suski 14 Nadrzędny serwer Internetu (inetd) ident "@()inetd.conf 1.16 94/03/08 SMI" /* SVr4.0 1.5 */ Ftp and telnet are standard Internet services. ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd Shell, login, exec, comsat and talk are BSD protocols. shell stream tcp nowait root /usr/sbin/in.rshd in.rshd login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd talk dgram udp wait root /usr/sbin/in.talkd in.talkd pop3 stream tcp nowait root /opt/sunwpop/sbin/popper Nadrzędny serwer Internetu (inetd) @()services; Network services, Internet style echo 7/tcp echo 7/udp netstat 15/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp mail time 37/tcp timserver time 37/udp timserver domain 53/udp nameserver UNIX specific services exec 512/tcp login 513/tcp Zbigniew Suski 15 Zbigniew Suski 16 4

Nadrzędny serwer Internetu (inetd) Przykłady użycia gniazd dla każdej usługi dla gniazda strumieniowego listen() select() accept() fork() dla gniazda strumieniowego Przykład: plik Gniazda-przyklady-TCP-UDP close() dla wszystkich plików powielenie gniazda dla deskr. 0,1,2 close() - gniazdo close() gniazdo połączone setgid(), setuid() Zbigniew Suski exec() 17 Zbigniew Suski 18 Gniazda surowe Tworzenie gniazda surowego int gniazdo; gniazdo = socket( AF_INET, SOCK_RAW, protokół);! Stałe określające protokół zdefiniowane są w pliku netinet/in.h. Np. IPPROTO_ICMP.! Nagłówek IP jest tworzony przez jądro.! Gniazdo surowe może tworzyć tylko nadzorca systemu. Gniazda surowe Wysyłanie danych sendto lub sendmsg. Odbieranie danych recvfrom! Nie są przekazywane odebrane pakiety TCP i UDP.! Nie są przekazywane niektóre odebrane pakiety ICMP.! Są przekazywane wszystkie odebrane pakiety IGMP.! Są przekazywane wszystkie odebrane, nierozpoznane pakiety IP. Zbigniew Suski 19 Zbigniew Suski 20 5

Gniazda surowe Opcja IP_HDRINCL const int w = 1; setsockopt( gniazdo, IPPROTO_IP, IP_HDRINCL, &w, sizeof(w))! Adres początkowy danych odsyłanych do jądra odpowiada pierwszemu bajtowi nagłówka IP.! Samodzielnie należy zbudować nagłówek IP z wyjątkiem: " pola sumy kontrolnej nagłówka IP, " pola identyfikacji.! Rozmiar odsyłanych danych powinien uwzględniać rozmiar nagłówka IP. Zbigniew Suski 21 Gniazda surowe Tworzenie gniazda pakietowego int gniazdo; gniazdo = socket(af_packet, SOCK_RAW, protokół);! Stałe określające protokół zdefiniowane są w pliku if_ether.h. Np. ETH_P_ALL lub ETH_P_ARP.! Należy utworzyć całą ramkę (łącznie z nagłówkiem)! Gniazdo pakietowe może tworzyć tylko nadzorca systemu Zbigniew Suski 22 Przykłady: PING Przykłady: protokół ARP Przykład: plik Gniazda-przyklady-PING Przykład: plik Gniazda-przyklady-ARP Zbigniew Suski 23 Zbigniew Suski 24 6