HTTP - wiadomości

Protokół HTTP jest oparty na modelu architektury klient-serwer i bezstanowym protokole żądania / odpowiedzi, który działa na zasadzie wymiany komunikatów poprzez niezawodne połączenie TCP / IP.

„Klient” HTTP to program (przeglądarka internetowa lub inny klient), który nawiązuje połączenie z serwerem w celu wysłania jednego lub więcej komunikatów żądania HTTP. „Serwer” HTTP to program (zazwyczaj serwer WWW, taki jak Apache Web Server lub Internet Information Services IIS itp.), Który akceptuje połączenia w celu obsługi żądań HTTP poprzez wysyłanie komunikatów odpowiedzi HTTP.

HTTP wykorzystuje Uniform Resource Identifier (URI) do identyfikacji danego zasobu i ustanowienia połączenia. Po nawiązaniu połączeniaHTTP messagessą przekazywane w formacie podobnym do używanego przez pocztę internetową [RFC5322] i Multipurpose Internet Mail Extensions (MIME) [RFC2045]. Te wiadomości obejmująrequests od klienta do serwera i responses z serwera do klienta, który będzie miał następujący format:

HTTP-message   = <Request> | <Response> ; HTTP/1.1 messages

Żądania HTTP i odpowiedzi HTTP używają ogólnego formatu wiadomości RFC 822 do przesyłania wymaganych danych. Ten ogólny format wiadomości składa się z następujących czterech elementów.

  • A Start-line
  • Zero or more header fields followed by CRLF
  • An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields
  • Optionally a message-body

W kolejnych sekcjach wyjaśnimy każdą z jednostek używanych w wiadomości HTTP.

Wiadomość Start-Line

Linia początkowa będzie miała następującą składnię ogólną:

start-line = Request-Line | Status-Line

Omówimy Request-Line i Status-Line podczas omawiania odpowiednio komunikatów HTTP Request i HTTP Response. Na razie zobaczmy przykłady linii startowej w przypadku zapytania i odpowiedzi:

GET /hello.htm HTTP/1.1     (This is Request-Line sent by the client)

HTTP/1.1 200 OK             (This is Status-Line sent by the server)

Pola nagłówka

Pola nagłówka HTTP zawierają wymagane informacje o żądaniu lub odpowiedzi albo o obiekcie wysłanym w treści wiadomości. Istnieją cztery typy nagłówków wiadomości HTTP:

  • General-header: Te pola nagłówka mają ogólne zastosowanie zarówno do komunikatów z żądaniami, jak i odpowiedziami.

  • Request-header: Te pola nagłówka mają zastosowanie tylko do komunikatów z żądaniami.

  • Response-header: Te pola nagłówka mają zastosowanie tylko do komunikatów odpowiedzi.

  • Entity-header: Te pola nagłówka definiują metainformacje o treści jednostki lub, jeśli nie ma treści, o zasobie zidentyfikowanym przez żądanie.

Wszystkie wyżej wymienione nagłówki mają ten sam ogólny format, a każde pole nagłówka składa się z nazwy, po której następuje dwukropek (:) i wartość pola w następujący sposób:

message-header = field-name ":" [ field-value ]

Poniżej znajdują się przykłady różnych pól nagłówka:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

Treść wiadomości

Część treści wiadomości jest opcjonalna dla wiadomości HTTP, ale jeśli jest dostępna, jest używana do przenoszenia treści jednostki skojarzonej z żądaniem lub odpowiedzią. Jeśli skojarzona jest treść jednostki, to zwykleContent-Type i Content-Length linie nagłówków określają charakter powiązanej treści.

Treść wiadomości to ta, która zawiera rzeczywiste dane żądania HTTP (w tym dane formularza i przesłane itp.) Oraz dane odpowiedzi HTTP z serwera (w tym pliki, obrazy itp.). Poniżej przedstawiono prostą zawartość treści wiadomości:

<html>
   <body>
   
      <h1>Hello, World!</h1>
   
   </body>
</html>

W następnych dwóch rozdziałach zostaną wykorzystane opisane powyżej koncepcje w celu przygotowania żądań HTTP i odpowiedzi HTTP.