HTTP Samouczek
Pierwsze kroki z HTTP
Szukaj…
Uwagi
Protokół HTTP ( Hypertext Transfer Protocol ) używa modelu klient-żądanie / serwer-odpowiedź. HTTP jest protokołem bezstanowym, co oznacza, że nie wymaga od serwera zachowania informacji ani statusu o każdym użytkowniku przez czas trwania wielu żądań. Jednak ze względu na wydajność i w celu uniknięcia problemów z opóźnieniem połączenia TCP można zastosować takie techniki, jak połączenia trwałe, równoległe lub potokowe.
Wersje
Wersja | Uwaga (y) | Przewidywana data wydania |
---|---|---|
HTTP / 0.9 | „Jak zaimplementowano” | 01.01.1991 |
HTTP / 1.0 | Pierwsza wersja HTTP / 1.0, ostatnia wersja, która nie przekształciła się w RFC | 1992-01-01 |
HTTP / 1.0 r1 | Pierwszy oficjalny RFC dla HTTP | 1996-05-01 |
HTTP / 1.1 | Ulepszenia w obsłudze połączeń, obsługa hostów wirtualnych opartych na nazwach | 01.01.1997 |
HTTP / 1.1 r1 | Oczyszczono jednoznaczne użycie słowa kluczowego, naprawiono możliwe problemy z ramkami wiadomości | 1999-06-01 |
HTTP / 1.1 r2 | Poważny remont | 01.06.2014 |
HTTP / 2 | Pierwsza specyfikacja dla HTTP / 2 | 2015-05-01 |
Żądania i odpowiedzi HTTP
HTTP opisuje, w jaki sposób klient HTTP, taki jak przeglądarka internetowa, wysyła żądanie HTTP przez sieć do serwera HTTP, który następnie wysyła odpowiedź HTTP z powrotem do klienta.
Żądanie HTTP jest zwykle albo żądaniem zasobu online, takiego jak strona internetowa lub obraz, ale może również zawierać dodatkowe informacje, takie jak dane wprowadzone w formularzu. Odpowiedź HTTP jest zwykle reprezentacją zasobu online, takiego jak strona internetowa lub obraz.
HTTP / 1.0
HTTP / 1.0 został opisany w RFC 1945 .
HTTP / 1.0 nie ma niektórych funkcji, które są obecnie de facto wymagane w Internecie, takich jak nagłówek Host
dla hostów wirtualnych.
Jednak klienci i serwery HTTP czasami deklarują, że używają protokołu HTTP / 1.0, jeśli mają niepełną implementację protokołu HTTP / 1.1 (np. Bez szyfrowania przesyłania potokowego lub potokowania) lub zgodność jest uważana za ważniejszą niż wydajność (np. Podczas łączenia z lokalnym serwerem proxy serwery).
GET / HTTP/1.0
User-Agent: example/1
HTTP/1.0 200 OK
Content-Type: text/plain
Hello
HTTP / 1.1
Protokół HTTP / 1.1 został pierwotnie określony w 1999 r. W RFC 2616 (protokół) i RFC 2617 (uwierzytelnianie), ale dokumenty te są obecnie nieaktualne i nie powinny być używane jako odniesienie:
Nie używaj RFC2616. Usuń go z dysków twardych, zakładek i wypal (lub odpowiedzialnie poddaj recyklingowi) wszystkie wydrukowane kopie.
Aktualna specyfikacja HTTP / 1.1, która pasuje do dzisiejszego sposobu implementacji HTTP, znajduje się w nowych specyfikacjach RFC 723x:
- RFC 7230: Składnia komunikatu i routing
- RFC 7231: Semantyka i treść
- RFC 7232: Żądania warunkowe
- RFC 7233: Żądania zakresu
- RFC 7234: Buforowanie
- RFC 7235: Uwierzytelnianie
Dodano HTTP / 1.1, między innymi:
- dzielone kodowanie przesyłania, które pozwala serwerom niezawodnie wysyłać odpowiedzi o nieznanym rozmiarze,
- trwałe połączenia TCP / IP (które były niestandardowym rozszerzeniem w HTTP / 1.0),
- żądania zakresu używane do wznawiania pobierania,
- kontrola pamięci podręcznej.
HTTP / 1.1 próbował wprowadzić potokowanie, które pozwoliło klientom HTTP skrócić czas oczekiwania na odpowiedź, wysyłając wiele żądań jednocześnie, nie czekając na odpowiedzi. Niestety, ta funkcja nigdy nie została poprawnie zaimplementowana w niektórych serwerach proxy, co powoduje, że połączenia potokowe tracą lub zmieniają kolejność odpowiedzi.
GET / HTTP/1.0
User-Agent: example/1
Host: example.com
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 6
Connection: close
Hello
HTTP / 2
HTTP / 2 ( RFC 7540 ) zmienił bezpośredni format HTTP z prostego tekstowego nagłówka żądania i odpowiedzi na binarny format danych wysyłany w ramkach. HTTP / 2 obsługuje kompresję nagłówków ( HPACK ).
Zmniejszyło to narzut żądań i umożliwiło odbieranie wielu odpowiedzi jednocześnie przez jedno połączenie TCP / IP.
Pomimo dużych zmian w formacie danych, HTTP / 2 nadal używa nagłówków HTTP, a żądania i odpowiedzi mogą być dokładnie tłumaczone między HTTP / 1.1 i 2.
HTTP / 0.9
Pierwsza wersja HTTP, która powstała, to 0.9, często określana jako „ HTTP As Implemented ”. Popularny opis 0.9 to „podsekcja pełnego protokołu HTTP [tj. 1.0]”. Jednak to w dużym stopniu nie ilustruje różnic w możliwościach między 0,9 a 1,0.
Ani żądania, ani odpowiedzi w nagłówkach funkcji 0.9. Żądania składają się z jednej linii GET
zakończonej CRLF, po której następuje spacja, a następnie żądany adres URL zasobu. Oczekuje się, że odpowiedzi będą pojedynczym dokumentem HTML. Koniec wspomnianego dokumentu jest oznaczony przez upuszczenie połączenia po stronie serwera. Brak udogodnień wskazujących powodzenie lub niepowodzenie operacji. Jedyną właściwością interaktywną jest ciąg wyszukiwania, który jest ściśle powiązany ze znacznikiem HTML <isindex>
.
Zastosowanie HTTP / 0.9 jest obecnie wyjątkowo rzadkie. Czasami jest postrzegany w systemach wbudowanych jako alternatywa dla tftp .