HTTP에는 HTTP 쿠키가 있습니다. 쿠키는 서버가 사용자 상태, 연결 수, 마지막 연결 등을 추적 할 수 있도록합니다.
HTTP에는 동일한 TCP 연결에서 여러 요청을 보낼 수있는 영구 연결 (Keep-Alive)이 있습니다.
HTTP에는 HTTP 쿠키가 있습니다. 쿠키는 서버가 사용자 상태, 연결 수, 마지막 연결 등을 추적 할 수 있도록합니다.
HTTP에는 동일한 TCP 연결에서 여러 요청을 보낼 수있는 영구 연결 (Keep-Alive)이 있습니다.
답변:
동일한 HTTP 연결을 통해 여러 요청을 보낼 수 있지만 서버는 동일한 소켓을 통해 도착하는 데 특별한 의미를 부여하지 않습니다. 이는 각 요청에 대한 연결을 다시 설정하는 데 소비되는 시간 / 대역폭을 최소화하기위한 성능 일뿐입니다.
HTTP에 관한 한, 이들은 여전히 별도의 요청이며 요청을 이행하기에 충분한 정보를 자체적으로 포함해야합니다. 이것이 "무국적"의 본질입니다. 서버가 알고있는 일부 공유 정보가 없으면 요청이 서로 연결되지 않습니다. 대부분의 경우 쿠키의 세션 ID입니다.
에서 위키 백과 :
HTTP는 상태 비 저장 프로토콜입니다. 상태 비 저장 프로토콜은 서버가 여러 요청 기간 동안 각 사용자에 대한 정보 또는 상태를 유지하도록 요구하지 않습니다.
그러나 일부 웹 응용 프로그램은 예를 들어 웹 서버가 사용자를 위해 웹 페이지의 내용을 사용자 지정해야하는 경우 페이지 간 사용자 진행 상황을 추적해야 할 수 있습니다. 이러한 경우에 대한 솔루션은 다음과 같습니다.
- HTTP 쿠키 사용.
- 서버 측 세션
- 숨겨진 변수 (현재 페이지에 양식이 포함 된 경우)
- URI로 인코딩 된 매개 변수를 사용하여 URL 재 작성 (예 : /index.php?session_id=some_unique_session_code)
프로토콜을 상태 비 저장 상태로 만드는 이유는 서버가 여러 요청에 대한 상태를 추적 할 필요 가없고 원하는 경우 수행 할 수 없다는 것입니다. 이것은 클라이언트와 서버 사이의 계약을 단순화하며 많은 경우 (예를 들어 CDN을 통해 정적 데이터를 제공하는 경우) 전송해야하는 데이터의 양을 최소화합니다. 클라이언트 방문 상태를 유지하기 위해 서버가 필요한 경우 요청을 발행하고 응답하는 구조가 더 복잡합니다. 모델의 단순성은 가장 큰 특징 중 하나입니다.
상태 비 저장 프로토콜은 서버가 여러 요청 기간 동안 각 통신 파트너에 대한 세션 정보 또는 상태를 유지하도록 요구하지 않기 때문입니다.
HTTP는 상태 비 저장 프로토콜이므로 트랜잭션이 끝나면 브라우저와 서버 간의 연결이 끊어집니다.
HTTP 는 stateless protocol
각 요청이 이전에 실행 된 요청에 대한 지식없이 독립적으로 실행되기 때문에 호출됩니다. 즉, 트랜잭션이 종료되면 브라우저와 서버 간의 연결도 끊어집니다.
프로토콜을 만드는 것은 stateless
원래 디자인에서 HTTP 가 비교적 간단 하다는 것입니다 file transfer protocol
.
동일한 클라이언트에서도 연결간에 관계가 유지되지 않았습니다. 이는 클라이언트와 서버 간의 계약을 단순화하고 많은 경우 전송해야하는 데이터의 양을 최소화합니다.
프로토콜 HTTP가 State full protocol로 제공되면 브라우저 창은 단일 연결을 사용하여 웹 응용 프로그램에 대한 여러 요청에 대해 웹 서버와 통신합니다. 이는 브라우저 창에서 브라우저 창과 웹 서버 간의 연결을 오랫동안 유지하고 유지할 수있는 기회를 제공합니다 클라이언트의 대부분의 연결이 유휴 상태 인 경우에도 웹 서버의 최대 연결에 도달하는 상황이 발생할 수 있습니다.
HTTP는 비 연결형이며 이는 HTTP가 상태 비 저장 프로토콜이라는 직접적인 결과입니다. 서버와 클라이언트는 현재 요청 중에 만 서로를 알고 있습니다. 나중에 둘 다 서로를 잊어 버립니다. 이 프로토콜의 특성으로 인해 클라이언트와 브라우저는 웹 페이지에서 다른 요청간에 정보를 보유 할 수 없습니다.
무국적이란?
요청이 이루어지고 응답이 클라이언트로 다시 렌더링되면 연결이 끊어 지거나 종료됩니다. 서버는 요청자에 대한 모든 것을 잊어 버릴 것입니다.
왜 무국적?
웹은 상태 비 저장 프로토콜을 선택합니다. 웹의 원래 목표는 문서 (웹 페이지)를 매우 크게 제공하지 못하도록하는 것이기 때문에 천재적인 선택이었습니다. 서버에 매우 기본적인 하드웨어를 사용하는 사람들
오래 실행되는 연결을 유지 관리하는 데 많은 리소스가 소모되었을 것입니다.
웹이 상태 저장 프로토콜을 선택한 경우 방문자의 연결을 유지하기 위해 서버의로드가 증가했을 것입니다.
누군가가 STATELESS 개념으로 매우 불행한 이름을 선택했다고 생각하므로 전체 오해가 발생합니다. 모든 종류의 리소스를 저장하는 것이 아니라 클라이언트와 서버 간의 관계에 관한 것입니다.
고객 : 모든 자료를 제 옆에두고 처리해야 할 모든 중요한 품목의 "목록"을 보내드립니다. 당신의 일을하십시오.
서버 : 알겠습니다. 적절한 응답을 제공하기 위해 중요한 사항을 필터링하는 데 책임을집니다.
이는 서버가 클라이언트의 "슬레이브"이며 각 요청 후에 "마스터"를 잊어야한다는 것을 의미합니다. 실제로 STATELESS는 서버 상태 만 나타냅니다.
https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_3