Przeczytaj
Kiedy wpiszemy w przeglądarce adres strony internetowej, tak zwany adres URL (ang. Uniform Resource Locator), i wciśniemy klawisz ENTER na klawiaturze, nasza przeglądarka nawiązuje połączenie z serwerem, na którym dana strona jest przechowywana.
Po nawiązaniu połączenia z serwerem, przeglądarka, czyli klient usługi WWW, żąda od niego określonego zasobu – najczęściej pliku zawierającego treść strony. Jeśli serwer posiada żądany zasób, przesyła jego zawartość do przeglądarki, która interpretuje kod języka HTML, w którym strona została napisana i wyświetla użytkownikowi jej zawartość.

Oczywiście, tak to wygląda w dużym skrócie i uproszczeniu. W rzeczywistości proces ten jest nieco bardziej złożony. Weźmy przykładowy adres internetowy:
http://www.alamakota.pl/kotleon.html
Po jego wpisaniu i zatwierdzeniu klawiszem ENTER, przeglądarka w pierwszej kolejności sprawdza rodzaj protokołu (zazwyczaj jest to HTTP lub HTTPS), a następnie nazwę domeny internetowej (domena internetowa to inaczej adres strony), a dopiero na końcu jest brana pod uwagę nazwa konkretnego pliku zwierającego jej treść.

Po sprawdzeniu wskazanych elementów przeglądarka odwołuje się do serwera DNSDNS w celu zamiany nazwy mnemonicznej (domenowej), czyli www.alamakota.pl na adres IP serwera, na którym ta strona jest przechowywana.

Znając już ten adres IP serwera, przeglądarka naszego urządzenia wysyła żądanie do serwera WWW o udostępnienie pliku kotleon.html znajdującego się w domenie alamakota.pl. Jeśli dany serwer posiada zasób, w odpowiedzi przesyła stosowny komunikat wraz z zawartością żądanego pliku. Zawartość tego pliku, czyli kod HTML, jest przez przeglądarkę interpretowany i wyświetlany jako strona WWW.

Protokół HTTP standardowo działa na porcie 80 i definiuje kilka podstawowych rodzajów wiadomości, czyli żądań, za pomocą których klient komunikuje się z serwerem WWW. Do najważniejszych z nich należą żądania:
GET
oraz
POST
Metoda GET
GET służy do żądania od serwera strony WWW. Nagłówek komunikatu/metody GET wygląda mniej więcej tak:
GET /kotleon.html HTTP/1.1
Oprócz nazwy żądanego zasobu zawiera również stosowaną wersję protokołu. Gdy serwer taką wiadomość/takie żądanie odbierze, odpowiada klientowi stosownym komunikatem:
HTTP/1.1 200 OK /kotleon.html
oraz żądanym zasobem (plikiem kotleon.html).
W żądaniu GET są zazwyczaj zawarte również informacje o nazwie domeny internetowej (np. wp.pl), przeglądarki, z jakiej zostało wysłane żądanie, akceptowane przez przeglądarkę typy plików, preferowany język strony czy kodowanie znaków.
W odpowiedzi serwera znajdują się takie informacje, jak: czas serwera, nazwa aplikacji serwera (np. APACHE) czy czas wygaśnięcia dokumentu.
Jeśli z jakiś przyczyn serwer nie może odesłać zasobu, odsyła komunikat błędu, np. 404, który informuje, że żądany zasób nie został znaleziony, lub 403 informujący o zabronionym dostępie do zasobów.
Wybrane kody komunikatów i błędów są widoczne w poniższych tabelach.
Kody informacyjne:
KOD | OPIS | ZNACZENIE |
---|---|---|
100 | Continue | Prośba o dalsze wysyłanie zapytania |
101 | Switching Protocols | Zmiana protokołu |
110 | Connection Timed Out | Przekroczono czas połączenia. Serwer zbyt długo nie odpowiada. |
111 | Connection refused | Serwer odrzucił połączenie |
Kody powodzenia:
KOD | OPIS | ZNACZENIE |
---|---|---|
200 | OK | Odesłano zawartość żądanego dokumentu |
201 | Created | Wysłany dokument został zapisany na serwerze |
202 | Accepted | Zapytanie zostało przyjęte do obsłużenia, lecz jego zrealizowanie jeszcze się nie skończyło |
204 | No content | Brak zawartości – serwer zrealizował zapytanie klienta i nie zwraca żadnej treści |
205 | Reset Content | Serwer zrealizował zapytanie i klient powinien przywrócić pierwotny wygląd dokumentu |
Kody błędów klienta:
KOD | OPIS | ZNACZENIE |
---|---|---|
400 | Bad Request | Żądanie nie może być obsłużone przez serwer z powodu błędu klienta |
401 | Unauthorized | Żądanie zasobu, który wymaga uwierzytelnienia |
403 | Forbidden | Serwer zrozumiał zapytanie, lecz konfiguracja bezpieczeństwa zabrania mu zwrócić żądany zasób |
404 | Not Found | Serwer nie odnalazł zasobu według podanego URL |
405 | Method Not Allowed | Metoda zawarta w żądaniu nie jest dozwolona dla wskazanego zasobu |
406 | Not Acceptable | Zażądany zasób nie jest w stanie zwrócić odpowiedzi mogącej być obsłużonej przez klienta |
407 | Proxy Authentication Required | Wymagane uwierzytelnienie do serwera pośredniczącego |
408 | Request Timeout | Koniec czasu oczekiwania na żądanie – klient nie przesłał zapytania do serwera w określonym czasie |
409 | Conflict | Żądanie nie może być zrealizowane, ponieważ występuje konflikt z obecnym statusem zasobu |
411 | Length required | Wymagana długość – serwer odmawia zrealizowania zapytania ze względu na brak nagłówka Content‑Length w zapytaniu |
415 | Unsupported Media Type | Nieznany sposób żądania – serwer odmawia przyjęcia zapytania, ponieważ jego składnia jest niezrozumiała dla serwera |
Kody błędów serwera:
KOD | OPIS | ZNACZENIE |
---|---|---|
500 | Internal Server Error | Wewnętrzny błąd serwera – serwer napotkał problemy, które uniemożliwiły zrealizowanie żądania |
501 | Not Implemented | Serwer nie dysponuje funkcjonalnością wymaganą w zapytaniu |
502 | Bad Gateway | Błąd bramy – serwer – spełniający funkcję bramy lub pośrednika – otrzymał niepoprawną odpowiedź od serwera nadrzędnego i nie jest w stanie zrealizować żądania klienta |
503 | Service Unavailable | Usługa niedostępna – serwer nie jest w stanie w danej chwili zrealizować zapytania klienta ze względu na przeciążenie |
504 | Gateway Timeout | Przekroczony czas bramy – serwer – spełniający funkcję bramy lub pośrednika – nie otrzymał w ustalonym czasie odpowiedzi od wskazanego serwera HTTP, FTP, LDAP itp. lub serwer DNS jest potrzebny do obsłużenia zapytania |
505 | HTTP Version Not Supported | Nieobsługiwana wersja HTTP – serwer nie obsługuje bądź odmawia obsługi wskazanej przez klienta wersji HTTP |
Metoda POST
Kolejny typ komunikatu/metody to POST. Jego funkcja jest odmienna od funkcji metody GET, ponieważ GET prosi o przesłanie danych z serwera, a POST służy do przesyłania danych na serwer.
Kiedy storna internetowa zawiera jakiś formularz wysyłający dane na serwer, np. formularz rejestracji, formularz danych logowania czy też formularz zakupów internetowych, to dane, które w nim umieścimy, są wysyłane do serwera właśnie za pomocą metody POST.

HTTPS czy szyfrowany protokół HTTP
Protokół HTTP, mimo że bardzo popularny, chyba najczęściej stosowany ze wszystkich protokołów warstwy aplikacji, nie jest całkowicie bezpieczny. Metoda POST przesyła dane do serwera jawnym tekstem, a to znaczy, że dane, które do serwera przesyłamy, nie są w żaden sposób chronione, nie są zaszyfrowane. Kiedy uda się przechwycić transmisję między klientem a serwerem, można odczytać informacje, jakie chcemy przesłać na serwer. Zazwyczaj dane, które do serwera przesyłamy są danymi, którymi nie chcemy dzielić się z innymi (loginy, hasła do usług) i wolelibyśmy, aby nie zostały one przez nikogo przechwycone.

Korzystanie z nieszyfrowanej komunikacji w przypadku stron, do których się logujemy (fora internetowe, serwisy społecznościowe, poczta elektroniczna), jest bardzo niebezpieczne. Z tego powodu obecnie większość stron WWW, na których istnieje możliwość przesłania na serwer jakieś informacji, czyli np. na tych stronach, gdzie jest konieczne logowanie, jest stosowany protokół HTTPS, szyfrujący komunikację między klientem a serwerem. Również na stronach internetowych, gdzie nie jest wymagane podawanie jakichkolwiek danych coraz częściej można spotkać szyfrowaną wersję protokołu HTTP.
Jeśli posiadasz stronę w internecie, warto zadbać, aby korzystała ona z protokołu HTTPS, a nie „zwykłego” HTTP. Po pierwsze: będzie to informacja dla użytkowników twojej strony, że dbasz o ich dane, a po drugie: najpopularniejsza wyszukiwarka internetowa wyżej pozycjonuje strony, które stosują protokół HTTPS. Jak skonfigurować taki protokół, dowiesz się od firmy, która hostuje twoją stronę WWW.
Weryfikacja, czy dana strona WWW stosuje szyfrowanie komunikacji między klientem a serwerem, jest bardzo prosta. Wystarczy, że adres strony zaczyna się od HTTPS, a przed adresem strony jest widoczny symbol kłódki:

Protokół HTTPS to w praktyce połączenie protokołu HTTP z technikami szyfrującymi zwanymi SSLSSL (ang. Secure Socket Layer). Obecnie do szyfrowania komunikacji stosuje się specjalną odmianę tych technik zwaną TLS (ang. Transport Layer Security), a dokładniej jej wersję oznaczoną numerem 1.2 lub 1.3.
TLS stosuje certyfikaty poświadczające wiarygodność serwera WWW, z którym łączy się klient. Certyfikat to elektroniczny dokument, który poświadcza, że serwer jest bezpieczny i jest tym, za kogo się podaje. Jeśli chcesz, aby twoja strona oferowała szyfrowany kanał komunikacji, musisz taki certyfikat posiadać. Niektóre z nich są bezpłatne (Let's Encrypt), ale większość z nich wymaga opłaty, która musi być odnawiana co jakiś czas. Możemy wyróżnić trzy główne rodzaje certyfikatów SSL:
Certyfikat DV (ang. Domain Validation) – potwierdza autentyczność domeny (adresu internetowego).
Certyfikat OV (ang. Organization Validation) – potwierdza autentyczność domeny oraz jej właściciela.
Certyfikat EV (ang. Extended Validation) – rozszerzona wersja certyfikatu, która potwierdza autentyczność domeny, jej właściciela, a także wyświetla zielony pasek w polu adresu przeglądarki. Ten rodzaj certyfikacji stosują zazwyczaj duże instytucje, np. banki.
Słownik
serwer posiadający bazę danych adresów internetowych (domenowych) i odpowiadających im adresów IP serwerów, na których te strony są przechowywane
zbiór algorytmów i technik zapewniających szyfrowany kanał komunikacji