작성
·
408
1
안녕하세요 영한님 강의 잘 듣고있습니다 !
다름이 아니라 '무상태'에 대해 헷갈리는 부분이 있는데요,
결국 상태를 저장할지 말지 결정하는 주체는 서버라고 이해가 되는데 그럼 HTTP를 사용해서 통신을 하는 경우, 서버측에서는 '아 이건 HTTP 규약을 따르는거니까 아무것도 저장하지 않아야지' 라고 판단하는건가요 ?
즉, '무상태 프토토콜'이라는게 상태를 저장하지 않는 것을 '지향하는' 규약이기 때문에 이미 약속이 되어있어서 서버측에서도 저장을 하지 않는건가요 ?
그리고, 만약 세션을 사용해서 서버측에 클라이언트 상태를 저장하거나 하는 경우 HTTP의 stateless한 특성이 사라지게 되는건가요 ??
답변 1
6
안녕하세요. 이재윤님, 공식 서포터즈 David입니다.
.
우선, 사용자를 식별하는 정보를 서버에서 저장할지 말지는 개발자가 어떻게 구현하느냐에 따라 달려있습니다. 다만, HTTP의 stateless한 특성 때문에 사용자를 식별할 수 있는 정보를 저장하기 위해 쿠키와 같은 기술을 사용하는 것입니다.
.
그리고 HTTP의 무상태(statelessness)는 각 요청이 독립적이라는 것을 말합니다.[1] 첫 번째 요청과 두 번째 요청은 서로에 대해 모릅니다. 각 요청들은 이전에 어떤 요청이 있었는지, 다음에는 어떤 요청이 갈지 전혀 모릅니다. 이를 무상태성이라고 표현합니다.
.
시간이 지남에 따라 무상태 프로토콜인 HTTP를 가지고 특정 사용자를 식별하여 그 사용자에 맞는 정보를 제공해야 하는 요구가 생겨났습니다. 그래서 등장한 것이 쿠키입니다. 쿠키를 통해 무상태 프로토콜인 HTTP는 마치 상태를 가진 것처럼 보여집니다.[2] HTTP가 최초로 설계된 시점에는 특정 사용자를 식별하는 것에 대해 고려하지 않았습니다.
.
세션, 쿠키를 사용한다고 HTTP의 stateless한 특성이 사라지는 것은 아닙니다. stateless한 프로토콜인 HTTP를 가지고 사용자를 식별하기 위해 세션, 쿠키를 사용하는 것 뿐입니다.
.
감사합니다.
.
참고
* [1] 2.3 Intermediaries 마지막 문단 https://datatracker.ietf.org/doc/html/rfc7230#section-2.3
* [2] History https://en.wikipedia.org/wiki/HTTP_cookie