Wykład jest wstępem do szerokiej tematyki sieci komputerowych. Przedstawione będą na nim podstawowe zasady działania sieci komputerowych, ze szczególnym uwzględnieniem sieci opartych na protokole TCP/IP, oraz przegląd zastosowań sieciowych spotykanych w Internecie. Nacisk położony będzie na przedstawienie słuchaczowi mechanizmów, protokołów i algorytmicznych podstaw stojących za problemami komunikacji w sieciach, a także na praktyczne wykorzystanie
elementów tej wiedzy.
**Omówione zostaną następujące zagadnienia:**
1. Podstawowe pojęcia, protokoły, model warstwowy.
2. Warstwa sieciowa: adresowanie CIDR, routing, protokoły IP i ICMP, tworzenie tablic routingu oparte o stan łączy i wektory odległości, systemy autonomiczne, budowa routera, NAT.
3. Warstwa łącza danych i fizyczna: Ethernet, sieci bezprzewodowe, dostęp do współdzielonego nośnika (CSMA/CD, CSMA/CA).
4. Warstwa transportowa: niezawodny transport, mechanizmy okna przesuwnego, kontrola przepływu, kontrola przeciążenia, protokoły UDP i TCP.
5. Warstwa zastosowań: DNS, HTTP, poczta elektroniczna, sieci P2P, serwery proxy, współpraca z NAT.
6. Programowanie gniazd: gniazda surowe, datagramowe i strumieniowe.
7. Podstawy kodowania i kryptografii: kody detekcyjne (CRC) i korekcyjne, szyfrowanie, podpisy cyfrowe, RSA, SSL, PGP.
8. Podstawy bezpieczeństwa sieci.
**Wymagania wstępne:**
Zrealizowane przedmioty:
* Algebra lub Matematyka dyskretna
* Systemy operacyjne lub Systemy komputerowe
Niezbędne kompetencje:
* Znajomość grup i pierścieni.
* Znajomość tematyki procesów, sygnałów i komunikacji międzyprocesowej.
* Obsługa wiersza poleceń w systemie Linux, umiejętność pisania prostych skyptów w powłoce.
* Dobra umiejętność programowania w C lub C++.