왜 "HTTP는 상태 비 저장 프로토콜"이라고되어 있습니까?
HTTP에는 HTTP 쿠키가 있습니다. 쿠키는 서버가 사용자 상태, 연결 수, 마지막 연결 등을 추적 할 수 있도록합니다.
HTTP에는 동일한 TCP 연결에서 여러 요청을 보낼 수있는 영구 연결 (Keep-Alive)이 있습니다.
동일한 HTTP 연결을 통해 여러 요청을 보낼 수 있지만 서버는 동일한 소켓을 통해 도착하는 데 특별한 의미를 부여하지 않습니다. 이는 각 요청에 대한 연결을 다시 설정하는 데 소비되는 시간 / 대역폭을 최소화하기위한 성능 일뿐입니다.
HTTP에 관한 한, 이들은 여전히 별도의 요청이며 요청을 이행하기에 충분한 정보를 자체적으로 포함해야합니다. 이것이 "무국적"의 본질입니다. 서버가 알고있는 일부 공유 정보가 없으면 요청이 서로 연결되지 않습니다. 대부분의 경우 쿠키의 세션 ID입니다.
에서 위키 백과 :
HTTP는 상태 비 저장 프로토콜입니다. 상태 비 저장 프로토콜은 서버가 여러 요청 기간 동안 각 사용자에 대한 정보 또는 상태를 유지하도록 요구하지 않습니다.
그러나 일부 웹 응용 프로그램은 예를 들어 웹 서버가 사용자를 위해 웹 페이지의 내용을 사용자 지정해야하는 경우 페이지 간 사용자 진행 상황을 추적해야 할 수 있습니다. 이러한 경우에 대한 솔루션은 다음과 같습니다.
- HTTP 쿠키 사용.
- 서버 측 세션
- 숨겨진 변수 (현재 페이지에 양식이 포함 된 경우)
- URI로 인코딩 된 매개 변수를 사용하여 URL 재 작성 (예 : /index.php?session_id=some_unique_session_code)
프로토콜을 상태 비 저장 상태로 만드는 이유는 서버가 여러 요청에 대한 상태를 추적 할 필요 가없고 원하는 경우 수행 할 수 없다는 것입니다. 이것은 클라이언트와 서버 사이의 계약을 단순화하며 많은 경우 (예를 들어 CDN을 통해 정적 데이터를 제공하는 경우) 전송해야하는 데이터의 양을 최소화합니다. 클라이언트 방문 상태를 유지하기 위해 서버가 필요한 경우 요청을 발행하고 응답하는 구조가 더 복잡합니다. 모델의 단순성은 가장 큰 특징 중 하나입니다.
상태 비 저장 프로토콜은 서버가 여러 요청 기간 동안 각 통신 파트너에 대한 세션 정보 또는 상태를 유지하도록 요구하지 않기 때문입니다.
HTTP는 상태 비 저장 프로토콜이므로 트랜잭션이 끝나면 브라우저와 서버 간의 연결이 끊어집니다.
HTTP 는 각 요청이 이전에 실행 된 요청에 대한 지식없이 독립적으로 실행되기 때문에 상태 비 저장 프로토콜이라고합니다. 즉, 트랜잭션이 종료되면 브라우저와 서버 간의 연결도 끊어집니다.
프로토콜을 무 상태로 만드는 것은 원래 디자인에서 HTTP 가 비교적 간단한 파일 전송 프로토콜이라는 것입니다.
- URL로 이름이 지정된 파일을 요청하고
- 응답으로 파일을 가져옵니다.
- 분리하십시오.
동일한 클라이언트에서도 연결간에 관계가 유지되지 않았습니다. 이는 클라이언트와 서버 간의 계약을 단순화하고 많은 경우 전송해야하는 데이터의 양을 최소화합니다.
프로토콜 HTTP가 상태 전체 프로토콜로 제공되면 브라우저 창은 단일 연결을 사용하여 웹 응용 프로그램에 대한 여러 요청에 대해 웹 서버와 통신합니다. 이는 브라우저 창에서 브라우저 창과 웹 서버 간의 연결을 오랫동안 유지하고 유지할 수있는 기회를 제공합니다 클라이언트의 대부분의 연결이 유휴 상태 인 경우에도 웹 서버의 최대 연결에 도달하는 상황이 발생할 수 있습니다.
HTTP는 비 연결형이며 이는 HTTP가 상태 비 저장 프로토콜이라는 직접적인 결과입니다. 서버와 클라이언트는 현재 요청 중에 만 서로를 알고 있습니다. 나중에 둘 다 서로를 잊어 버립니다. 이 프로토콜의 특성으로 인해 클라이언트와 브라우저는 웹 페이지에서 다른 요청간에 정보를 보유 할 수 없습니다.
HTTP는 상태 비 저장입니다. TCP는 상태 저장입니다. 소위 'HTTP 연결'은 없지만 'HTTP 요청'과 'HTTP 응답'만 있습니다. 다른 'HTTP 요청'을하기 위해 유지 관리 할 것이 필요하지 않습니다. "keep-alive"인 연결 헤더는 항상 TCP 연결을 끊고 다시 설정하는 대신 후속 HTTP 요청 및 응답에서 TCP를 다시 사용함을 의미합니다.
무국적자가 아닙니다. HTTP는 (보통) TCP 위에 구축되며 상태 저장 상태입니다. 최소한 연결 정보를 유지 관리합니다. UDP로 빌드 된 경우 상황이 다를 수 있습니다.
HTTP가 상태가 없다고 말하는 것은 컴퓨터 프로그램이 전자가 없다고 말하는 것과 같습니다. 말도 안 돼요 같은 방식으로 HTTP와 TCP를 완전히 분리 할 수 없습니다.
참고 URL : https://stackoverflow.com/questions/13200152/why-is-it-said-that-http-is-a-stateless-protocol
'IT' 카테고리의 다른 글
pytest에서 conftest.py 파일의 용도는 무엇입니까? (0) | 2020.06.05 |
---|---|
룬이란 무엇입니까? (0) | 2020.06.05 |
Vcode에서 Xcode5의 * .xccheckout 파일을 무시해야합니까? (0) | 2020.06.05 |
비트 마스킹이란 무엇입니까? (0) | 2020.06.05 |
JavaScript에서 JSON 문자열을 특정 객체 프로토 타입으로 구문 분석 (0) | 2020.06.05 |