socket(int domain, int type, int protocol)

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

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

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

Klient-Serwer Komunikacja przy pomocy gniazd

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

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

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

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

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

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

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

Programowanie sieciowe

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

Podstawowe typy serwerów

PROTOKOŁY WARSTWY TRANSPORTOWEJ

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

Programowanie przy użyciu gniazdek

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

Protokoły sieciowe - TCP/IP

Sieci komputerowe Warstwa transportowa

Dr Michał Tanaś(

Iteracyjny serwer TCP i aplikacja UDP

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

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

Programowanie współbieżne i rozproszone

Programowanie Sieciowe 1

Programowanie sieciowe

Sieci komputerowe - Protokoły warstwy transportowej

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

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

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

Komunikacja międzyprocesowa. Krzysztof Banaś Systemy rozproszone 1

Bazy Danych i Usługi Sieciowe

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

ARP Address Resolution Protocol (RFC 826)

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

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

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

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

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

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Model sieci OSI, protokoły sieciowe, adresy IP

Gniazda BSD. komunikacja bezpołączeniowa

pasja-informatyki.pl

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

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ź

Komunikacja sieciowa - interfejs gniazd

Plan wykładu. Wyznaczanie tras. Podsieci liczba urządzeń w klasie C. Funkcje warstwy sieciowej

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski

Adresy w sieciach komputerowych

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

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Sieci komputerowe - adresacja internetowa

Protokół sieciowy Protokół

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

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

Sieci komputerowe. Wstęp

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

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

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Laboratorium Sieci Komputerowych - 2

Projektowanie oprogramowania systemów KOMUNIKACJA SIECIOWA I SYSTEMY RPC

SIECI KOMPUTEROWE Adresowanie IP

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

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

Model OSI. mgr inż. Krzysztof Szałajko

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

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

MODEL OSI A INTERNET

Aplikacja Sieciowa wątki po stronie klienta

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

SIECI KOMPUTEROWE - BIOTECHNOLOGIA

2. Interfejs gniazd Gniazdo

Podstawy działania sieci komputerowych

1. FTP 2. SMTP 3. POP3

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

1. Model klient-serwer

Warstwa transportowa. mgr inż. Krzysztof Szałajko

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

1. Model klient-serwer

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

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

ZiMSK dr inż. Łukasz Sturgulewski, DHCP

KONFIGURACJA SIECIOWA SYSTEMU WINDOWS

Stos TCP/IP Warstwa transportowa Warstwa aplikacji cz.1

Architektura typu klient serwer: uproszczony klient POP3

ZADANIE.10 DHCP (Router, ASA) 1,5h

Instrukcja konfiguracji funkcji skanowania

Warstwa transportowa

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

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

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

Przesyłania danych przez protokół TCP/IP

(źródło: pl.wikipedia.pl) (źródło:

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

Stos TCP/IP. Warstwa aplikacji cz.2

Omówienie TCP/IP. Historia

Transkrypt:

Co identyfikuje adres IP a co port? IP identyfikuje hosta w sieci port identyfikuje typ procesu (np. 21 FTP, 25 SMTP, 49 LOGIN) gniazdo identyfikuje unikalny nr połączenia Czym różni się deskryptor gniazda od deskryptora pliku? Deskryptor pliku identyfikuje plik, a deskryptor gniazda gniazdo. Który argument funkcji służy do określenia typu gniazda? drugi socket( domain, type, protocol) Jakie wartości przyjmuje ten argument dla gniazd połączeniowych a jakie dla bezpołączeniowych? połączeniowych - SOCK_STREAM bezpołączeniowych DGRAM_STREAM Jaki jest zakres liczbowy portów dostępnych do wykorzystania dla użytkownika niebędącego administratorem? 1024 Co oznaczają pojęcia: [0xABCD] Big-Endian? pierwszy najbardziej znaczący bajt [ABCD] Little-Endian? pierwszy najmniej znaczący bajt [CDAB] Network Byte Order? sieciowa kolejność bajtów [ABCD] Do czego służą funkcje: htonl, htons, ntohl, ntohs? Co oznaczają ich nazwy (od czego są to skróty)? htonl przekształca 32-bitową wartość z lokalnej na sieciową ntohl na odwrót htons przekształca 16-bitową wartość z lokalnej na sieciową ntohs na odwrót Liczbę w postaci szesnastkowej: cafe zapisano na dwóch bajtach w postaci: feca. Jaka to reprezentacja? little-endian Czym są i do czego służą gniazda? - podstawowy mechanizm służący do wymiany danych między maszynami (przy użyciu sieci) [Rochkind] - są używane w czwartej warstwie sieciowego modelu OSI/ISO - służą do komunikacji między procesami, w tym przez sieć - kombinacja IP i nr portu Czym się różni komunikacja połączeniowa od bezpołączeniowej? - w kom. poł. wywoływane są dla serwera: socket, bind, listen, accept; dla klienta: socket, connect - w kom. bezpoł. wywoływane są dla serwera/klienta: socket, bind - w kom. poł. można używać write, read, send, recv, writeall - w kom. bezpoł. jest to niemożliwe, ponieważ mamy tylko 1 deskryptor pliku wyznaczony dla naszego gniazda; za to można użyć funkcje sendto, recvfrom

- w kom. bezpoł. używa się datagramów - gniazda typu SOCK_STREAM gwarantują zachowanie właściwej kolejności i nadejście komunikatów - gniazda typu DGRAM_STREAM nie gwarantują utrzymywania kolejności, ani nadejścia - w kom. bezpoł. nie utrzymuje się otwartego połączenia Co to są adresy IPv4 i IPv6, jaką mają postać? IPv4: 192.168.1.1 IPv6: 2001:0db8:0000:0000:0000:0000:1428:57ab (postać 16-stkowa) (8 grup po 2 bajty) Do czego służą porty? Identyfikują typ procesu. Do portów przypisane jest wiele rozmaitych usług. Wiele numerów portów jest zwyczajowo przypisanych do dobrze znanych usług, np 80 serwery protokołu HTTP, 21 serwery protokołu FTP, 23 serwery protokołu Telnet. Muszą mieć sieciową kolejność bajtów. Jakie są typowe numery portów dla http, ftp, ssh itp.? HTTP 80, ftp 21, ssh 22, Telnet 23, SMTP - 25 Jak wygląda komunikacja z użyciem protokołu HTTP? 1) po otwarciu połączenia klient wysyła zapytanie w postaci GET ścieżka HTTP/wersja\r\n\r\n?? ścieżka określa żądany dokument (np. /index.html) wersja dotyczy protokołu HTTP 2) serwer sprawdza czy dany zasób istnieje i jest dostępny dla klienta, po czym odsyła odpowiedni kod stanu i dalszy ciąg, np.: HTTP/1.1 404 Not Found\r\n i komunikat objaśniający dany błąd lub HTTP/1.1 200 OK\r\n, plik nagłówkowy oraz żądany dokument W jakich przypadkach stosuje się komunikację bezpołączeniową z użyciem UDP? Kiedy nie jest istotny fakt, czy komunikat dotrze do celu i/lub zależy nam na szybkości, np. zamawiamy książkę w bibliotece i mamy dostać maila zwrotnego potwierdzającego zamówienie; w przypadku, gdy go nie dostaniemy, będziemy wiedzieć, że coś poszło nie tak i zamówimy jeszcze raz. UDP dobrze nadaje się do zastosowań w: małych, względnie niezawodnych sieciach, do zastosowań krytycznych czasowo, do zastosowania w serwerach obrabiających duże ilości prostych zapytań Czy programy korzystające z protokołu UDP mają możliwość kontroli pakietów? Podaj przykład, jak mogą to kontrolować (np. jak to jest rozwiązane w przypadku programu tftp) Kontola transmisji jest zapewniona przez protokoły wyższych warstw (warstwy aplikacji), np. TFTP, SNMP, DHCP, DNS. Przesył TFTP rozpoczyna się od żądania odczytu lub zapisu pliku, które żąda również połączenia. Plik wysyłany jest w blokach o długości od 0 do 512 bajtów. Pakiet danych mniejszy niż 512 bajtów wskazuje zakończenie przesyłu. Każdy z pakietów musi być potwierdzony przez pakiet potwierdzający, zanim będzie mógł zostać wysłany następny pakiet. Pakiet danych traktowany jest

jako potwierdzenie, że komputer wysyłający otrzymał potwierdzenie poprzedniego pakietu danych. Jedynie pakiet końca transmisji nie wymaga potwierdzenia. Jeżeli jakiś pakiet ulegnie zagubieniu, to u planowanego odbiorcy następuje przeterminowanie, a ten następnie żąda transmisji zagubionego pakietu. Pakiet retransmitowany w tym przypadku, to ostatni pakiet poprzedniej transmisji, więc nadawca musi zachować do retransmisji tylko jeden pakiet. Poprzednie potwierdzenia gwarantują, że pakiety uprzednio wysłane zostały otrzymane. Ftp-prosty protokół przesyłania plików między stacjami wykorzystujący UDP Po wysłaniu każdego pakietu do stacji docelowej jego kopia jest przechowywana w buforze, aż do czasu otrzymania potwierdzenia odebrania danych. Jeżeli stacja wysyłająca nie otrzyma potwierdzenia przed upływem czasu retransmisji, pakiet wysyłany jest ponownie. Jaki adres należy ustawić, aby rozesłać pakiet do wszystkich hostów w danej sieci? Trzeba znać adres IP hosta i maskę podsieci 11010100.00110011.11011011.00100000 adresip 11111111.11111111.11111111.11000000 maska 11010100.00110011.11011011.00111111 broadcast (te same bity co IP jeśli w masce podsieci 1, reszta uzupełniona 1) Jaki adres należy ustawić, aby rozesłać pakiet do wszystkich hostów w sieci lokalnej? 255.255.255 getaddrinfo getaddrinfo(const char *node, const char *service, const struct addrinfo *hs, struct addrinfo **res); Jakie parametry przyjmuje funkcja i jakie wartości zwraca? const char* nodename; //nazwa węzła (zazwyczaj podajemy nazwę stacji) const char* service; //nazwa usługi (zazwyczaj podajemy nr portu) const struct addrinfo *hs; //sugestia (zazwyczaj podajemy rodzinę adresów i typ gniazda) struct addrinfo **res; //przekazywana informacja jako lista powiązana //0 lub nr błędu Który parametr funkcji może jako wartość przyjąć http lub ftp lub telnet lub smtp? const char *service (drugi) getaddrinfo("www.kame.net", "http", &hs, &res0); W jakiej formie może być podana wartość parametru node? nazwa stacji: - jako nazwa, którą trzeba wyszukać, używając serwera DNS, np. www.yahoo.com

- jako nazwa zdefiniowana w pliku /etc/host lokalnej maszyny, np. - jako adres IP w notacji z kropkami/dwukropkami Jakiej funkcji używa się do obsługi błędów funkcji getaddrinfo? const char *gai_strerror( code); Do czego służy flaga AI_PASSIVE? Oznacza, że przekazywane adresy gniazda są przeznaczone do użytku w funkcji accept (co oznacza, że funkcję getaddrinfo wywołał serwer). W przeciwnym razie, gdy sygnalizator ten jest wyzerowany, wówczas wywołanie funkcji wystąpiło w procesie klienta i adres gniazda będzie użyty w wywołaniu funkcji connect. Dla protokołów bezpoł. może on być użyty w wywołaniu funkcji sendt/sendmsg. Gdy node jest równe NULL, inicjalizacja adresu sieciowego w każdej ze struktur gniazda zależy od znacznika AI_PASSIVE, który jest ustawiany w polu ai_flags parametru hs. Gdy znacznik AI_PASSIVE jest ustawiony, to adres sieciowy w każdej ze struktur gniazda pozostanie nieokreślony. Jest to wykorzystywane przez programy serwerów, które zamierzają przyjmować połączenia od klientów na dowolny adres sieciowy. Gdy znacznik AI_PASSIVE nie jest ustawiony, to adres sieciowy zostanie ustawiony na adres erfejsu loopback. Jest to wykorzystywane przez programy klienckie, które zamierzają połączyć się z serwerem działającym na tym samym hoście. / W jakim pliku można sprawdzić usługi i ich porty na danej maszynie? etc/services struct addrinfo struct addrinfo { size_t ai_flags; ai_family; ai_socktype; ai_protocol; ai_addrlen; struct sockaddr *ai_addr; char *ai_canonname; struct addrinfo *ai_next; Co oznaczają poszczególne pola struktury i jakie wartości mogą przyjmować? ai_flags; //sygnalizatory wejściowe ai_family; //rodzina adresów ai_socktype; //typ gniazda ai_protocol; //protokół size_t ai_len; //dł. adresu gniazda struct sockaddr *ai_addr; //adres gniazda char *ai_canonname; // nazwa kanoniczna wykonywanej usługi; //gdy ai_flags w hs zawiera znacznik AI_CANONNAME, to ai_canonname jest ustawiane tak, aby wskazywało na oficjalną nazwę hosta. 192.168.1.1 struct addrinfo *ai_next; //wsk. do nast. struktury w liście Jaki jest sens wprowadzenia pola ai_next w strukturze?

Umożliwia wygodne przechodzenie po wszystkich zwróconych strukturach. Przeglądając taką listę możemy wyświetlić np. wszystkie adresy IP powiązane z danym adresem. Czym się różnią rodziny adresów AF_UNIX, AF_INET, AF_INET6? AF_UNIX gniazdo Unixowe umożliwia dwóm procesom działającym na tej samej maszynie porozumiewać się. AF_INET gniazdo IPv4 to gniazdo pomiędzy dwoma procesami, potencjalnie działającymi na dwóch maszynach używające obecnej wersji adresów IP. Ten typ jest obecnie najczęściej używany. Służy do komunikacji za pomocą gniazd poprzez Internet. AF_INET6 podobne do AF_INET, lecz używa IPv6. Jaki plik przeszukują funkcje set/get/endhostent /etc/host void sethostent( stayopen ); //czy pozostawić otwarte połączenie set - rozpocznij przeszukiwanie bazy danych stacji struct hostent *gethostent(void); // nast. pozycja lub NULL, gdy koniec; no errno get weź kolejną pozycję bazy danych stacji void endhostent(void); end zakończ przeszukiwanie bazy danych stacji struct hostent { char *h_name; //oficjalna nazwa stacji char **h_aliases; //tab. alternatywnych nazw stacji h_addrtype; //adres rodziny (nie typu) h_lenght; //dł. każdego adresu char **h_addr_list //tab. wskaźników do adresów sieciowych Jaki plik przeszukują funkcje set/get/endnetent /etc/networks set zacznij badanie sieciowej bazy danych get weź pozycję z sieciowej bazy danych struct netent getnetent(void); //wskaźnik lub NULL, gdy koniec; no errno end zakończ przeszukiwanie sieciowej bazy danych struct netent { char *n_name; //oficjalna nazwa sieci char **n_aliases; //tab. alternatywnych nazw sieci n_addrtype; //adres rodziny (nie typu) u32_t n_net //numer sieci Jaki plik przeszukują funkcje set/get/endservent? /etc/services set zacznij badanie bazy danych usług get weź pozycję z bazy danych usług struct servent *getservent(void); // wskaźnik lub NULL, gdy koniec; no errno end zakończ przeszukiwanie bazy danych usług

struct servent { char *s_name; //oficjalna nazwa usługi char **s_aliases; //tab. alternatywnych nazw usługi s_port; //nr portu char *s_proto; //nazwa protokołu dla tej usługi Jaki plik przeszukują funkcje set/get/endprotoent? /etc/protocols set zacznij badanie bazy danych protokołów get weź pozycję z bazy danych protokołów struct protent *getprotoent(void); // wskaźnik lub NULL, gdy koniec; no errno end zakończ przeszukiwanie bazy danych protokołów struct protoent { char *p_name; //oficjalna nazwa protokołu char **p_aliases; //tab. alternatywnych nazw protokołu p_proto //nr protokołu socket tworzy punkt końcowy i przydziela deskryptor bind wiąże gniazdo z nazwą zew., abyinne procesy mogły się do niego odwoływać listen zaznacza, że gniazdo jest zdolne do zaakceptowania połączenia z drugim gniazdem accept blokuje czekając na połączenie connect łączy z gniazdem, które jest zablokowane w funkcji accept Komunikaty pozapasmowe wysyłane poza kolejką. Dla sendto/sendmsg/send należy ustawić sygnalizator MSG_OOB. Odbiorca używając select, dowiaduje się o komunikacie pozapasmowym. DNS działa w 7 warstwie OSI. inet_ntoa przekształca adres IPv4 z liczby całkowitej w napis, w notacji z kropami inet_ntop jw; obsługuje także IPv6 inet_addr przekształca adres IPv4 z napisu w notacji z kropkami na postać liczby całkowitej gethostbyname gethostbyaddr getnameinfo gethostid uname getnetbyname getnetbyaddr getprodobyname getprotobynumber getservbyname getservbyport