inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모든 개발자를 위한 HTTP 웹 기본 지식

Stateful, Stateless

무상태성에 대해 질문드립니다.

478

이재윤

작성한 질문수 5

1

안녕하세요 영한님 강의 잘 듣고있습니다 !

다름이 아니라 '무상태'에 대해 헷갈리는 부분이 있는데요, 

결국 상태를 저장할지 말지 결정하는 주체는 서버라고 이해가 되는데 그럼 HTTP를 사용해서 통신을 하는 경우, 서버측에서는  '아 이건 HTTP 규약을 따르는거니까  아무것도 저장하지 않아야지' 라고 판단하는건가요 ? 

즉, '무상태 프토토콜'이라는게 상태를 저장하지 않는 것을 '지향하는' 규약이기 때문에 이미 약속이 되어있어서 서버측에서도 저장을 하지 않는건가요 ? 

그리고, 만약 세션을 사용해서 서버측에 클라이언트 상태를 저장하거나 하는 경우 HTTP의 stateless한 특성이 사라지게 되는건가요 ?? 

network

답변 1

7

David

안녕하세요. 이재윤님, 공식 서포터즈 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

캐시 관련 질문입니다.

0

616

1

ETag 질문입니다.

0

727

1

캐시의 설정 주체

0

534

1

영속쿠키 질문입니다.

0

503

1

협상(accept-language)

0

686

1

에러 코드의 구현 주체

0

437

1

웹서버가 구현?

0

595

1

필수헤더?

1

559

1

Host와 Port

0

772

1

다른 도메인이 같은 포트를 사용하는 경우

0

1258

1

표준 헤더와 임의 헤더

0

532

1

POST 등록 후 Location 헤더

0

568

1

프로세스의 상태가 변경되는 경우에 Post 사용

1

1808

1

지속연결에 대해서.

0

691

1

제가 아는 쿼리 파라미터 개념이 맞는지 확인 부탁드립니다.

0

592

1

캐시 내용중 no cache 일때

0

357

1

DNS 서버 관련 질문

1

747

1

캐시로 저장된 파일의 유효기간은 얼마나 되나요?

0

660

1

웹브라우저 요청흐름 질문입니다.

0

846

1

캐시 무효화 질문드립니다

0

561

1

리다이렉트와 리다이렉션 차이?

0

2591

1

쿠키 및 세션 관련 질문드립니다

0

586

1

HTTP 메서드 ( HTTP 메서드의 속성 파트 ) 강의의 멱등 내용에 대하여 질문드립니다.

0

1642

1

header 나 gzip으로 데이터 보낼떄 데이터는 base64로 인코딩되서 가는 건가요?

0

480

1