無테고리 인생살이

[Web] 쿠키와 세션은 HTTP의 어떤 특성을 보완하기 위해 생겨났을까? 본문

Web

[Web] 쿠키와 세션은 HTTP의 어떤 특성을 보완하기 위해 생겨났을까?

無격 2023. 1. 11. 16:23
  • 쿠키와 세션의 등장배경
  • 쿠키 정의 및 특징
  • 세션 정의 및 특징



쿠키와 세션은 서버와 클라이언트가 HTTP를 기반으로 리소스를 주고받는 인터넷 서비스에서 쓰인다.

그렇다면 쿠키와 세션은 어떤 문제를 해결하기 위해서 도입됐을까?

쿠키와 세션은 웹 서비스에서 사용되고, 웹은 HTTP 통신을 기반으로 한다.
HTTP 통신은 아래 2가지의 대표적인 특성을 지닌다.

  1. Conectionless (비연결성) : request에 대한 response를 보낸 후, 서버와 클라이언트간 연결이 바로 끊긴다.
  2. Stateless (무상태) : 클라와 서버 간 연결이 바로 끊기므로, 서버는 클라이언트의 상태를 유지할 수 없다.

HTTP 통신은 Conectionless한 특성 때문에, 서버와 클라이언트가 Stateless한 것이다. 하지만, 서버가 클라이언트의 상태를 알고 있어야 하는 경우도 있다. 예를 들어, 네이버 서버는 접속한 회원의 로그인 상태를 유지해야하며, 온라인 쇼핑몰 서버는 회원이 구매하기 위해 담은 장바구니 목록을 유지해야 한다.
이렇게 HTTP의 두 특성 때문에, 쿠키와 세션은 웹에서의 사용자의 상태 유지를 목적으로 생겨나게 되었다.


쿠키 VS 세션

쿠키와 세션은 둘 다 사용자(user)의 상태 유지(stateful)을 목적으로 하고,
유저의 상태를 유지하려면 웹 서버와 웹 브라우저가 서로 필요한 데이터를 공유해야만 한다.
쿠키와 세션의 가장 큰 차이점 '사용자의 상태 데이터를 어디에 저장하는지' 이다. 자세한 내용은 각각의 특징에서 확인하자 !

1. 쿠키

: 서버가 클라이언트의 상태를 유지하기 위해 client-side에 저장하는 Key-Value 형태의 데이터

특징

  • 최초 요청 시, 웹 서버에서 처음 쿠키를 생성해서 웹 클라이언트에 보낸다.
  • 웹 클라이언트는 받은 쿠키를 저장하고, request 때마다 쿠키를 담아 서버로 보낸다. (보안에 취약)
  • 서버는 쿠키를 읽어 유저의 상태를 파악하고 그에 따른 응답을 보낸다. (핵심)
  • 하나의 웹 브라우저에 여러 쿠키가 저장될 수 있다. (다음 쿠키, 네이버 쿠키, 구글 쿠키)
  • 쿠키는 쿠키가 생성된 서버로만 전송된다. (네이버 서버에서 생성된 쿠키는 넷플릭스 서버로 보낼 수 없다)
  • 만료 시간 설정하면, 브라우저 종료 시에도 쿠키 유지 가능 (Life cycle)

 

2. 세션

: 서버가 클라이언트의 상태를 유지하기 위해 server-side에 저장하는 Key-Value 형태의 데이터

특징

  • 최초 요청 시, 웹 서버에서 처음 세션을 생성하고 저장한다.
  • 세션을 저장한 후 response를 보낼 때, 고유한 세션 ID를 쿠키에 담아 보낸다. (쿠키차단 시, 세션 사용 불가)
  • 서버는 받은 쿠키에 담긴 세션 ID를 통해 유저의 상태를 유지한다. (핵심)
  • 한 브라우저에 하나의 세션값만 가진다.
  • 쿠키보다 보안성이 뛰어나다.
  • 상태 데이터를 서버가 가지므로, 서버에 부하가 늘어난다.
  • 브라우저 종료 시, 세션 소멸 (Life cycle)