수리 공작소

[용어] Stateful? Stateless? Session? Cookie? 본문

Studies/용어 정리

[용어] Stateful? Stateless? Session? Cookie?

suleee 2023. 6. 9. 16:01

● stateful과 stateless는 어느 분야에서 사용되는 용어일까?

주로 네트워크 통신에서 사용되는 용어로, 프로토콜의 특성을 나타낸다.

● stateful의 의미와 stateless의 의미

stateful : 서버가 클라이언트의 상태 정보를 가지고 있는 것. 즉, 상태에 따라 다음 요청에 영향을 줄 수 있다

-> 예) 로그인을 한번 하면 상태는 "로그인"이 되고 그것이 계속 유지되는 것

-> TCP에서 connection을 수립하고 만료될 때까지 열어놓으므로 stateful한 프로토콜이다.

 

stateless : 서버가 클라이언트의 상태 정보를 반영하지 않는 것. 매 요청이 독립적이다.

-> 예) 웹 사이트에서 검색 결과에 대한 문서를 열어보는 단순한 행동.

-> connection 수립이 없는 UDP 는 statelss 한 프로토콜이다.

 

일반적으로 웹 프로토콜인 HTTP는 stateless한 특성을 가지고 있는데, 이를 stateful하게 만들기 위해 session과 cookie라는 것을 이용한다. 

Session이란?

session은 분야에 따라 그 의미가 다양하게 적용이 될 수 있는데, 

네트워크 통신 분야에서의 session은 서버에 들어온 요청을 일정 시간동안 유지시키는 기술이다.

예를 들어 로그인 상태를 유지시키기 위해 일정 시간 동안 고유한 ID를 가진 session을 만든다.

로그아웃이 될 시에 session은 만료가 된다.

또 다른 예로, 장바구니에 물건을 담으면 해당 물건에 대한 정보가 장바구니 session에 저장이 된다. 

사용자가 해당 물건을 결제하거나 삭제하면 장바구니 session에서 그 물건의 정보가 사라진다.

 

Cookie란?

쿠키는 stateful, 즉, 상태 정보를 유지하기 위해 사용되는 데이터 조각이다.

 

session과 cookie의 차이점

cookie는 로컬에, session은 서버에 저장한다. 개념적인 차이가 있는데 다음의 과정을 보면 어떤 차이가 있는지 알 수 있을 것이다.

[chat gpt]

세션이 쿠키를 사용하는 방법은 다음과 같습니다:

  1. 클라이언트 요청: 클라이언트(웹 브라우저)가 서버에 요청을 보냅니다.
  2. 세션 식별자 확인: 서버는 클라이언트의 요청에 세션 식별자(Session ID)가 포함되어 있는지 확인합니다.
  3. 세션 존재 여부 확인:
    • 세션 식별자가 존재하는 경우: 서버는 세션 식별자를 사용하여 해당 세션을 찾습니다.
    • 세션 식별자가 존재하지 않는 경우: 새로운 세션을 생성합니다.
  4. 쿠키 생성: 서버는 세션 식별자를 포함한 쿠키를 생성하여 클라이언트에게 응답으로 전송합니다.
  5. 쿠키 저장: 클라이언트는 받은 쿠키를 저장합니다. 일반적으로 "JSESSIONID"라는 이름의 쿠키를 사용하여 세션 식별자를 저장합니다.
  6. 클라이언트 요청: 클라이언트가 서버에 요청을 보낼 때, 쿠키가 요청에 포함되어 전송됩니다.
  7. 세션 식별: 서버는 클라이언트로부터 받은 쿠키를 통해 세션 식별자를 확인하여 해당 세션을 찾습니다.
  8. 세션 데이터 사용: 서버는 세션을 사용하여 클라이언트의 상태 정보를 유지하고, 필요한 작업을 수행합니다.

stateful 상태를 유지하기 위해, 세션 ID를 저장한 쿠키를 보내 세션을 유지시키는 것이다.