Zadanie programistyczne nr 3 z Sieci komputerowych



Podobne dokumenty
Zadanie programistyczne nr 2 z Sieci komputerowych

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Technologie internetowe

Pokaz slajdów na stronie internetowej

Podstawy technologii WWW

Laboratorium 3.4.2: Zarządzanie serwerem WWW

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Konfiguracja poczty IMO dla urządzeń mobilnych z systemem ios oraz Android.

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Co to jest NODE.JS? Nowoczesne środowisko programistyczne

Sieci komputerowe. Wykład 7: Warstwa zastosowań: DNS, FTP, HTTP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Instrukcja konfiguracji funkcji skanowania

Konfiguracja poczty IMO w programach Microsoft Outlook oraz Mozilla Thunderbird

Instrukcja obsługi portalu wersja dla aptek. Logowanie do portalu:

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja autoryzowanego użytkownika)

Aplikacje WWW - laboratorium

Tworzenie pliku źródłowego w aplikacji POLTAX2B.

Program dla praktyki lekarskiej

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Przewodnik użytkownika (instrukcja) AutoMagicTest

Przewodnik użytkownika (instrukcja) AutoMagicTest

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

WOJEWÓDZTWO PODKARPACKIE

UNIFON podręcznik użytkownika

Tomasz Greszata - Koszalin

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Kopiowanie plików. 1. Z sieci wewnętrznej PK. System Windows

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

Warsztaty z Sieci komputerowych Lista 7

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

1 Moduł Modbus ASCII/RTU 3

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800.

Udaj się na stronę (lub tymczasowy zapewniający połączenie szyfrowane)

Instrukcja konfigurowania poczty Exchange dla klienta pocztowego użytkowanego poza siecią uczelnianą SGH.

instrukcja INSTALACJI APi_proxy

Systemy internetowe. Wykład 5 Architektura WWW. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)

Wireshark analizator ruchu sieciowego

Sieci komputerowe i bazy danych

IIIIIIIIIIIIIIIMMIMMIII

Dokumentacja SMS przez FTP

Spis treści. 1 Moduł Modbus TCP 4

Skrócona instrukcja konfiguracji skanowania iwysyłania wiadomości

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

Laboratorium nr 4 - Badanie protokołów WWW

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

Moduł Handlowo-Magazynowy Przeprowadzanie inwentaryzacji z użyciem kolektorów danych

Programy LeftHand - Obsługa plików JPK. Wrzesień 2016

Konfiguracja programu MS Outlook 2007 dla poczty w hostingu Sprint Data Center

Opcje Fiery1.3 pomoc (klient)

Jak utworzyć diagram

Obsługa poczty elektronicznej w domenie emeritus.ue.poznan.pl

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Zarządzanie licencjami dla opcji Fiery na komputerze klienta

1. Logowanie się do panelu Adminitracyjnego

Synchronizator plików (SSC) - dokumentacja

Dokumentacja REST API v 3.0. Kraków, 7 marca FreshMail, ul. Fabryczna 20a, Kraków tel , freshmail.

Tutaj znajdziesz Odpowiedź na: Najczęściej Spotykane Problemy Najczęściej zadawane Pytania

Rekrutacja do przedszkoli FORMICO

e-wsparcie Barbara Muszko Aktualizacja Twojej witryny internetowej tak prosta, jak obsługa Worda

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

Podręcznik użytkownika

Sprawozdanie Sieci komputerowe i bazy danych Laboratorium nr 4

Modele danych walidacja widoki zorientowane na model

Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

Wprowadzenie do projektu QualitySpy

SMS Kod Automatyczny

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

INSTRUKCJA OBSŁUGI PANELU WEBMAIL

Wybrane działy Informatyki Stosowanej

Generatory pomocy multimedialnych

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

KARTA KURSU. Administracja serwerami WWW

Dokument zawiera instrukcję samodzielnej Instalacji Microsoft SQL Server 2008 R2 RTM - Express na potrzeby systemu Sz@rk.

Konfiguracja podglądu obrazu z kamery IP / rejestratora BCS przez sieć LAN.

Programowanie w języku Python. Grażyna Koba

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

Podstawy technologii WWW

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Uruchomienie Raspberry Pi

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Kancelaria Prawna.WEB - POMOC

Instrukcja korzystania z systemu poczty NetMail (wersja skrócona)

INSTRUKCJA obsługi certyfikatów

Dostęp do poczty za pomocą przeglądarki internetowej

Instrukcja użytkownika

Shell Card Online usługa fakturowania elektronicznego Podręcznik użytkownika

Instrukcja obsługi serwera FTP v

Problemy techniczne SQL Server

UNIWERSYTET EKONOMICZNY WE WROCŁAWIU. Sprawozdanie. Analizator sieciowy WIRESHARK. Paweł Jarosz Grupa 20 IiE

Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK.

Instrukcja aktywacji tokena w usłudze BPTP

Instrukcja obsługi. Helpdesk. Styczeń 2018

Instrukcja - blogi OK zeszyt Logowanie

Transkrypt:

Zadanie programistyczne nr 3 z Sieci komputerowych 1 Opis zadania Celem tego zadania jest napisanie prostego serwera WWW, wyświetlającego strony z zadanego katalogu. W tym celu wykonaj następujące czynności przygotowawcze. 1. Pobierz plik strony www.tgz zawierający trzy strony WWW i rozpakuj go do wybranego katalogu. 2. Skonfiguruj lokalne rozwiązywanie nazw DNS dopisując do pliku /etc/hosts następujące wpisy: 127.10.10.1 dom1.abc.pl 127.10.10.2 dom2.abc.pl 127.10.10.3 dom3.abc.pl 127.10.10.4 dom4.abc.pl Od tej pory odwołania do powyższych domen będą kierowane do lokalnego komputera. Serwer powinien akceptować dwa parametry podawane w wierszu poleceń: port i katalog. Pierwszy z nich jest numerem portu, na którym serwer będzie oczekiwać na przychodzące połączenia, zaś drugi katalogiem zawierającym strony WWW (np. te pobrane). Program powinien obsługiwać błędne dane wejściowe, typu nieistniejący katalog, zgłaszając odpowiedni komunikat. Chcemy, żeby otwarcie w działającej na tym samym komputerze przeglądarce WWW adresu http://nazwa domeny:port/strona.html spowodowało wyświetlenie zawartości pliku katalog/nazwa domeny/strona.html. 1.1 Implementacja Oczywiście nie trzeba implementować pełnego protokołu HTTP. Twój serwer powinien natomiast obsługiwać żądania GET. Wystarczy obsługiwać pierwszy wiersz takiego zapytania (czyli pole zawierające adres strony), pole Host i pole Connection (patrz niżej). W szczególności nie trzeba obsługiwać warunkowych żądań GET, np. pól If-Modified-Since. Twój serwer powinien odsyłać następujące informacje: kod odpowiedzi, pole Content-Type i pole Content-Length. 1. Zwracane powinny być następujące kody odpowiedzi (w razie potrzeby można zaimplementować też inne zdefiniowane w standardzie HTTP). 200 OK: w przypadku powodzenia; 1

301 Moved Permanently: jeśli przeglądarka chce pobrać obiekt, który jest katalogiem należy przekierować ją do strony index.html, która znajduje się w tym katalogu; 403 Forbidden: jeśli przeglądarka będzie chciała pobrać adres prowadzący do strony spoza danej domeny. 404 Not Found: jeśli przeglądarka będzie chciała pobrać nieistniejącą stronę; 501 Not Implemented: jeśli przeglądarka wyśle inną metodę niż GET lub jeśli wysłane dane są niepoprawne. Również w przypadku komunikatów różnych od 200 Twój serwer powinien wysyłać zawartość html, stanowiącą prosty opis błędu, który wystąpił. Zawartość ta zostanie wyświetlona przez przeglądarkę. 2. Pole Content-Type powinno być ustalane na podstawie rozszerzenia pliku. Poprawnie powinny być obsługiwane pliki txt, html, css, jpg, jpeg, png i pdf. Pozostałe pliki mogą mieć typ application/octet-stream) Twój serwer nie powinien rozłączać się po obsłużeniu pojedyncego zapytania, lecz utrzymywać połączenie z nieaktywnym klientem przez pewien zdefiniowany czas (np. 1 sekundę). Wyjątkiem jest obsługa zapytania, w którego nagłówku znajduje się pole Connection: close. W takim przypadku należy zamknąć połączenie zaraz po obsłużeniu zapytania. W tym samym połączeniu Twój serwer powinien potrafić obsłużyć wiele zapytań (np. o stronę WWW i znajdujące się na niej obrazki). Twój program może, lecz nie musi obsługiwać połączeń od wielu klientów jednocześnie. Pamiętaj, że serwerowi WWW nie wolno wysłać zawartości pliku leżącego poza katalogiem ze stronami WWW danej domeny. Dodatkowo Twój program powinien być odporny na złośliwego użytkownika zdalnego, który wyśle śmieci zamiast poprawnego żądania HTTP. Twój program może wyświetlać komunikaty diagnostyczne (np. informacje o żądaniach HTTP i odpowiedziach), ale powinny być one zwięzłe i przejrzyste. 2 Uwagi techniczne Pliki Swojemu ćwiczeniowcowi należy dostarczyć jeden spakowany plik zawierający katalog z programem. Katalog powinien zawierać: Kod źródłowy w C lub C++, czyli pliki *.c i *.h lub pliki *.cpp i *.h. Każdy plik *.c i *.cpp na początku powinien zawierać w komentarzu imię, nazwisko i numer indeksu autora. Plik Makefile pozwalający na kompilację programu po uruchomieniu make. Ewentualnie plik README. W katalogu tym nie powinno być żadnych innych plików, w szczególności skompilowanego programu, obiektów *.o, czy plików źródłowych nie należących do projektu. Kompilacja Kompilacja i uruchamianie przeprowadzane zostaną w 64-bitowym środowisku Linux. Kompilacja w przypadku C ma wykorzystywać standard ISO C99 z ewentualnymi rozszerzeniami GNU (opcja kompilatora -std=c99 lub -std=gnu99). 2

Kompilacja powinna wykorzystywać opcje -Wall i -W. Podczas kompilacji nie powinny pojawiać się ostrzeżenia. 3 Sposób oceniania programów Poniższe uwagi służą ujednoliceniu uceniania w poszczególnych grupach. Napisane są jako polecenia dla ćwiczeniowców, ale studenci powinni koniecznie się z nimi zapoznać, gdyż będziemy się ściśle trzymać poniższych wytycznych. Programy będą testowane na zajęciach w obecności autora programu. Na początku program uruchamiany jest w różnych warunkach i otrzymuje za te uruchomienia od 0 do 10 punktów. Następnie obliczane są ewentualne punkty karne. Oceniamy z dokładnością do 0,5 punkta. Jeśli ostateczna liczba punktów wyjdzie ujemna wstawiamy zero. (Ostatnia uwaga nie dotyczy przypadków plagiatów lub niesamodzielnych programów). Testowanie: punkty dodatnie Rozpocząć od kompilacji programu. W przypadku programu niekompilującego się, stawiamy 0 punktów, nawet jeśli program będzie ładnie wyglądał. Następnie należy przygotować środowisko, tj. sprawdzić, czy w pliku /etc/hosts są odpowiednie wpisy, pobrać strony strony www.tgz i rozpakować, a następnie zainstalować i uruchomić rozszerzenie LiveHTTPHeaders przeglądarki Firefox. Uruchomić serwer na porcie 8888. Podczas testowania należy każdorazowo sprawdzać, czy wysyłane przez serwer komunikaty są zgodne ze specyfikacją, (np. czy pole Content-Type jest poprawnie ustawiane). 2 pkt. Wejść na stronę http://dom1.abc.pl:8888/. Sprawdzić, czy serwer przekieruje nas za pomocą komunikatu 301 do strony http://dom1.abc.pl/index.html i czy wyświetlana później strona wygląda następująco: Jeśli pobranie zajmuje dłużej niż sekundę należy przydzielić maksymalnie 1 punkt. Jeśli strona nie przypomina powyższego obrazka, nie sprawdzamy dalej. 1 pkt. Kliknąć odnośnik Public key i sprawdzić czy plik tekstowy jest poprawnie wyświetlany. Wrócić na poprzednią stronę. 1 pkt. Kliknąć odnośnik Ipsum!. Serwer powinien przekierować za pomocą 301 do strony http://dom3.abc.pl/index.html i następnie zwrócić komunikat 404. Wrócić na poprzednią stronę. 1 pkt. Kliknąć odnośnik Sieci a następnie jedyny odnośnik na stronie. Wyświetlona powinna zostać strona wyglądająca następująco: 3

1 pkt. Sprawdzić, czy kliknięcie odnośników Kupony deklaracyjne, Wykład organizacyjny, Plik binarny i resolve.c działa poprawnie. W przypadku dwóch pierwszych przeglądarka powinna otworzyć pdf-a (lub poprosić o uruchomienie przeglądarki pdf-ów), plik binarny powinien mieć typ application/octet-stream, zaś w przypadku ostatniego odnośnika powinna się wyświetlić strona WWW. 1 pkt. Sprawdzić, czy kliknięcie przycisku Wyślij spowoduje wyświetlenie komunikatu błędu 501 (ze względu na metodę POST). 1 pkt. Sprawdzić, czy zapytanie o stronę http://dom4.abc.pl:8888/ zwraca komunikat 404 lub 403. 1 pkt. Sprawdzić, czy zapytania o strony http://dom3.abc.pl:8888/../ i http://dom3.abc.pl:8888/../dom1.abc.pl/index.html są poprawnie obsługiwane, tj. nie powodują wyświetlania żądanej strony. Uwaga: te zapytania należy wykonać w trybie wsadowym, np. za pomocą programu nc, bo część przeglądarek usuwa ciąg../ z pola adresu. 1 pkt. Połączyć się z serwerem za pomocą programu telnet i wysłać mu śmieci. Serwer powinien odpowiedzieć komunikatem 501. Sprawdzić, czy potem jest nadal w stanie odpowiadać na żądania. Punkty karne Punkty karne przewidziane są za następujące usterki. do -3 pkt. Zła / nieczytelna struktura programu: wszystko w jednym pliku, brak modularności i podziału na funkcjonalne części, w szczególności mieszanie funkcji interpretujących dane wejściowe z odsyłającymi dane, niekonsekwetne wcięcia, powtórzenia kodu. -2 pkt. Zamykanie połączenia po każdym żądaniu, bez czekania na upłynięcie zadanego czasu (np. 1 sekundy). -1 pkt. Brak sprawdzania poprawności wywołania funkcji systemowych, takich jak write() czy bind(). -1 pkt. Zły plik Makefile lub jego brak: program powinien się kompilować poleceniem make, polecenie make clean powinno czyścić program z tymczasowych obiektów (plików *.o), polecenie make distclean powinno usuwać skompilowane programy i zostawiać tylko pliki źródłowe. -1 pkt. Niewłaściwa kompilacja: nietrzymanie się opcji podanych w zadaniu, ostrzeżenia wypisywane przy kompilacji, kompilacja bezpośrednio do pliku wykonywalnego bez tworzenia obiektów tymczasowych *.o. -1 pkt. Brak poprawności sprawdzania argumentów wywołania programu. 4

(-3/-6 pkt) Kara za wysłanie programu z opóźnieniem: -3 pkt. za opóźnienie do 1 tygodnia, -6 pkt. za opóźnienie do 2 tygodni. Programy wysyłane z większym opóźnieniem nie będą sprawdzane. Marcin Bieńkowski 5