HTTP zawiera pliki cookie HTTP. Pliki cookie pozwalają serwerowi śledzić stan użytkownika, liczbę połączeń, ostatnie połączenie itp.
HTTP ma trwałe połączenia (Keep-Alive), w których kilka żądań może być wysyłanych z tego samego połączenia TCP.
HTTP zawiera pliki cookie HTTP. Pliki cookie pozwalają serwerowi śledzić stan użytkownika, liczbę połączeń, ostatnie połączenie itp.
HTTP ma trwałe połączenia (Keep-Alive), w których kilka żądań może być wysyłanych z tego samego połączenia TCP.
Odpowiedzi:
Mimo że wiele żądań może być wysyłanych przez to samo połączenie HTTP, serwer nie przywiązuje specjalnego znaczenia do ich przychodzenia przez to samo gniazdo. Jest to wyłącznie kwestia wydajności, mająca na celu zminimalizowanie czasu / przepustowości, które w przeciwnym razie zostałyby wydane na ponowne ustanawianie połączenia dla każdego żądania.
Jeśli chodzi o HTTP, wszystkie są nadal oddzielnymi żądaniami i same muszą zawierać wystarczającą ilość informacji, aby spełnić żądanie. Na tym polega istota „bezpaństwowości”. Żądania nie będą ze sobą kojarzone bez niektórych wspólnych informacji, o których wie serwer, którymi w większości przypadków jest identyfikator sesji w pliku cookie.
Z Wikipedii :
HTTP to protokół bezstanowy. Protokół bezstanowy nie wymaga od serwera przechowywania informacji lub statusu każdego użytkownika przez czas trwania wielu żądań.
Jednak niektóre aplikacje internetowe mogą wymagać śledzenia postępów użytkownika ze strony na stronę, na przykład gdy serwer sieciowy jest wymagany do dostosowania zawartości strony internetowej dla użytkownika. Rozwiązania dla tych przypadków obejmują:
- stosowanie plików cookie HTTP.
- sesje po stronie serwera,
- ukryte zmienne (gdy bieżąca strona zawiera formularz) i
- Przepisywanie adresu URL przy użyciu parametrów zakodowanych w URI, np. /Index.php?session_id=some_unique_session_code.
To, co sprawia, że protokół jest bezstanowy, to fakt, że serwer nie musi śledzić stanu wielu żądań, a nie to, że nie może tego zrobić, jeśli chce. Upraszcza to umowę między klientem a serwerem, aw wielu przypadkach (na przykład serwowanie danych statycznych przez CDN) minimalizuje ilość danych, które należy przesłać. Gdyby serwery były zobowiązane do utrzymywania stanu wizyt klientów, struktura wysyłania żądań i odpowiadania na nie byłaby bardziej złożona. W tej chwili prostota modelu jest jedną z jego największych cech.
Ponieważ protokół bezstanowy nie wymaga od serwera zachowywania informacji o sesji lub statusu każdego partnera komunikacyjnego przez czas trwania wielu żądań.
HTTP to protokół bezstanowy, co oznacza, że połączenie między przeglądarką a serwerem jest tracone po zakończeniu transakcji.
HTTP jest wywoływane jako stateless protocol
żądanie, ponieważ każde żądanie jest wykonywane niezależnie, bez żadnej wiedzy o żądaniach, które zostały wykonane przed nim, co oznacza, że po zakończeniu transakcji połączenie między przeglądarką a serwerem jest również tracone.
Tym, co sprawia, że protokół stateless
jest pierwotny, jest HTTP jest stosunkowo prostym file transfer protocol
:
Nie było żadnego związku między jednym a drugim połączeniem, nawet od tego samego klienta. Upraszcza to umowę między klientem a serwerem, aw wielu przypadkach minimalizuje ilość przesyłanych danych.
Jeśli protokół HTTP jest podany jako pełny protokół stanu, okno przeglądarki używa pojedynczego połączenia do komunikacji z serwerem WWW dla wielu żądań wysyłanych do aplikacji internetowej. Daje to szansę oknu przeglądarki na nawiązanie połączenia między oknem przeglądarki a serwerami sieciowymi przez długi czas i utrzymanie są w stanie bezczynności przez długi czas, co może doprowadzić do osiągnięcia maksymalnej liczby połączeń serwera WWW, mimo że większość połączeń klientów jest bezczynna.
HTTP jest protokołem bezpołączeniowym i bezpośrednio wynika z tego, że HTTP jest protokołem bezstanowym. Serwer i klient znają się nawzajem tylko podczas bieżącego żądania. Potem oboje zapominają o sobie. Ze względu na ten charakter protokołu ani klient, ani przeglądarka nie mogą zachować informacji między różnymi żądaniami na stronach internetowych.
Co to jest bezpaństwowiec?
Gdy żądanie zostanie wykonane, a odpowiedź zostanie zwrócona klientowi, połączenie zostanie zerwane lub zakończone. Serwer zapomni o żądającym.
Dlaczego bezpaństwowcy?
Sieć wybiera protokół bezstanowy. To był genialny wybór, ponieważ pierwotnym celem sieci było umożliwienie obsługi dokumentów (stron internetowych) bardzo dużym nie. osób korzystających z bardzo podstawowego sprzętu dla serwera.
Utrzymanie długotrwałego połączenia wymagałoby ogromnych zasobów.
Gdyby sieć WWW została wybrana jako protokół stanowy, obciążenie serwera zostałoby zwiększone w celu utrzymania połączenia odwiedzającego.
HTTP
jest bezpaństwowcem. TCP
jest stanowy. Nie ma tzw. HTTP connection
, Ale tylko HTTP request
i HTTP response
. Nie potrzebujemy niczego do utrzymania, aby stworzyć kolejny HTTP request
. Nagłówek połączenia, który jest „utrzymywany przy życiu” oznacza, że TCP
będzie on ponownie używany przez kolejne HTTP
żądania i odpowiedzi, zamiast rozłączania i ponownego ustanawiania TCP
połączenia przez cały czas.
Myślę, że ktoś wybrał bardzo niefortunną nazwę dla koncepcji STATELESS i to jest przyczyną całego nieporozumienia. Nie chodzi o przechowywanie jakichkolwiek zasobów, ale raczej o relacje między klientem a serwerem.
Klient: Trzymam wszystkie zasoby po swojej stronie i przesyłam Ci „listę” wszystkich ważnych elementów, które wymagają przetworzenia. Wykonuj swoją pracę.
Serwer: W porządku… wezmę na siebie odpowiedzialność za filtrowanie tego, co jest ważne, aby dać ci właściwą odpowiedź.
Oznacza to, że serwer jest „slave” klienta i po każdym żądaniu musi zapomnieć o swoim „master”. W rzeczywistości STATELESS odnosi się tylko do stanu serwera.
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3