Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
sk2:zagadnienia-test [2019/01/18 10:45] jkonczak |
sk2:zagadnienia-test [2024/01/18 13:26] (aktualna) jkonczak |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | Zagadnienia na test 2018/2019: | + | Zagadnienia na test 2023/2024: |
====== Programowanie ====== | ====== Programowanie ====== | ||
Zagadnienia: | Zagadnienia: | ||
- | * Znać podstawowe funkcje, wiedzieć co robią. \\ <html><small></html>Lista funkcji: ''socket, bind, connect, listen, accept, shutdown, close, read, recv, recvfrom, write, send, sendto, setsockopt, gethostbyname, getaddrinfo, getnameinfo, inet_aton, inet_aton, inet_addr, htons, ntohs, select, poll, epoll_create1, eopll_ctl, epoll_wait''<html></small></html> | + | * Znać podstawowe funkcje, wiedzieć co robią. \\ <html><small></html>Lista funkcji: ''socket, bind, connect, listen, accept, shutdown, close, fcntl, read, recv, recvfrom, write, send, sendto, setsockopt, gethostbyname, getaddrinfo, getnameinfo, inet_aton, inet_ntoa, inet_addr, htons, ntohs, select, poll, epoll_create1, epoll_ctl, epoll_wait''<html></small></html> |
- | * Znać podstawowe stałe i wiedzieć co oznaczają. \\ <html><small></html>Lista stałych: ''AF_INET, AF_INET6, SOCK_STREAM, SOCK_DGRAM, INADD_ANY, INADDR_LOOPBACK, O_NONBLOCK, MSG_DONTWAIT, MSG_WAITALL, SHUT_RDWR, SOL_SOCKET, SO_REUSEADDR, POLLIN, POLLOUT, EPOLLIN, EPOLLOUT, EPOLLET''<html></small></html> | + | * Znać podstawowe stałe i wiedzieć co oznaczają. \\ <html><small></html>Lista stałych: ''AF_INET, AF_INET6, SOCK_STREAM, SOCK_DGRAM, INADD_ANY, INADDR_LOOPBACK, SOMAXCONN, O_NONBLOCK, MSG_DONTWAIT, MSG_WAITALL, SHUT_RDWR, SOL_SOCKET, SO_REUSEADDR, POLLIN, POLLOUT, EPOLLIN, EPOLLOUT, EPOLLET''<html></small></html> |
- | * Znać podstawowe struktury i wiedzieć co zawierają. \\ <html><small></html>Lista struktur: ''sockaddr, sockaddr_in, sockaddr_in6, inaddr_t, hostent, addrinfo, epoll_event, pollfd'' <html></small></html> | + | * Znać podstawowe struktury i wiedzieć co zawierają. \\ <html><small></html>Lista struktur: ''sockaddr, sockaddr_in, sockaddr_in6'' (tylko do czego służy)'', inaddr_t, hostent, addrinfo, epoll_event, pollfd'' <html></small></html> |
* Nie jest wymagana znajomość składni, kolejność czy nazwy argumentów funkcji / pól struktur. \\ <html><small></html>Np. trzeba wiedzieć, że funkcja socket tworzy gniazdo podanego protokołu (IPv4, IPv6) i typu (strumieniowe, zorientowane na wiadomość), a nie trzeba wiedzieć że pierwszy argument nazywa się ''domain'', a trzeci ma typ ''int''.<html></small></html> | * Nie jest wymagana znajomość składni, kolejność czy nazwy argumentów funkcji / pól struktur. \\ <html><small></html>Np. trzeba wiedzieć, że funkcja socket tworzy gniazdo podanego protokołu (IPv4, IPv6) i typu (strumieniowe, zorientowane na wiadomość), a nie trzeba wiedzieć że pierwszy argument nazywa się ''domain'', a trzeci ma typ ''int''.<html></small></html> | ||
- | * Wiedzieć jak wygląda obsługa błędów w sieciach. Umieć na podstawie objaśnienia błędu wypisanego np. przez ''perror'' zdiagnozować co mogło być przyczyną błędu. | + | * <small>Kojarzyć zmienne, stałe i funkcje z interfejsu POSIX / standardu C które mają zastosowanie przy programowaniu aplikacji sieciowych i pojawiały się na laboratoriach – mogą się pojawić w kodzie podanym w treści zadania</small> |
- | * Znać różnice między protokołem TCP i UDP. | + | * Wiedzieć jak wygląda obsługa błędów w sieciach. |
- | * Wiedzieć w jakiej kolejności można i w jakiej kolejności należy wywoływać funkcję na gnieździe, w szczególności by stworzyć klienta/serwer TCP/UDP. | + | * Umieć na podstawie objaśnienia błędu wypisanego np. przez ''perror'' zdiagnozować co mogło być przyczyną błędu. |
+ | * Wiedzieć czym jest zmienna ''errno'' i gdzie znaleźć kody które może zawierać. | ||
+ | * Znać różnice między protokołem TCP i UDP, m. inn. strumieniowe vs datagramowe, gwarancje dawane programiście przez protokół. | ||
+ | * Wiedzieć w jakiej kolejności można i w jakiej kolejności należy wywoływać funkcje na gnieździe, w szczególności by stworzyć klienta/serwer TCP/UDP. | ||
+ | * Wiedzieć jakie funkcje pozwalają znaleźć IP dla podanej nazwy domenowej i czym się różnią | ||
* Wiedzieć czym różni się blokująca i nieblokująca obsługa gniazd. | * Wiedzieć czym różni się blokująca i nieblokująca obsługa gniazd. | ||
* Wiedzieć które funkcje operujące na gniazdach mogą zablokować program. | * Wiedzieć które funkcje operujące na gniazdach mogą zablokować program. | ||
* Wiedzieć co oznaczają wartości zwracane przez funkcje sieciowe. | * Wiedzieć co oznaczają wartości zwracane przez funkcje sieciowe. | ||
- | * Ile bajtów może przeczytać funkcja read (recv, recvfrom, …)? Kiedy mniej niż żądano? | + | * Ile bajtów może przeczytać funkcja read (recv, recvfrom, …), kiedy mniej niż żądano. |
- | * Ile bajtów może przeczytać funkcja write (send, sendto, …)? Kiedy mniej niż żądano? | + | * Ile bajtów może przeczytać funkcja write (send, sendto, …), kiedy mniej niż żądano. |
+ | * Wiedzieć jakie gwarancje (bądź brak) odbierania danych, kolejności odbioru, odbierania danych takimi porcjami jakimi były wysyłane, wysyłania nie szybciej niż pozwala łącze daje TCP i UDP | ||
+ | * Znać wzorce projektowe do odbierania i wysyłania wiadomości (uwzględniające możliwość zablokowania się funkcji / niemożliwość wysłania i odebrania danych bez czekania). | ||
* Wiedzieć jakimi funkcjami obsługuje się szukanie IP dla podanej nazwy domenowej i czym te funkcje się różnią. | * Wiedzieć jakimi funkcjami obsługuje się szukanie IP dla podanej nazwy domenowej i czym te funkcje się różnią. | ||
- | * Na czym polega wielowątkowa obsługa gniazd? | + | * Na czym polega wielowątkowa obsługa gniazd. |
- | * Na czym polega poll/epoll, czym się różnią, jakie zdarzenia na gniazdach mogą raportować. | + | * Wiedzieć które funkcje można bezpiecznie używać w programie wielowątkowym, jak działają i jakie mają gwarancje współbieżne wywołania funkcji sieciowych. |
+ | * Na czym polega ''poll'' / mechanizm epoll, czym się różnią, jakie zdarzenia na gniazdach raportują w przypadku przyjścia nowego połączenia, przyjścia danych, możliwości wysłania danych, zamknięcia gniazda, wystąpienia błędu na gnieździe. | ||
* Jak, wykorzystując ''poll'' / ''epoll_wait'', czekać na możliwość odczytu / zapisu danych do któregoś z podanych gniazd. | * Jak, wykorzystując ''poll'' / ''epoll_wait'', czekać na możliwość odczytu / zapisu danych do któregoś z podanych gniazd. | ||
- | * Jak wygląda obsługa multicastu? | + | * Jak funkcje ''poll'' / ''epoll_wait'' działają w wielowątkowych programach. |
+ | * Jak wygląda obsługa multicastu. | ||
+ | * Wiedzieć jakie "archetypowe" klasy do obsługi sieci oferują języki/biblioteki wysokiego poziomu. | ||
+ | * Wiedzieć w jakich sytuacjach wybrać języki/biblioteki wysokiego poziomu a w jakich należy korzystać z niskopoziomowego interfejsu systemowego. | ||
+ | * kojarzyć komendy ''netstat'' / ''ss'', ''nc'' / ''netcat'' / ''socat'', ''strace'' / ''ltrace'', ''gdb'' (debugger) i ich użycie do rozwoju, testowania i diagnostyki programów sieciowych | ||
+ | * <html><small></html>Dla jasności: nie jest wymagana znajomość API do sieci z bibliotek Qt / języka Java<html></small></html> | ||
Przykładowe formy pytań w tej części: | Przykładowe formy pytań w tej części: | ||
- | * Pytania typowo teoretyczne (np. o działanie funkcji) | + | * Pytania typowo teoretyczne, **np.**: |
+ | * co robi funkcja | ||
+ | * co oznacza konkretny argument (por. "czym w funkcji ''printf(char * fstr, …)'' jest argument ''fstr''") | ||
+ | * co określają stałe, w jakiej funkcji można je użyć | ||
+ | * czy tej funkcji można użyć w danym przypadku | ||
+ | * co spowoduje użycie funkcji w danym przypadku | ||
* Fragment kodu i pytanie: | * Fragment kodu i pytanie: | ||
- | * co robi / co wypisze na ekran | + | * co robi dany kod / podana linia |
+ | * co wypisze na ekran wykonanie danego kod | ||
* w jakim kontekście może być użyty | * w jakim kontekście może być użyty | ||
* w jakim przypadku nie zadziała prawidłowo | * w jakim przypadku nie zadziała prawidłowo | ||
+ | * Fragment kodu z luką i pytanie co pasuje w jej miejsce | ||
* Komunikat o błędzie i pytanie co mogło taki komunikat spowodować | * Komunikat o błędzie i pytanie co mogło taki komunikat spowodować | ||
+ | * Jakim programem sprawdzić konkretny aspekt działania programu sieciowego, do czego służy dany program, co wypisze / spowoduje podana komenda, jaką komendą coś wypisać / spowodować | ||
====== Sieci bezprzewodowe ====== | ====== Sieci bezprzewodowe ====== | ||
Linia 36: | Linia 56: | ||
* BSS i ESS (infrastruktura) | * BSS i ESS (infrastruktura) | ||
* czym się różni BSS i ESS | * czym się różni BSS i ESS | ||
+ | * w jakich trybach może pracować karta sieciowa | ||
* identyfikatory | * identyfikatory | ||
* BSSID | * BSSID | ||
* SSID (ESSID) | * SSID (ESSID) | ||
- | * rola identyfikatorów | + | * kiedy i do czego są używane w/w identyfikatory |
* role urządzeń | * role urządzeń | ||
* AP | * AP | ||
Linia 47: | Linia 68: | ||
* w jakich rodzajach sieci występują | * w jakich rodzajach sieci występują | ||
* bezpieczeństwo | * bezpieczeństwo | ||
- | * WEP, WPA-PSK, WPA-EAP, WPA2-PSK, WPA2-EAP | + | * WEP, WPA-PSK, WPA-EAP, WPA2-PSK, WPA2-EAP, WPA3-SAE, WPA3-EAP, WPS |
* realny poziom bezpieczeństwa | * realny poziom bezpieczeństwa | ||
* realizacja uwierzytelniania | * realizacja uwierzytelniania | ||
* realizacja szyfrowania | * realizacja szyfrowania | ||
- | * różnice między WPA/WPA2-PSK i WPA/WPA2-EAP | + | * różnice między WPA/WPA2-PSK, WPA3-SAE i WPA/WPA2/WPA3-EAP<html><!-- |
* na warstwie łącza danych: | * na warstwie łącza danych: | ||
* zadania karty bezprzewodowej | * zadania karty bezprzewodowej | ||
- | * algorytm CSMA/CA | + | * algorytm CSMA/CA, problem ukrytej/odkrytej stacji |
- | * rodzaje ramek | + | * rodzaje ramek (typy i podtypy, do czego służą) |
- | * Dla standardów 802.11{a,b,g,n,ac} | + | * jak tworzy się listę dostępnych sieci |
- | * z jakich częstotliwości korzystają | + | * jak dołącza się do wybranej sieci |
- | * jakie pasmo zajmują | + | --></html> |
- | * z jakimi prędkościami mogą pracować | + | * Dla standardów 802.11{a,b,g,n,ac,ax} |
+ | * dla każdego standardu: z jakich pasm częstotliwości korzysta (2.4/5/6GHz) | ||
+ | * dla każdego standardu: z jakimi szerokościami kanałów i przybliżonymi prędkościami mogą pracować | ||
+ | * czym jest wiele strumieni przestrzennych (spatial stream), jak wpływają na prędkość sieci | ||
+ | * jak jest wykorzystywane wiele anten – beamforming, SU/MU-MIMO | ||
+ | * czy wiele sieci/urządzeń może naraz korzystać z tego samego kanału – CSMA, MU-MIMO, OFDMA | ||
+ | * Znać zastosowanie, umieć czytać wyniki podstawowych komend (m. inn. ''iwconfig'', ''iw dev'', ''iw phy'', ''iwconfig … mode …'', ''iw … set type …'', ''iw[config] … scan'', ''iw … [link/info]'', ''iwconfig … essid …'', ''iwconfig … freq …'', ''iw … <ibss join/connect> …'', ''wpa_supplicant'') \\ <html><small></html>Potencjalne pytania będą zawierać poprawną składnię komend, będą dotyczyć wyboru pasującej komendy lub interpretacji wyniku komendy<html></small></html> | ||
+ | * <html><small></html>Nie będzie pytań dotyczących konkretnych komend na urządzeniach Cisco/MikroTik<html></small></html> | ||
====== DNS ====== | ====== DNS ====== | ||
Linia 87: | Linia 115: | ||
* CNAME | * CNAME | ||
* TXT | * TXT | ||
- | * gdzie (na którym serwerze) należy umieszczać wpisy | + | * które rekordy są obowiązkowe dla każdej strefy |
+ | * gdzie (na serwerze której domeny) należy umieszczać wpisy dla podanej nazwy domenowej (powyższych typów) | ||
+ | * jakie rekordy i w jakich domenach są wykorzystywane/potrzebne: | ||
+ | * do działania DNS | ||
+ | * do tłumaczenia adresów domenowych na IPv4/6 | ||
+ | * w poczcie elektronicznej | ||
+ | * do tłumaczenia IP na nazwę domenową | ||
+ | * na czym polega cache'owanie rekordów (przez serwery caching), kto i jak określa ile czasu rekord może być cache'owany | ||
* na czym polega zone transfer | * na czym polega zone transfer | ||
+ | * znać komendy ''dig'' / ''host'' do odpytywania serwerów DNS w zakresie (= tylko umieć określić, co podana komenda robi lub co oznacza jej wynik): | ||
+ | * odpytania o konkretny typ rekordu | ||
+ | * odpytania konkretnego serwera DNS | ||
+ | * wyjaśnienia wyniku | ||
+ | <html><!-- | ||
====== Kształtowanie ruchu ====== | ====== Kształtowanie ruchu ====== | ||
* Wiedzieć | * Wiedzieć | ||
Linia 97: | Linia 137: | ||
* o czym można decydować | * o czym można decydować | ||
* czym różnią się bezklasowe i klasowe qdisc | * czym różnią się bezklasowe i klasowe qdisc | ||
- | * wiedzieć co mają zapewniać bezklasowe qdisc (jaką ideę realizują) | + | * co mają zapewniać bezklasowe qdisc (jaką ideę realizują) |
* pfifo | * pfifo | ||
- | * pfifo_fast (domyślny w Linuksie) | + | * pfifo_fast |
* sfq | * sfq | ||
* tbf | * tbf | ||
- | * wiedzieć co mają zapewniać klasowe qdisc (jaką ideę realizują) | + | * fq_codel |
+ | * co mają zapewniać klasowe qdisc (jaką ideę realizują) | ||
* prio | * prio | ||
* htb | * htb | ||
- | * klasy | + | * czym są klasy |
* po co są tworzone | * po co są tworzone | ||
* dla htb jakie mają opcje | * dla htb jakie mają opcje | ||
- | * filtry | + | * czym są filtry |
* po co są tworzone | * po co są tworzone | ||
- | * jakie filtry da się zdefiniować | + | * jak używa się filtra ''fw'' |
- | * u32 – adresy IP, porty TCP/UDP | + | * Wytłumaczyć co robią podane komendy (w w/w zakresie) |
- | * fw – ruch oznaczony wcześniej przez iptables/ebtables | + | --></html> |
+ | |||
====== IPv6 ====== | ====== IPv6 ====== | ||
* Wiedzieć | * Wiedzieć | ||
Linia 122: | Linia 163: | ||
* subnet | * subnet | ||
* IID | * IID | ||
+ | * Skąd jest brany IID | ||
* jak jest zbudowany adres multicastowy | * jak jest zbudowany adres multicastowy | ||
* jak zmieniono nagłówek IPv6 w porównaniu do IPv4 | * jak zmieniono nagłówek IPv6 w porównaniu do IPv4 | ||
Linia 127: | Linia 169: | ||
* NDP | * NDP | ||
* DHCPv6 | * DHCPv6 | ||
+ | * jak jest realizowana fragmentacja w IPv6 i co to jest pMTU | ||
* jakie wygląda współistnienie IPv4 i IPv6 | * jakie wygląda współistnienie IPv4 i IPv6 | ||
- | * co to są tunele | + | * co oznacza dual stack |
- | * jak wygląda podstawowy tunel 6in4 | + | * co to są tunele 6in4 |
* czemu służy usługa tunnel broker | * czemu służy usługa tunnel broker | ||
+ | * czemu służą translacje 4→6 i 6→4 | ||
* Znać | * Znać | ||
* rodzaje adresów | * rodzaje adresów | ||
Linia 141: | Linia 185: | ||
====== Instrukcja obsługi testu: ====== | ====== Instrukcja obsługi testu: ====== | ||
- | * Liczba pytań nie jest okrągła (na przykład 19). | + | * Liczba pytań nie jest okrągła (na przykład 27). |
* Jest to zestaw pytań testowych o odpowiedziach jednokrotnego i wielokrotnego wyboru. | * Jest to zestaw pytań testowych o odpowiedziach jednokrotnego i wielokrotnego wyboru. | ||
* Pytania wielokrotnego wyboru mają podaną liczbę poprawnych odpowiedzi, pozostałe pytania mają tylko jedną poprawną odpowiedź. | * Pytania wielokrotnego wyboru mają podaną liczbę poprawnych odpowiedzi, pozostałe pytania mają tylko jedną poprawną odpowiedź. | ||
Linia 147: | Linia 191: | ||
* <html><input type="radio"/> jednokrotny wybór</html> | * <html><input type="radio"/> jednokrotny wybór</html> | ||
* <html><input type="checkbox"/> wielokrotny wybór</html> | * <html><input type="checkbox"/> wielokrotny wybór</html> | ||
- | * <html><small> Dlaczego to piszę? Bo to pytanie ciągle padało w zeszłych latach w trakcie testu...</small></html> | + | * <html><small> Dlaczego to piszę? Bo to pytanie padało w zeszłych latach w trakcie testu...</small></html> |
* Na każde pytanie co najmniej jedna odpowiedź jest poprawna. | * Na każde pytanie co najmniej jedna odpowiedź jest poprawna. | ||
* Za błędne odpowiedzi nie ma punktów ujemnych. | * Za błędne odpowiedzi nie ma punktów ujemnych. | ||
- | * Zaznaczenie w pytaniach wielokrotnego wyboru więcej odpowiedzi niż jest poprawnych skutkuje brakiem punktu za pytanie. | + | * W pytaniach wielokrotnego wyboru: |
+ | * Zaznaczenie więcej odpowiedzi niż jest poprawnych skutkuje brakiem punktu za pytanie. | ||
+ | * Za każdą zaznaczoną poprawną odpowiedź z //N// poprawnych odpowiedzi dostaje się //1/N// punktu. \\ <small> Np. zaznaczając 2 poprawne i 1 błędną odpowiedź w pytaniu z 3 poprawnymi odpowiedziami uzyskuje się ⅔ punkta za pytanie.</small> | ||
* **Nie można** korzystać z żadnych materiałów pomocniczych ani konsoli | * **Nie można** korzystać z żadnych materiałów pomocniczych ani konsoli | ||
Linia 157: | Linia 203: | ||
**Q:** Czy na teście mogą pojawić się jakieś komendy? \\ | **Q:** Czy na teście mogą pojawić się jakieś komendy? \\ | ||
**A:** W treści pytania lub w możliwych odpowiedziach mogą pojawić się nazwy programów, pełne polecenia lub wyniki wykonania poleceń. Wszystkie zadania to wybór jednej albo wskazanej liczby gotowych odpowiedzi, w teście nie będzie pytań w których konieczne by było wpisanie jakiegokolwiek teksu. | **A:** W treści pytania lub w możliwych odpowiedziach mogą pojawić się nazwy programów, pełne polecenia lub wyniki wykonania poleceń. Wszystkie zadania to wybór jednej albo wskazanej liczby gotowych odpowiedzi, w teście nie będzie pytań w których konieczne by było wpisanie jakiegokolwiek teksu. | ||
- | |||