HTTP

Z Encyklopedia Zarządzania

HTTP-(z języka angielskiego "Hypertext Transfer Protocol") - protokół służący do przesyłania hipertekstowych dokumentów sieci WWW (z języka angielskiego- "World Wide Web"). Z wykorzystaniem protokołu HTTP wysyła się żądania, dotyczące udostępnienia dokumentów WWW, informacji z formularzy czy powiadomień o kliknięciu w odnośnik (M. Lis 2013, s. 128)

TL;DR

Artykuł opisuje protokół HTTP, jego charakterystykę, bezpieczeństwo, komendy i odpowiedzi, serwery HTTP oraz język programowania HTML. HTTP umożliwia przesyłanie dokumentów sieci WWW, jest bezstanowy i wykorzystuje port 80. W celu zwiększenia bezpieczeństwa stosuje się HTTPS. Protokół korzysta z różnych komend i nagłówków do komunikacji z serwerem. Odpowiedzi HTTP mają różne kody oznaczające rodzaj odpowiedzi. Serwer HTTP Apache jest jednym z najpopularniejszych. Język HTML pozwala publikować dokumenty, pobierać informacje z Internetu, projektować formularze i umieszczać różne aplikacje w dokumentach. Wersje HTML wprowadzały różne zmiany i ulepszenia.

Charakterystyka

Użyteczność protokołu polega na umożliwianiu, w znormalizowany sposób, wzajemnego komunikowania się komputerów. Protokół HTTP uściśla, jaką formę mają żądania klienta (przeglądarki www), dotyczące danych, jak również postać odpowiedzi serwera na postawione żądania.

Protokół HTTP zalicza się do protokołów bezstanowych (ang. "stateless"), co w praktyce oznacza, że nie przechowuje on żadnych informacji o wcześniejszych transakcjach z klientem (po zakończeniu transakcji, dane ulegają usunięciu). Pozwala to znacząco ograniczyć obciążenie serwera, stanowi jednak problem w momencie, gdy konieczne jest zapamiętanie określonego stanu użytkownika, który łączył się już wcześniej z serwerem.

W celu rozwiązania tego problemu stosuje się najczęściej:

  • ciasteczka (ang. "cookies");
  • ukryte parametry (możliwe gdy aktualna strona zawiera formularz);
  • sesje po stronie serwera;
  • parametry umieszczone w adresie URL; (M. Lis 2013, s. 129-130)

Założenia protokołu HTTP:

  • niezawodny protokół transportowy
  • oddzielne sesje dla żądań
  • HTTP/1.1: domyślnie wiele żądań w jednej sesji

HTTP korzysta standardowo z portu o numerze 80 (TCP/IP).

Schemat działania

  • Żądanie-zawiera rozkaz, adres wskazujący na zasób, numer protokołu i modyfikatory żądania w formacie MIME;
  • Odpowiedź-zawiera status odpowiedzi, wiadomość w formacie MIME;

Bezpieczeństwo HTTP

Protokół HTTP zaliczany jest do protokołów bardzo prostych, co często wiąże się z pewnymi niebezpieczeństwami. Dane, które przekazuje się protokołem HTTP są jawne, co oznacza że istnieją narzędzia i sposoby, dzięki którym można te dane przechwycić. Jest to szczególnie niebezpieczne w przypadku danych poufnych (np. różnego rodzaju hasła, kody, tajemnice), które mogą wpaść w niepożądane ręce.

Aby poprawić bezpieczeństwo, opracowana została szyfrowana wersja protokołu, nosząca nazwę HTTPS (Secure HTTP). Dane przesyłane przez HTTPS są szyfrowane przez system SSL (Secure Socket Layer). W związku z tym zmianie ulega również schemat działania protokołu. Od teraz, klient łączący się z serwerem otrzymuje certyfikat, zawierający dane do identyfikacji i klucz szyfrujący. W tym momencie ma miejsce transmisja danych zaszyfrowanych kluczem. Odszyfrowanie następuje dopiero, gdy trafią one do odbiorcy. Jednakże i ta wersja protokołu posiada pewną lukę. Za moment krytyczny w komunikacji poprzez HTTPS, uznaje się okres wysyłania przez serwer klucza, który może zostać przechwycony przez niepowołane osoby (I. Margasiński 2002, s. 2-4)

Komendy protokołu HTTP

Aby komunikować się z serwerem protokół HTTP posługuje się zapytaniami i nagłówkami. Między poleceniami a zapytaniami występuje ta różnica, że nagłówki przesyłają swoje instrukcje do serwera (np. polecenie pobrania dokumentu), a nagłówki załączają pomocnicze komunikaty (np. informacje o przeglądarce klienta).

Protokół HTTP używa do komunikacji następujących poleceń:

  • OPTIONS - pobieranie dokumentu. Może być pobraniem warunkowym lub pobraniem części dokumentu;
  • HEAD - tak jak GET, ale bez pobierania samego dokumentu - jedynie meta informacje;
  • PUT - umieszczenie dokumentu na serwerze pod adresem wskazanym przez URI;
  • POST - przesłanie danych do serwera. Adres URI wskazuje na odbiorcę danych (program, bramka do innego protokołu, baza danych);
  • DELETE - usunięcie zasobu z serwera
  • TRACE - wyświetla żądanie przesłane do serwera. Istotne przy korzystaniu z serwerów Proxy;
  • CONNECT- dyrektywa dla serwerów pośredniczących, których funkcją jest tunelowanie;
  • PATCH - częściowa aktualizacja danych;

Aby klient mógł "rozmawiać" z serwerem, musi posługiwać się nagłówkami HTTP. Ze względu na ich mnogość przedstawionych zostanie tylko kilka przykładów:

  • Accept - generuje listę honorowanych przez przeglądarkę rodzajów dokumentów;
  • Accept Language - decyduje w jakim języku użytkownik odczytuje stronę;
  • Cache-Control - rozstrzyga czy przeglądarka ma możliwość przechowywać podręczne dane;
  • Date - jego zadaniem jest wyznaczanie daty na serwerze;
  • Expires - informuje od dacie, po upływie której dokument straci ważność;
  • Location - egzekwuje przekierowanie na wyznaczony adres;
  • Range - precyzuje na jaką część pliku oczekuje przeglądarka;
  • Refresh - ustala bezwarunkowe przekierowanie w przeglądarce na żądany adres, po upływie wyznaczonego czasu;
  • Server - przy użyciu tego nagłówka następuje identyfikacja serwera i używanego w nim oprogramowania;
  • Transfer Encoding - informuje o sposobie przesłania zawartości dokumentu przez serwer;
  • User-Agent - służy do ustalania tożsamości przeglądarki; (A. Hallosi 2013, s. 458-470)

Odpowiedzi HTTP

Poza treścią wymaganego dokumentu, serwer HTTP odsyła również komunikaty, które składają się z 3 cyfr. Pierwsza z nich określa rodzaj kodu odpowiedzi. I tak:

  • 1XX - kody informacyjne;
  • 2XX - kody powodzenia;
  • 3XX - kody przekierowań;
  • 4XX - kody błedu aplikacji klienta;
  • 5XX - kody błędu serwera;

Ponownie, ze względu na ogromną ilość kodów, wyjaśnionych zostanie szczegółowo kilka z nich. Przykładowo:

  • 100 - oznacza żądanie o kolejne wysyłanie zapytania, kontynuację działań;
  • 110 - pojawia się w momencie, gdy przekroczony został czas połączenia, a serwer nie dawał zbyt długo odpowiedzi;
  • 201 - zawiera komunikat zwrotny, na temat zapisania dokumentu na serwerze;
  • 205 - serwer udzielił odpowiedzi na zapytanie i klient powinien powrócić do starego wyglądu dokumentu
  • 300 - informuje, że istnieje kilka sposobów obsługi wystosowanego zapytania;
  • 306 - komunikuje, że przesłany kod aktualnie nie istnieje, ponieważ należy do starszej wersji programu;
  • 413 - oznacza, że całkowita długość komunikatu, przesłana do serwera jest dla niego zbyt długa;
  • 417- żądana wartość nie może być oddana;
  • 501 - serwer nie posiada funkcjonalności, wymienionej w żądaniu;
  • 505 - serwer nie potrafi lub nie ma możliwości obsługi wytypowanej przez klienta wersji HTTP; (A. Hallosi 2013, s. 470-482)

Serwery HTTP

Przykładem serwera HTTP jest Apache, będący jednym z najpopularniejszych na świecie serwerów HTTP. Szacuje się, że Apache obsługuje 65% wszystkich serwerów stron internetowych. Charakteryzuje się wielowątkowością (obsługuje wielu użytkowników naraz), skalowalnością (możliwością powiększenia) i bezpieczeństwem. Serwer posiada również wiele możliwości konfiguracji, których dokonuje w pliku "httpd.conf". (A. Peicevic 2017, s. 11)

Język programowania HTML

Język programowania HTML został opracowany w 1980 roku, jego twórcą jest Tim Berners-Lee. Język stworzony został jako narzędzie ułatwiające komunikowanie się naukowców w sieci szybko zyskał ogromną popularność.

HTML- (ang. "HyperText Merkup Language") pozwala publikować w Internecie dokumenty zawierające nagłówki, tekst, tabele, listy, zdjęcia, formularze, pobierać za pośrednictwem "połączeń hipertekstowych" informacje z Internetu, projektować formularze oraz umieszczać w dokumentach arkusze kalkulacyjne, klipy wideo oraz inne aplikacje.

HTML działa w oparciu o protokół HTTP, który transmituje strony internetowe.

Co HTML umożliwia?

HTML pozwala:

  • Publikować dokumenty zawierające nagłówki, tekst, tabele, listy, zdjęcia, formularze, itp.
  • Pobierać za pośrednictwem "połączeń hipertekstowych" informacje z Internetu (mówiąc w skrócie polega to na klikaniu "połączeń", co uaktywnia pobieranie danych).
  • Projektować formularze pozwalające na korzystanie ze zdalnych usług, takich jak na przykład wyszukiwanie informacji, dokonywanie rezerwacji oraz zamawianie produktów.
  • Umieszczać w dokumentach arkusze kalkulacyjne, klipy wideo oraz inne aplikacje.

W 1995 roku zatwierdzono specyfikację HTML 2, natomiast specyfikacja HTML 3, także z tego roku, nie doczekała się rekomendacji.

W 1996 roku powstała specyfikacja HTML 3.2, która uzyskała rekomendację w 1997 roku.

W kolejnych specyfikacjach wprowadzano zmiany, których zadaniem było poprawić przenośność dokumentów HTML między różnymi platformami i przeglądarkami.

Wersja 4 (z 1998 r.) rozszerzyła możliwości języka HTML o arkusze stylów, skrypty, ramki i osadzanie obiektów. Poprawiono obsługę tekstu, rozbudowano opcje tabel i formularzy wprowadzając ułatwienia dla osób niepełnosprawnych.

W wersji 4.01, wprowadzonej w 1999 roku, poprawiono błędy i wprowadzono drobne zmiany


HTTPartykuły polecane
ASP.NETSpoofingPOP3SMTPPhishingAutomatyczna indeksacjaAktualizacja oprogramowaniaAutentykacjaJavaScript

Bibliografia

  • Charkiewicz A. (1995), Podręcznik użytkownika Internetu nie tylko dla studentów, Wydawnictwo Translator, Warszawa
  • Cupała W. (1995), Internet: wirtualny przewodnik dla początkujących hackerów, Wydawnictwo Croma, Wrocław
  • Hollosi A. (2013), Integrating PHP with Windows, Helion, Gliwice
  • Kubiak T. (2007), Technologie interoperacyjne w projekcie GEOPORTAL na przykładzie użycia usługi WMS, Roczniki Geomatematyki - Annals of Geomatics, nr 6
  • Lis M. (2013), Tworzenie stron www. Praktyczny kurs. Wydanie II, Helion, Gliwice
  • Margasiński I. (2002), Zapewnienie anonimowości przy przeglądaniu stron WWW, Proceedings of KST 2002 nr 1
  • Peicevic A. (2017), Apache HTTP Server Introduction, CreateSpace Independent Publishing Platform, Londyn
  • Wit B. (2008), Electronic commerce - budowanie konkurencyjności przedsiębiorstwa w internecie, Wydawnictwo Politechniki Lubelskiej, Lublin


Autor: Mateusz Woźniak, Agnieszka Gałka