HTTP: Różnice pomiędzy wersjami
m (Dodanie MetaData Description) |
m (cleanup bibliografii i rotten links) |
||
(Nie pokazano 14 wersji utworzonych przez 2 użytkowników) | |||
Linia 1: | Linia 1: | ||
'''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== | ==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. | 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== | ==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. | [[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: | '''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. | ||
* '''ciasteczka''' (ang. "cookies"); | |||
* ukryte parametry (możliwe gdy aktualna strona zawiera formularz); | W celu rozwiązania tego problemu stosuje się najczęściej: | ||
* sesje po stronie serwera; | * '''ciasteczka''' (ang. "cookies"); | ||
* parametry umieszczone w adresie URL; (M. Lis 2013, s. 129-130) | * 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: | Założenia protokołu HTTP: | ||
* niezawodny protokół transportowy | * niezawodny protokół transportowy | ||
* oddzielne sesje dla żądań | * oddzielne sesje dla żądań | ||
* HTTP/1.1: domyślnie wiele żądań w jednej sesji | * HTTP/1.1: domyślnie wiele żądań w jednej sesji | ||
HTTP korzysta standardowo z portu o numerze 80 (TCP/IP). < | HTTP korzysta standardowo z portu o numerze 80 (TCP/IP). | ||
<google>n</google> | |||
==Schemat działania== | ==Schemat działania== | ||
* Żądanie-zawiera rozkaz, adres wskazujący na [[zasób]], numer protokołu i modyfikatory żądania w formacie MIME; | * Żą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; | * Odpowiedź-zawiera status odpowiedzi, wiadomość w formacie MIME; | ||
==Bezpieczeństwo HTTP== | ==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. | '''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 | |||
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== | ==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). | 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; | Protokół HTTP używa do komunikacji następujących poleceń: | ||
* '''HEAD'''- tak jak GET, ale bez pobierania samego dokumentu - jedynie meta informacje; | * '''OPTIONS''' - pobieranie dokumentu. Może być pobraniem warunkowym lub pobraniem części dokumentu; | ||
* '''PUT'''- umieszczenie dokumentu na serwerze pod adresem wskazanym przez URI; | * '''HEAD''' - tak jak GET, ale bez pobierania samego dokumentu - jedynie meta informacje; | ||
* '''POST'''- przesłanie danych do serwera. Adres URI wskazuje na odbiorcę danych ([[program]], bramka do innego protokołu, [[baza danych]]); | * '''PUT''' - umieszczenie dokumentu na serwerze pod adresem wskazanym przez URI; | ||
* '''DELETE'''- usunięcie zasobu z serwera | * '''POST''' - przesłanie danych do serwera. Adres URI wskazuje na odbiorcę danych ([[program]], bramka do innego protokołu, [[baza danych]]); | ||
* '''TRACE'''- wyświetla żądanie przesłane do serwera. Istotne przy korzystaniu z serwerów Proxy; | * '''DELETE''' - usunięcie zasobu z serwera | ||
* '''CONNECT'''- [[dyrektywa]] dla serwerów pośredniczących, których funkcją jest tunelowanie; | * '''TRACE''' - wyświetla żądanie przesłane do serwera. Istotne przy korzystaniu z serwerów Proxy; | ||
* '''PATCH'''- częściowa aktualizacja danych; | * '''CONNECT'''- [[dyrektywa]] dla serwerów pośredniczących, których funkcją jest tunelowanie; | ||
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: | * '''PATCH''' - częściowa aktualizacja danych; | ||
* '''Accept'''- generuje listę honorowanych przez przeglądarkę rodzajów dokumentów; | |||
* '''Accept Language'''- decyduje w jakim języku [[użytkownik]] odczytuje stronę; | 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: | ||
* '''Cache-Control'''- rozstrzyga czy przeglądarka ma możliwość przechowywać podręczne dane; | * '''Accept''' - generuje listę honorowanych przez przeglądarkę rodzajów dokumentów; | ||
* '''Date'''- jego zadaniem jest wyznaczanie daty na serwerze; | * '''Accept Language''' - decyduje w jakim języku [[użytkownik]] odczytuje stronę; | ||
* '''Expires'''- informuje od dacie, po upływie której [[dokument]] straci ważność; | * '''Cache-Control''' - rozstrzyga czy przeglądarka ma możliwość przechowywać podręczne dane; | ||
* '''Location'''- egzekwuje przekierowanie na wyznaczony adres; | * '''Date''' - jego zadaniem jest wyznaczanie daty na serwerze; | ||
* '''Range'''- precyzuje na jaką część pliku oczekuje przeglądarka; | * '''Expires''' - informuje od dacie, po upływie której [[dokument]] straci ważność; | ||
* '''Refresh'''- ustala bezwarunkowe przekierowanie w przeglądarce na żądany adres, po upływie wyznaczonego czasu; | * '''Location''' - egzekwuje przekierowanie na wyznaczony adres; | ||
* '''Server'''- przy użyciu tego nagłówka następuje [[identyfikacja]] serwera i używanego w nim oprogramowania; | * '''Range''' - precyzuje na jaką część pliku oczekuje przeglądarka; | ||
* '''Transfer Encoding'''- informuje o sposobie przesłania zawartości dokumentu przez serwer; | * '''Refresh''' - ustala bezwarunkowe przekierowanie w przeglądarce na żądany adres, po upływie wyznaczonego czasu; | ||
* '''User-[[Agent]]'''- służy do ustalania tożsamości przeglądarki; (A. Hallosi 2013, s. 458-470) | * '''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== | ==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. | 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. | ||
* '''1XX'''- kody informacyjne; | I tak: | ||
* '''2XX'''- kody powodzenia; | * '''1XX''' - kody informacyjne; | ||
* '''3XX'''- kody przekierowań; | * '''2XX''' - kody powodzenia; | ||
* '''4XX'''- kody błedu aplikacji klienta; | * '''3XX''' - kody przekierowań; | ||
* '''5XX'''- kody błędu serwera; | * '''4XX''' - kody błedu aplikacji klienta; | ||
Ponownie, ze względu na ogromną ilość kodów, wyjaśnionych zostanie szczegółowo kilka z nich. Przykładowo: | * '''5XX''' - kody błędu serwera; | ||
* '''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; | Ponownie, ze względu na ogromną ilość kodów, wyjaśnionych zostanie szczegółowo kilka z nich. Przykładowo: | ||
* '''201'''- zawiera komunikat zwrotny, na temat zapisania dokumentu na serwerze; | * '''100''' - oznacza żądanie o kolejne wysyłanie zapytania, kontynuację działań; | ||
* '''205'''- serwer udzielił odpowiedzi na zapytanie i klient powinien powrócić do starego wyglądu dokumentu | * '''110''' - pojawia się w momencie, gdy przekroczony został czas połączenia, a serwer nie dawał [[zbyt]] długo odpowiedzi; | ||
* '''300'''- informuje, że istnieje kilka sposobów obsługi wystosowanego zapytania; | * '''201''' - zawiera komunikat zwrotny, na temat zapisania dokumentu na serwerze; | ||
* '''306'''- komunikuje, że przesłany kod aktualnie nie istnieje, ponieważ należy do starszej wersji programu; | * '''205''' - serwer udzielił odpowiedzi na zapytanie i klient powinien powrócić do starego wyglądu dokumentu | ||
* '''413'''- oznacza, że całkowita długość komunikatu, przesłana do serwera jest dla niego zbyt długa; | * '''300''' - informuje, że istnieje kilka sposobów obsługi wystosowanego zapytania; | ||
* '''417'''- żądana [[wartość]] nie może być oddana; | * '''306''' - komunikuje, że przesłany kod aktualnie nie istnieje, ponieważ należy do starszej wersji programu; | ||
* '''501'''- serwer nie posiada funkcjonalności, wymienionej w żądaniu; | * '''413''' - oznacza, że całkowita długość komunikatu, przesłana do serwera jest dla niego zbyt długa; | ||
* '''505'''- serwer nie potrafi lub nie ma możliwości obsługi wytypowanej przez klienta wersji HTTP; (A. Hallosi 2013, s. 470-482) | * '''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== | ==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) | 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== | ||
'''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ść. | '''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. | [[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. | ||
Co [[HTML]] umożliwia? | |||
HTML działa w oparciu o protokół HTTP, który transmituje strony internetowe. | |||
Co [[HTML]] umożliwia? | |||
HTML pozwala: | HTML pozwala: | ||
* Publikować dokumenty zawierające nagłówki, tekst, tabele, listy, zdjęcia, formularze, itp. | * 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). | * 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. | * 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. | * 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 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 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 kolejnych specyfikacjach wprowadzano zmiany, których zadaniem było poprawić przenośność dokumentów HTML między różnymi platformami i przeglądarkami. | ||
W wersji 4.01, wprowadzonej w 1999 roku, poprawiono błędy i wprowadzono drobne zmiany | |||
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 | |||
{{infobox5|list1={{i5link|a=[[ASP.NET]]}} — {{i5link|a=[[Spoofing]]}} — {{i5link|a=[[POP3]]}} — {{i5link|a=[[SMTP]]}} — {{i5link|a=[[Phishing]]}} — {{i5link|a=[[Automatyczna indeksacja]]}} — {{i5link|a=[[Aktualizacja oprogramowania]]}} — {{i5link|a=[[Autentykacja]]}} — {{i5link|a=[[JavaScript]]}} }} | |||
==Bibliografia== | ==Bibliografia== | ||
* Charkiewicz A. (1995) | <noautolinks> | ||
* Cupała W. (1995) | * Charkiewicz A. (1995), ''Podręcznik użytkownika Internetu nie tylko dla studentów'', Wydawnictwo Translator, Warszawa | ||
* Hollosi A. (2013) | * Cupała W. (1995), ''Internet: wirtualny przewodnik dla początkujących hackerów'', Wydawnictwo Croma, Wrocław | ||
* Kubiak T. (2007) | * Hollosi A. (2013), ''Integrating PHP with Windows'', Helion, Gliwice | ||
* Lis M. (2013) | * Kubiak T. (2007), ''[http://rg.ptip.org.pl/index.php/rg/article/viewFile/RG2007-6-KubikIwaniak/1081 Technologie interoperacyjne w projekcie GEOPORTAL na przykładzie użycia usługi WMS]'', Roczniki Geomatematyki - Annals of Geomatics, nr 6 | ||
* Margasiński I. (2002) | * Lis M. (2013), ''Tworzenie stron www. Praktyczny kurs. Wydanie II'', Helion, Gliwice | ||
* Peicevic A. (2017) | * Margasiński I. (2002), ''Zapewnienie anonimowości przy przeglądaniu stron WWW'', Proceedings of KST 2002 nr 1 | ||
* Wit B. (2008) | * 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 | |||
</noautolinks> | |||
{{a|Mateusz Woźniak, Agnieszka Gałka}} | {{a|Mateusz Woźniak, Agnieszka Gałka}} |
Aktualna wersja na dzień 00:19, 22 gru 2023
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
HTTP — artykuły polecane |
ASP.NET — Spoofing — POP3 — SMTP — Phishing — Automatyczna indeksacja — Aktualizacja oprogramowania — Autentykacja — JavaScript |
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