# SK2
## Co to jest gniazdo?
Plik specjalny, końcowy punkt kanału komunikacji.
` int socket(int domain, int type, int protocol);`
nowy fd gniazda, lub -1
## Co robi funkcja accept?
Funkcja oczekuje na zgłoszenie lub pobiera takowe z kolejki dla gniazd strumieniowych. W wyniku otrzymujemy nowy deskryptor gniazda, w przypadku błędu -1
```
int accept(int sockfd, struct sockaddr *restrict addr,
socklen_t *restrict addrlen);
```
nowy fd gniazda lub -1
## Co robi bind?
Przypisuje adres do deskryptora.
Funckja pozwala na związanie wcześniej utworzonego gniazda z adresem lokalnej maszyny i jest używana głównie przez serwery i klientów UDP. Poprawnie wykonana funkcja zwraca 0, błąd oznaczany jest wartością -1.
```
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
```
## Co robi listen?
Funkcja pozwala na przygotowanie gniazda do obierania zgłoszeń i umozliwia określenie rozmiaru kolejki żądań, oczekujących na wykonanie funkcji accept(). Wynikiem poprawnie wykonanej funkcji jest wartość 0, błąd oznaczany jest przez wartość -1.
## Co robi connect?
Funkcja użwana przez klientów, wiąże stworzone gniazdo z adresem serwera. Jeśli gniazdo zostało uwtworzone w trybie połączeniowym, funkcja nawiązuje połączenie z serwerem, jeśli w trybie bezpołączeniowym, funkcja jedynie przypisuje gniazdu adres i numer portu zdalnego serwera.
## Jaka jest róznica pomiędzy recv/sednto a read/write?
Read i write działają na jakichkowliek deskryptorach, arecv i sendto tylko na sieciowych (można też na nich dodatkowe flagi ustawić).
## Co robi close?
Funkcja zamyka gniazdo i usuwa jego deskryptor, jako parametr podajemy deskryptor zamyknaego gniazda.
## Co oznacza zwrócenie zera przez funkcje recv/read?
Zakończenie połączenia.
## Jakie mamy pasma w sieciach bezprzewodowych
2.4 GHz i 5GHz
## jakie funkcje należy wywołać w serwerze?
socket() - bind() - listen() - accept() - read() / write() - close()
## jakie funkcje należy wywołać w kliencie?
socket() - connect() - read()/write() - close()
## Czy select/poll/epoll są blokujące?
Nie
### Jak abstrakcyjnie wytłumaczyć ich działanie?
Selektory "nasłuchują", czy dzieje sie coś ciekawego w obserwowanych połączeniach.
## Koncepcja asynchronicznego serwera
1. Tworzymy gniazdo serwera.
2. Dodajemy gniazda podłączanych klientów do zbioru obserwowanych.
3. W pętli oczekujemy na zdarzenia skojarzone z dowolnym elementem ze zbioru obserwowanych.
4. Przy zakończeniu połączenia z klientem usuwamy go ze zbioru obserwowanych.
## Jak można zrobić współbieżny serwer?
- wątki
- procesy
- przez selektory
## Wymień selektory i ogólnie powiedz jak one
Do selektorów przekazujemy zbiór deksryptorów, które nas interesują, a one oznaczą deskryptory, na których zaszły zdarzenia.
- select
ma twardy limit na około 1000 deskryptorów, modyfikuje zbiór wejściowy, przestazałe rozwiązanie, ale wspierane wszędzie
- poll
oprócz zbioru deskryptorów przyjmuje zbiór interesujących zdarzeń, nie modyfikuje zbioru, nie ma twardego limitu
- epoll
wyłącznie dla linuxa, zwraca wyłącznie aktywne deksryptory

## Dlaczego zdefiniowano nachodzące na siebie kanały w sieci wi-fi?
Po to, żeby było jak najwięcej kanałów i każde państwo mogło sobie wydzielić według swojej polityki i zasad odpowiednią ilość kanałów dla użytkowników komercyjnych.
## Jak działa wi-fi?
WiFi to bezprzewodowa sieć oparta na komunikacji radiowej. Może działać w trybie infrastruktury lub ad-hoc.
## Czy AP potrzebuje adresu IP, żeby działać w sieci lokalnej?
nie
## Standardy wi-fi
| Standard | Częstotliwość | Maks prędkość | Szerokość kanału |
|----------|---------------|---------------|-----------------------------|
| a | 5GHz | 54Mbit/s | 20MHz |
| b | 2.4GHz | 11Mbit/s | 20MHz |
| g | 2.4GHz | 54Mbit/s | 20MHz |
| n | 2,4GHz, 5GHz | 600Mbit/s | 20MHz, 40MHz |
| ac | 5GHz | 2Gbit/s | 20MHz, 40MHz, 80MHz, 160MHz |
## Zakres 2.4G

## Dwa nienachodzące kanały 2.4ghz:
np. 1,6,11
## Co to jest punkt dostępowy?
Punkt dostępowy to urządzenie pełniące w sieci w trybie infrastruktury funkcję bramy domyślnej. Punkt dostępowy podłączony jest do sieci przewodowej.
## Czym jest tryb infrastruktury?
AP + stacje, wszystkie urządzenia komunikują się tylko z AP
## Jak działa tryb ad-hoc?
- W trybie ad-hoc nie ma access pointów. Jest to więc sieć zdecentralizowana.
- Urządzenia komunikują się ze sobą bezpośrednio (jeżeli pozwala na to zasięg radiowy) i mogą pełnić jednocześnie rolę punktów dostępu.
- Ochrona i ustawianie komunikacji pomiędzy wybranymi stacjami realizowane są za pomocą identyfikatora domeny.
## Dlaczego CSMA/CD nie nadaje sie dla WLAN?
- Z reguły bezprzewodowe karty sieciowe nie są zdolne do jednoczesnego odbierania i wysyłania pakietów
- Sygnał radiowy emitowany podczas transmisji zagłuszyłby transmisję innych węzłów
## Typy ramek w sieciach wifi
- kontrolne: RTS/CTS/ACK
- zarządzające: beacon, probe, authentication
- danych
## Co to jest BSS?
Podstawowy Tryb Infrastruktury z użyciem AP, który pośredniczy w komunikacji między urządzeniami sieci. Składa się z punktu dostępu (AP) i co najmniej jednego komputera. Urządzenia komunikujące się w obrębie jednego BSS muszą działać na tym samym kanale częstotliwości i mieć identyczne SSID (Service Set Identifier).

## Co to jest ESS?
Extended Service Set- zbiór wielu BSS z tym samym SSID połączonych siecią dystrybucji (DS). Sieć dystrybucji może być zarówno siecią kablową lub bezprzewodową (Wireless Distrubution System)
## Problem ukrytej stacji
Jeśli zasięg radiowy węzłów sieci bezprzewodowej nie obejmuje wszystkich kompiuterów, to wówczas transmisja w sieci wykonywana przez jedną stację nie będzie odbierana przez wszystkie stacje sieci. Stacja jest ukryta, jeżeli znajduje się w zasięgu stacji odbierającej dane, ale poza zasięgiem stacji nadającej. Kiedy dwie stacje nadają do tej ukrytej, to występuje kolizja.

## Problem odkrytego węzła
Stacja jest odkryta, kiedy znajduje się w zasięgu nadawcy informacji, ale poza zasięgiem odbiorcy. Stacja B nadaje do stacji A. Ponieważ stacje B i C (stacja odkryta) znajdują sie w swoim zasięgu, transmisja wykryta jest w stacji C, która wobec tego przyjmuje że łacze jest zajęte i wstrzymuje transmisję do innej stacji. Transmisja ta nie spowodowałaby jednak w staji A kolizji z danymi ze stacji B, gdyż stacje A i C znajdują się poza swoim zasięgiem.
## Zabezpiecznia sieci bezprzewodowych
1. WEP
Wszystkie węzły sieci posiadają wspólny klucz szyfrowania WEP (Wired Equivalent Privacy) o stałej dlugości 40 (64) lub 104 (128) bitów. Do tego hasła jest potem doklejany wektor inicjalizujący o długości 24 bity. WEP korzysta z RC4, czyli ze strumieniowego algorytmu szyfrującego (dziurawy ten algorytm).
2. WPA
Klucz do 256 bitów. Tutaj algorytm TKIP, który jest ulepszonym RC4: częsta zmiana klucza+ brak ograniczenia na długość hasła (połączenie zamiast konkatenacji).
4. WPA2
## Czym jest ramka beacon?
Jest to ramka rozgłaszająca istnienie bezprzewodowej sieci lokalnej. Rozgłaszana jest przez urządzenie udostępniające sieć. WYSYŁANA CYKLICZNIE!
### Jakie informacje przekazuje?
- SSID (Service Set Identifier)
- Możliwości urządzenia, np. zabezpieczenia, typ sieci
- Wpierane szybkości transmisji
- Adres MAC punktu dostępu
## Ramka Probe Request/Response
- Request- odpytanie jakie AP znajdują się w pobliżu
Response- możliwości urządzenia, wspierane prędkości transmisji
## Ramka Authentication/Deauthentication
Open= bez zabezpieczeń
Restricted= z użyciem WEP
## Association request/response/dissaciation
- Request- prośba o dołączenie do sieci, zawiera: SSID i wspierane prędkości transmicji
- Response- jeżeli AP zdecyduje o nawiązaniu łączności z klientem
- Disassociation- ładne rozłączenie
## Do czego służy serwer DNS?
Transformuje nazwę domenową czytelną i łatwą do zapamiętania dla użytkownika na adres IP zrozumiały dla komputera.
#### np
`wp.pl -> 123.234.43.13`
## Jakie są typy serwerów DNS?
1. serwery domeny głównej- serwery znajdujące się na szczycie hieratchii modelu. Obecnie istnieje 13 na świecie.
2. serwery autorytatywne- serwery, które zawsze posiadają aktualne informacje na temat komputerów w danej domenie
3. caching name servers- zbierają dane o powyższych serwerów dla użytkowników końcowych
## FQDN
Fully Qualified Domain Name - pełna nazwa domenowa (konkretnej maszyny). Np. sirius.cs.put.poznan.pl. Musi sie składać z nazwy maszyny, domen wyższego poziomu oddzielonych kropkami i musi kończyć się na TLD (Top Level Domain).
## TLD
Top Level Domain- poddomeny roota,np. pl, org.
## DNS zone
Serwer danej domeny ze wszystkimi poddomenami.
## Jakie polecenie użyć aby znaleźć nazwę domenową adresu IP?
`dig`
## w jakiej postaci są przechowywane dane serwera?
w pliku tekstowym
## jak nazywamy elementy tego pliku tekstowego?
rekordy zasobowe
## jaką strukturę przyjmuje DNS?
Drzewa, gdzie korzeniem jest '.' (domena główna).
## jakie rekody zasobowe wyróżniamy (jak się wyciąga informacje z serwera DNS)?
getaddrinfo()
● SOA (ang. Start Of Authority) - wskazuje, że dany serwer jest najlepszym źródłem informacji o domenie oraz definiuje zachowanie serwerów głównych (ang. primary DNS) oraz zapasowych (ang. secondary DNS); rekord SOA jest obecny jako pierwszy rekord w każdym pliku strefowym (opisującym domenę)
● A - zawiera odwzorowanie nazwy domenowej w adres IP
● AAAA - to samo co rekord A, ale dla adresów IPv6
● PTR - definiuje odwzorowanie odwrotne (ang. reverse DNS) adresu IP na nazwę domenową
● NS - określa nazwę komputera będącego serwerem DNS dla tej domeny.
● CNAME (ang. canonical name) - pozwala stworzyć “alias” dla już istniejącej nazwy domenowej
● TXT - rekord pozwala na wpisanie dowolnego tekstu, używany głównie przez usługę SPF do walki ze spamem (host -t txt wp.pl)
● MX (mail exchange) - określa nazwę komputera będącego serwerem poczty elektronicznej w danej domenie. Serwery SMTP odczytują jego wartość żeby wiedzieć, który komputer obsługuje pocztę dla domeny.
● SRV - zawiera dodatkowe informacje dotyczące lokalizacji usługi, którą wskazuje serwer DNS, rekord SRV używany jest np. przez usługi VoIP, protokół XMPP, LDAP, czy nawet grę Minecraft.
## jakie rekordy w DNS są wymagane do poprawnego działania?
A + NS
## czym jest rekord NS w DNS?
Rekord NS zawiera informację o nazwie komputera będącego serwer DNS dla danej domeny.
## jak wydzielić poddomenę w rekordach DNS?
## Na czym polegają zapytania iteracyjne?
Komputer wysyła zapytanie do lokalnego serwera DNS i jeżeli ten nie zna odpowiedzi, to propaguje zapytanie do domeny głównej (do roota). Jeżeli root zna odpowiedź, to odsyła, a jak nie to odsyła, że nie wie i żeby zapytać inną domenę, np. zakończoną na .com. Serwer lokalny wysyła zapytanie pod wskazane miejsce i przesyła odpowiedź do komputera klienckiego lub pyta dalej według wskazówek.
## Na czym polegają zapytania rekurencyjne?
Komputer wysyła zapytanie do lokalnego serwera DNS i jeżeli ten nie zna odpowiedzi, to propaguje zapytanie dalej do naddomeny itd., aż do roota. Jeżeli jakiś serwer "po drodze" zna odpowiedź to przesyła ją w dół. Jeżeli root nie zna odpowiedzi, to od razu propaguje zapytanie do innej poddomeny. Zapytania rekurencyjne mają więc taką zaletę, że wszystkie serwery uczestniczące w propagacji zapytania dostaja odpowiedź i mogą ją zapisać w pamieci.
## Jak używać nazwy domenowej w C
getaddrinfo()- komunikuje sie z serwerem DNS i czyta rekordy zasobowe. Zwraca 0 lub kod błędu.
## Typy adresów ipv6
- unicast: odnosi się do jednego interfejsu w sieci
- anycast: do kogokolwiek, a w praktyce do najbliższego odbiorcy. Użycie: np. kiedy chcemy wysłać zapytanie do serweru DNS i mamy dwa takie serwery w sieci lokalnej
- multicast: pozwala na wysłanie wiadomości do wybranej grupy odbiorców, ponieważ wiadomość wysłaną na adres multicast mogą odebrać wszystkie interfejsy, które mają taki adres. Użycie: np. transmisja na żywo do wielu uzytkowników jednocześnie
Adresy IP unicast/anycast:
1. Prefix:
- routing prefix (48.5 bit): służy do routowania
- subnet (max 16bit)
2. IID Interface identifier
- 64 bity, generowany automatycznie na podstawie adresu MAC
### jak działa anycast?
## Jak unika się kolizji pakietów w sieciach bezprzewodowych?
1. Przed wysłaniem danych wysyłany jest pakiet ostrzegawczy- Request To Send (RTS). Wysyła go nadawca do odbiorcy (zazwyczaj AP).
2. Obiorca po odebraniu tej ramki może przyznać prawo transmisji poprzez wysłanie zwrotnej ramki Clear To Send (CTS).
3. Odebranie ramki CTS przez nadawcę upoważnia do transmisji danych. Jednocześnie uruchamiany jest licznik odpowiedzi ACK. Wszystkie inne stacje, które odbiorą CTS (lub RTS) wstrzymują swoje próby transmisji na określany czas nazywany Network Allocation Vector (NAV).
4. Jeżeli nadawca odbierzę ramkę ACK po zakończeniu transmisji danych, kończy procedurę. Jeśli ramka nie dotrze po upływie licznika, to cała procedura zaczyna się od początku.

## Jakie mamy rodzaje IPv6?

## Czym są adresy link local w IPv6 i po czym je poznać?
Są to adresy nadawane wewnątrz sieci (link), zaczynają się od fe80 i mają maskę 10
## Jak działa autokonfiguracja w sieciach IPv6 (z dopytywaniem o szczegóły)?

## Jakie nagłówki w IPv4 lub 6 odpowiadają za bezpieczeństwo?
## Nagłówek IPv6
Nie ma offsetu, bo nadawca zajmuje się wykryciem MTU. Nie ma checksum, bo warstwa niżej sprawdza poprawność danych. Nie ma options i padding.
## Jak wygląda adres loopback w IPv6?
::1
## Wprowadzenie ulepszeń w IPv6 względem IPv4
- więcej adresów
- lepszy routing (brak sprawdzania poprawności danych, brak fragmentacji)
- autokonfiguracja (bez DHCP)
- bezpieczeństwo (authorization header- spójnośc weryfikacja i ESP (encapsulating security payload)- poufnośc szyfrowanie)
- lepsza organizacja nagłówków
- przywrócenie end-to-end connectivity (nie ma NAT, zgodne z ideą IP)
- rozszerzalność (łatwiej wprowadzić nowe elementy)
## Jak wygląda adres IPv6?
Każdy adres ma 128 bitów. Zapis blokami 16-to bitowymi oddielonymi dwukropkami. Można kompresować sąsiadujące pola z zerami (::).
fe08::/10 adresy lokalne
::1 loopback
:: dowolny adres
## Jak można skracać zapis adresu IPv6?
Można kompresować sąsiadujące pola zer za pomocą podwójnego dwukropka ::.
## Protokół NDP
Neighbor Discovery Protocol
- Autokonfiguracja
-- Router wysyła prefix łącza w cyklicznie wysyłanych wiadmościach.
-- Pozostałą część maszyna może wygenerować na podstawie swojego adresu MAC.
- Odnajdywanie dostępnych routerów
- odnajdywanie dostępnych serwerów DNS
- Monitorowanie dostępności innych węzłów na tym samym łączu
### Autokonfiguracja w IPv6
1. Stacja wybiera adres w sieci fe08::/10 na podstawie identyfikatora interfejsu.
2. Stacja wysyła zapytanie w sieć, czy ktoś nie ma takiego adresowego (multicast na wszystkie węzły).
3. Stacja przydziela wybrany adres.
4. Stacja wysyła pytanie o routery (na adres multicastowy).
5. Routery odpowiadają wiadomościa o dostępnych prefiksach.
6. Stacja wybiera po jednym adresie z każdego dostępnego prefiksu.
## Na czym polega tunelowanie?
IPv4 między routerami, a IPv6 w sieci lokalnej. Komputer wysyła pakiet do routera,router opakowauje w pakiet Ipv4 i wysyła dalej. Tunel sprawia,że choć routery dzieli w ogólnosci wiele sieci IPv4, z perspektywy IPv6 dystans pomiędzy nimi jest równy jednemu skokowi. Tunel się przydaje, kiedy nie mamy możliwości ustawienia IPv6 między routerami.
## Czym jest fragmentacja w TCP?
Dzielenie wiadomości na mniejsze fragmenty na potrzeby transmisji.
## Jak rozwiazac problem framentacji?
IPv6 lub doklejanie delimitera