Dark Mode

Przejdz do zawartosci

HTTP

Z Wikipedii, wolnej encyklopedii
Zapytanie HTTP w terminalu protokolu Telnet w systemie Linux Ubuntu.

HTTP (ang. Hypertext Transfer Protocol) - protokol stworzony przez Tima Bernersa-Lee na potrzeby komunikacji miedzy klientem a serwerem w sieci WWW (ang. World Wide Web). Najnowsza specyfikacje HTTP stanowi dokument RFC 2616 |. Przy pomocy protokolu klienci HTTP komunikuja sie z serwerami, zamawiajac pliki skladajace sie na strony internetowe oraz dostarczaja niezbedne do tego informacje, np. tresci wprowadzane w formularzach.

Okresla on forme zadan klienta (tj. np. przegladarki www) dotyczacych danych oraz forme odpowiedzi serwera na te zadania. W oryginalnych implementacjach byl protokolem bezstanowym (ang. stateless), bowiem nie zachowywal zadnych informacji o poprzednich transakcjach z klientem. Pozwalalo to znacznie zmniejszyc obciazenie serwera, jednak jest klopotliwe w sytuacji, gdy np. trzeba zapamietac konkretny stan dla uzytkownika, ktory wczesniej laczyl sie juz z serwerem. Jeszcze w latach 90. XX wieku firma Netscape wprowadzila poczatkowo nieformalne, a nastepnie ustandaryzowane rozszerzenie znane jako ciasteczka. Inne podejscia to m.in. sesje po stronie serwera, ukryte parametry - gdy aktualna strona zawiera formularz - oraz parametry umieszczone w URL-u (jak np. /index.php?userid=3).

Serwery obslugujace HTTP standardowo nasluchuja na porcie TCP numer 80[1].

W 2015 opublikowana zostala kolejna wersja protokolu HTTP/2, a w 2022 kolejna HTTP/3.

Metody HTTP

[edytuj | edytuj kod]
  1. GET - pobranie zasobu wskazanego przez URI, moze miec postac warunkowa, jesli w naglowku wystepuja pola warunkowe takie jak ,,If-Modified-Since"
  2. HEAD - pobiera informacje o zasobie, stosowane do sprawdzania dostepnosci zasobu
  3. PUT - przyjecie danych przesylanych od klienta do serwera, najczesciej, aby zaktualizowac wartosc encji
  4. POST - przyjecie danych przesylanych od klienta do serwera (np. wysylanie zawartosci formularzy)
  5. DELETE - zadanie usuniecia zasobu, wlaczone dla uprawnionych uzytkownikow
  6. OPTIONS - informacje o opcjach i wymaganiach istniejacych w kanale komunikacyjnym
  7. TRACE - diagnostyka, analiza kanalu komunikacyjnego
  8. CONNECT - zadanie przeznaczone dla serwerow posredniczacych pelniacych funkcje tunelowania
  9. PATCH - aktualizacja czesci danych

Metoda CONNECT nie jest czescia standardu HTTP/1.1, jednak jest powszechnie implementowana na podstawie dokumentu internet-draft wygaslego w 1999 roku[2].

Typowe zapytanie HTTP

[edytuj | edytuj kod]
  1. GET / HTTP/1.1 (prosba o zwrocenie dokumentu o URI / zgodnie z protokolem HTTP 1.1)
  2. Host: example.com (wymagany w HTTP 1.1 naglowek Host sluzacy do rozpoznania hosta, jesli serwer na jednym IP obsluguje kilka VirtualHostow)
  3. User-Agent: Mozilla/5.0 (X11; U; Linux i686; pl; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7 (nazwa aplikacji klienckiej)
  4. Accept: text/xml,application/xml, application/xhtml+xml, text/html;q=0.9,text/plain;q=0.8 (akceptowane (badz nieakceptowane dla q=0) przez klienta typy plikow)
  5. Accept-Language: pl,en-us;q=0.7,en;q=0.3 (preferowany jezyk strony - naglowek przydatny przy Language negotiation)
  6. Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 (preferowane kodowanie znakow, patrz strona kodowa)
  7. Keep-Alive: 300 (czas, jaki klient chce zarezerwowac do nastepnego zapytania w przypadku polaczenia Keep-Alive)
  8. Connection: keep-alive (chec nawiazania polaczenia stalego Keep-Alive z serwerem HTTP/1.0)
  9. znak powrotu karetki i nowej linii (CRLF)

HTTP/1.1 dopuszcza wyslanie kilku zadan naraz (pipelining). HTTP/1.0 zaklada jedno zadanie i jedna odpowiedz.

Odpowiedz serwera WWW

[edytuj | edytuj kod]
  1. HTTP/1.1 200 OK (kod odpowiedzi HTTP - zaakceptowanie i zwrocenie zawartosci)
  2. Date: Thu, 20 Dec 2001 12:04:30 GMT (czas serwera)
  3. Server: Apache/2.0.50 (Unix) DAV/2 (opis aplikacji serwera)
  4. Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73; path=/ (nakazanie klientowi zapisania ciasteczka)
  5. Expires: Thu, 19 Nov 1981 08:52:00 GMT (czas wygasniecia zawartosci zwroconego dokumentu. Data w przeszlosci zabrania umieszczenie dokumentu w pamieci podrecznej. Jest to stara metoda zastapiona przez Cache-Control)
  6. Cache-Control: no-store, no-cache, must-revalidate (no-store zabrania przechowywania dokumentu na dysku, nawet gdy nie jest to pamiec podreczna. must-revalidate nakazuje bezwzglednie stosowac sie do wytycznych i sprawdzic swiezosc dokumentu za kazdym razem)
  7. Keep-Alive: timeout=15, max=100
  8. Connection: Keep-Alive (akceptacja polaczenia Keep-Alive dla klientow HTTP/1.0)
  9. Transfer-Encoding: chunked (typ kodowania zawartosci stosowanej przez serwer)
  10. Content-Type: application/xhtml+xml; charset=utf-8 (typ MIME i strona kodowa zwroconego dokumentu)
  11. znak powrotu karetki i nowej linii (CRLF)
  12. tutaj zawartosc dokumentu

HTTP do obslugi polaczen Keep - Alive wymaga, aby odpowiedz od serwera miala znana dlugosc (przez podanie Content-Length lub uzycie Transfer-Encoding: chunked). W przeciwnym wypadku koniec odpowiedzi sygnalizuje zerwanie polaczenia i Keep-Alive nie moze dzialac.

Naglowek Keep-Alive jest rozszerzeniem HTTP/1.0. W HTTP/1.1 ten naglowek nie jest potrzebny, gdyz polaczenia Keep-Alive sa domyslne (zachowanie zmienia Connection: close).

Zobacz tez

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. | R.R. Fielding R.R. i inni, Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, IETF, czerwiec 1999, DOI: 10.17487/RFC2616, ISSN 2070-1721, OCLC 943595667 (ang.).
  2. | Ari Luotonen: Tunneling TCP based protocols through Web proxy servers. 1998. [dostep 2009-07-29]. [zarchiwizowane z tego adresu (2009-08-11)].

Linki zewnetrzne

[edytuj | edytuj kod]
Warstwa aplikacji
(liczby oznaczaja numery portow)
Warstwa transportowa
Warstwa Internetu
Warstwa dostepu do sieci