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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Przykład aplikacji UDP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, 2015. Wydział Matematyki Stosowanej Politechniki Śląskiej Laboratorium 1 - Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Punkty Na laboratorium można zdobyć 60 punktów. Ocena ogólna z zajęć:

Bardziej szczegółowo

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach

Ćwiczenia laboratoryjne. Oprogramowanie i badanie prostych metod sortowania w tablicach Ćwiczenia laboratoryjne Oprogramowanie i badanie prostych metod sortowania w tablicach Sprawozdanie Na każdym zajęciu laboratoryjnym sporządza się za pomocą edytora Word sprawozdanie. Bazowa zawartość

Bardziej szczegółowo

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

Bardziej szczegółowo

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.

4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu. Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity

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

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio Programowanie Ćwiczenie Język C. Środowisko programowania Visual Studio Tematy ćwiczenia praca ze środowiskiem, tworzenie i uruchomienie programu, struktura programu, deklaracje i definicje typy standardowe,

Bardziej szczegółowo

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny 41 Rodzaje testów i pomiarów aktywnych ZAGADNIENIA - Jak przeprowadzać pomiary aktywne w sieci? - Jak zmierzyć jakość usług sieciowych? - Kto ustanawia standardy dotyczące jakości usług sieciowych? - Jakie

Bardziej szczegółowo

1. Tworzenie nowego projektu.

1. Tworzenie nowego projektu. Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty

Bardziej szczegółowo

Określanie konfiguracji TCP/IP

Określanie konfiguracji TCP/IP Określanie konfiguracji TCP/IP Marek Kozłowski Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska Warszawa, 2014/2015 Internet Control Message Protocol Protokół IP nie jest wyposażony w żadne

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

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka 1. Kompilacja aplikacji konsolowych w środowisku programistycznym Microsoft Visual Basic. Odszukaj w menu startowym systemu

Bardziej szczegółowo

BRAMKA HTTP SMS XML Dokumentacja techniczna. wersja 3.32

BRAMKA HTTP SMS XML Dokumentacja techniczna. wersja 3.32 BRAMKA HTTP SMS XML Dokumentacja techniczna wersja 3.32 autor: Michał Jastrzębski ostatnia aktualizacja : 27.05.2015 Historia zmian Data Osoba Opis zmian 2006-12-01 Marcin Mańk Pierwsza wersja 2007-08-20

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

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Internet Control Messaging Protocol

Internet Control Messaging Protocol Protokoły sieciowe ICMP Internet Control Messaging Protocol Protokół komunikacyjny sterowania siecią Internet. Działa na warstwie IP (bezpośrednio zaimplementowany w IP) Zastosowanie: Diagnozowanie problemów

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

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

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Adresy IP v.6 IP version 4 IP version 6 byte 0 byte 1 byte 2 byte 3 byte 0 byte 1 byte 2 byte 3

Adresy IP v.6 IP version 4 IP version 6 byte 0 byte 1 byte 2 byte 3 byte 0 byte 1 byte 2 byte 3 Historia - 1/2 Historia - 2/2 1984.1 RFC 932 - propozycja subnettingu 1985.8 RFC 95 - subnetting 199.1 ostrzeżenia o wyczerpywaniu się przestrzeni adresowej 1991.12 RFC 1287 - kierunki działań 1992.5 RFC

Bardziej szczegółowo

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

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

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl wersja.2.9 data 2014-11-21 Opis usług: P24 KOD P24 KLUCZ P24 WAPA SEND SMS Strona 1 z 8 P24 KOD Przebieg transakcji Operacje po stronie Sprzedawcy

Bardziej szczegółowo

Electronic Infosystems

Electronic Infosystems Department of Optoelectronics and Electronic Systems Faculty of Electronics, Telecommunications and Informatics Gdansk University of Technology Electronic Infosystems Microserver TCP/IP with CS8900A Ethernet

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

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

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012 PROGRAMOWANIE NISKOPOZIOMOWE PN.06 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Ćwiczenia laboratoryjne c Dr inż. Ignacy Pardyka (Inf.UJK) PN.06 Rok akad.

Bardziej szczegółowo

Charakterystyka grupy protokołów TCP/IP

Charakterystyka grupy protokołów TCP/IP Charakterystyka grupy protokołów TCP/IP Janusz Kleban Architektura TCP/IP - protokoły SMTP FTP Telnet HTTP NFS RTP/RTCP SNMP TCP UDP IP ICMP Protokoły routingu ARP RARP Bazowa technologia sieciowa J. Kleban

Bardziej szczegółowo

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

Microsoft IT Academy kurs programowania Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego

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

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

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Omówienie TCP/IP. Historia

Omówienie TCP/IP. Historia PORADNIKI TCP/IP Omówienie TCP/IP TCP/IP oznacza Transmision Control Protocol / Internet Protocol, jest nazwą dwóch protokołów, ale również wspólną nazwą dla rodziny setek protokołów transmisji danych

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

Dokumentacja smsapi wersja 1.4

Dokumentacja smsapi wersja 1.4 Dokumentacja smsapi wersja 1.4 1. Wprowadzenie Platforma smsapi została skierowana do użytkowników chcących rozbudować swoje aplikacje o system wysyłania smsów. Aplikacja ta w prosty sposób umożliwia integrację

Bardziej szczegółowo

Komunikacja pomiędzy sterownikami PLC za pomocą łącza GSM GPRS

Komunikacja pomiędzy sterownikami PLC za pomocą łącza GSM GPRS Politechnika Śląska w Gliwicach Wydział Automatyki, Elektroniki i Informatyki Kierunek: Automatyka i Robotyka Specjalność: Komputerowe Systemy Sterowania Komunikacja pomiędzy sterownikami PLC za pomocą

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 1.

Programowanie 2. Język C++. Wykład 1. 1.1 Wstęp... 1 1.2 Obiekty stałe... 3 1.3 Obiekty statyczne... 4 1.4 Wskaźniki... 5 1.5 Referencje... 8 1.6 Wskaźniki do wskaźników... 11 1.7 Definiowanie własnych typów danych, polecenie typedef... 17

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

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

Wstęp do programowania 1

Wstęp do programowania 1 Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short

Bardziej szczegółowo

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych Wykład 2: Budowanie sieci lokalnych 1 Budowanie sieci lokalnych Technologie istotne z punktu widzenia konfiguracji i testowania poprawnego działania sieci lokalnej: Protokół ICMP i narzędzia go wykorzystujące

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Komunikacja pomiędzy S7-1200 i S7-300/400 przez Ethernet (1)

Komunikacja pomiędzy S7-1200 i S7-300/400 przez Ethernet (1) Komunikacja pomiędzy AUTOMATYKA S7-1200 i S7-300/400 I MECHATRONIKA przez Ethernet Komunikacja pomiędzy S7-1200 i S7-300/400 przez Ethernet (1) W artykule przedstawiamy rozwiązanie komunikacji sieciowej

Bardziej szczegółowo

C++ - [1-3] Debugowanie w Qt Creator

C++ - [1-3] Debugowanie w Qt Creator Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r. Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie)

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

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński Temat 8.9. Wykrywanie i usuwanie awarii w sieciach komputerowych. 1. Narzędzia

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Dokumentacja techniczna API systemu SimPay.pl

Dokumentacja techniczna API systemu SimPay.pl Wprowadzenie Dokumentacja techniczna API systemu SimPay.pl Wersja 1.0 z dnia 24.03.2015 r. API serwisu SimPay.pl opiera się o danych wysyłanych i zwracanych w formie JSON. W przypadku napotkania jakiegokolwiek

Bardziej szczegółowo

Porównanie protokołów IPv4 i IPv6

Porównanie protokołów IPv4 i IPv6 Politechnika Śląska Instytut Informatyki Porównanie protokołów IPv4 i IPv6 mgr Magdalena Michniewicz Praca napisana pod kierunkiem mgr inż. Piotra Kasprzyka Spis treści Wstęp...2 1. Model TCP/IP a model

Bardziej szczegółowo

Kompilator języka C na procesor 8051 RC51 implementacja

Kompilator języka C na procesor 8051 RC51 implementacja Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub

Bardziej szczegółowo

Protokoły komunikacyjne

Protokoły komunikacyjne Protokoły komunikacyjne Analiza i charakterystyka Zbigniew Bojkiw gr. 11 Zawartość Wprowadzenie... 3 Charakterystyka wybranych protokołów komunikacyjnych... 3 Protokół ARP... 3 Warstwa TPC/IP... 3 Zastosowanie...

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

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