Narzędzia użytkownika

Narzędzia witryny


Pasek boczny

sk2:zagadnienia-test

Zagadnienia na test 2023/2024:

Programowanie

Zagadnienia:

  • Znać podstawowe funkcje, wiedzieć co robią.
    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
  • Znać podstawowe stałe i wiedzieć co oznaczają.
    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
  • Znać podstawowe struktury i wiedzieć co zawierają.
    Lista struktur: sockaddr, sockaddr_in, sockaddr_in6 (tylko do czego służy), inaddr_t, hostent, addrinfo, epoll_event, pollfd
  • Nie jest wymagana znajomość składni, kolejność czy nazwy argumentów funkcji / pól struktur.
    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.
  • 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
  • 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.
  • 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ć które funkcje operujące na gniazdach mogą zablokować program.
  • 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 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ą.
  • Na czym polega wielowątkowa obsługa gniazd.
  • 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 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
  • Dla jasności: nie jest wymagana znajomość API do sieci z bibliotek Qt / języka Java

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

  • Znać
    • pojęcia: WLAN, IEEE 802.11, Wi-Fi®
    • rodzaje sieci
      • IBSS (ad-hoc)
      • BSS i ESS (infrastruktura)
      • czym się różni BSS i ESS
      • w jakich trybach może pracować karta sieciowa
    • identyfikatory
      • BSSID
      • SSID (ESSID)
      • kiedy i do czego są używane w/w identyfikatory
    • role urządzeń
      • AP
      • STA (stacja)
      • na jakiej warstwie pracują
      • jakich identyfikatorów używają
      • w jakich rodzajach sieci występują
    • bezpieczeństwo
      • WEP, WPA-PSK, WPA-EAP, WPA2-PSK, WPA2-EAP, WPA3-SAE, WPA3-EAP, WPS
      • realny poziom bezpieczeństwa
      • realizacja uwierzytelniania
      • realizacja szyfrowania
      • różnice między WPA/WPA2-PSK, WPA3-SAE i WPA/WPA2/WPA3-EAP
    • 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)
      Potencjalne pytania będą zawierać poprawną składnię komend, będą dotyczyć wyboru pasującej komendy lub interpretacji wyniku komendy
    • Nie będzie pytań dotyczących konkretnych komend na urządzeniach Cisco/MikroTik

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

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:
    • jednokrotny wybór
    • wielokrotny wybór
    • Dlaczego to piszę? Bo to pytanie padało w zeszłych latach w trakcie testu...
  • 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.
      Np. zaznaczając 2 poprawne i 1 błędną odpowiedź w pytaniu z 3 poprawnymi odpowiedziami uzyskuje się ⅔ punkta za pytanie.
  • 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.

sk2/zagadnienia-test.txt · ostatnio zmienione: 2024/01/18 13:26 przez jkonczak