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.
**Program:**
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), współpraca z warstwą sieci.
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:**
* Algebra lub Matematyka dyskretna
* Systemy operacyjne (procesy, sygnały, IPC)
* Programowanie w C/C++
* Obsługa Linuksa (wiersz poleceń, proste skrypty)
**Literatura:**
* James F. Kurose, Keith W. Ross, Sieci komputerowe. Od ogółu do szczegółu z Internetem w tle, wydanie V, Helion, 2010.
* Andrew S. Tanenbaum, Sieci komputerowe, wydanie V, Helion, 2012.
* W. Richard Stevens, Unix programowanie usług sieciowych, tom 1, WNT 2000.