Różnice między wybraną wersją a wersją aktualną.
| — |
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> | ||