Narzędzia użytkownika

Narzędzia witryny


bio-psiec:zagadnienia-test

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

bio-psiec:zagadnienia-test [2026/01/18 14:28] (aktualna)
jkonczak utworzono
Linia 1: Linia 1:
 +~~NOTOC~~
 +===== Zagadnienia na test – 2025/26 =====
 +
 +Na teście będą pytania jednokrotnego i wielokrotnego wyboru, jak również pytania otwarte.
 +\\
 +Wśród pytań otwartych mogą się pojawić między innymi pytania o podanie prostych komend, wpisanie informacji odczytanych z zawartych w pytaniu wyników poleceń, czy kawałki kodu z lukami do uzupełnienia.
 +\\
 +W trakcie testu nie można korzystać z żadnych materiałów (internetu, notatek, konsoli, IDE, etc.).
 +\\
 +Test będzie do wypełnienia na ekranie komputera.
 +
 +=== Adresacja IP ===
 +
 +  * jakie długie są i jak są zapisywane adresy IPv4 i IPv6 \\ proszę zwrócić uwagę kiedy podaje się adres z maską, kiedy sam adres
 +  * podział puli adresów IP na sieci (prefiksy):
 +    * co to jest maska sieci, jak się ją zapisuje
 +    * jakie adresy należą do podanej sieci, których z nich nie można przypisać urządzeniom
 +  * jakie adresy:
 +    * ma pętla zwrotna / localhost
 +    * określają dowolny adres
 +    * mają bloki prywatne – trzeba znać adresy wszystkich trzech bloków prywatnych IPv4
 +
 +=== Podstawowa konfiguracja interfejsów sieciowych i przełączanie pakietów ===
 +
 +  * jakimi komendami:
 +    * wyświetla się listę urządzeń
 +    * wyświetla się listę adresów IP
 +    * włącza/​wyłącza się wskazane urządzenie
 +    * dodaje/​usuwa się adresy IP
 +  * komenda ping - do czego służy, jak się jej używa
 +  * adresy MAC
 +    * jakie są długie, jak się je zapisuje
 +    * do czego służą w sieciach
 +    * która komenda je wypisuje
 +    * kto je ustawia, czy można je zmienić
 +
 +  * protokoły ARP i NDP (neighbour solicit/​advert):​
 +    * do czego są potrzebne
 +    * kiedy są używane
 +  * do czego służy przełącznik (switch), co to jest przełączanie (switching)
 +
 +=== Trasowanie ===
 +
 +  * na co pozwala protokół ICMP(v6):
 +    * do czego są używane komunikaty //echo reply// / //echo request//
 +    * kiedy są wysyłane inne komunikaty tego protokołu i od czego służą
 +    ​
 +  * co to jest trasowanie
 +  * tablica tras:
 +    * co zawiera każdy jej wpis
 +    * jak na jej podstawie system operacyjny wybiera trasę
 +  * jaką komendą na Linuksie:
 +    * wyświetla się tablicę tras
 +    * dodaje się / usuwa trasy (w tym trasę domyślną i trasę przez podany skok)
 +    * bada się trasę (wszystkie kolejne skoki) jaką pokonuje pakiet do podanego adresu
 +  * na podstawie ilustracji (rysunku sieci) należy umieć wskazać jakie wpisy w tablicy tras muszą mieć urządzenia
 +  ​
 +  * proszę tam zwrócić uwagę na ilustrację //szukanie MAC, przełączanie,​ trasowanie//,​ szczególnie:​
 +    * działanie protokołów ARP/NDP: kto, kiedy i po co je używa
 +    * czym jest przełączanie,​ kto i kiedy je wykonuje
 +    * czym jest trasowanie, kto i kiedy je wykonuje
 +
 +=== System nazw domenowych (DNS) ===
 +
 +  * co oznaczają skróty FQDN i TLD
 +  * jakie są rodzaje serwerów, jaką rolę pełnią (np. serwery authoritive,​ caching)
 +  * do czego są rekordy zasobowe A, AAAA, NS, CNAME, MX, PTR
 +  * jaką komendą można odpytać serwer DNS:
 +    * o wskazany rodzaj rekordu dla wskazanej nazwy domenowej
 +    * o odwzorowanie odwrotne
 +  * adres wskazany przez który rekord będzie użyty do połączenia przez:
 +    * klienty/​serwery DNS do odpytywania o nazwy w domenie
 +    * serwer poczty który chce wysłać mail do szukanej domeny
 +    * pozostałe programy, w tym np. przeglądarkę internetową
 +
 +=== Automatyczne nadawanie adresów IP ===
 +
 +  * jakie co najmniej ustawienia sieciowe trzeba ustawić, żeby móc korzystać z przeglądarki internetowej
 +  * jakimi metodami/​protokołami można ustawiać adres IPv4
 +  * jakimi metodami/​protokołami można ustawiać adres IPv6
 +  * jak działają protokoły DHCP i NDP:
 +    * jakie informacje przesyłają
 +    * czy serwer nadaje IP, czy urządzenie samo wybiera IP
 +  * co to jest statyczna dzierżawa
 +
 +=== Protokoły warstwy transportu i narzędzia do ich diagnostyki i testowania ===
 +
 +  * co to jest numer portu, czy porty mają nazwy
 +  * porty uprzywilejowane/​systemowe:​
 +    * z jakiego są zakresu
 +    * kto może ich używać jako adres lokalny (w ''​bind''​)
 +    * kto może ich używać jako adres zdalny (w ''​connect''​)
 +  * jakimi komendami można:
 +    * wyświetlić listę nawiązanych połączeń
 +    * wyświetlić listę gniazd czekających na połączenia
 +    * zwróć uwagę że trzeba umieć czytać wyniki tych komend
 +  * trzeba umieć napisać komendę która:
 +    * nawiąże połączenie TCP pod wskazany adres
 +    * uruchomi prosty serwer TCP na wskazanym porcie (i dowolnym z adresów IP tego komputera)
 +    * rozpocznie wymianę komunikatów UDP ze wskazanym docelowy adresem
 +    * będzie czekać na komunikaty UDP na wskazanym porcie (i dowolnym z adresów IP tego komputera)
 +
 +=== Wstęp do programowania gniazd + prosty serwer TCP + klient i serwer UDP ===
 +
 +  * co to jest deskryptor pliku
 +  * standardowe wejście, standardowe wyjście i standardowy błąd:
 +    * czym są, do czego służą
 +    * jakie mają wartości deskryptora pliku
 +  * jak większość funkcji systemowych (z POSIX) wskazuje że wystąpił błąd, oraz:
 +    * kiedy ustawiana i kiedy czyszczona jest stała ''​errno''​
 +    * do czego służy funkcja ''​perror''​
 +
 +  * co zawierają, do czego i gdzie używane są struktury:
 +    * ''​sockaddr_in''​ (i kiedy oraz dlaczego konieczne jest rzutowanie wskaźnika na taką strukturę)
 +    * ''​in_addr''​
 +  * endianness:
 +    * dlaczego ma znaczenie w sieciach
 +    * funkcje htons, ntohs, ntonl, … - gdzie i kiedy trzeba z nich korzystać
 +  * do czego i gdzie (tj. w jakiej funkcji/​strukturze) używane są stałe
 +    * INADDR_ANY
 +    * AF_INET, AF_INET6
 +    * SOCK_STREAM,​ SOCK_DGRAM
 +    * IPPROTO_TCP,​ IPPROTO_UDP
 +
 +  * należy znać funkcje: \\ (w tym: co zwracają, jakie argumenty przyjmują)
 +    * tworzące/​zamykające deskryptory plików: \\ socket, accept, close \\ w tym szczególnie:​
 +      * co dokładnie zwraca accept, kiedy można go wykonać
 +      * do czego służy drugi i trzeci argument accept
 +    * odbierające/​wysyłające dane: \\ read, write, recv, send, recvfrom, sendto \\ w tym szczególnie:​
 +      * co oznacza zwrócenie wartości 0 przy odczycie dla gniazd połączeniowych
 +      * kiedy te funkcje zwracają -1
 +      * co oznaczają dodatnie wartości zwrócone z tych funkcji
 +      * które używa się dla gniazd (pseudo/​)połączeniowych,​ np. TCP
 +      * które używa się dla gniazd bezpołączeniowych,​ np. UDP
 +    * zmieniające stan gniazda w systemie operacyjnym:​ \\ bind, connect, listen, shutdown, oraz wywołanie setsockopt(…,​ SOL_SOCKET, SO_REUSEADDR,​ …, …) \\ w tym szczególnie:​
 +      * jak każda z tych funkcji zmienia stan gniazda
 +      * jakie inne funkcje sieciowe można wykonać w stanie przed/po wykonaniu tych funkcji, szczególnie:​
 +        * kiedy można wysyłać dane
 +        * kiedy można przyjmować klientów
 +        * w jakiej kolejności wolno wywoływać te funkcje zmieniające stan
 +  * trzeba wiedzieć w jakiej kolejności należy wykonywać funkcje do stworzenia serwera/​klienta tcp/udp
 +
 +  * w jakich zastosowaniach warto używać UDP (i jakie ma zalety nad TCP w tych zastosowaniach)
 +        ​
 +=== API do nazw domenowych ===
 +
 +  * do czego służy funkcja getaddrinfo
 +  * do czego służy funkcja getnameinfo
 +  * jakie argumenty przyjmują te funkcje, w tym:
 +    * po co jest argument hints w getaddrinfo
 +    * po co są flagi w getnameinfo
 +  * jak te funkcje informują o błędach
 +  * kiedy trzeba wykonać funkcję freeaddrinfo
 +  * co jest w wynikach funkcji getaddrinfo \\ tzn. jakie informacje trafiają do struktur addrinfo tworzonych w wyniku wywołania tej funkcji
 +
 +=== Dopuszczalne zachowanie się funkcji sieciowych ===
 +
 +  * które funkcje i kiedy mogą się blokować
 +  * czym różni się tryb blokujący od nieblokującego
 +  * czy funkcje read/​recv/​recvfrom zawsze odbiorą tyle bajtów ile im kazano:
 +    * w trybie blokujacym
 +    * w trybie nieblokującym
 +    * jak w wywołaniu recv zmienić to czy ma czekać na odebranie dokładnie tylu bajtów ile wskazano
 +  * czy funkcje write/​send/​sendto zawsze wyślą wszystkie dane:
 +    * w trybie blokujacym
 +    * w trybie nieblokującym
 +    * jak w wywołaniu send zmienić to czy ma czekać na wysłanie wszystkich bajtów
 +  * co zwracają w trybie nieblokującym fukcje odbierające/​wysyłające dane kiedy nie da się bez blokowania odebrać/​wysłać danych \\ jak odróżnić taką sytuację od innych błędów z tych funkcji
 +  ​
 +  * jak mają się porcje w których wysyłano dane do porcji w których są odbierane:
 +    * w TCP
 +    * w UDP
 +  * co programista może zrobić, żeby odbierać logiczne wiadomości w całości w TCP
 +  * jakie są gwarancje TCP i UDP związane z:
 +    * dostarczeniem danych
 +    * kolejnością danych
 +    * dobraniem prędkości wysłania do możliwości sieci
 +
 +=== Filtracja pakietów i translacja adresów ===
 +
 +  * co to jest reguła i jak reguły są pogrupowane w tabele i łańcuchy
 +  * w jakiej kolejności są wykonywane reguły wewnątrz łańcucha
 +  * kiedy kolejne reguły z łańcucha nie są już przetwarzane
 +  * co decyduje o tym czy pakiet przepuścić czy odrzucić jeśli żadna regułą się nie dopasuje
 +  * na czym polega podział na PREROUTING, INPUT, FORWARD, OUTPUT i POSTROUTING
 +  * na co (w filtracji/​translacji) pozwala śledzenie połączeń
 +  ​
 +  * co to są dopasowania (matches) \\ należy znać dopasowania do:
 +    * protokołu
 +    * stanu połączenia
 +    * interfejsów źródłowych/​docelowych
 +    * adresów źródłowych/​docelowych
 +    * portów źródłowych/​docelowych
 +  * jakie akcje można wykonać w regule i co one oznaczają: \\ ACCEPT, DROP, REJECT, MASQUERADE, SNAT, DNAT
 +  * nie będzie pytań gdzie trzeba napisać komendę iptables, ale mogą być pytania gdzie trzeba wyjaśnić podaną komendę
 +  ​
 +  * do czego (w jakiej sytuacji) potrzebna jest:
 +    * translacja adresów źródłowych
 +    * translacja adresów docelowych
 +  * które urządzenie w sieci wykonuje translację adresów źródłowych / docelowych
 +  * jakie dopasowania zwykle stosuje się dla translacji źródłowej a jakie dla docelowej
 +  ​
 +  * proszę tam zwrócić uwagę na ilustrację //​ilustracja do NATów// ​
 +
 +=== Sieci bezprzewodowe ===
 +
 +  * co określa nazwa WLAN / standardy IEEE 802.11 / trademark Wi-Fi®
 +  * od czego zależy prędkość sieci bezprzewodowej
 +  * identyfikatory BSSID i ESSID/SSID
 +    * jaką mają postać
 +    * do czego są używane
 +    * czy muszą być unikalne
 +  * co to jest i z czego składa się sieć bezprzewodowa:​
 +    * IBSS / ad hoc
 +    * w trybie infrastruktury
 +  * jakimi komendami w Linuksie można wyświetlić:​
 +    * listę interfejsów bezprzewodowych
 +    * listę dostępnych sieci bezprzewodowych
 +  * jak nazywają się najpowszechniejsze zabezpieczenia sieci bezprzewodowych
 +  * czym różni się uwierzytelnianie w profilu WPA Personal i WPA Enterprise
 +  * jakie są różnice między WPA2-PSK i WPA3-SAE
 +  * czym jest WPS
 +
 +=== Wielowątkowa obsługa gniazd + obsługa wielu gniazd naraz w jednowątkowym programie ===
 +
 +  * jakie są metody na obsługę wielu gniazd naraz w jednym programie
 +  * czy z różnych wątków można robić operacje odczytu/​zapisu (I/O) na jednym gnieździe
 +  * co zapewnia system operacjny jeżeli wykona się z różnych wątków operacje I/O na tym samym gnieździe
 +  * jak buduje się pętlę zdarzeń
 +  * funkcja poll:
 +    * do czego służy
 +    * jakie ma argumenty \\ w tym jak można określić ile czasu ma czekać i jak wskazać że ma czekać od skutku
 +    * jakie pola ma struktura pollfd
 +    * jak przygotowuje się przekazywane od funkcji poll struktury pollfd
 +    * co oznaczają:
 +      * POLLIN, i kiedy to zdarzenie może wystąpić mimo że nie przyszły dane
 +      * POLLOUT, w tym:
 +        * kiedy to zdarzenie może wystąpić mimo że nie da się wysłać danych
 +        * ile bajtów można wysłać jeżeli wystąpiło POLLOUT
 +    * jakie zdarzenia może zawsze ustawić poll (mimo że programista nie wskazał że na nie czeka)
 +    * jak można w polu revents struktury pollfd sprawdzić czy jest ustawione wskazane zdarzenie
 +
 +-----
 +    ​
 +<​small>​
 +//Uwaga:// jeżeli wzorem wyższych roczników bioinformatyki przygotowujecie jakieś
 +materiały streszczające przedmiot dla ułatwienia nauki, zachęcam do skonsultowania
 +ich ze mną – w ubiegłym roku w takich znalazło się sporo błędów, a o ich istnieniu
 +dowiedziałem po poprawce dopytując skąd ciągle powtarzały się błędne odpowiedzi.
 +</​small>​
  
bio-psiec/zagadnienia-test.txt · ostatnio zmienione: 2026/01/18 14:28 przez jkonczak