Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
sk2:zagadnienia-test [2024/01/18 13:26] jkonczak |
sk2:zagadnienia-test [2025/01/20 13:56] (aktualna) jkonczak |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | Zagadnienia na test 2023/2024: | + | === Zagadnienia na test 2024/2025: === |
- | ====== Programowanie ====== | + | DNS: |
+ | * co to jest TLD i FQDN | ||
+ | * jaka jest rola serwerów, czym różnią się między sobą: | ||
+ | * root, authoritive, caching | ||
+ | * komu i na jakie pytania (nie)odpowiedzą powyższe serwery | ||
+ | * kto zwykle używa tych serwerów | ||
+ | * master, slave | ||
+ | * do czego służą i jaką treść (adres IP, nazwę domenową, tekst) muszą mieć rekordy: | ||
+ | * A, AAAA | ||
+ | * PTR (+ jak buduje się nazwę domenową zapytania o ten rekord) | ||
+ | * NS (+ jakie są dodatkowe wymagania jeśli NS wskazuje na serwer wewnątrz domeny) | ||
+ | * MX | ||
+ | * CNAME | ||
+ | * TXT | ||
+ | * SOA | ||
+ | * czym są dwa pierwsze pola | ||
+ | * czym jest serial, kto go używa i do czego, kto go ustawia i na jaką wartość | ||
+ | * <small>nie trzeba znać szczegółów czasów podanych w tym rekordzie</small> | ||
+ | * jakie rekordy i dla jakich nazw domenowych są wykorzystywane / potrzebne: | ||
+ | * do działania DNS – które budują hierarchię, które synchronizują serwery odpowiedzialne za jedną domenę | ||
+ | * do tłumaczenia nazw domenowych na IPv4/6 | ||
+ | * do tłumaczenia IPv4/6 na nazwę domenową | ||
+ | * w poczcie elektronicznej | ||
+ | * umieć określić co zrobi podana komenda ''dig'' / ''host'' (<small>w zakresie odpytania o konkretny typ rekordu i odpytania konkretnego serwera DNS</small>) | ||
+ | * odczytać informacje z wyniku wspomnianych komend, szczególnie który z rekordów zostanie użyty we wskazanej sytuacji | ||
+ | * na czym polega cache'owanie rekordów (przez serwery caching) | ||
+ | * kto i jak określa ile czasu rekord może być cache'owany | ||
+ | * co może być przyczyną otrzymania innej odpowiedzi od serwera cache niż od serwera authoritive | ||
+ | * które rekordy są obowiązkowe dla każdej strefy | ||
+ | * jakie rodzaje rekordów dla tej samej nazwy domenowej się wzajemnie wykluczają \\ jakich rekordów dla domen/poddomen nie można jednocześnie umieszczać w pliku strefy | ||
+ | * gdzie (na serwerze której domeny) należy umieszczać wpisy dla podanej nazwy domenowej | ||
+ | * jak w konfiguracji serwera bind9 wskazuje się którą domenę obsługuje i skąd ma wziąć plik strefy dla tej domeny | ||
+ | * jak buduje się plik strefy, jakie skróty można w nim stosować | ||
+ | * należy umieć napisać rekordy pasujące do podanego pliku strefy dla wskazanej domeny i realizujące wskazane zadanie | ||
+ | * co to jest zone transfer, kto i kiedy go wykonuje | ||
- | Zagadnienia: | + | HTTP: |
- | * 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> | + | * jak wygląda prawidłowe żądanie HTTP/1.0 i HTTP/1.1 (należy umieć napisać proste żądanie) |
- | * 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> | + | * które części adresu URL są umieszczane w żądaniu HTTP i gdzie są w nim umieszczane |
- | * 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> | + | * jak się wykonuje i gdzie się używa percent-encoding //vel// URL encoding |
- | * 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> | + | * co to są kody odpowiedzi i gdzie je znaleźć w odpowiedzi HTTP |
- | * <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> | + | * jak w HTTP/1.x oddziela się nagłówki od siebie i nagłówki od treści żądania |
- | * Wiedzieć jak wygląda obsługa błędów w sieciach. | + | * czym różni się HTTPS od HTTP |
- | * Umieć na podstawie objaśnienia błędu wypisanego np. przez ''perror'' zdiagnozować co mogło być przyczyną błędu. | + | * jakie są podstawowe metody HTTP i do czego są używane |
- | * Wiedzieć czym jest zmienna ''errno'' i gdzie znaleźć kody które może zawierać. | + | * do czego są wykorzystywane i jakie przyjmują wartości nagłówki: |
- | * Znać różnice między protokołem TCP i UDP, m. inn. strumieniowe vs datagramowe, gwarancje dawane programiście przez protokół. | + | * Host |
- | * 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. | + | * Cookie, Set-Cookie (nie trzeba znać składni) |
- | * Wiedzieć jakie funkcje pozwalają znaleźć IP dla podanej nazwy domenowej i czym się różnią | + | * Connection |
- | * Wiedzieć czym różni się blokująca i nieblokująca obsługa gniazd. | + | * Content-Length |
- | * Wiedzieć które funkcje operujące na gniazdach mogą zablokować program. | + | * Content-Type |
- | * Wiedzieć co oznaczają wartości zwracane przez funkcje sieciowe. | + | * Location |
- | * Ile bajtów może przeczytać funkcja read (recv, recvfrom, …), kiedy mniej niż żądano. | + | * <small>w pytaniach mogą pojawić się inne wspomniane w materiałach nagłówki, ale odpowiedź na pytanie nie będzie wymagać ich znajomości</small> |
- | * Ile bajtów może przeczytać funkcja write (send, sendto, …), kiedy mniej niż żądano. | + | * jakie nagłówki są obowiązkowe w HTTP/1.0, HTTP/1.1, HTTP/2 i HTTP/3 |
- | * 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 | + | * należy znać nazwy i możliwości programów ''wget'' i ''curl'' oraz możliwości narzędzia //sieć// z narzędzi deweloperskich w przeglądarkach |
- | * 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). | + | * dla protokołów HTTP/1.0, HTTP/1.1, HTTP/2 i HTTP/3: |
- | * Wiedzieć jakimi funkcjami obsługuje się szukanie IP dla podanej nazwy domenowej i czym te funkcje się różnią. | + | * czy i jak przesyłane jest wiele żądań w ramach jednego połączenia (szeregowo, równolegle, szeregowo-równolegle) |
- | * Na czym polega wielowątkowa obsługa gniazd. | + | * jakie części żądania (nagłówki, treść) mogą być kompresowane, jakie muszą być kompresowane |
- | * 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. | + | * czy użycie szyfrowania jest możliwe czy obowiązkowe |
- | * 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 rozpoczyna się połączenie używające HTTP/2 wiedząc bądź nie wiedząc czy serwer wspiera tą wersję protokołu |
- | * Jak, wykorzystując ''poll'' / ''epoll_wait'', czekać na możliwość odczytu / zapisu danych do któregoś z podanych gniazd. | + | |
- | * 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: | + | |
- | * 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: | + | |
- | * co robi dany kod / podana linia | + | |
- | * co wypisze na ekran wykonanie danego kod | + | |
- | * w jakim kontekście może być użyty | + | |
- | * 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ć | + | |
- | * 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 ====== | + | Poczta: |
- | * Znać | + | * z czego składa się e-mail, jak rozdziela się nagłówki od treści |
- | * pojęcia: WLAN, IEEE 802.11, Wi-Fi<html><sup>®</sup></html> | + | * do czego są wykorzystywane i jakie przyjmują wartości nagłówki: |
- | * rodzaje sieci | + | * From, To, Cc, Bcc, Date, Subject |
- | * IBSS (ad-hoc) | + | * Message-ID, In-Reply-To, References |
- | * BSS i ESS (infrastruktura) | + | * Received |
- | * czym się różni BSS i ESS | + | * Content-Type |
- | * w jakich trybach może pracować karta sieciowa | + | * jakie typy MIME są używane do przesyłania maila w wersji plaintext + HTML, jakie do maila z załącznikami |
- | * identyfikatory | + | * jak rozdziela się części wieloczęściowego maila |
- | * BSSID | + | * jakie nagłówki można / należy powtórzyć na początku każdej części |
- | * SSID (ESSID) | + | * Content-Transfer-Encoding |
- | * kiedy i do czego są używane w/w identyfikatory | + | * jakie znaki są normalnie dopuszczalne w mailach |
- | * role urządzeń | + | * jakie są metody kodowania znaków spoza 7bit |
- | * AP | + | * jak kodowania wpływają na ilość przesyłanych danych |
- | * STA (stacja) | + | * należy rozumieć nazwy agentów (MUA, MSA, MTA, …) i wiedzieć jakie jest ich zadanie |
- | * na jakiej warstwie pracują | + | * protokół SMTP: |
- | * jakich identyfikatorów używają | + | * do czego służy, kiedy jest używany |
- | * w jakich rodzajach sieci występują | + | * skąd biorą się adresy nadawcy i odbiorców używane przez SMTP, jaki mają związek z adresami w nagłówkach maila |
- | * bezpieczeństwo | + | * należy znać komendy protokołu SMTP potrzebne do wysłania maila (helo/ehlo, mail from, rcpt to, data) |
- | * WEP, WPA-PSK, WPA-EAP, WPA2-PSK, WPA2-EAP, WPA3-SAE, WPA3-EAP, WPS | + | * jak kończy się zawartość przesyłanego maila |
- | * realny poziom bezpieczeństwa | + | * protokoły POP3 / IMAP: |
- | * realizacja uwierzytelniania | + | * do czego służą, kiedy są używane |
- | * realizacja szyfrowania | + | * jakie mają możliwości, czym się od siebie różnią |
- | * różnice między WPA/WPA2-PSK, WPA3-SAE i WPA/WPA2/WPA3-EAP<html><!-- | + | * czym różni się połączenie bez szyfrowania, szyfrowane po użyciu STARTTLS, szyfrowane od początku |
- | * na warstwie łącza danych: | + | |
- | * zadania karty bezprzewodowej | + | |
- | * algorytm CSMA/CA, problem ukrytej/odkrytej stacji | + | |
- | * rodzaje ramek (typy i podtypy, do czego służą) | + | |
- | * jak tworzy się listę dostępnych sieci | + | |
- | * jak dołącza się do wybranej sieci | + | |
- | --></html> | + | |
- | * 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 ====== | + | |
- | * Znać | + | |
- | * pojęcia | + | |
- | * DNS | + | |
- | * nazwa domenowa, FQDN | + | |
- | * TLD | + | |
- | * rodzaje serwerów | + | |
- | * root | + | |
- | * authoritive | + | |
- | * caching | + | |
- | * wiedzieć jaka jest rola w/w serwerów | + | |
- | * master | + | |
- | * slave | + | |
- | * Wiedzieć | + | |
- | * do czego służy . (kropka) w DNS | + | |
- | * jak jest wykonywane zapytanie | + | |
- | * co można wpisać do DNS | + | |
- | * jakie są rodzaje rekordów | + | |
- | * do czego służą i jak wyglądają | + | |
- | * A, AAAA | + | |
- | * PTR | + | |
- | * NS | + | |
- | * MX | + | |
- | * SOA (nie trzeba znać składni) | + | |
- | * CNAME | + | |
- | * TXT | + | |
- | * 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 | + | |
- | * 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 ====== | + | |
- | * Wiedzieć | + | |
- | * na czym polega kształtowanie ruchu | + | |
- | * jaki ruch można kształtować | + | |
- | * w jakich sytuacjach kształtowanie nic nie poprawi | + | |
- | * o czym można decydować | + | |
- | * czym różnią się bezklasowe i klasowe qdisc | + | |
- | * co mają zapewniać bezklasowe qdisc (jaką ideę realizują) | + | |
- | * pfifo | + | |
- | * pfifo_fast | + | |
- | * sfq | + | |
- | * tbf | + | |
- | * fq_codel | + | |
- | * co mają zapewniać klasowe qdisc (jaką ideę realizują) | + | |
- | * prio | + | |
- | * htb | + | |
- | * czym są klasy | + | |
- | * po co są tworzone | + | |
- | * dla htb jakie mają opcje | + | |
- | * czym są filtry | + | |
- | * po co są tworzone | + | |
- | * jak używa się filtra ''fw'' | + | |
- | * Wytłumaczyć co robią podane komendy (w w/w zakresie) | + | |
- | --></html> | + | |
- | + | ||
- | ====== IPv6 ====== | + | |
- | * Wiedzieć | + | |
- | * jak wygląda adres | + | |
- | * jakie są reguły zapisu i skracania adresu IPv6 | + | |
- | * jak jest zbudowany adres unicastowy | + | |
- | * prefix | + | |
- | * subnet | + | |
- | * IID | + | |
- | * Skąd jest brany IID | + | |
- | * jak jest zbudowany adres multicastowy | + | |
- | * jak zmieniono nagłówek IPv6 w porównaniu do IPv4 | + | |
- | * jak automatycznie nadaje się adresy IPv6 | + | |
- | * NDP | + | |
- | * DHCPv6 | + | |
- | * jak jest realizowana fragmentacja w IPv6 i co to jest pMTU | + | |
- | * jakie wygląda współistnienie IPv4 i IPv6 | + | |
- | * co oznacza dual stack | + | |
- | * co to są tunele 6in4 | + | |
- | * czemu służy usługa tunnel broker | + | |
- | * czemu służą translacje 4→6 i 6→4 | + | |
- | * Znać | + | |
- | * rodzaje adresów | + | |
- | * unicast | + | |
- | * multicast | + | |
- | * anycast | + | |
- | * adresy specjalne | + | |
- | * adresy link-local | + | |
- | * jedyny dotychczas przydzielony blok globalnie routowalny | + | |
- | + | ||
- | ====== Instrukcja obsługi testu: ====== | + | |
- | * Liczba pytań nie jest okrągła (na przykład 27). | + | |
- | * 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 jednokrotnego wyboru od wielokrotnego wyboru można rozróżnić też po wyglądzie pola input: | + | |
- | * <html><input type="radio"/> jednokrotny wybór</html> | + | |
- | * <html><input type="checkbox"/> wielokrotny wybór</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. | + | |
- | * Za błędne odpowiedzi nie ma punktów ujemnych. | + | |
- | * 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 | + | |
- | + | ||
- | ====== Q&A ====== | + | |
- | + | ||
- | **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. | + | |
+ | W teście będą pytania zamknięte (jednokrotnego wyboru) i otwarte, przy czym za te ostatnie będzie można dostać około ⅓ punktów. |