의문점 공부하기/🧾공부하며

🧾 HTTP에서의 Stateless로 만들어야하는 이유! + 세션은 보관소? + 쿠키란??

아리빠 2023. 8. 3. 10:54
 

HTTP에서의 Stateless란 상태없는(무상태) 특성을 의미

HTTP는 클라이언트와 서버 간의 각각의 요청(request)과 응답(response) 사이에 연결이 지속되지 않는다는 것

HTTP 프로토콜은 각 요청을 독립적으로 처리하며, 이전 요청과 관련된 정보를 서버가 유지하지 않는다.

=>이전 요청과 현재 요청 간에는 아무런 상태 정보가 공유되지 않음..!

ex) 사용자가 웹 브라우저를 통해 웹 페이지를 요청하면 서버는 해당 페이지를 제공하고 연결을 끊는다. 이후에 사용자가 다른 페이지를 요청하면 서버는 이전 요청과 관련된 정보를 기억하지 않고 새로운 요청에 대해 독립적으로 응답

이러한 방식으로 HTTP는 상태 정보를 서버 측에서 유지하거나 관리하지 않기 때문에 간단하고 확장성이 높은 프로토콜로 사용될 수 있다.

상태없는 특성은 HTTP가 간단하고 확장성이 높은 이유 중 하나, 이를 통해 여러 클라이언트와 서버 간의 요청 및 응답이 독립적으로 처리되어 효율적인 통신이 가능

상태 정보가 필요한 경우에는 쿠키(cookie)나 세션(session)과 같은 기술을 사용하여 상태를 관리할 수 있다.

 

HTTP를 Stateless로 설계하는 이유

확장성: Stateless로 설계하면 서버는 각 요청을 독립적으로 처리하여 더 많은 클라이언트 요청을 처리 가능, 서버의 확장성과 성능이 향상

서버의 자율성: Stateless로 설계된 서버는 클라이언트와 간섭없이 독립적으로 동작 가능

클라이언트의 상태 정보를 서버가 유지하지 않기 때문에 서버는 개별 요청에 대해 자율적으로 응답

응답시간 감소: 상태 정보를 유지하는 경우, 클라이언트가 인증되거나 상태 정보를 서버에 전달하는 추가적인 요청과 응답이 필요한데 Stateless로 설계하면 서버가 각 요청에 독립적으로 응답하기 때문에 응답 시간이 감소

단, 모든 상황에서 Stateless가 적합하지는 않다.

애플리케이션에 상태 정보가 필요한 경우, 쿠키나 세션과 같은 메커니즘을 사용하여 상태를 관리해야 할 수도 있다.


 HTTP에서 세션은 일종의 저장소로 볼 수 있다.

세션은 사용자가 웹사이트를 방문하는 동안 사용자의 데이터를 임시적으로 저장하는 데 사용

세션은 웹 브라우저에서 각 탭에 고유하며, 새 탭에서 동일한 웹사이트를 열면 새 세션과 그에 따른 고유한 저장공간이 생성

그러나 "탭 복제" 기능을 사용하면 동일한 세션을 재사용할 수 있다. 세션은 임시적인 것으로, 각 세션은 특정 탭이나 브라우저가 열려 있는 동안만 지속된다


HTTP 쿠키는 웹 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각

이는 웹사이트가 사용자의 브라우저 세션에 대한 정보를 저장하고 추후에 검색할 수 있도록 하는데 사용

쿠키는 이름과 값을 가지며, 예를 들어 세션 관리에 사용되는 쿠키는 'usr_session'과 같은 이름을 가질 수 있고, 서버는 그 쿠키의 값으로 고유한 세션 ID를 자동으로 생성할 수 있다. 또한, 쿠키는 선택적으로 쿠키의 만료나 다양한 보안 설정과 같은 특정 속성을 정의하는 하나 이상의 추가 이름-값 쌍을 가질 수 있다

쿠키는 사용자가 웹사이트를 방문할 때마다 생성, 사용자가 웹사이트를 탐색하는 동안 일관된 사용자 경험을 제공하는 데 도움이 됩니다. 쿠키가 저장하는 정보의 예로는 사용자의 로그인 정보, 쇼핑 카트에 담긴 항목 등등.

웹 서버는 이후의 요청에 대해, 브라우저가 이를 저장하고 다시 전송하도록 쿠키를 보내는데, 쿠키의 목적은 웹 서버가 사용자에 대한 정보를 기억하고, 다른 사용자들과 구분하는 것

쿠키는 개인 정보를 가져올 필요가 없으며, 사용자를 서로 구분하기 위해 브라우저 사양을 기억하는 것만으로도 충분

  • 영속적인 쿠키: 사용자의 브라우저에서 오랜 시간 동안 정보를 저장하는 쿠키.
  • 비영속적인 쿠키: 일반적으로 브라우저가 닫힐 때 만료되는 쿠키

쿠키는 비밀번호와 신용 카드 번호와 같은 민감한 정보를 포함할 수 있으며, 이는 HTTP 연결을 통해 전송되고 웹 브라우저에 일반 텍스트로 저장될 수 있다. 이 정보를 공격자로부터 보호하기 위해, 쿠키는 속성을 통해 보안을 갖춤