[네트워크] 쿠키와 세션

HD.·2022년 6월 17일
0

CS

목록 보기
6/7

쿠키와 세션을 알아보기 전에 클라인언트와 서버의 통신 규약인 HTTP에대해서 먼저 알아보자.

HTTP(Hyper Text Transfer Protocol)

  • HTML 문서와 같은 리소스(자원, 데이터)들을 가져올 수 있도록 해주는 프로토콜(규칙, 규약)
  • 웹에서 이루어지는 모든 데이터 교환의 기초
  • 클라이언트-서버 프로토콜이기도 하다.

HTTP 특징

  • 비연결지향 (connectionless)
    • 서버는 요청에 대한 응답을 보낸 후 연결을 끊는다.
  • 무상태 (stateless)
    • 연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지되지 않는다.
    • 클라이언트와 서버가 주고 받는 메시지들은 서로 완전히 독립적이다.

하지만 웹을 사용할 때 로그인을 하면 마치 클라이언트와 서버가 연결되어있고 로그인 상태를 유지하는 것처럼 동작한다. 이를 가능하게 해주는 것이 쿠키와 세션이다. 즉, 클라이언트와 서버의 지속적인 관계를 유지하기 위해 쿠키와 세션이 존재한다.

쿠키(Cookie)

  • 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각
  • 사용자가 웹사이트를 방문할 경우 해당 웹사이트의 서버를 통해 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일
    • 브라우저는 쿠키를 로컬에 KEY-VALUE의 데이터 형식으로 저장해 놓고 동일한 서버에 재요청 시 저장된 쿠키를 함께 전송
  • HTTP 쿠키는 상태가 있는 세션을 만들어 줌
  • 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용
    • 이를 이용해 사용자의 로그인 상태를 유지할 수 있다.
    • 상태가 없는(stateless) HTTP 프로토콜에서 상태 정보를 기억 시켜주기 때문이다.

즉, 웹 페이지에 접속하면 요청한 웹 페이지를 받으며 쿠키를 저장하고, 클라이언트가 같은 서버에 재요청 시 요청과 함께 쿠키도 함께 전송

쿠키의 사용 목적

  • 세션 관리 (Session management)
    • 로그인, 아이디 자동 완성, 공지 하루 안보기, 팝업 체크, 장바구니 등의 정보 관리
  • 개인화 (Personalization)
    • 사용자 선호, 테마 등의 설정
  • 트래킹 (Tracking)
    • 사용자 행동을 기록 및 분석

쿠키는 상태가 있는 세션을 만들어 준다라고 했다. 즉, 쿠키가 세션보다 좀 더 큰 범주이고 쿠키들 중에서 상태를 유지시키는데 사용되는 것들을 세션이라고 한다. 대표적으로 로그인, 장바구니 기능들이 있다.

세션(Session)

  • 사이트와 특정 브라우저 사이의 상태(state)를 유지시키는 것
  • 클라이언트가 서버에 접속하면 서버가 특정 session id를 발급하고, 클라이언트는 발급 받은 session id를 쿠키에 저장
    • 클라이언트가 다시 서버에 접속하면 요청과 함께 쿠키(session id가 저장된)를 서버에 전달
    • 쿠키는 요청 때마다 서버에 함께 전송되므로 서버에서 session id를 확인해 알맞은 로직을 처리
  • ID는 세션을 구별하기 위해 필요하며, 쿠키에는 ID만 저장함

쿠키 lifetime (수명)

  • 쿠키의 수명은 두 가지 방법으로 정의할 수 있음
  1. Session cookies
    • 현재 세션이 종료되면 삭제됨
    • 브라우저가 현재 세션(current session)이 종료되는 시기를 정의
  2. Persistent cookies (or Permanent cookies)
    • Expires 속성에 지정된 날짜 혹은 Max-Age 속성에 지정된 기간이 지나면 삭제
profile
즐거워야코딩

0개의 댓글