Konfiguracja serwera WWW wbudowanego w systemie Windows XP
Wbudowany w system Windows XP serwer WWW (IIS 5.1) nie obsługuje protokołu IPv6.
Serwer sieci Web
Serwer sieci web (ang. web server) to oprogramowanie, którego podstawową funkcjonalnością jest dostarczanie witryn internetowych do klienta za pośrednictwem sieci. Usługa ta świadczona jest na żądanie klienta za pomocą protokołu HTTP.
HTTP (ang. Hypertext Transfer Protocol) jest podstawowym protokołem służącym do komunikacji w sieci. Działa on w trybie żądanie-odpowiedź (ang. request-response) w modelu klient-serwer, oznacza to, że na każde żądanie ze strony klienta serwer generuje odpowiedź, a cała komunikacja odbywa się synchronicznie. Protokół HTTP określa komunikaty, które klient może przesłać do serwera oraz odpowiedzi, których może się spodziewać. Protokół HTTP jest zdefiniowany w RFC 2616 i obowiązuje klienta oraz serwer.
Najpowszechniej używanym sposobem komunikacji klienta z serwerem sieci web jest zestawianie połaczenia TCP na porcie 80. Użycie protokołu TCP gwarantuje nam niezawodność, dzięki czemu komunikujące się strony nie potrzebują martwić się o gubienie pakietów.
Pierwszą udokumentowaną wersją protokołu HTTP była wersja 0.9, zaś dopiero wesja 1.0 została zdefiniowana w dokumencie RFC 1945 w 1996 roku.
Protokół HTTP 1.0 umożliwia realizację tylko jednego żądania w ramach jednego połączenia. Rozwiązanie to na początku wydawało się być wystarczające, ponieważ przesyłane strony w tamtych czasach były przeważnie typowo tekstowe. Bardzo szybki rozwój Internetu spowodował, że strony były coraz bardziej urozmaicane w różnego rodzaju dodatkowe elementy multimedialne, co spowodowało, że używanie protokołu HTTP 1.0 stało się coraz bardziej nieefektywne. W roku 1999 w dokumencie RFC 2616 został zdefiniowany protokół HTTP 1.1, w którym to zastosowano mechanizm połączenia stałego (ang. Persistent connection). Rozwiązanie to pozwoliło na obsługę wielu żądań w czasie trwania jednego połączenia.
Każde żądanie HTTP rozpoczęte jest od metody, która określa przedmiot żądania.
W dokumencie RFC 2616 opisującym protokół HTTP 1.1 zostały zdefiniowane następujące metody:
· GET - żądanie udostępnienia zasobu wskazanego przez URI
· HEAD - żądanie udostępnienia informacji o zasobie
· PUT - żądanie zapamiętania przesyłanych danych w postaci pliku na serwerze
· POST - żądanie przyjecia danych przesyłanych przez klienta
· DELETE - żądanie usunięcia zasobu
· TRACE - żądanie odesłania otrzymanego żądanie – służy do diagnostyki
· CONNECT - żądanie przeznaczone dla serwerów proxy pełniących funkcję tunelowania
· OPTIONS - żadanie przesłania informacji o opcjach i właściwościach w danym kanale komunikacyjnym
Po linii zawierającej metodę mogą występować linie zawierające dodatkowe informacje związane z żądaniem m.in. takie jak:
· User-Agent – zawiera informacje o przeglądarce i systemie operacyjnym klienta
· Accept – zawiera informacje o typach stron obługiwanych przez klienta
· Accept-Charset – zawiera zestaw znaków akceptowalnych przez klienta
· Accept-Encoding – zawiera kodowanie akceptowalne przez klienta
· Accept-Language – zawiera wersję językową systemu klienta
· Host – zawiera nazwę DNS serwera
· Authorization – zawiera listę uwierzytelnień serwera
· Cookie – zawiera istniejące ciasteczka (ang. Cookies) wysyłane do serwera
· Date – zawiera datę oraz czas wysłania komunikatu
· Upgrade – zawiera protokół, na który nadawca żąda przełączenia
Pierwsza linia odpowiedzi serwera rozpoczyna się od wersji protokołu, zaś po niej występuje trzycyfrowy kod statusu oraz tekstowe wytłumaczenie tego kodu. Kody statusu dzielą się na pięć grup, a pierwsza cyfra kodu statusu określa przynależność do danej grupy.
Tabela 1. Omówienie kodów statusu protokołu HTTP
Grupa |
Znaczenie |
Przykłady kodów statusowych |
1xx |
Informacja |
100 – żądanie klienta zostało zaakceptowane przez serwer |
2xx |
Powodzenie |
200 – żądanie zostało pomyślnie zrealizowane |
3xx |
Przeadresowanie |
301 – żądany zasób znajduje się pod innym adresem |
304 – kopia strony w pamięci cache jest nadal aktualna |
||
4xx |
Błąd klienta |
403 – dostęp do witryny jest zabroniony |
404 – żądana strona nie istnieje |
||
5xx |
Błąd serwera |
500 - wewnętrzny błąd serwera |
503 – spróbój później |
Po linii zawierającej kod statusu mogą występować linie zawierające dodatkowe informacje związane z odpowiedzią m.in. Takie jak:
· Server – zawiera informacje o serwerze
· Content-Encoding – zawiera sposób kodowania zawartości
· Content-Language – zawiera wersję językową strony
· Content-Length – zawiera długość strony (w bajtach)
· Content Type – zawiera typ MIME zawartości strony
· Last-Modified – zawiera datę oraz czas ostatniej modyfikacji strony
· Location – zawiera polecenie przekierowujące klienta do innego adresu
· Accept-Ranges – zawiera informację o możliwości udostępniania fragmentow stron
· Set-Cookie – zawiera ciastko (ang. Cookie) zapiswywane przez serwer u klienta
· Date – zawiera datę i czas wysłania komunikatu
· Upgrade – zawiera protokół, na który nadawca żąda przełączenia
Komunikacja przy użyciu protokołu HTTP pomiędzy klientem, a serwerem odbywa się poprzez przesyłanie komunikatów tekstowych w postaci kodów ASCII. Rozwiązanie to nie nadaje się do przesyłania poufnych informacji, dlatego też w celu zapewnienia bezpiecznego przesyłania danych w komunikacji klient-serwer powstał protokół HTTPS (Secure HTTP). Protokół ten tak naprawdę jest nadal protokołem HTTP, z tą różnicą że bazuje on na usługach warstwy SSL
(ang. Secure Socket Layer). SSL zapewnia wzajemne uwierzytelnienie klienta oraz serwer, szyfrowaną komunikację oraz ochronę integralności danych. Serwer sieci web do obsługi żądań HTTPS standardowo używa portu 443.
Opracowano na podstawie: Andrew S. Tanenbaum "Sieci Komuterowe" Wydawnictwo Helion, 2004; s. 576-581