Internet Control Message Protocol Aplikacja ping

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

Download "Internet Control Message Protocol Aplikacja ping"

Transkrypt

1 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 i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

2 Internet Control Message Protocol ICMP, ang. Internet Control Message Protocol. Protokół ICMP jest protokołem warstwy sieci modelu OSI. Protokół IP jest protokołem bezpołączeniowym, bez mechanizmów kontroli błędów. Protokół ICMP został opracowany do obsługi błędów w transmisji datagramów IP. Protokół ICMP wykorzystywany jest do: przesyłania informacji do nadawcy o błędach w transmisji, generowania pakietów do testowania sieci. 2

3 Internet Control Message Protocol Wiadomości ICMP są generowane gdy: datagram IP nie może być przesłany do odbiorcy ze względu na wartość pola TTL = 0 w nagłówku datagramu IP, przesyłane datgramy IP są zbyt duże dla danej sieci a datagram ma ustawioną opcję nie fragmentować, szybkość transmisji jest zbyt duża i odbiorca nie może odebrać nadchodzących pakietów, pole 'Window' w nagłówku segmentu TCP, odbiorca chce aby datagramy były przesyłane inna trasą, pole 'Opcje' w datagramie IP, błędna wartość w polu 'Header Checksum, np. z powodu uszkodzenia datagramu. 3

4 Wartości pola 'Typ wiadomości' w komunikacie ICMP Pole 'Type' Opis pola Odpowiedz Echo Cel nieosiagalny (Destination Unreachable). Wygasniecie zrodla (Source Quench). Przekierowanie (Redirect). Zadanie Echo (Echo Request). Parametr TTL =0 (Time To Live Exceeded) Niewlasciwy parametr (Parameter Problem). Zadanie znacznika czasu (Timestamp). Odpowiedz ze znacznikiem czasu (Timestamp Reply). Zadanie informacji (Information Request). Odpowiedz z informacja (Information Reply). Wartosci pola 'Typ wiadomosci' 4

5 Struktura wiadomości ICMP typu 0, 8 Wiadomość: Echo request, Echo Reply. Pole: Typ = 8 (typ wiadomości: echo). 0 (typ wiadomości: echo reply). Pole: Kod = 0. Typ=8, 0 Identyfikator Kod=0 Suma kontr. Kolejny numer Dane Wiadomosci ICMP: Echo, Echo Reply Pole: Suma kontrolna. Pole: Identyfikator. Dla pola Kod = 0 pole służy do skojarzenia odpowiedzi z zapytaniem. Pole: Kolejny numer. Dla pola Kod = 0 pole służy do skojarzenia odpowiedzi z zapytaniem. Pole: Dane. Dane zawarte w wiadomości 'Echo' muszą być zwrócone w wiadomości 'Echo Replay'. Wiadomości: echo, echo reply (typ 8, 0) są używane do sprawdzania jakości łączy i stanu urządzeń w sieci. 5

6 Specyfikacja struktury ECHOREQUEST Nazwa struktury: ECHOREQUEST Opis : Struktura zawiera komunikat ICMP Echo Request typedef struct tagechorequest ICMPHDR icmphdr; DWORD dwtime; char cdata[req_datasize]; } ECHOREQUEST, *PECHOREQUEST; 6

7 Specyfikacja struktury ECHOREPLY Nazwa struktury : ECHOREPLY Opis : Struktura zawiera komunikat ICMP Echo Reply typedef struct tagechoreply IPHDR iphdr; ECHOREQUEST echorequest; char cfiller[256]; } ECHOREPLY, *PECHOREPLY; 7

8 Specyfikacja struktury IPHDR Nazwa struktury : IPHDR Opis : Struktura zawiera nagłówek datagramu IP, pole Protocol = 1. typedef struct tagiphdr u_char VIHL; // Pola: wersja protokolu IP, długość nagłówka (4 bity, 4 bity) u_char TOS; // Pole: Type of service (8 bitów) short TotLen; // Pole: Total length (8 bitów) short ID; // Pole: Identification (16 bitów) short FlagOff; // Pola: Flags, Fragment offset (3 bity, 13 bitow) u_char TTL; // Pole: Time-to-live (8 bitów) u_char Protocol; // Pole: Protocol, dla ICMP pole Protocol = 1, (8 bitów) u_short Checksum; // Pole: Checksum, (16 bitów) struct in_addr iasrc; // Pole: Internet address, source (32 bity) struct in_addr iadst; // Pole: Internet address, destination (32 bity) } IPHDR, *PIPHDR; 8

9 Specyfikacja struktury ICMPHDR Nazwa struktury : ICMPHDR Opis : Struktura zawiera nagłówek wiadomości ICMP echo request/reply. typedef struct tagicmphdr u_char Type; // Pole: Type, (8 bitów) u_char Code; // Pole: Code, (pole kod błędu powinno mieć wielkość 32 bitów) u_short Checksum; // Pole: Checksum, (16 bitów) u_short ID; // Pole: Identification, (8 bitów) u_short Seq; // Pole: Sequence, (8 bitów) // pola ID i Seq służą do kojarzenia pytań z odpowiedziami } ICMPHDR, *PICMPHDR; 9

10 Specyfikacja struktury sockaddr_in Nazwa struktury: sockaddr_in Opis : Zawiera adres IP i numer portu odbiorcy danych. Struktura zadeklarowana w pliku Winsock2.h (dla IPv4), ws2tcpip.h (dla IPv6). Atrybuty : short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero[8]; sin_family sin_port sin_addr sin_zero Kod rodziny adresów TCP//IP (wartość musi być AF_INET). Numer portu (IP port). Adres IP odbiorcy. Pole służy do uzupełniania tak, aby wielkość struktury była taka sama jak SOCKADDR. Implementacja struktury sockaddr_in: struct sockaddr_in short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; struct sockaddr_in6 short sin6_family; u_short sin6_port; u_long sin6_flowinfo; struct in6_addr sin6_addr; u_long sin6_scope_id; }; 10

11 Specyfikacja struktury in_addr Nazwa struktury : in_addr Opis : Struktura zdefiniowana w pliku WINSOCK.H struct in_addr union struct unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b; struct unsigned short s_w1, s_w2; } S_un_w; unsigned long S_addr; } S_un; }; 11

12 Specyfikacja struktury fd_set Nazwa struktury: fd_set Opis : Struktura służy do tworzenia zbiorów gniazd. Struktura używana przez funkcje winsock np. funkcję select(). Struktura zadeklarowana w pliku Winsock2.h. Atrybuty : u_int fd_count; SOCKET fd_array[fd_setsize]; fd_count - Liczba gniazd w zbiorze. fd_array - Tablica gniazd. Implementacja struktury fd_set: typedef struct fd_set u_int fd_count; SOCKET fd_array[fd_setsize]; } fd_set; 12

13 Specyfikacja struktury timeval Nazwa struktury: timeval Opis : Struktura stosowana do określania wartości czasu. Struktura zadeklarowana w pliku time.h. Atrybuty : long tv_sec; long tv_usec; tv_sec - wartość czasu w sekundach. tv_usec - wartość czasu w mikrosekundach (mikro µ = 1 / ). Implementacja struktury timeval: typedef struct timeval long tv_sec; long tv_usec; } timeval; 13

14 Specyfikacja funkcji GetTickCount() Nazwa funkcji : GetTickCount() Zwracana wartość: DWORD Zwarcaną wartością jest liczba milisekund od czasu uruchmienia systemu. Argumenty : brak Opis : Funkcja zwraca liczbę milisekund jak upłynęła od czasu uruchomienia systemu, maks. czas 49,7 dnia. Zwracane wartości ograniczone są rozdzielczością czasową systemu. Do uzyskania infomacji o rozdzielczości czasowej systemu należy użyć funkcji GetSystemTimeAdjustment(). Zwracana wartość jest przechowywana w zmienej DWORD (32-bit unsigned integer), dlatego po około 49,7 dniach ciągłej pracy systemu wartość jest liczona ponownie (zerowna). Funkcja zadeklarowana w plilku Winbase.h. Implementacja w pliku Kernel32.lib. Przykład: użycie funkcji GetTickCount(). #define TIMELIMIT = DWORD dwstart = GetTickCount(); // zatrzymaj gdy działanie programu przekroczy czas TIMELIMIT if( GetTickCount() - dwstart >= TIMELIMIT ) Cancel(); 14

15 Specyfikacja funkcji select() Nazwa funkcji : select() Zwracana wartość: int Funkcja zwraca - liczbę uchwytów do gniazd (socket handles) które są w strukturze fd_set, - zero, gdy wygasł limit czasu lub - SOCKET_ERROR, gdy wystąpił błąd. Kody błędów: WSANOTINITIALISED, WSAEFAULT, WSAENETDOWN, WSAEINVAL, WSAEINTR, WSAEINPROGRESS, WSAENOTSOCK Argumenty : int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, const struct timeval* timeout nfds - Readfds - writefds - exceptfds - timeout - [in] Ignorowany. Parameter dodany dla zgodności z gniazdami Berkeley. [in-ot] Opcjonalny, wskaźnik do zbioru gniazd, do weryfikacji czy mają atrybut do czytania (readability). [in-out] Opcjonalny, wskaźnik do zbioru gniazd, do weryfikacji czy mają atrybut for zapisu (writability). [in-out] Opcjonalny, wskaźnik do zbioru gniazd, do weryfikacji czy są bez błędów. [in] Maksymalny czas oczekiwania pod warunkiem, że jest w formacie struktury TIMEVAL. Wartość parametru równa zero blokuje operacje. Opis : Funkcja select() określa status gniazd oczekujących na wykonanie synchronicznej operacji wejścia/wyjścia. 15

16 Specyfikacja funkcji Ping() int Ping(SOCKET raw, SOCKADDR_IN target_addr) DWORD start; struct timeval timeout; fd_set readfds; int sel; int rcv; //liczba wysłanych bajtów, sendto() if(sendechorequest(raw, &target_addr) == SOCKET_ERROR) cerr << "sendto() error no: " << WSAGetLastError() << endl; WSACleanup(); return 1; } start = GetTickCount(); do readfds.fd_count = 1; // struktura fd_set readfds.fd_array[0] = raw; // struktura fd_set timeout.tv_sec = 5; // struktura timeval timeout.tv_usec = 0; // struktura timeval if((sel = select(1, &readfds, NULL, NULL, &timeout)) == SOCKET_ERROR) cerr << "select() error no: " << WSAGetLastError() << endl; WSACleanup(); return 1; } if(sel == 0) cout << "uplynal czas oczekiwania na odpowiedz... " << endl; else if((rcv = RecvEchoReply(raw, start)) == SOCKET_ERROR) cerr << "recvfrom() error no: " << WSAGetLastError() << endl; WSACleanup(); return 1; } } while( rcv == 0 ); return 0; } 16

17 Specyfikacja funkcji in_cksum() Nazwa funkcji : in_cksum() Zwracana wartość: u_short Argumenty : u_short *addr, int len Opis : Funkcja wylicza sumę kontrolną tak, jak dla nagłówka datagramu IP, czyli zwracaną wartością jest liczba 16-bitowych słów w nagłówku datagramu IP (jeżeli wyliczona suma nie zajmuje 16 bitów wartość jest uzupełniana jedynkami). Przy obliczaniu sumy kontrolnej przyjmuje się, że pole Header Checksum zawiera same zera. u_short in_cksum(u_short *addr, int len) register int nleft = len; register u_short *w = addr; register u_short answer; register int sum = 0; } while( nleft > 1 ) sum += *w++; nleft -= 2; } if( nleft == 1 ) u_short u = 0; *(u_char *)(&u) = *(u_char *)w; sum += u; } // sum & (sum & ) sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum; return (answer); 17

18 Specyfikacja funkcji SendEchoRequest() Nazwa funkcji : SendEchoRequest(); Zwracana wartość: int Argumenty : SOCKET, SOCKADDR_IN * Wartości arg : Funkcjonalność : Funkcja wysyła żądanie echa. int SendEchoRequest(SOCKET sock, SOCKADDR_IN * target_addr) static ECHOREQUEST echo_req; static int seq = 1; int rc; // liczba wysłanych bajtów echo_req.icmphdr.type = ICMP_ECHOREQ; // typ wiadomosci icmp, typy wiadomosci ICMP (RFC 792) echo_req.icmphdr.code = 0; // kod wiadomosci 0 echo_req.icmphdr.checksum = 0; // przed obliczniem sumy kontrolnej pole Checksum=0 echo_req.icmphdr.id = _getpid(); // proces id echo_req.icmphdr.seq = seq++; // kolejny numer memset(echo_req.cdata, '*', REQ_DATASIZE); echo_req.dwtime = GetTickCount(); echo_req.icmphdr.checksum = in_cksum((u_short *)&echo_req, sizeof(echorequest)); } rc = sendto(sock, (const char *)&echo_req, sizeof(echorequest), 0, (SOCKADDR *) target_addr, sizeof(sockaddr_in)); return (rc); 18

19 Specyfikacja funkcji RecvEchoReply() Nazwa funkcji : RecvEchoReply() Zwracana wartośc: int Argumenty : SOCKET, DWORD Opis : Funkcja odbiera komunikat Echo Reply. int RecvEchoReply(SOCKET sock, DWORD start) ECHOREPLY echo_reply; SOCKADDR_IN from_addr; int addrlen; int rc; // liczba wysłanych bajtów DWORD elapsed; addrlen = sizeof(struct sockaddr_in); rc = recvfrom(sock, (char *) &echo_reply, sizeof(echoreply), 0, (SOCKADDR *) &from_addr, &addrlen); if (rc == SOCKET_ERROR) return(rc); if (echo_reply.echorequest.icmphdr.id!= _getpid()) cout << "Brak odpowiedzi na zapytanie o ID: " << echo_reply.echorequest.icmphdr.id << endl; return 1; } elapsed = GetTickCount() - start; } if (echo_reply.echorequest.icmphdr.type!= ICMP_ECHOREPLY) cout << "Niewlasciwy typ odpowiedzi: "<< echo_reply.echorequest.icmphdr.type << endl; else cout << "Czas odpowiedzi: " << elapsed << " ms, (id= " << echo_reply.echorequest.icmphdr.id << ", seq= " << echo_reply.echorequest.icmphdr.seq << ") "<< endl; return 1; 19

20 Specyfikacja funkcji sendto() Nazwa funkcji : sendto() Zwracana wartość: Funkcja sento() zwraca całkowitą liczbę wysłanych bajtów. W pozostałych przypadkach zwracana jest wartość SOCKET_ERROR. Argumenty : SOCKET s, const char* buf, int len, int flags, const struct sockaddr* to, int tolen. s [in] Obiekt identyfikujący gniazdo. buf [in] Bufor na dane do wysłania. len [in] Długośc danych w buf, (liczona w bajtach). flags [in] Wskaźnik określający sposób wywołania funkcji. to [in] Argument opcjonalny, wskaźnik do struktury sockaddr zawierającej adres gniazda odbiorcy. tolen [in] Wielkość adresu w zmiennej to, (liczona w bajtach). Opis : Funkcja sendto() wysyła dane do konkretnego odbiorcy. Funkcja zadeklarowana w pliku: Winsock2.h. Implementacja w bibliotece: Ws2_32.lib. 20

21 Nazwa funkcji : recvfrom() Zwracana wartość: typ int, liczba odebranych bajtów Specyfikacja funkcji recvfrom() Argumenty : SOCKET s, char* buf, int len, int flags, struct sockaddr* from, int* fromlen s - [in] Obiekt identyfikujący połączone gniazdo (bound socket). buf - [out] Bufor na przychodzące dane. len - [in] Długość zmiennej buf (w bajtach). flags - [in] Wskaźnik określający sposób wywołania funkcji. Określa procesy OOB ( Out-of-Band Data ). MSG_PEEK Peeks at the incoming data. The data is copied into the buffer but is not removed from the input queue. The function subsequently returns the amount of data that can be read in a single call to the recvfrom (or recv) function, which may not be the same as the total amount of data queued on the socket. The amount of data that can actually be read in a single call to the recvfrom (or recv) function is limited to the data size written in the send or sendto function call. MSG_OOB. from - [out] Argument opcjonalny, wskaźnik do atrybutu struct in_addr sin_addr w strukturze SOCKADDR. fromlen - [in, out] Argument opcjonalny, wskaźnik do zmiennej przechowującej wielkość zmiennej from. Opis : Funkcja recvfrom() odbiera datagramy i przechowuje adres nadawcy. 21

22 Specyfikacja funkcji socket() Nazwa funkcji : socket() Zwracana wartość: SOCKET Jeżeli nie ma błędów, funkcja socket() zwraca referencje do nowego gniazda. W przeciwnym przypadku zwraca kod INVALID_SOCKET. Kod błędu można uzyskać przez wywołanie funkcji WSAGetLastError(). Argumenty : int af, int type, int protocol af - [in] Typ adresu stosu (address family specification). type - [in] Typ adresu dla nowych gniazd (SOCK_STREAM, SOCK_DGRAM). protocol- [in] Numer protokołu użytego przez gniazdo. Wartości parametruprotocol: IPPROTO_IP, IPPROTO_TCP, 0. Opis : Funkcja socket() tworzy gniazdo o określonym typie (specific service provider). Funkcja zadeklarowana w pliku winsock2.h, implementacja w pliku ws2_32.lib. 22

23 Specyfikacja funkcji _getpid() Nazwa funkcji : _getpid() Zwracana wartość: int Funkcja _getpid() zwraca identyfikator procesu (process ID). Argumenty : brak Opis : Funkcja zadeklarowana w pliku process.h 23

24 Surowe gniazda (typ gniazda SOCK_RAW) Obsługa gniazd typu SOCK_RAW nie jest wymagana. Odmiany gniazd typu SOCK_RAW: odmiana w której zakłada się, że znany jest typ protokołu zapisany w nagłówku datagramu IP. Przykładem takiego gniazda jest gniazdo ICMP. druga odmiana pozwala użyć dowolnego typ protokołu. Odmiana gniazda stosowana np. dla protokołów eksperymentalnych, gdy nie jest znana wartość pola typ protokołu w nagłówku datagramu IP. 24

25 Zasady użycia gniazd SOCK_RAW Wysyłany datagram może nie zawierać nagłówka IP jeżeli jest ustawiona opcja gniazda IP_HDRINCL. Do gniazda odbiorcy zawsze dociera datagram z nagłówkiem bez względu na to, czy jest ustawiona opcja gniazda IP_HDRINCL. Odebrane datagramy są kopiowane do wszystkich gniazd SOCK_RAW jeżeli spełniają następujące warunki: Numer protokołu określony dla gniazda jest zgodny z numerem w nagłówku przychodzącego datagramu IP. Jeżeli adres IP lokalnego hosta jest przypisany do gniazda to powinien być zgodny z adresem IP odbiorcy w nagłówku datagramu IP. Aplikacja może określić adres IP lokalnego hosta poprzez wywołanie funkcji bind(). Jeżeli żaden adres IP lokalnego hosta jest nie jest przypisany do gniazda to datagramy są zawsze kopiowane do gniazda (bez względu jaki adres jest w nagłówku datagramu IP). Jeżeli adres IP nadawcy jest przypisany do gniazda to powinien być zgodny z adresem IP nadawcy w nagłówku datagramu IP. Aplikacja może określić adres IP nadawcy poprzez wywołanie funkcji connect(). Jeżeli adres IP nadawcy jest nie jest przypisany do gniazda to datagramy są zawsze kopiowane do gniazda. Uwaga: Gniazda typu SOCK_RAW mogą odbierać przypadkowe, nieoczekiwane datagramy, np. aplikacja ping wysyła żądanie echa (datagram ICMP echo requests ), spodziewa się odebrać datagram ICMP echo response ale może odebrać inne datagramy np. ICMP HOST_UNREACHABLE. Jeżeli kilka gniazd typu SOCK_RAW jest otwartych na danym hoście to do wszystkich gniazd docierają takie same datagramy. Apliakcja powinna mieć mechanizm rozróżniania datagramów. 25

26 Specyfikacja projektu Nazwa projektu: ping2 Typ projektu : Win32 console application Lista plików : ping2.cpp, icmp.h Kompilacja : Microsoft Visual C Utworzyć projekt typu 'Win32 console application w menu (-)File-> New -> Project-> Other languages-> Visual C++ -> win32 -> Win32 console application -> wpisać nazwę: ping2 -> przycisk (OK) -> Okno Win32 application wizard ping2-> wybrać: Application settings -> wybrać: Empty project-> Przycisk (Finish). Konfiguracja projektu: (-)Project-> nazwa_projektu Properies... -> Configuration Properies-> Linker-> Input -> Additional Dependecies, wpisać: ws2_32.lib. Wkopiować pliki: icmp.h do katalogu projektu. Funkcjonalność: uruchomienie \> ping2 adres_ip_hosta 26

27 Specyfikacja projektu Pliki nagłówkowe: process.h, winsock2.h, iostream, "icmp.h" Funkcje programu: WSAStartup(), socket(), gethostbyname(), select(), sendto(), recvfrom(), _getpid() Ping(), SendEchoRequest(), RecvEchoReply(), GetTickCount(), in_cksum() 27

28 Specyfikacja projektu Zmienne programu: #define NUM_PINGS 10 // Liczba wyslanych zapytan Echo Request WSADATA WORD int SOCKET HOSTENT * SOCKADDR_IN int struct timeval fd_set wsadata; wversionrequested = MAKEWORD(2,2); rc; raw; host_ent; target_addr; count; timeout; readfds; static ECHOREQUEST echo_req; ECHOREPLY echo_reply; 28

29 Struktura programu (struktura funkcji main()) 1. Sprawdzenie poprawności argumentów programu. 2. Uruchomienie Winsock a rc = WSAStartup(wVersionRequested, &wsadata); 3. Sprawdzenie wersji Winsock Czy wsadata.wversion!= wversionrequested? 4. Utworzenie gniazda raw = socket(af_inet, SOCK_RAW, IPPROTO_ICMP); 5. Inicjowanie zmiennej adresem IP odbiorcy lub nazwą hosta target_addr.sin_addr.s_addr = inet_addr(argv[1]) 6. Gdy podano adres hosta host_ent = gethostbyname(argv[1]); 7. Przekazanie nazwy do obiektu target_addr: memcpy(&target_addr.sin_addr, host_ent->h_addr, host_ent->h_length); 29

30 Struktura programu (struktura funkcji main()) 8. Przekazanie wartości atrybutów obiektu target_addr target_addr.sin_family = AF_INET; target_addr.sin_port = 0; 9. Przekierowanie na ekran wiadomości: cout << "Pingowanie hosta: " << argv[1] << " (" << inet_ntoa(target_addr.sin_addr) << ") " << endl; 10. Wywołanie funkcji Ping() Ping(raw, target_addr); 11. Zamknięcie gniazda closesocket(raw); WSACleanup(); 30

31 #include <process.h> #include <winsock2.h> #include <iostream> #include "icmp.h" using namespace std; #define NUM_PINGS 10 // liczba wysłanych wiad. ICMP Echo Request int Ping(SOCKET, SOCKADDR_IN); u_short in_cksum(u_short *addr, int len); int SendEchoRequest(SOCKET, SOCKADDR_IN *); int RecvEchoReply(SOCKET, DWORD); 31

32 int main(int argc, char **argv) WSADATA wsadata; WORD wversionrequested = MAKEWORD(2,2); int rc; SOCKET raw; HOSTENT * host_ent; SOCKADDR_IN target_addr; int count; if (argc!= 2) cerr << "Wpisz: " << argv[0] << " hazwahosta" << endl; return 1; } if (rc = WSAStartup(wVersionRequested, &wsadata)) cerr << "WSAStartup() error no: " << rc << endl; if (wsadata.wversion!= wversionrequested) cerr << "WinSock version: " << LOBYTE(wVersionRequested) <<"." << HIBYTE(wVersionRequested) << " not supported" << endl; WSACleanup(); return 1; } 32

33 if ((raw = socket(af_inet, SOCK_RAW, IPPROTO_ICMP)) == SOCKET_ERROR) cerr << "socket() error no: " << WSAGetLastError() << endl; WSACleanup(); return 1; } if ((target_addr.sin_addr.s_addr = inet_addr(argv[1])) == INADDR_NONE) if (host_ent = gethostbyname(argv[1])) memcpy(&target_addr.sin_addr, host_ent->h_addr, host_ent->h_length); else cerr << "Nie znaleziono hosta " << argv[1] << " error no: " << WSAGetLastError() << endl; WSACleanup(); return 1; } } target_addr.sin_family = AF_INET; target_addr.sin_port = 0; cout << "Pingowanie hosta: " << argv[1] << " ("<< inet_ntoa(target_addr.sin_addr) << ") "<< endl; for (count = 0; count < NUM_PINGS; ++count) Ping(raw, target_addr); closesocket(raw); WSACleanup(); return 0; } 33

34 Specyfikacja funkcji setsockopt() (aplikacja tracert) Nazwa funkcji : setsockopt() Zwracana wartość: int setsockopt() zwraca zero gdy wywołanie funkcji zakończyło się sukcesem. W innym przypadku zwraca SOCKET_ERROR, i określony kod błędu może być uzyskany poprzez wywołanie funkcji WSAGetLastError(): Argumenty : SOCKET s, int level, int optname, const char* optval, int optlen s [in] identyfikator gniazda. level [in] nazwa poziomu opcji (SOL_SOCKET, IPPROTO_TCP). SOL_SOCKET: SO_ACCEPTCONN, SO_BROADCAST, SO_CONDITIONAL_ACCEPT,SO_CONNDATA, SO_CONNDATALEN, SO_CONNECT_TIME, SO_CONNOPT, SO_CONNOPTLEN, SO_DISCDATA, SO_DISCDATALEN, SO_DISCOPT, SO_DISCOPTLEN, SO_DEBUG, SO_DONTLINGER, SO_DONTROUTE, SO_ERROR, SO_EXCLUSIVEADDRUSE, SO_GROUP_ID, SO_GROUP_PRIORITY, SO_KEEPALIVE, SO_LINGER, SO_MAX_MSG_SIZE, SO_MAXDG, SO_MAXPATHDG, SO_OOBINLINE, SO_OPENTYPE, SO_PROTECT, SO_PROTOCOL_INFO, SO_PROTOCOL_INFOA, SO_PROTOCOL_INFOW,SO_RCVBUF, SO_RCVLOWAT, SO_RCVTIMEO, SO_REUSEADDR, SO_SNDBUF, SO_SNDLOWAT, SO_SNDTIMEO, SO_SYNCHRONOUS_ALERT, SO_SYNCHRONOUS_NONALERT, SO_TYPE, SO_UPDATE_ACCEPT_CONTEXT, SO_UPDATE_CONNECT_CONTEXT, SO_USELOOPBACK. IPPROTO_TCP: TCP_EXPEDITED_1122, TCP_NODELAY. IPPROTO_IP: IP_ADD_MEMBERSHIP, IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DONTFRAGMENT, IP_DROP_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_HDRINCL,IP_MULTICAST_IF, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_OPTIONS, IP_PKTINFO,IP_RECEIVE_BROADCAST,IP_TOS, IP_TTL, IP_UNBLOCK_SOURCE. optname [in] nazwa opcji, wartość poziomu opcji. optval [in] wskaźnik do zmiennej która przechowuje dane o opcji. optlen [in] wielkość zmiennej która przechowuje dane o opcji. Opis : Funkcja służy do ustawiania opcji gniazd. Funkcja zadeklarowana w pliku Winbase.h. Implementacja w pliku ws2_32.lib. Note If the setsockopt function is called before the bind function, TCP/IP options will not be checked with TCP/IP until the bind occurs. In this case, the setsockopt function call will always succeed, but the bind function call may fail because of an early setsockopt failing. Note If a socket is opened, a setsockopt call is made, and then a sendto call is made, Windows Sockets performs an implicit bind function call. 34

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

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

Sieci Komputerowe. Protokół ICMP - Internet Control Message Protocol Protokół ICMP version 6. dr Zbigniew Lipiński

Sieci Komputerowe. Protokół ICMP - Internet Control Message Protocol Protokół ICMP version 6. dr Zbigniew Lipiński Sieci Komputerowe Protokół ICMP - Internet Control Message Protocol Protokół ICMP version 6 dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl

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

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

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe Gniazda surowe Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź,9maja2006 Wstęp Gniazda surowe posiadają pewne właściwości, których brakuje gniazdom TCP i UDP: Gniazda surowe

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

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

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ INTERNET PROTOCOL (IP) INTERNET CONTROL MESSAGE PROTOCOL (ICMP) WSTĘP DO SIECI INTERNET Kraków, dn. 7 listopada 2016 r. PLAN IPv4: schemat nagłówka ICMP: informacje

Bardziej szczegółowo

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

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project Aplikacja Sieciowa Jedną z fundamentalnych właściwości wielu aplikacji jest możliwość operowania pomiędzy jednostkami (np. PC), które włączone są do sieci. W Windows operacja ta jest możliwa przy wykorzystaniu

Bardziej szczegółowo

Iteracyjny serwer TCP i aplikacja UDP

Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP Funkcje wywoływane przez serwer TCP socket() - bind() - listen() - accept() - read() / write() - close() socket() Creates an endpoint for communication

Bardziej szczegółowo

Programowanie Sieciowe 1

Programowanie Sieciowe 1 Programowanie Sieciowe 1 dr inż. Tomasz Jaworski tjaworski@iis.p.lodz.pl http://tjaworski.iis.p.lodz.pl/ Klient UDP Kolejność wykonywania funkcji gniazdowych klienta UDP Protokół UDP jest bezpołączeniowy:

Bardziej szczegółowo

Laboratorium 6.7.2: Śledzenie pakietów ICMP

Laboratorium 6.7.2: Śledzenie pakietów ICMP Topologia sieci Tabela adresacji Urządzenie Interfejs Adres IP Maska podsieci Domyślna brama R1-ISP R2-Central Serwer Eagle S0/0/0 10.10.10.6 255.255.255.252 Nie dotyczy Fa0/0 192.168.254.253 255.255.255.0

Bardziej szczegółowo

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

Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998 Gniazda BSD Literatura uzupełniająca: W. Richard Stevens, Programowanie zastosowań sieciowych w systemie Unix WNT 1998 socket() Użycie gniazd w transmisji połączeniowej bind() listen() socket() accept()

Bardziej szczegółowo

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6 Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6 Celem ćwiczenia jest zdobycie umiejętności programowania komunikacji unicastowej za pomocą protokołu IPv6

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

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

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

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

Gniazda UDP. Bartłomiej Świercz. Łódź, 3 kwietnia Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda UDP Gniazda UDP Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 3 kwietnia 2006 Wstęp ZewzględunaróżnicewprotokołachTCPiUDPsposób korzystania z gniazd UDP różni sie znacznie od

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

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

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

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski Czym jest ICMP? Protokół ICMP jest protokołem działającym w warstwie sieciowej i stanowi integralną część protokołu internetowego IP, a raczej

Bardziej szczegółowo

ZiMSK. Routing statyczny, ICMP 1

ZiMSK. Routing statyczny, ICMP 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 Routing statyczny, ICMP 1

Bardziej szczegółowo

Gniazda BSD. komunikacja bezpołączeniowa

Gniazda BSD. komunikacja bezpołączeniowa Gniazda BSD komunikacja bezpołączeniowa Użycie gniazd w transmisji bezpołączeniowej socket() socket() bind() bind() STOP! recv() żądanie send() send() odpowiedź recv() STOP! recvfrom() #include

Bardziej szczegółowo

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa Warstwa sieciowa Model OSI Model TCP/IP Aplikacji Prezentacji Aplikacji podjęcie decyzji o trasowaniu (rutingu) na podstawie znanej, lokalnej topologii sieci ; - podział danych na pakiety Sesji Transportowa

Bardziej szczegółowo

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

Gniazda BSD. Procesy w środowisku sieciowym. Gniazda podstawowe funkcje dla serwera. Gniazda podstawowe funkcje dla klienta 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

Bardziej szczegółowo

Instrukcja 5 - Zastosowania protokołu ICMP

Instrukcja 5 - Zastosowania protokołu ICMP Instrukcja 5 - Zastosowania protokołu ICMP 5.1 Wstęp Protokół ICMP (ang. Internet Control Message Protocol) to protokół internetowych komunikatów sterujących. Jest nierozerwalnie związany z inkapsulującym

Bardziej szczegółowo

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

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP Sieci komputerowe Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP Zadania warstwy transportu Zapewnienie niezawodności Dostarczanie danych do odpowiedniej aplikacji w warstwie aplikacji (multipleksacja)

Bardziej szczegółowo

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

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN Podstawy Transmisji Danych Wykład IV Protokół IPV4 Sieci WAN to połączenia pomiędzy sieciami LAN 1 IPv4/IPv6 TCP (Transmission Control Protocol) IP (Internet Protocol) ICMP (Internet Control Message Protocol)

Bardziej szczegółowo

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

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej SEGMENT TCP CZ. I Numer portu źródłowego (ang. Source port), przeznaczenia (ang. Destination port) identyfikują aplikacje wysyłającą odbierającą dane, te dwie wielkości wraz adresami IP źródła i przeznaczenia

Bardziej szczegółowo

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

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen); 3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:

Bardziej szczegółowo

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

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

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

Gniazda - Wstęp. Oprogramowanie systemów równoległych i rozproszonych. Sposób komunikacji. Domena adresowa. olas@icis.pcz.pl Gniazda - Wstęp Oprogramowanie systemów równoległych i rozproszonych Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Domena adresowa 1/??

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

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: 5 Temat ćwiczenia: Badanie protokołów rodziny TCP/IP 1. Wstęp

Bardziej szczegółowo

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący Zarządzanie w sieci Protokół Internet Control Message Protocol Protokół sterujący informacje o błędach np. przeznaczenie nieosiągalne, informacje sterujące np. przekierunkowanie, informacje pomocnicze

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

Protokoły wspomagające. Mikołaj Leszczuk

Protokoły wspomagające. Mikołaj Leszczuk Protokoły wspomagające Mikołaj Leszczuk Spis treści wykładu Współpraca z warstwą łącza danych: o o ICMP o o ( ARP ) Protokół odwzorowania adresów ( RARP ) Odwrotny protokół odwzorowania adresów Opis protokołu

Bardziej szczegółowo

Przesyłania danych przez protokół TCP/IP

Przesyłania danych przez protokół TCP/IP Przesyłania danych przez protokół TCP/IP PAKIETY Protokół TCP/IP transmituje dane przez sieć, dzieląc je na mniejsze porcje, zwane pakietami. Pakiety są często określane różnymi terminami, w zależności

Bardziej szczegółowo

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

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 Paweł Kowalik Zespół Szkół im. ks. S. Staszica w Tarnobrzegu KOMUNIKACJA SIECIOWA MIĘDZY URZĄDZENIAMI Z WYKORZYSTANIEM PROTKOŁU

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

Komunikacja sieciowa - interfejs gniazd

Komunikacja sieciowa - interfejs gniazd SOE Systemy Operacyjne Wykład 14 Komunikacja sieciowa - interfejs gniazd dr inŝ. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Model komunikacji sieciowej Model OSI (ang. Open System

Bardziej szczegółowo

Klient-Serwer Komunikacja przy pomocy gniazd

Klient-Serwer Komunikacja przy pomocy gniazd II Klient-Serwer Komunikacja przy pomocy gniazd Gniazda pozwalają na efektywną wymianę danych pomiędzy procesami w systemie rozproszonym. Proces klienta Proces serwera gniazdko gniazdko protokół transportu

Bardziej szczegółowo

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

Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6 Standardy programowania protokołów komunikacyjnych Laboratorium nr 5 komunikacja multicastowa IPv6 Celem ćwiczenia jest zdobycie umiejętności programowania komunikacji multicastowej za pomocą protokołu

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

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

Adresowanie grupowe. Bartłomiej Świercz. Katedra Mikroelektroniki i Technik Informatycznych. Łódź, 25 kwietnia 2006 Adresowanie grupowe Bartłomiej Świercz Katedra Mikroelektroniki i Technik Informatycznych Łódź, 25 kwietnia 2006 Wstęp Na potrzeby sieci komputerowych zdefiniowano rożne rodzaje adresowania: adresowanie

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

Laboratorium 6.7.1: Ping i Traceroute

Laboratorium 6.7.1: Ping i Traceroute Laboratorium 6.7.1: Ping i Traceroute Topologia sieci Tabela adresacji Urządzenie Interfejs Adres IP Maska podsieci Domyślna brama R1-ISP R2-Central Serwer Eagle S0/0/0 10.10.10.6 255.255.255.252 Nie dotyczy

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

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

TCP - receive buffer (queue), send buffer (queue) BSD sockets c.d. TCP - receive buffer (queue), send buffer (queue) Z każdym gniazdem sieciowym są skojarzone: Bufor do odbierania danych (ang. receive buffer) Przychodzące dane są umieszczane w buforze

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

Katedra Inżynierii Komputerowej Politechnika Częstochowska. Zastosowania protokołu ICMP Laboratorium podstaw sieci komputerowych

Katedra Inżynierii Komputerowej Politechnika Częstochowska. Zastosowania protokołu ICMP Laboratorium podstaw sieci komputerowych Katedra Inżynierii Komputerowej Politechnika Częstochowska Zastosowania protokołu ICMP Laboratorium podstaw sieci komputerowych Cel ćwiczenia Zastosowania protokołu ICMP Celem dwiczenia jest zapoznanie

Bardziej szczegółowo

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademickie Centrum Informatyki PS. Wydział Informatyki PS Akademickie Centrum Informatyki PS Wydział Informatyki PS Wydział Informatyki Sieci komputerowe i Telekomunikacyjne Datagram w Intersieci (IP) Krzysztof Bogusławski tel. 449 41 82 kbogu@man.szczecin.pl

Bardziej szczegółowo

Sieci komputerowe - administracja

Sieci komputerowe - administracja Sieci komputerowe - administracja warstwa sieciowa Andrzej Stroiński andrzej.stroinski@cs.put.edu.pl http://www.cs.put.poznan.pl/astroinski/ warstwa sieciowa 2 zapewnia adresowanie w sieci ustala trasę

Bardziej szczegółowo

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

TCP/IP formaty ramek, datagramów, pakietów... SIECI KOMPUTEROWE DATAGRAM IP Protokół IP jest przeznaczony do sieci z komutacją pakietów. Pakiet jest nazywany przez IP datagramem. Każdy datagram jest podstawową, samodzielną jednostką przesyłaną w sieci

Bardziej szczegółowo

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

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

Sieci komputerowe - Wstęp do intersieci, protokół IPv4 Piotr Kowalski KAiTI Internet a internet - Wstęp do intersieci, protokół IPv Plan wykładu Informacje ogólne 1. Ogólne informacje na temat sieci Internet i protokołu IP (ang. Internet Protocol) w wersji.

Bardziej szczegółowo

Sieci Komputerowe Protokół TCP

Sieci Komputerowe Protokół TCP Sieci Komputerowe Protokół TCP Transmission Control Protocol dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Zagadnienia Protokół TCP Transmisja

Bardziej szczegółowo

Gniazda BSD implementacja w C#

Gniazda BSD implementacja w C# BSD implementacja w C# Implementacja w C#: Przestrzeń nazw: System.Net.Sockets Klasa: public class Socket : IDisposable Implementacja w C#: Konstruktor: public Socket( AddressFamily addressfamily, SocketType

Bardziej szczegółowo

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

1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy 1.1 Przykład znajdowanie liczb pierwszych leżących w zadanym zakresie, tryb bezpołączeniowy Należy znaleźć liczby pierwsze w zakresie od 2 do N na P komputerach. Zarządca pocz[i], kon[i] wykonawca 1 wykonawca

Bardziej szczegółowo

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska Instytut Informatyki Politechnika Poznańska Proces transmisji może w prowadzać błędy do przesyłanych wiadomości błędy pojedyncze lub grupowe Detekcja: Wymaga uznania, że niektóre wiadomości są nieważne

Bardziej szczegółowo

Tryb bezpołączeniowy (datagramowy)

Tryb bezpołączeniowy (datagramowy) Tutaj trochę szerzej opisałam mechanizm gniazdek. 3 tematy wymienione poniŝej przeplatają się ze sobą więc wrzuciłam je do jednego worka i przedstawiłam w takim porządku, który wydawał mi się najbardziej

Bardziej szczegółowo

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne

Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -

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

Przykład aplikacji UDP

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

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status) }... int zabij_proces

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC

Zdalne wywoływanie procedur RPC Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

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

Warstwa sieciowa. mgr inż. Krzysztof Szałajko

Warstwa sieciowa. mgr inż. Krzysztof Szałajko Warstwa sieciowa mgr inż. Krzysztof Szałajko Modele odniesienia 7 Aplikacji 6 Prezentacji 5 Sesji 4 Transportowa 3 Sieciowa 2 Łącza danych 1 Fizyczna Aplikacji Transportowa Internetowa Dostępu do sieci

Bardziej szczegółowo

Bezpieczeństwo w M875

Bezpieczeństwo w M875 Bezpieczeństwo w M875 1. Reguły zapory sieciowej Funkcje bezpieczeństwa modułu M875 zawierają Stateful Firewall. Jest to metoda filtrowania i sprawdzania pakietów, która polega na analizie nagłówków pakietów

Bardziej szczegółowo

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

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe Wykład 7: Transport: protokół TCP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 7 1 / 23 W poprzednim odcinku Niezawodny transport Algorytmy

Bardziej szczegółowo

ARP Address Resolution Protocol (RFC 826)

ARP Address Resolution Protocol (RFC 826) 1 ARP Address Resolution Protocol (RFC 826) aby wysyłać dane tak po sieci lokalnej, jak i pomiędzy różnymi sieciami lokalnymi konieczny jest komplet czterech adresów: adres IP nadawcy i odbiorcy oraz adres

Bardziej szczegółowo

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1

Zdalne wywoływanie procedur RPC. Dariusz Wawrzyniak 1 Zdalne wywoływanie procedur Zagadnienia projektowe Zagadnienia realizacyjne main(int argc, char* argv[]){ int id, status; id = atoi(argv[1]); status = zabij_proc(id); exit(status)... int zabij_proces (int

Bardziej szczegółowo

polega na opakowaniu danych - w każdej warstwie modelu OSI, kolejno idąc z góry na dół - w konieczne nagłówki/stopki odpowiednich protokołów

polega na opakowaniu danych - w każdej warstwie modelu OSI, kolejno idąc z góry na dół - w konieczne nagłówki/stopki odpowiednich protokołów 1 HERMETYZACJA DANYCH polega na opakowaniu danych - w każdej warstwie modelu OSI, kolejno idąc z góry na dół - w konieczne nagłówki/stopki odpowiednich protokołów hermetyzacja danych kroki: 1. pojawienie

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

ADRESY PRYWATNE W IPv4

ADRESY PRYWATNE W IPv4 ADRESY PRYWATNE W IPv4 Zgodnie z RFC 1918 zaleca się by organizacje dla hostów wymagających połączenia z siecią korporacyjną a nie wymagających połączenia zewnętrznego z Internetem wykorzystywały tzw.

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

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

#line #endif #ifndef #pragma

#line #endif #ifndef #pragma 8.1 Instrukcje preprocesorowe... 1 8.1.1 Instrukcja #define... 1 8.1.2 Instrukcje #pragma... 2 8.2 Polecenie _asm... 3 8.3 Polecenie declspec... 4 8.4 Definiowanie makr... 5 8.5 Programy wieloplikowe,

Bardziej szczegółowo

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

Routing. część 1: adresowanie. Sieci komputerowe. Wykład 2. Marcin Bieńkowski Routing część 1: adresowanie Sieci komputerowe Wykład 2 Marcin Bieńkowski W poprzednim odcinku Jak przesyłać dane przez sieć Chcemy przesyłać między aplikacjami strumień danych. Globalne adresowanie: w

Bardziej szczegółowo

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

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: 3 Temat ćwiczenia: Narzędzia sieciowe w systemie Windows 1. Wstęp

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

Obsługa wyjątków. Język C++ WW12

Obsługa wyjątków. Język C++ WW12 Obsługa wyjątków Pozwala zarządzać błędami wykonania w uporządkowany sposób. Umożliwia automatyczne wywołanie części kodu, funkcji, metod klas, który trzeba wykonać przy powstaniu błędów. try //blok try

Bardziej szczegółowo

Architektura INTERNET

Architektura INTERNET Internet, /IP Architektura INTERNET OST INTERNET OST OST BRAMA (ang. gateway) RUTER (ang. router) - lokalna sieć komputerowa (ang. Local Area Network) Bramy (ang. gateway) wg ISO ruter (ang. router) separuje

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1

Zdalne wywoływanie procedur RPC 27. października Dariusz Wawrzyniak (IIPP) 1 Zagadnienia projektowe Zagadnienia realizacyjne 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 = kill(pid,

Bardziej szczegółowo

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Akademickie Centrum Informatyki PS. Wydział Informatyki PS Akademickie Centrum Informatyki PS Wydział Informatyki PS Akademickie Centrum Informatyki Wydział Informatyki P.S. Warstwy transmisyjne Protokoły sieciowe Krzysztof Bogusławski tel. 449 41 82 kbogu@man.szczecin.pl

Bardziej szczegółowo

Winsock. Sieci Komputerowe II Wyk ład 3

Winsock. Sieci Komputerowe II Wyk ład 3 Winsock Sieci Komputerowe II Wyk ład 3 Plan Przygotowanie środowiska Inicjacja Winsock Aplikacja klienta: tworzenie socketu łączenie z socketem serwera wysyłanie i odbieranie danych rozłączanie klienta

Bardziej szczegółowo

C++ wprowadzanie zmiennych

C++ wprowadzanie zmiennych C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym

Bardziej szczegółowo

Zdalne wywoływanie procedur RPC 27. października 2010

Zdalne wywoływanie procedur RPC 27. października 2010 Zagadnienia projektowe Zagadnienia realizacyjne 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 Mechanizmy kontroli błędów w sieciach

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach Sieci Komputerowe Mechanizmy kontroli błędów w sieciach dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Zagadnienia Zasady kontroli błędów

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

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

Stos TCP/IP Warstwa Internetu. Sieci komputerowe Wykład 4

Stos TCP/IP Warstwa Internetu. Sieci komputerowe Wykład 4 Stos TCP/IP Warstwa Internetu Sieci komputerowe Wykład 4 Historia Internetu (1 etap) Wojsko USA zleca firmie Rand Corp. wyk. projektu sieci odpornej na atak nuklearny. Uruchomienie sieci ARPANet (1 IX

Bardziej szczegółowo

Wywoływanie procedur zdalnych

Wywoływanie procedur zdalnych Wywoływanie procedur zdalnych Mechanizm wywołania 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

Protokoły sieciowe - TCP/IP

Protokoły sieciowe - TCP/IP Protokoły sieciowe Protokoły sieciowe - TCP/IP TCP/IP TCP/IP (Transmission Control Protocol / Internet Protocol) działa na sprzęcie rożnych producentów może współpracować z rożnymi protokołami warstwy

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

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