Główne zagadnienia na egzamin z programowania sieciowego

Poniższa lista zawiera najważniejsze z rzeczy przerabianych w trakcie semestru. Dwa, albo nawet wszystkie trzy pytania na egzaminie będą dotyczyć właśnie tych zagadnień.

  1. Abstrakcyjny model koncepcyjny ISO / OSI. Funkcjonalność zapewniana przez poszczególne warstwy modelu.

  2. Rzeczywisty, czterowarstwowy model używany w Internecie (warstwy łącza danych, internetowa, transportowa i aplikacyjna). Przykładowe standardy i protokoły odpowiadające tym warstwom. Przykładowe adresy z każdego z tych czterech poziomów.

  3. Typy protokołów transportowych: strumieniowe kontra datagramowe, godne zaufania (ang. reliable) vs te bez mechanizmów weryfikujących dotarcie danych do odbiorcy, zachowujące kolejność przesyłanych danych i te, które tego nie gwarantują.

  4. Uniksowy model operacji wejścia-wyjścia. Pojęcie deskryptora pliku. Podstawowe funkcje jądra operujące na deskryptorach: open, read, write, close.

  5. Gniazdka sieciowe POSIX, czyli tzw. gniazdka BSD.

    1. Pojęcie dziedziny komunikacyjnej, znanej też jako rodzina adresowa. Typy struktur służących do reprezentowania adresów z poszczególnych dziedzin. Rola typu struct sockaddr.

    2. Typy gniazdek: datagramowe, strumieniowe, inne. Własności dwóch podstawowych typów. Przykłady protokołów odpowiadających tym typom.

    3. Korzystanie z gniazdek w trybie bezpołączeniowym (tak zazwyczaj używa się gniazdek datagramowych). Sposób działania operacji socket, sendto, recvfrom, close oraz bind (konieczna po stronie serwera).

    4. Korzystanie z gniazdek w trybie połączeniowym (tak używa się gniazdek strumieniowych). Kliencka sekwencja operacji socket, connect, read/write, close oraz serwerowa socket, bind, listen, accept, read/write, close.

  6. Serwery iteracyjne i współbieżne. Mechanizmy uniksowych systemów operacyjnych używane przy implementowaniu współbieżności.

  7. URL-e. Protokół HTTP. Zasoby i metody. Struktura zapytań i odpowiedzi HTTP. Standard CGI pozwalający serwerowi / demonowi WWW przekazywać zapytania HTTP do zewnętrznego programu.

  8. Protokół SSL / TLS.

    1. Podstawowe pojęcia z kryptografii: szyfr symetryczny, szyfr asymetryczny z kluczem publicznym, funkcja skrótu, sygnatura, certyfikat. Model zaufania oparty o powszechnie znane urzędy certyfikacyjne.

    2. Informacje zawarte w certyfikatach serwerów SSL / TLS. Czynności wykonywane podczas nawiązywania połączenia między klientem a serwerem (w ogólnych zarysach).

    3. Rodzaje ataków, przed którymi chroni SSL / TLS.

  9. Pojęcie serializacji danych. Tekstowe oraz binarne formaty serializacji. Reprezentatywne przykłady: JSON, XML-owy format używany w XML-RPC, Sun XDR, DER, standardowa serializacja Javy. Cechy tych formatów oraz możliwości przez nie oferowane (w ogólnych zarysach).

  10. Model zdalnego wywołania procedury / metody. Reprezentatywne przykłady: Sun RPC, XML-RPC, JSON-RPC, Java RMI. Sposób pisania programów korzystających z tych podejść (w ogólnych zarysach). Sposób adresowania procedur / metod, które chcemy wywołać.

  11. Architektura REST, jej zalecenia określające sposób implementowania usług sieciowych.