in last 10 minutes
SIK - sieci komputerowe - ćwiczenia
spis treści:Temat A polecenia sieciowe (otwarty 06.10.2024, zamknięty 06.10.2024, sprawo do 13.10.2024)
Temat B gniazda BSD w j. C (otwarty 13.10.2024, zamknięty 13.10.2024, sprawo do 03.11.2024)
Temat C gniazda w innych językach (otwarty 13.10.2024, zamknięty ??, sprawo do ??)
Temat D http, dns, ssl/tls, mail, itp... (otwarty ??)
Temat E eksperymenty z wireshark (otwarty ??)
Temat F ręczna konfig. małej sieci (otwarty ??)
Temat G symulator NS2 (otwarty ??)
Temat H multimedia (otwarty ??)
ostateczny termin przysyłania sprawozdań: ??
Zasady uzyskiwania zaliczenia z ćwiczeń
1. sprawozdania z tematów
treść ćwiczeń jest podzielona na "tematy";
w czasie trwania ćwiczeń piszemy sprawozdanie z wykonania zadań bieżącego tematu
umieszczamy w nim: odp. na pytania, wydruki eksperymentów, kod programów, itp
zwłaszcza wydruki są b. ważne !!!
wydruki mają stanowić dowód, że zdanie zostało wykonane...
...
po oficjalnym zamknięciu tematu należy przysłać mailem sprawozdanie z tego tematu
to: mhanckow@amu.edu.pl, subject: SIK, Temat ?
proszę, aby sprawozdania były zwykłymi plikami tekstowymi ascii (nie word, pdf itp)
proszę nie wysyłać wielu sprawozdań w 1 mailu! (1 sprawozdanie - 1 mail)
...
sprawozdania MUSZĄ mieć następujący format
uwaga na metryczkę xml: przedmiot="SIK", deklarujemy tylko WYKONANE zadania, podliczamy pkt
za każde wykonane zadanie standardowo otrzymujemy 1pkt (chyba, że w opisie podano inaczej)
...
sprawozdania piszemy SAMODZIELNIE !!!
(dotyczy to też robienia zadań, wykonywania eksperymentów, itp)
w przypadku stwierdzenia plagiatu lub innych nieprawidłowości
następuje automatyczne odesłanie na termin poprawkowy !!!
...
*** wyniki sprawozdań ***
2. kolokwium pod koniec semestru;
osoby które wykonały mini-projekt/referat są z niego zwolnione!
moodle/quiz: https://lms.amu.edu.pl/sci/course/view.php?id=123
27.01.2022: gr 11:45 (12:45-13:10), gr 13:45 (14:45-15:10)
3. mini-projekt/referat (aktualna lista projektów, 2021/22 zima)
należy wykonać projekt, przesłać pliki źródłowe, opisy itp mailem,
oraz wygłosić krótki mini-referat na ćwiczeniach (max 15min)
4. ocena końcowa = (ocena sprawozdań)*0.6 + (ocena kolokwium lub prj/ref)*0.4,
zaokrąglone do 3.0, 3.5, 4.0, 4.5, 5.0 (średnia ważona musi być >=3),
ponadto ocena sprawozdań i ocena kolokwium/prj/ref są w skali 2.0-5.0,
ocena sprawozdań musi być>=3.0
Tematyka ćwiczeń
- polecania unix-owe zwiazane z sieciami
- programowanie na gniazdkach BSD w różnych językach (C, Java, C#, Tcl, Python),
w tym także "programowanie zdarzeniowe"
- protokoły w działaniu czyli obserwowanie komunikatów (program wireshark)
- eksperymenty z różnymi protokołami, HTTP, FTP, POP3/IMAP, ...
- kryptografia w sieciach komputerowych: gniazdka SSL, openssl, certyfikaty SSL, anonimizacja TOR
- program do zarządzania siecią scotty
- budowanie małych sieci LAN i ich konfigurowanie (ifconfig, route, iptables)
- symulator sieci komputerowych NS-2,
eksperymenty z konfigurowaniem routerów, prot tcp, jak się bronić przed atakami itp...
- multimedia, multicasting (udp, rtp, strumień audio/video)
Materiały pomocnicze
NAG2 Linux Network Administrators Guide
LPG The Linux Programmer's Guide
Introduction_to_BSD_Sockets, wiele materiałów można znaleźć przez google...
SAG The Linux System Administrator's Guide
linux HOWTOs, linux-owy manual, manual2, manual3
dokumenty RFC: https://tools.ietf.org/html/
wykł01, 01a - wykład/slajdy: sieć fizyczna vs intersieć, adresy węzłów, routing, warstwy prot,
prot HTTP, FTP, SSL, mail-owe, DNS, ...
folder z pomocniczymi plikami, dodatkowymi przykładami itp
materiały o j. Tcl używanym w wielu przykładach
instalacji maszyn wirtualnych VirtualBox + puppy linux, dosemu
książki o sieciach komputerowych:
Kurose, Ross, "Sieci, od szczegółu do ogółu z internetem w tle", (nowa książka)
Comer, "Sieci komputerowe TCP/IP, tom 1", (stara książka)
Temat A - polecenia "sieciowe"
opis poleceń, autor: Marcin Gogolewski
(unixowy manual, manual2)
Zadanie A.0:
Należy wypróbować polecenia z powyższego "opisu" oraz poczytać o nich w manualu/wikipedii,
przekonać się jakie maja opcje (najważniejsze),
zajrzeć do plików konfiguracyjnych w /etc (jeśli to potrzebne),
do sprawozdania wstawić wydruki eksperymentów oraz krótkie opisy poleceń;
dodatkowo zbadaj polecenia: dhcpcd, ntpdate (np. ntpdate ntp.nask.pl)
zadania z "opisu" także należy wykonać (w ramach A.0)
UWAGI:
1. polecenie netcat w trybie serwera wymaga dodatkowo opcji -p: netcat -l -p nr_portu
2. niestety część poleceń wymaga uprawnień root-a, wtedy należy zrobić co się da...
...do czasu, tj do zadania A.1 !
Zadanie A.1:
Utworzyć maszynę wirtualną VBox z puppy linuxem
oraz wewnątrz niej masz. wirt. z dos-em (dosemu)
wg tego opisu instalacji maszyn wirtualnych;
następnie proszę wykonać pod puppy poniższe eksperymenty:
+ uzyskać adres ip dla eth0 w puppy,
(automatyczna konfiguracja eth0, polecenie: dhcpcd eth0)
pokazać za pomocą ping, ze to działa
+ zbadać działanie pliku /etc/hosts
stwórz własną nazwę "jakby domenową" i pokaż, że to działa przez ping
+ uruchomić 5 kopii dosemu,
co na puppy da 5 interfejsów sieciowych tapX,
oraz proszę je uruchomić przez "ifconfig ... up",
pokazać jak wygląda tablica routingowa po tych czynnościach (route -n)
proszę zaobserwować jak się zmienia tablica routingowa
podczas uruchamiania kolejnych tapX...
uwaga: dosemu trzeba doinstalowac do puppiego!
Zadanie A.2:
Do maszyn dosowych dodaj "sieciowe programy dos-owe" z folderu,
następnie skonfiguruj sieć pod puppy, jak i pod dos-em,
powinna być możliwa komunikacja puppy<->dos;
konfiguracja sieci pod dosemu: patrz pliki config?.txt i e?.bat (łatwo się zorientować...)
spójrz też do opisu instalacji maszyn wirtualnych;
jako dowód wykonania zadania wstaw do sprawozdania wydruki z pingowania
w obu kierunkach: puppy->dos i dos->puppy
oraz wydruki z polecen ifconfig i route -n;
na tym etapie pingowanie dos->'inny dos' NIE będzie działać!
uwaga: aby działało pingowanie puppy->dos, na dosemu musi działać jakiś program sieciowy!
Naczelna zasada dotycząca adresów IP:
hosty w tej samej sieci fizycznej mają różne "nr hosta", a ten sam "nr sieci"
różne sieci fiz. mają inny "nr sieci"
adres IPv4 ma 32 bity, maska określa gdzie w nim jest "nr sieci" i "nr hosta"
(dawniej to zależało od tzw. klasy adresu, A/B/C)
Uwaga: środowisko, które tworzymy w zad. A.1/2 pozwala przeprowadzać
niektóre eksperymenty sieciowe (polecenia: ifconfig, route, iptables, ...),
i będzie używane w następnych tematach... zwł. w temacie F
Zadanie A.3:
proszę odp. na pytania:
1. jak odczytać adres IP naszej maszyny (lin, win) ?
2. jakie nazwy (tekstowe) może mieć nasza maszyna (lin),
i gdzie ta nazwa jest widoczna ? (wymienić co najmniej 2)
3. skąd się bierze zawartość pliku /etc/resolv.conf ?
4. co trzeba zrobić, żeby w tabl. routingowej pojawił się wpis o "bliskiej" sieci,
(tzn. takiej sieci fizycznej do której jesteśmy bezpośrednio podłączeni)
Punktacja tematu A:
A.0: przykłady użycia poleceń z opisu 2pkt; zadania 1,1b,2 razem 1.5pkt
A.1: 2pkt
A.2: 2pkt
A.3: 1pkt
Temat B - gniazda BSD w j. C
opis gniazdek BSD w j. C
(materiały pomocnicze o fun. sys. unix-a i o gniazdkach)
zadanie B.1: zbadaj jakie połączenia TCP tworzą:
1) przeglądarka, 2) sftp/ftp, 3) ssh/telnet
przy pomocy polecenia: netstat -A inet -p
potem należy wykonać pozostałe zadania znajdujące się w "opisie" ...
uwaga do zadania 62: dodać eksperyment z "ps -Oppid" pokazujący jak znikają procesy serwerowe,
gdy wyłączamy klientów...
uwaga do zadania 67: dodać prostą ochronę hasłem!!
jeśli tego nie zrobimy to zadanie będzie niebezpieczne!
Rola "portów" w komunikacji sieciowej:
służą do rozróżniania procesów (klientów i serwerów) na tej samej maszynie
sam adres ip tu nie wystarczy, bo maszyna ma zazw. jeden taki adres;
prot TCP: serwer oczekuje na klientów na porcie X (gniazdko pasywne),
rozmawia z klientami przy pomocy gniazdek aktywnych, które są końcami poł. TCP
wykonaj zadanie 45 "cykl procesów"; w zadaniu tym używa się łączy, a nie połączeń gniazdkowych, ale...
łącza unix-owe i połączenia TCP zachowują się identycznie! (patrz rozdz 5 nad z.45)
UWAGI:
1. robimy zdania z "opisu", a NIE z materiałów pomocniczych !!
2. prosze zignorować nagłowek w opisie i traktować ten temat jako "Temat B" !
3. problemy z kompilacją przykładów .cc: używaj g++ zamiast gcc !
ew. można zmienić rozszerzenie z .cc na .c oraz wprowadzić zmiany w kodzie (C++ -> C), patrz sock01.c
4. 11.03.2014, problem na ćwiczeniach ma związek z nieskończoną pętlą
w której wywołuje się funkcję fork()... to tzw "bomba forkowa"
5. Uwaga !: zadanie 62 z opisu może sugerować, że połączenia TCP zachowują
podział ciągu bajtów na komunikaty, co NIE jest prawdą..
w rzeczywistości powinno się ten koniec jakoś oznaczać, np. znakiem \n
6. dla gniazdek datagramowych też można używać fun. connect() i bind() do ustalania
lokalnego i zdalnego adr_ip/portu (nie wspomniano o tym w opisie),
można tez uzywać read()/write() zamiast readfrom()/sendto();
7. docs i/o w j. C; fdopen(...) zamienia desc na FILE*
Punktacja tematu B:
B.1 - 0.5pkt,
zadania z opisu 62,67 za 3pkt, 64 - 2.5pkt, 45 - 3.5pkt,
pozostałe po 1pkt
Temat C - "gniazdka" w innych językach prog.
opis (1) gniazdek w j. Java
proszę zrozumieć przykłady z powyższego opisu oraz je uruchomić...
kolejne przykłady należy potraktować jako zadania i umieścić wydruki w sprawozdaniu;
dodać własne napisy diagnostyczne do przykładów!!
dokumentacja j. Java: Java SE 6, java.net, java.io
do przykładu nr 3 należy dopisać nową/własną funkcjonalnosc (np. dodawanie 2 liczb)!
opis (2) gniazdek w .NET
namespace System.Net.Sockets docs
w opisie (2) jest problem z przykładem 2, patrz tu, można użyć IPAddress.Loopback aby otrzymać localhost/IPv4 !
wskazówka do zadania 1 z opisu (2): przekonfigurować ob. Socket na UDP/dgram oraz użyć metod
Bind() do ustalenia lokalnego adr IP/ nr portu, oraz Connect() do ustalenia zdalnego adr IP/ nr portu!
21.11.2018: proszę użyć Bind() na obu końcach, z innym nr portu, oraz Connect() w obie strony!
opis (3) gniazdek w j. Tcl
w opisie (2) i (3) mamy tzw programowanie zdarzeniowe,
na 1-wątkowym/procesowym serwerze są handlery (procedury) obsługujące przychodzące komunikaty...
4.11.2021: zadania T.2 i T.2a mogą być w innym j. prog niż Tcl, ale muszą być wykonane "zdarzeniowo" !!
zadanie C.1: "implementacja modelu kli/ser nad UDP" (2.5 pkt)
Model kli/ser występuje w gniazdkach strumieniowych, głównie po stronie serwera;
przejawia się on w ten sposób, że serwer akceptuje połączenia od klientów,
posiada gniazdka do rozmawiania z klientami,
oraz ma możliwość zareagowania na zamknięcie połączenia przez klienta;
(czyli serwer ma świadomość istniejących w danej chwili klientów).
Proszę zaimplementować podobny mechanizm przy pomocy gniazd datagramowych.
Można użyć dowolnych narzędzi do obsługi UDP, w dowolnym języku.
Proszę zademonstrować działanie przy pomocy prostego czata tekstowego...
Punktacja tematu C:
opis(1): przykład 3 (z dodaną funk.!!) 1.5pkt, inne przykłady 0.5pkt
opis(2): zadania po 1pkt, przykłady 1 i 2 łącznie 0.5pkt
opis(3): T.2* 3pkt, pozostałe T.* 1pkt
Temat D - podstawowe prot. "nad gniazdkami".
opis (1) prot. HTTP, oraz inne rzeczy
opis (2) bezpiecznych gniazdek SSL/TLS, oraz inne rzeczy
proszę wykonać zadania znajdujące sie w obu opisach...
problemy które się pojawiły w przeszłości:
13.05.2015: poleceniem "openssl x509 -in plik.pem -text" można zobaczyć dane certyfikatu,
który nie posiada części tekstowej/opisowej... w ten sposób można sprawdzić np. czy cert nie jest przeterminowany
30.03.2016: pakiet dns j. Tcl wymaga jawnego podania serwera dns,
gdyż w pliku /etc/resolve.conf znajdują się adr IPv6 (a nie IPv4)
można to zrobić przez: "dns::configure -nameserver adr_IPv4" po "package re dns"
Punktacja tematu D:
opis(1): D.1 1.5pkt, pozostałe 1pkt
opis(2): D.10 3pkt, D.12 2pkt, D.13ab i D.14 1.5pkt, D.16 3.5pkt, pozostałe 1pkt
Temat E - śledzenie protokolów różnych warstw przy pomocy wireshark.
wireshark docs, różne uwagi o tym programie
program ten służy do obserwowania pakietów przepływających przez interfejs siecowy, np. eth0, wlan0
jako nie-root nie mamy możliwości obserwowania interf. sieciowych (ale można to robić pod VBox/puppy)
cześć zadań używa zrzutów z wiresharka, część wymaga uruchomienia wiresharka jako root...
opis (1) - pakiety IP i TCP oraz wstęp do wireshark
opis (2) - analiza prot. Telnet, FTP, DNS, HTTP przy pomocy wiershark (http_sess.pcap do zadania 1 jest w folderze)
opis (3) - analiza prot. FTP, HTTP c.d. (ftp_gnu.pcap do Zadania 1 jest w folderze)
zadania dodatkowe (E.*) - są tu (m.in.) eksperymenty z obserwacją prot. na VBox/puppy...
w sprawozdaniu proszę skomentować przykłady z opisów (jakie zjawiska zaobserwowaliśmy...)
proszę także wykonać zadania znajdujące się w opisach
zadanie 3 z (opis 3) proszę zrobić przy pomocy konsoli Tcl!! (+ drugie połaczenie dla danych)
proszę też wykonać zadania dodatkowe
Punktacja tematu E:
przykłady z opisów - 0.333pkt
zadania z opisów - 0.5pkt
zadanie 3 z opis (3) - 1pkt (o ile jest zrobione w konsoli tcl, z drugim poł. TCP dla danych !!)
zadanie E.1 - 2pkt (to są zadania dodatkowe)
zadanie E.10 - 2pkt
pozostałe zadania E.* - 1.5pkt, za wyjątkiem E.11 za 1pkt
Temat F - projektowanie małych sieci.
Zadania 1
ręczna konfiguracja sieci
linux jako router
polecenia: ifconfig, route, i inne
zarządzanie siecią przy pomocy programu "scotty"
Zadania 2
podsystemem linux-a "netfilter" do tworzeniem zapór i NAT-owania
polecenia: iptables
Punktacja tematu F:
zadania 1:
F.0a, F.0b - po 2.5pkt, F.0c - 4.5pkt, pozostałe po 1pkt
zadania 2:
F.9a, F.9b, F.9c, F.17 - 2.5pkt, pozostałe po 1pkt
Temat G - symulator sieci komputerowych NS-2.
główna strona projektu: http://www.isi.edu/nsnam/ns
NS-2 to symulator (nie emulator) sieci komputerowych...
pracuje się z nim "wsadowo", a wygląda to tak:
1. przygotowuje się skrypt (np. ns01.tcl), który:
+ definiuje topologie sieci (węzły, połączenia, kolejki komunikatów)
+ definiuje "ruch pakietów" w sieci poprzez określenie agentów, aplikacji oraz początkowych zdarzeń;
agent definiuje protokół, np. udp, tcp;
aplikacja to np. ftp, cbr (constant bit rate)
2. uruchamiamy symulację programem ns: ./ns ns01.tcl
+ program ns przeprowadza symulację i tworzy "log" (albo "trace") ze zdarzeniami w pliku ns01.tr
tworzy takze rozszerzony log ns01.nam z animacją/wizualizacją działania sieci...
3. oglądamy log ns01.tr, przetwarzamy go róznymi narzędziami np. programem awk,
oglądamy animację działania sieci przy pomocy ./nam ns01.nam
Zadania i bardziej szczegółowy opis NS-2
Punktacja tematu G:
zadania G.5, G.6, G.11, G.12 - 1.5pkt, pozostałe - 1pkt
Temat H - multimedia w internecie
Multicasting i broadcasting: transmisja do wielu odbiorców (jak w tv/radio).
Antidotum(?) na brak QoS: RTP/RTCP, ...
Zastosowania: telekonferencje (mbone, vic, vat, ...),
Zadania i dalsze szczegóły...
Punktacja tematu H:
zadanie H.2 - 2pkt, H.3 - 3.5pkt, reszta po 1pkt