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

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

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

Transkrypt

1 Protokół ARP Aplikacja printarp dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

2 Address Resolution Protocol ARP, (ang.) Address Resolution Protocol. RFC 826. Protokół ARP jest protokołem warstwy Sieci modelu referencyjnego OSI. Protokół ARP należy do rodziny protokołów TCP/IP. Protokół ARP służy do znajdowania adresów fizycznych kart sieciowych (adresów MAC) na podstawie adresów IP. Protokół ARP służy do: wysyłania zapytań do sieci o adres MAC, uaktualniania tablic arp. 2

3 Struktura nagłówka komunikatu ARP Typ adresu nadawcy Typ adresu odbiorcy Dl. adresu MAC Ostanie 16 bitow adresu MAC nadawcy 16 Bity Dl. adresu protokolu Ostatnie16 bitow adresu protokolu nadawcy 20 Pierwsze 32 bity adresu MAC nadawcy Ostatnie 32 bity adresu MAC odbiorcy 6 Ostatnie32 bity adresu protokolu odbiorcy Struktura komunikatu ARP 24 Operacja Pierwsze 16 bitow adresu protokolu nadawcy Pierwsze 16 bitow adresu MAC odbiorcy 3

4 Struktura nagłówka komunikatu ARP Pole: Pole: Pole: Pole: Pole: Pole: Pole: Pole: Pole: Typ adresu fizycznego, (Hardware Type). Wielkość: 16 bitów. Pole określa typ adresu MAC (typ karty sieciowej). Typy adresów. Wartość: 1 (Ethernet), 2 (Experimental Ethernet), 3 (X.25), 4 (Proteon ProNET - Token Ring), 5 (Chaos), 6 (IEEE 802.X), 7 (ARCnet). Typ adresu protokołu, (Protocol Type). Wielkość: 16 bitów. Pole określa typ protokołu jakiego użył host wysyłający zapytanie. Dla rodziny TCP/IP użyty protokół jest typu 'Ethernet'. Dł. adresu MAC, (Hardware Address Length). Wielkość: 8 bitów. Długość (wyrażona w bajtach) adresu fizycznego w datagramie. Dla adresu MAC wartość = 6 bajtów. Dł. adresu protokołu, (Protocol Address Length). Wielkość: 8 bitów. Długość (wyrażona w bajtach) adresu protokołu. Dla adresu IP wartość pola = 4 bajty. Operacja, (Operation Code, Opcode). Wielkość: 16 bitów. Wartość kodu 1 dla wiadomości typu 'ARP reply' (odpowiedz), Wartość kodu 2 dla wiadomości typu 'ARP request' (zapytanie). Adres MAC nadawcy, (Sender Hardware Address). Wielkość: wartość z pola 'Hardware Address Length'. Adres MAC hosta wysyłającego ARP request. Adres nadawcy, (Sender Protocol Address). Wielkość: wartość z pola 'Protocol Address Length'. Adres IP hosta wysyłającego ARP request. Adres MAC odbiorcy, (Target Hardware Address). Wielkość: wartość z pola 'Hardware Address Length'. Adres MAC hosta odbierającego wiadomość. Adres odbiorcy, (Target Protocol Address). Wielkość: wartość z pola 'Protocol Address Length'. Adres IP hosta odbierającego wiadomość. 4

5 Przykład: Adres fizyczny 00-B0-D0-2C-FC-B6 Struktura adresu MAC karty sieciowej Pole I/G. Wartości: 0/1. 1 bit. Znaczenie: adres Indywidualny/Grupowy. Pole U/L. Wartości: 0/1. 1 bit. Znaczenie: adres Uniwersalny/Lokalny. Adres Univerwersaly: Karty sieciowe uniwersalne są zgodne ze standardem IEEE. Adres Lokalny: Karty z takim adresem mogą nie być zgodne ze standardem IEEE. Pole OUI (Organization Unique Identifier). 22 bity. Część adresu MAC określająca producenta karty sieciowej. Pole 24 bity. Znaczenie: numer karty sieciowej. Numer karty sieciowej przydzielany przez producenta karty. Przykłady kodów producentów kart: 00000C Cisco 0000D8 3Com, Novell PS/2 0080C2 IEEE Committee 00AA00 Intel 02608C 3Com IBM PC; Imagen; Valid; Cisco Sun machines Przykład: Karta o adresie 08:00:20:00:70:DF została wyprodukowana przez Sun Microsystems. 5

6 Specyfikacja projektu Nazwa projektu: IpArp Typ projektu : Win32 console application Lista plików : IpArp.cpp Kompilacja : Microsoft Visual C Wkopiować pliki svcrt.lib iphlpapi.lib WS2_32.Lib do katalog projektu. W Project-> Setings-> Link-> Object/Library Modules-> Dodać: WS2_32.Lib iphlpapi.lib Funkcjonalność: \> printarp // kieruje na ekran zawartość tablicy arp. Przykład: \>printarp \> Interfejs: x2 Adres internetowy Adres fizyczny Typ a5-cd-37-c4 dynamiczne 6

7 Struktura progamu Pliki nagłówkowe: windows.h, iphlpapi.h, iptypes.h, iostream. Funkcje programu: WSAStartup(), WSACleanup(), inet_ntoa(), GetIpNetTable(), GetIpAddrTable() PrintIpNetTable(), MyGetIpNetTable(), MyGetIpAddrTable(), PhysAddrToString(), StringToPhysAddr(), InterfaceIdxToInterfaceIp(), Struktury programu: WSADATA, MIB_IPNETTABLE, MIB_IPADDRTABLE, in_addr, MIB_IPNETROW Zmienne programu: WORD wversionrequested = MAKEWORD(1,1); WSADATA wsadata; int nret; DWORD dwstatus; PMIB_IPNETTABLE piparptab = NULL; 7

8 Specyfikacja Struktury WSADATA Nazwa struktury : WSADATA Opis : Struktura WSADATA zawiera informacje o implementacji gniazd (Windows Sockets). Struktura WSADATA jest zadeklarowana w pliku Winsock2.h. Aplikacja nie powinna używać atrybutów imaxsockets, imaxudpdg, i lpvendorinfo struktury WSAData gdy wartość atrybutu wversion, po wywołaniu WSAStartup jest co najmniej 2. Wyjaśnienie: This is because the architecture of Windows Sockets has been changed in version 2 to support multiple providers, and WSAData no longer applies to a single vendor's stack. Two new socket options are introduced to supply provider- specific information: SO_MAX_MSG_SIZE (replaces the imaxudpdg element) and PVD_CONFIG (allows any other provider-specific configuration to occur). Atrybuty : wversion - Wersja gniazd WinSock którą ma używać biblioteka Ws2_32.dll. whighversion - Najwyższa wersja WinSock jaką może używać biblioteka.dll. Standardowo, wartość taka sama, jak wversion. szdescription - Zerem zakończony string znaków ASCI (null-terminated ASCII string) do którego Ws2_32.dll kopiuje opis implementacji gniazd. Tekst (do 256 znaków) może być używany do opisów wiadomości. szsystemstatus - Zakończony zerem string znaków ASCI do którego WSs2_32.dll kopiuje informacje o statusie lub konfiguracji. Ws2_32.dll powinna używać tego atrybutu do tylko gdy informacje mogą być ważne dla użytkowników, atrybut nie powinien być traktowany jako rozszerzenie zmiennej szdescription. imaxsockets - Pozostawiony dla zgodności poprzednimi wersjami gniazd. Parametr powinien być ignorowany przez Windows Socketsv.2 i wersje późniejsze (nie ma już jednej wartości dla wszystkich dostarczycieli usług). imaxudpdg - Atrybut ignorowany przez gniazda wersji 2 i następne. imaxudpdg pozostawiony dla zgodności z wersją gniazd Windows Sockets 1.1. Nie powinien być używany przy budowaniu nowych aplikacji. Dla określenia wielkości wiadomości dostarczyciela usług dla gniazda i typu gniazda aplikacje powinny używać getsockopt aby uzyskać wartość opcji SO_MAX_MSG_SIZE. lpvendorinfo - Atrybut ignorowany przez Windows Sockets v.2 i następne. lpvendorinfo pozostawiono dla zgodności z wersją gniazd Windows Sockets 1.1. Dla określenia konfiguracji dostarczyciela usług dla gniazda powinny używać getsockopt aby uzyskać wartość opcji PVD_CONFIG. 8

9 Specyfikacja struktury MIB_IPNETTABLE Nazwa struktury : MIB_IPNETTABLE Opis : Struktura MIB_IPNETTABLE zawiera tablicę z danymi ARP. Atrybuty : dwnumentries Liczba rekordów w tabeli ARP. table - Wskaźnik do tablicy ARP implementowanej jako tablica struktur MIB_IPNETROW. Implementacja struktury MIB_IPNETTABLE: typedef struct _MIB_IPNETTABLE DWORD dwnumentries; MIB_IPNETROW table[any_size]; MIB_IPNETTABLE, *PMIB_IPNETTABLE; 9

10 Specyfikacja struktury MIB_IPNETROW Nazwa struktury: MIB_IPNETROW Opis : Struktura MIB_IPNETROW zawiera dane do rekordów tablicy ARP. Atrybuty : dwindex - Indeks karty sieciowej. dwphysaddrlen - Długość adresu fizycznego karty sieciowej. bphysaddr - Określa adres fizyczny karty sieciowej. dwaddr - Określa adres IP karty sieciowej. dwtype - Określa typ rekordu ARP. Możliwe typy rekordów ARP: 4 Static, 3 Dynamic, 2 Invalid, 1 inne. Implementacja struktury MIB_IPNETROW: typedef struct _MIB_IPNETROW DWORD dwindex; DWORD dwphysaddrlen; BYTE bphysaddr[maxlen_physaddr]; DWORD dwaddr; DWORD dwtype; MIB_IPNETROW, *PMIB_IPNETROW; 10

11 Specyfikacja struktury MIB_IPADDRTABLE Nazwa struktury: MIB_IPADDRTABLE Opis : Struktura MIB_IPADDRTABLE zawiera tablicę adresów IP. Atrybuty : dwnumentries Określa numer adresu IP w tablicy. table Wskaźnik do rekordu w tablicy implementowanej jako tablica struktur MIB_IPADDRROW. Implementacja struktury PMIB_IPADDRTABLE: typedef struct _MIB_IPADDRTABLE DWORD dwnumentries; MIB_IPADDRROW table[any_size]; MIB_IPADDRTABLE, *PMIB_IPADDRTABLE; typedef struct _MIB_IPADDRROW DWORD dwaddr; //The IPv4 address in network byte order. DWORD dwindex; // Index of nterface associated with this IPv4 address. DWORD dwmask; // Subnet mask for the IPv4 address in network byte order. DWORD dwbcastaddr; // The broadcast address in network byte order. DWORD dwreasmsize; // Maximum re-assembly size for received datagrams. unsigned short unused1; unsigned short wtype; // The address type or state. MIB_IPADDRROW, *PMIB_IPADDRROW; 11

12 Specyfikacja struktury in_addr Nazwa struktury : in_addr Opis: Struktura in_addr adres IP hosta. Struktura zdefiniowana w WINSOCK.H Atrybuty : S_un_b - adres hosta w formacie u_chars. S_un_w - adres hosta w formacie dwóch u_shorts. S_addr - adres hosta w formacie u_long. Implementacja struktury in_addr: 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; 12

13 Specyfikacja funkcji WSAStartup() Nazwa funkcji : WSAStartup() Zwracana wartość: int WSAStartup() zwraca zero gdy wywołanie funkcji zakończyło się sukcesem. W innym przypadku zwraca następujące kody błędów: WSASYSNOTREADY Wskazuje, że sieć lub podsieć nie jest przygotowana do transmisji danych. WSAVERNOTSUPPORTED Żądana wersja WinSock nie jest obsługiwana przez implementację WinSock. WSAEINPROGRESS Trwa operacja blokowania WinSock 1.1 WSAEPROCLIM - WSAEFAULT - Osiągnięto granicę liczby zadań dopuszczalną przez WinSock. Błędna wartość wskaźnika lpwsadata (not a valid pointer). Argumenty: WORD wversionrequested - LPWSADATA lpwsadata - [in] Najwyższa obsługiwana wersja WinSock, którą nadawca (caler) może użyć. Bajt najwyższy określa minimalną wersję, najniższy bajt określa maksymalna wersję. [out] Wskaźnik do struktury WSADATA. Opis: Funkcja WSAStartup() inicjuje użycie przez proces biblioteki WS2_32.DLL. Funkcja WSAStartup() musi być pierwszą funkcja Windows Sockets wywołana przez aplikacje. 13

14 Specyfikacja funkcji WSACleanup() Nazwa funkcji: WSACleanup() Zwracana wartość: int WSACleanup() 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 finkcji WSAGetLastError(): WSANOTINITIALISED - Przed wywołaniem tej funkcji WSACleanup() musi być wywołana z sukcesem funkcja WSAStartup(). WSAENETDOWN - Awaria sieci (network subsystem has failed). WSAEINPROGRESS - Trwa operacja blokowania WinSock 1.1 lub dostarczyciel usługi (service provider) obsługuje komunikat zwrotny (a callback function). Argumenty: brak Opis: Funkcja WSACleanup() kończy użycie biblioteki WS2_32.DLL. 14

15 Specyfikacja funkcji inet_ntoa() Nazwa funkcji: inet_ntoa() Zwracana wartość: char* FAR Jeżeli nie ma błędów inet_ntoa() zwraca wskaźnik char* do statycznego bufora zawierającego adres w standardzie kropkowanym. W pozostałych przypadkach funkcja zwraca NULL. Argumenty : struct in_addr in in - [in] Wskaźnik do struktury in_addr reprezentującej adres IP hosta. Opis : Funkcja inet_ntoa() konwertuje adres IPv4 na adres w formacie kropkowanym (dotted format). 15

16 Specyfikacja funkcji inet_addr() Nazwa funkcji : inet_addr() Zwracana wartość: unsigned long Argumenty : const char* cp cp - [in] Zerem zakończony string znaków reprezentujący adres IP zapisany w notacji kropkowanej (np ). Opis : Funkcja inet_addr() konwertuje string zawierający adres IPv4 w wersji kropkowanej na odpowiedni adres w strukturze IN_ADDR. 16

17 Specyfikacja funkcji GetIpNetTable() Nazwa funkcji : GetIpNetTable() Zwracana wartość: DWORD Argumenty : pipnettable - [out] Wskaźnik do bufora który przechowuje adres tablicę danych adres IP- adres MAC w strukturze MIB_IPNETTABLE. pdwsize - [in, out] Na wejściu wskaźnik do zmiennej przechowującej wielkość bufora (zmiennej wskazywanej przez pipnettable). Na wyjściu, jeżeli bufor jest za mały na zwracaną tablicę danych, funkcja ustawia wartość tego parametru na wielkość wymaganą. border - [in] Argument określa czy zwracana tablica ma być uporządkowana według rosnących adresów IP (tablica jest uporządkowana gdy parametr ma wartość TRUE. Opis : Funkcja pobiera dane zawierające przyporządkowanie adres IP adres MAC (tablica ARP). Deklaracja funkcji w pliku iphlpapi.h. 17

18 Specyfikacja funkcji GetIpAddrTable() Nazwa funkcji : GetIpAddrTable() Zwracana wartość: DWORD Argumenty : pipaddrtable - [out] Wskaźnik do bufora który przechowuje adres tablicę danych karta - adres IP w strukturze MIB_IPADDRTABLE. pdwsize - [in, out] Na wejściu wskaźnik do zmiennej przechowującej wielkość bufora (zmiennej wskazywanej przez pipaddrtable). Na wyjściu, jeżeli bufor jest za mały na zwracaną tablicę danych, funkcja ustawia wartość tego parametru na wielkość wymaganą. border - [in] Argument określa czy zwracana tablica ma być uporządkowana według rosnących adresów IP (tablica jest uporządkowana gdy parametr ma wartość TRUE. Opis : Funkcja GetIpAddrTable() pobiera dane o przyporządkowaniu karty sieciowej do adresu IP. 18

19 Implementacja funkcji InterfaceIdxToInterfaceIp() bool InterfaceIdxToInterfaceIp(PMIB_IPADDRTABLE pipaddrtable, DWORD dwindex, char str[]) struct in_addr inadtmp; char *szipaddr; if (pipaddrtable == NULL str == NULL) return FALSE; str[0] = '\0'; for (DWORD dwidx = 0; dwidx < pipaddrtable->dwnumentries; dwidx++) if (dwindex == pipaddrtable->table[dwidx].dwindex) inadtmp.s_addr = pipaddrtable->table[dwidx].dwaddr; szipaddr = inet_ntoa(inadtmp); if (szipaddr) strcpy(str, szipaddr); return TRUE; else return FALSE; return FALSE; 19

20 Implementacja funkcji StringToPhysAddr() int StringToPhysAddr(char* szinether, char* szoutether) const char DASH = '-'; register char c; register int val; if (strlen(szinether)!= 17) return (-1); if (szinether[2]!= DASH szinether[5]!= DASH szinether[8]!= DASH szinether[8]!= DASH szinether[14]!= DASH) return (-1); if (!isxdigit(szinether[0])!isxdigit(szinether[1])!isxdigit(szinether[3])!isxdigit(szinether[4])!isxdigit(szinether[6])!isxdigit(szinether[7])!isxdigit(szinether[9])!isxdigit(szinether[10])!isxdigit(szinether[12])!isxdigit(szinether[13])!isxdigit(szinether[15])!isxdigit(szinether[16])) return (-1); for (int i = 0; i < 6; i++) val = 0; c = toupper(szinether[i*3]); c = c - (isdigit(c)? '0' : ('A' - 10)); val += c; val = (val << 4); c = toupper(szinether[i*3 + 1]); c = c - (isdigit(c)? '0' : ('A' - 10)); val += c; szoutether[i] = val; return 0; 20

21 Implementacja funkcji PhysAddrToString() bool PhysAddrToString(BYTE PhysAddr[], DWORD PhysAddrLen, char str[]) if (PhysAddr == NULL PhysAddrLen == 0 str == NULL) return FALSE; str[0] = '\0'; for (DWORD dwidx = 0; dwidx < PhysAddrLen; dwidx++) if (dwidx == PhysAddrLen-1) sprintf(str+(dwidx*3), "%02X", ((int)physaddr[dwidx])&0xff); else sprintf(str+(dwidx*3), "%02X-", ((int)physaddr[dwidx])&0xff); return TRUE; 21

22 Implementacja funkcji PrintIpNetTable() void PrintIpNetTable(PMIB_IPNETTABLE pipnettable) DWORD i, dwstatus, dwcurrindex; struct in_addr inadtmp; char szprintablephysaddr[256]; char sztype[128]; char szipaddr[128]; PMIB_IPADDRTABLE pipaddrtable = NULL; if (pipnettable == NULL) printf( "pipnettable == NULL in line %d\n", LINE ); return; if ( (dwstatus = MyGetIpAddrTable(pIpAddrTable))!= NO_ERROR) printf("getipaddrtable returned 0x%x\n", dwstatus); if (pipaddrtable) delete [] pipaddrtable; return; dwcurrindex = pipnettable->table[0].dwindex; if (InterfaceIdxToInterfaceIp(pIpAddrTable, dwcurrindex, szipaddr)) printf("\ninterface: %s on Interface 0x%X\n", szipaddr, dwcurrindex); printf(" Internet Address Physical Address Type\n"); else printf("error: Could not convert Interface number 0x%X to IP address.\n", pipnettable->table[0].dwindex); return; 22

23 Implementacja funkcji PrintIpNetTable() for (i = 0; i < pipnettable->dwnumentries; ++i) if (pipnettable->table[i].dwindex!= dwcurrindex) dwcurrindex = pipnettable->table[i].dwindex; if (InterfaceIdxToInterfaceIp(pIpAddrTable, dwcurrindex, szipaddr)) printf("interface: %s on Interface 0x%X\n", szipaddr, dwcurrindex); printf(" Internet Address Physical Address Type\n"); else printf("error: Could not convert Interface number 0x%X to IP address.\n", pipnettable->table[0].dwindex); return; PhysAddrToString(pIpNetTable->table[i].bPhysAddr, pipnettable->table[i].dwphysaddrlen, szprintablephysaddr); inadtmp.s_addr = pipnettable->table[i].dwaddr; switch (pipnettable->table[i].dwtype) case 1: strcpy(sztype,"other"); break; case 2: strcpy(sztype,"invalidated"); break; case 3: strcpy(sztype,"dynamic"); break; case 4: strcpy(sztype,"static"); break; default: strcpy(sztype,"invalidtype"); printf(" %-16s %-17s %-11s\n", inet_ntoa(inadtmp), szprintablephysaddr, sztype); if (pipaddrtable) delete [] pipaddrtable; 23

24 Implementacja funkcji MyGetIpNetTable() DWORD MyGetIpNetTable(PMIB_IPNETTABLE& pipnettable, bool forder) DWORD status = NO_ERROR; DWORD statusretry = NO_ERROR; DWORD dwactualsize = 0; dwactualsize = 0; status = GetIpNetTable(pIpNetTable, &dwactualsize, forder); if (status == NO_ERROR) return status; else if (status == ERROR_INSUFFICIENT_BUFFER) pipnettable = new MIB_IPNETTABLE [dwactualsize]; statusretry = GetIpNetTable(pIpNetTable, &dwactualsize, forder); 24

25 Implementacja funkcji MyGetIpNetTable() if (statusretry!= NO_ERROR) #ifdef _DEBUG printf("retry failed.\n"); #endif return statusretry; else return statusretry; else #ifdef _DEBUG printf("first getipnettable call failed\n"); #endif return status; 25

26 Implementacja funkcji MyGetIpAddrTable() DWORD MyGetIpAddrTable(PMIB_IPADDRTABLE& pipaddrtable, bool forder) DWORD status = NO_ERROR; DWORD statusretry = NO_ERROR; DWORD dwactualsize = 0; // query for buffer size needed status = GetIpAddrTable(pIpAddrTable, &dwactualsize, forder); if (status == NO_ERROR) printf("no error\n"); return status; else if (status == ERROR_INSUFFICIENT_BUFFER) pipaddrtable = new MIB_IPADDRTABLE [dwactualsize]; statusretry = GetIpAddrTable(pIpAddrTable, &dwactualsize, forder); return statusretry; else return status; 26

27 Struktura programu 1. Sprawdzenie wersji winsock. nret = WSAStartup(wVersionRequested, &wsadata); Czy wsadata.wversion!= wversionrequested? 2. Pobranie danych z tablic arp dwstatus = MyGetIpNetTable(pIpArpTab, TRUE)) == NO_ERROR 3. Przekazanie na ekran dnaych o tablicy arp. PrintIpNetTable(pIpArpTab); 4. Zakończenie użycia biblioteki winsock WS2_32.DLL. WSACleanup(); 27

28 Struktura funkcji main() int main(int argc, char **argv) WORD wversionrequested = MAKEWORD(1,1); WSADATA wsadata; int nret; nret = WSAStartup(wVersionRequested, &wsadata); if (wsadata.wversion!= wversionrequested) cerr << "WinSock version: " << LOBYTE(wVersionRequested) <<"." << HIBYTE(wVersionRequested) << " not supported" << endl; WSACleanup(); return 1; DWORD dwstatus; PMIB_IPNETTABLE piparptab = NULL; if ((dwstatus = MyGetIpNetTable(pIpArpTab, TRUE)) == NO_ERROR) PrintIpNetTable(pIpArpTab); delete [] piparptab; return 1; else if ( dwstatus == ERROR_NO_DATA) cerr<< "No entries in arpcache." <<endl; return 1; else if (piparptab) delete [] piparptab; cout <<"IpArp returned: " << dwstatus << endl; return 1; WSACleanup(); return 0; 28

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ół ARP Address Resolution Protocol. Protokół RARP Reverse Address Resolution Protocol

Sieci Komputerowe. Protokół ARP Address Resolution Protocol. Protokół RARP Reverse Address Resolution Protocol Sieci Komputerowe Protokół ARP Address Resolution Protocol Protokół RARP Reverse Address Resolution Protocol dr Zbigniew Lipiński zlipinski@math.uni.opole.pl Zagadnienia Opis protokołu ARP Zastosowanie

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

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

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

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

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

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

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

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

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1

Sun RPC/XDR 10. listopada Dariusz Wawrzyniak (IIPP) 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

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

Internet Control Message Protocol Aplikacja ping

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

Bardziej szczegółowo

Sun RPC/XDR. Dariusz Wawrzyniak 1

Sun RPC/XDR. Dariusz Wawrzyniak 1 Remote Procedure Call external Data Representation trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej stosu TCP/IP (TCP

Bardziej szczegółowo

external Data Representation

external Data Representation Remote Procedure Call external Data Representation Dariusz Wawrzyniak (IIPP) 1 trójwymiarowa identyfikacja procedur (nr programu, nr wersji, nr procedury) protokół RPC oparty na protokołach warstwy transportowej

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

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy złożone Struktury, pola bitowe i unie. Programowanie Proceduralne 1 Typy podstawowe Typy całkowite: char short int long Typy zmiennopozycyjne float double Modyfikatory : unsigned, signed Typ wskaźnikowy

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

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

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

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

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

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

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

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

Bardziej szczegółowo

external Data Representation

external Data Representation Remote Procedure Call external Data Representation Opis standardu RFC 1014 Kanoniczna reprezentacja danych oparta na formacie IEEE Deklaratywny język opisu struktur danych (zbliżony do języka C) Koncepcja

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

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

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

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

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

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

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

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

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami

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

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

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

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

#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

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

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

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

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

Warstwa sieciowa rutowanie

Warstwa sieciowa rutowanie Warstwa sieciowa rutowanie Protokół IP - Internet Protocol Protokoły rutowane (routed) a rutowania (routing) Rutowanie statyczne i dynamiczne (trasowanie) Statyczne administrator programuje trasy Dynamiczne

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

Aplikacja Sieciowa wątki po stronie klienta

Aplikacja Sieciowa wątki po stronie klienta Aplikacja Sieciowa wątki po stronie klienta Na ostatnich zajęciach zajmowaliśmy się komunikacją pomiędzy klientem a serwerem. Wynikiem naszej pracy był program klienta, który za pomocą serwera mógł się

Bardziej szczegółowo

Pomoc dla użytkowników systemu asix 6 i 7. Drajwer Bufor. Dok. Nr PLP6021 Wersja:

Pomoc dla użytkowników systemu asix 6 i 7.  Drajwer Bufor. Dok. Nr PLP6021 Wersja: Pomoc dla użytkowników systemu asix 6 i 7 www.asix.com.pl Drajwer Bufor Dok. Nr PLP6021 Wersja: 2012-03-16 ASKOM i asix to zastrzeżone znaki firmy ASKOM Sp. z o. o., Gliwice. Inne występujące w tekście

Bardziej szczegółowo

TRX API opis funkcji interfejsu

TRX API opis funkcji interfejsu TRX Krzysztof Kryński Cyfrowe rejestratory rozmów seria KSRC TRX API opis funkcji interfejsu Kwiecień 2013 Copyright TRX TRX ul. Garibaldiego 4 04-078 Warszawa Tel. 22 871 33 33 Fax 22 871 57 30 www.trx.com.pl

Bardziej szczegółowo

Instrukcja 6 - ARP i DNS - translacja adresów

Instrukcja 6 - ARP i DNS - translacja adresów Instrukcja 6 - ARP i DNS - translacja adresów 6.1 Cel ćwiczenia Celem ćwiczenia jest zaznajomienie rolą jakie pełnią protokoły ARP i DSN. 6.2 Wstęp W sieciach komputerowych wykorzystujących stos protokołó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

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

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

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

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Laboratorium - Wykorzystanie programu Wireskark do badania ramek Ethernetowych

Laboratorium - Wykorzystanie programu Wireskark do badania ramek Ethernetowych Laboratorium - Wykorzystanie programu Wireskark do badania ramek Ethernetowych Topologia Cele Część 1: Badanie pól nagłówka w ramce Ethernet II. Cześć 2: Użycie programu Wireshark do przechwycenia i analizy

Bardziej szczegółowo

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = Ala ma ; 1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

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

Podstawowe części projektu w Javie

Podstawowe części projektu w Javie Podstawowe części projektu w Javie Pakiet w Javie to grupa podobnych typów klas, interfejsów i podpakietów. Pakiet w Javie może być wbudowany lub zdefiniowany przez użytkownika. Istnieje wiele wbudowanych

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Sieci komputerowe - adresacja internetowa

Sieci komputerowe - adresacja internetowa Sieci komputerowe - adresacja internetowa mgr inż. Rafał Watza Katedra Telekomunikacji AGH 1 Wprowadzenie Co to jest adresacja? Przedmioty adresacji Sposoby adresacji Układ domenowy, a układ numeryczny

Bardziej szczegółowo

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych

Bardziej szczegółowo

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3 Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat

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

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

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r. DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r. PLAN Reprezentacja liczb w systemach cyfrowych Protokół IPv4 Adresacja w sieciach

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

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark Topologia Cele Część 1: Zapisanie informacji dotyczących konfiguracji IP komputerów Część 2: Użycie programu Wireshark do przechwycenia

Bardziej szczegółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia Krzysztof Banaś Podstawy programowania 1 Typy danych Podstawowe wbudowane typy danych języka C: _Bool 0 i 1 (C99) znaki (char) 7

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

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

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo

Języki programowania - podstawy

Języki programowania - podstawy Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania

Bardziej szczegółowo

Komunikacja w sieciach komputerowych

Komunikacja w sieciach komputerowych Komunikacja w sieciach komputerowych Dariusz CHAŁADYNIAK 2 Plan prezentacji Wstęp do adresowania IP Adresowanie klasowe Adresowanie bezklasowe - maski podsieci Podział na podsieci Translacja NAT i PAT

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana Wykład Materiały bazują częściowo na slajdach Marata Dukhana Języki programowania Kompilowane np. C, C++, Pascal Interpretowane np. JavaScript, PHP, Python, VBA Pośrednie np. Java, C# Znane kompilatory

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 4

Programowanie komputerowe. Zajęcia 4 Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości

Bardziej szczegółowo

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

Bardziej szczegółowo

MODEL WARSTWOWY PROTOKOŁY TCP/IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP MODEL WARSTWOWY PROTOKOŁY TCP/IP TCP/IP (ang. Transmission Control Protocol/Internet Protocol) protokół kontroli transmisji. Pakiet najbardziej rozpowszechnionych protokołów komunikacyjnych współczesnych

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

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

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

Co nie powinno być umieszczane w plikach nagłówkowych:

Co nie powinno być umieszczane w plikach nagłówkowych: Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH Akademia Rolnicza im. Augusta Cieszkowskiego w Poznaniu - Instytut Inżynierii Rolniczej - ALGORYTMY I STRUKTURY DANYCH Prowadzący: dr inż. Radosław J. Kozłowski email: rjk@au.poznan.pl www: http://www.au.poznan.pl/~rjk

Bardziej szczegółowo

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

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci Sieci komputerowe 1 Sieci komputerowe 2 Plan wykładu Warstwa sieci Miejsce w modelu OSI/ISO Funkcje warstwy sieciowej Adresacja w warstwie sieciowej Protokół IP Protokół ARP Protokoły RARP, BOOTP, DHCP

Bardziej szczegółowo

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++ Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

Bardziej szczegółowo

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h] 1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie

Bardziej szczegółowo