Wstęp do HTTP

Wstęp do HTTP

Post ten jest początkiem serii opisującej podstawę funkcjonowania obecnie istniejącej sieci.

HTTP (HyperText Transfer Protocol) jest protokołem definiującym jakie wiadomości i w jaki sposób są przekazywane poprzez sieć. Używany jest on głównie do komunikacji typu klient-serwer. W ogólnym ujęciu polega to na tym, że klient wysyła do serwera żądanie wykonania zdefiniowanej akcji na zasobie. Zasobem może być strona www oraz rekord w bazie danych. W ten sposób możemy prosić o pobranie strony lub modyfikację zestawu danych. Typowy schemat komunikacji pokazany jest na poniższym rysunku.

client-server

Przykładowo, gdy klient chce otrzymać zasób z określonego adresu url, otwiera połączenie do serwera. Następnie wysyła żądanie opisujące m.in. w jaki sposób chce otrzymać dane i czeka na odpowiedź ze strony serwera. HTTP jest protokołem bezstanowym. Oznacza to, że pomiędzy kolejnymi żądaniami (requestami) nie są przechowywane żadne informacje. Po otrzymaniu odpowiedzi połączenie z serwerem może być bez problemu zamknięte.

Zasoby HTTP są jednoznacznie identyfikowane w sieci za pomocą adresów URL

urlW najprostszym przypadku żądanie składa się z typu operacji (GET, POST, itp.) i adresu URL. Dodatkowo mogą się w nim znajdować pomocnicze nagłówki, które pozwalają sterować parametrami i zachowaniem requestów. Serwer po przetworzeniu zapytania odsyła do klienta wiadomość zawierającą kod statusu przetworzenia żądania oraz treść odpowiedzi. Także i tutaj mogą być przesyłane dodatkowe informacje za pomocą nagłówków.

Podstawowym przykładem operacji HTTP w sieci web jest żądanie otworzenia strony w przeglądarce. Pyta ona o konkretny adres, otrzymując w odpowiedzi kod strony HTML. Analizując go, może automatycznie wysłać do serwera kolejne zapytania pobierające dodatkowe zasoby: obrazy, skrypty, style, itp. W pokazanym poniżej przykładzie widać, że po pobraniu treści strony index.html, przeglądarka będzie potrzebowała pobrać dodatkowo pliki jquery-2.1.4.js oraz image.png.

http-related

Te zależne zasoby są również pobierane za pomocą protokołu HTTP. Różnią się one typem obiektów, które chcemy pobrać i oczywiście adresem.

request-flow

Kolejnym zastosowaniem protokołu jest operowanie na zasobach REST, czyli zasobach na których operowanie wzoruje się na działaniu zapytań HTTP.