Czy ktoś mógłby dać mi krótki przegląd różnic między HTTP 1.0 a HTTP 1.1? Spędziłem trochę czasu z obydwoma RFC, ale nie byłem w stanie wyciągnąć dużej różnicy między nimi. Wikipedia mówi to:
HTTP / 1.1 (1997-1999)
Obecna wersja; trwałe połączenia są domyślnie włączone i działają dobrze z serwerami proxy. Obsługuje także potokowanie żądań, umożliwiając jednoczesne wysyłanie wielu żądań, umożliwiając serwerowi przygotowanie się do obciążenia i potencjalne szybsze przesłanie żądanych zasobów do klienta.
Ale to niewiele dla mnie znaczy. Zdaję sobie sprawę, że jest to dość skomplikowany temat, więc nie oczekuję pełnej odpowiedzi, ale czy ktoś może dać mi krótki przegląd różnic na nieco niższym poziomie?
Rozumiem przez to, że szukam informacji, które musiałbym wiedzieć, aby wdrożyć serwer HTTP lub aplikację. Głównie szukam szturchnięcia we właściwym kierunku, abym mógł sam to rozgryźć.
Odpowiedzi:
Obsługa proxy i pole Host:
HTTP 1.1 ma wymagany nagłówek Hosta według specyfikacji.
HTTP 1.0 oficjalnie nie wymaga nagłówka hosta, ale dodanie go nie zaszkodzi, a wiele aplikacji (serwerów proxy) oczekuje, że zobaczy nagłówek hosta niezależnie od wersji protokołu.
Przykład:
Nagłówek ten jest przydatny, ponieważ pozwala przekierować wiadomość przez serwery proxy, a także dlatego, że Twój serwer internetowy może rozróżniać różne witryny na tym samym serwerze.
Oznacza to, że jeśli masz blahblahlbah.com i helohelohelo.com, oba wskazują na ten sam adres IP. Twój serwer internetowy może użyć pola Host, aby rozróżnić witrynę, której chce komputer kliencki.
Trwałe połączenia:
HTTP 1.1 pozwala także na utrzymywanie trwałych połączeń, co oznacza, że możesz mieć więcej niż jedno żądanie / odpowiedź na tym samym połączeniu HTTP.
W HTTP 1.0 trzeba było otworzyć nowe połączenie dla każdej pary żądanie / odpowiedź. A po każdej odpowiedzi połączenie zostanie zamknięte. Doprowadziło to do pewnych dużych problemów z wydajnością z powodu powolnego startu TCP .
Metoda OPCJE:
HTTP / 1.1 wprowadza metodę OPTIONS. Klient HTTP może użyć tej metody do określenia możliwości serwera HTTP. Jest to najczęściej używane do udostępniania zasobów między źródłami w aplikacjach internetowych.
Buforowanie:
HTTP 1.0 obsługiwał buforowanie za pomocą nagłówka: If-Modified-Since.
HTTP 1.1 znacznie rozszerza obsługę buforowania, używając czegoś zwanego „znacznikiem encji”. Jeśli 2 zasoby są takie same, będą miały te same znaczniki encji.
HTTP 1.1 dodaje także warunkowe nagłówki If-Unmodified-Since, If-Match, If-None-Match.
Istnieją również dodatkowe dodatki związane z buforowaniem, takie jak nagłówek Cache-Control.
100 Kontynuuj status:
Nowy kod powrotu w HTTP / 1.1 100 Kontynuuj. Zapobiega to wysyłaniu przez klienta dużego żądania, gdy klient nie jest nawet pewien, czy serwer może przetworzyć żądanie lub jest upoważniony do przetworzenia żądania. W takim przypadku klient wysyła tylko nagłówki, a serwer powie klientowi 100 Kontynuuj, kontynuuj z treścią.
Wiele więcej:
źródło
HTTP 1.0 (1994)
HTTP 1.1 (1996-2015)
HTTP 1.1 to rozszerzenie HTTP 1.0. Poniżej wymieniono cztery główne ulepszenia:
Efektywne wykorzystanie adresów IP, umożliwiając obsługę wielu domen z jednego adresu IP.
Szybsza odpowiedź, zezwalając przeglądarce internetowej na wysyłanie wielu żądań przez jedno trwałe połączenie.
źródło
W przypadku prostych aplikacji (np. Sporadyczne pobieranie wartości temperatury z termometru z dostępem do Internetu) HTTP 1.0 jest odpowiedni zarówno dla klienta, jak i serwera. Możesz napisać klient HTTP lub serwer oparty na gołych kościach w około 20 wierszach kodu.
W przypadku bardziej skomplikowanych scenariuszy najlepszym rozwiązaniem jest HTTP 1.1. Spodziewaj się 3 do 5-krotnego wzrostu wielkości kodu w przypadku zawiłości bardziej złożonego protokołu HTTP 1.1. Złożoność pojawia się głównie, ponieważ w HTTP 1.1 trzeba będzie tworzyć, analizować i odpowiadać na różne nagłówki. Możesz chronić swoją aplikację przed złożonością, zmuszając klienta do korzystania z biblioteki HTTP lub serwera do korzystania z serwera aplikacji WWW.
źródło
Kluczowym problemem kompatybilności jest obsługa trwałych połączeń . Niedawno pracowałem na serwerze, który „obsługiwał” HTTP / 1.1, ale nie udało się zamknąć połączenia, gdy klient wysłał żądanie HTTP / 1.0. Pisząc serwer obsługujący HTTP / 1.1, upewnij się, że działa on dobrze również z klientami obsługującymi tylko HTTP / 1.0.
źródło
Jedną z pierwszych różnic, które mogę sobie przypomnieć, jest wiele domen działających na tym samym serwerze, częściowe pobieranie zasobów, pozwala to na pobieranie i przyspieszenie pobierania zasobu (to robi prawie każdy akcelerator pobierania).
Jeśli chcesz stworzyć aplikację taką jak strona internetowa lub podobna, nie musisz się zbytnio przejmować różnicami, ale powinieneś znać różnicę między
GET
iPOST
czasownikami.Teraz, jeśli chcesz stworzyć przeglądarkę, to tak, musisz znać cały protokół, a także, jeśli próbujesz stworzyć serwer HTTP.
Jeśli interesuje Cię tylko znajomość protokołu HTTP, polecam zacząć od HTTP / 1.1 zamiast 1.0.
źródło
HTTP 1.1 to najnowsza wersja Hypertext Transfer Protocol, protokołu aplikacji WWW, który działa na pakiecie protokołów internetowych TCP / IP. w porównaniu do HTTP 1.0, HTTP 1.1 zapewnia szybsze dostarczanie stron internetowych niż oryginalny HTTP i zmniejsza ruch internetowy.
Ruch internetowy Przykład: Na przykład, jeśli uzyskujesz dostęp do serwera. W tym samym czasie tak wielu użytkowników uzyskuje dostęp do serwera danych, więc jest szansa na zawieszenie serwera. To jest ruch internetowy.
źródło
HTTP 1.1 zawiera nagłówek hosta w specyfikacji, podczas gdy HTTP 1.0 oficjalnie nie ma nagłówka hosta, ale nie odmawia dodania go.
Nagłówek hosta jest przydatny, ponieważ pozwala klientowi skierować wiadomość przez serwer proxy, a główna różnica między wersjami HTTP 1.0 i 1.1 to:
źródło
W porównaniu do 1.0, 1.1 zmniejsza ruch w sieci
źródło