Sieci komputerowe - lab
Zajęcia odbywają się we czwartki od 16:15 do 17:45 w labie nr 5.
Linki i materiały:
Druga część zadania zaliczeniowego: implementacja
- Termin: koniec sesji letniej
- protokoły do wyboru, uwagi z plików *.uwagi są obowiązującą częścią protokołów, protokół pana Gołębiowskiego już nie jest dostępny
- Rozwiązania przysłane po terminie będą przyjmowane, ale z odpowiednio wysoką karą
- możliwe języki implementacji: C++, Java, Python, C#, można negocjować inne
-
- obawiam się, że projekt jest być zbyt duży, by dał się napisać w C przez osoby znające ten język tylko z PW i SO. Jeśli ktoś zna C od podszewki, to możemy negocjować użycie tego języka, ale pozostałych zachęcam do użycia Javy
- do 31.05 należy przysłać mi deklarację: projekt i język implementacji
- musi być możliwe odpalenie projektu z linii poleceń pod Linuksem
- jeśli kilka osób wybierze ten sam projekt, implementacje mają być wzajmenie kompatybilne
- należy dostarczyć skrypty testujące różne scenariusze użycia
- jeśli znajdę błędy w rozwiązaniach przysłanych przed terminem, będzie można je poprawić bez negatywnych konsekwencji
- wcale nie trzeba mieć dwóch komputerów do pisania i testowania programu we własnym zakresie - wystarczy np. dodać parametr linii poleceń mówiący, którego numeru portu należy używać i przekazać do dwóch instancji programu różne wartości
- proszę możliwie szybko uporać się z zadaniem rozgrewkowym, inaczej mogą być problemy z zaliczeniem przedmiotu
- na pytania odpowiadam mailem
Zadanie zaliczeniowe:
- treść: /home/inf/PUBLIC/SIK/zadanie/ oraz tutaj
- wersja na students może się lekko różnić, jeśli zapomnę uaktualnić kopię dostępną przez www, wtedy proszę dać mi znać
- jeśli komuś UTF8 brzydko wyświetla się w przeglądarce, przygotowałem wersje w ISO 8859-2 (pliki *.latin2.txt)
- protokoły zasugerowane do lektury nie są idealne - proszę podchodzić do nich krytycznie i nie kopiować złych rozwiązań
- termin oddawania projektów: 19.04.2007!!!
Kilka ogólnych wymagań odnośnie specyfikacji:
- komplentość (programista musi być w stanie napisać działającą implementację)
- poprawność techniczna (protokół ma mieć sens i być dobrze dopasowany do postawionych wymagań)
- jasność (implementacje napisane przez różnych programistów na podstawie specyfikacji muszą być kompatybilne)
- zwięzłość (czytanie specyfikacji ma zabrać programistom oraz prowadzącemu jak najmniej czasu)
Wymienione wyżej wymagania wszystkie są bardzo ważne, choć nieco wyższą wagę przykładać będę
do tych umieszczonych wyżej na liście.
Zajęcia 10 i 11 (17.05 i 24.05.2007):
Zadanie na rozgrzewkę:
Napisać uproszczoną wersję warstwy transportowej zadania zaliczenowego.
Należy używać tego samego języka, co i w implementacji pełnej wersji.
Konkretnie: należy napisać programy A i B. A działa jako serwer słuchający na porcie
53459 TCP na pewnym komputerze. B łączy się z A na tym porcie i otrzymuje w odpowiedzi
jedną liczbę x. Połączenie TCP zostaje w tym momencie zamknięte, zaś B łączy się z A
na porcie x UDP. A i B mają sobie następnie przesyłać przez UDP komunikaty wczytywane z klawiatury
za pomocą.
A ma otrzymać wartość x prosząc system operacyjny o przydzielenie dowolnego wolnego portu UDP.
A i B mogą być jednym programem (odróżniamy je wtedy jakimś parametrem linii poleceń),
co pozwala tylko raz napisać komunikację po UDP, która w obu przypadkach powinna wyglądać praktycznie tak samo.
Ładne, ogólne napisanie tego zadania pozwoli zrozumieć, jak mniej-więcej ma działać komunikacja na najniższym poziomie w pełnej wersji zadania.
Zadania tego nie trzeba, choć można, mi oddawać.
Zajęcia 7 (12.04.2007):
XML-RPC.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/07.XML-RPC/ oraz tutaj.
Zajęcia 6 (29.03.2007):
MPI
Informacji na temat MPI jest w sieci wręcz przytłaczająco dużo.
Warto zacząć jest od tego tutoriala.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/06.MPI/ oraz tutaj.
Zajęcia 5 (22.03.2007):
Serwery oparte na select.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/05.gniazda_TCP-serwer_z_select/ oraz tutaj.
Zajęcia 4 (15.03.2007):
Nauczymy się, jak napisać przyzwoity program serwera, który obsługuje wielu klientów (naprawdę dobry serwer, wykorzystujący funkcję select, będzie za tydzień).
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/04.gniazda_TCP-serwer_z_wieloma_klientami/ oraz tutaj.
Zajęcia 3 (08.03.2007):
Zajmować będziemy się transmisją danych z wykorzystaniem protokołu UDP.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/03.gniazda_UDP/ oraz tutaj.
Zajęcia 2 (01.03.2007):
Tematem tych zajęć są gniazda (sockety) i jak pisać programy w architekturze klient-serwer z ich wykorzystaniem.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/02.gniazda_TCP/ oraz tutaj.
Zajęcia 1 (22.02.2007):
Na pierwszych zajęciach poznajemy kilka podstawowych poleceń związanych z korzystaniem z sieci pod Linuksem: ifconfig, arp, route, ping(*), tcpdump(*), tracepath/traceroute(*)/mtr(*), host, dig, netstat, telnet.
Polecenia opatrzone gwiazdką wymagają uprawnień roota.
Scenariusz zajęć dostępny jest w katalogu /home/inf/PUBLIC/SIK/01.zabawy_w_labie_z_uprawnieniami_roota/ oraz tutaj.
Strona główna