tom000 - Personal Website - Strona główna
decor1 Serwer HTTP decor2

Streszczenie pracy

    Celem niniejszej pracy było stworzenie od postaw wielowątkowego serwera protokołu HTTP w języku Java. Głównym założeniem było utworzenie serwera zgodnego ze specyfikacją HTTP/1.1 oraz z obsługą wcześniejszych wersji tego protokołu. Nie wszystkie funkcjonalności opisane w specyfikacji zostały zaimplementowane, ale zaimplementowano wszystkie te, które były niezbędne do poprawnego działania serwera HTTP, jak i część funkcjonalności oznaczonych w specyfikacji jako opcjonalne.

    W serwerze uwzględniono m.in. metody GET, HEAD, POST, połączenia trwałe potokowane, zapytania warunkowe, kompresję gzip dla zasobów wychodzących (jeżeli klient ją obsługuje), możliwość pobierania tylko wybranego fragmentu zasobu z serwera (partial GET), czy mechanizm uwierzytelniania. Do funkcjonalności serwera dodana została również obsługa wirtualnych hostów (jeden serwer HTTP może obsłużyć wiele witryn internetowych o różnych domenach), oraz obsługa dynamicznego generowania zasobów przez interfejs CGI pozwalając m.in. na obsługę popularnego języka skryptowego PHP.

    Na serwerze został przeprowadzony szereg testów sprawdzających poprawność działania zaimplementowanych funkcjonalności. W tym celu wykorzystane zostały: testy jednostkowe na wybranych klasach, program Imprimatur, oraz własne oprogramowanie swoim działaniem przypominające klienta Telnetu. Programy te zostały wykorzystane do przeprowadzania zautomatyzowanych testów poprawności, działających na zasadzie porównywania otrzymanej od serwera odpowiedzi z odpowiedzą oczekiwaną dla wysłanych do serwera zapytań.

    Na koniec wykonano testy wydajności, w których zawarto również porównanie z innymi ogólnodostępnymi serwerami HTTP, napisanymi w Javie i w C. Na podstawie przeprowadzonych testów wynika, że opisany w pracy serwer HTTP jest niewiele gorszy od innych serwerów HTTP, rozwijanych już od wielu lat.



← Serwer HTTP Serwer HTTP Wstęp →
Copyleft (C) tom000.info 2004-2012. Some rights reserved.