본문 바로가기
Programming/DevOps, Tools

세션과 쿠키, JESSIONID

by kghworks 2022. 1. 14.

목차

  • 쿠키와 세션이 왜 필요한가. HTTP 프로코톨의 2가지 특징
  • 쿠키 (Cookie)
  • 세션 (Session)
  • 쿠키와 세션의 차이

쿠키와 세션이 왜 필요한가. HTTP 프로토콜의 2가지 특징

 

 

  1. connectionless
  2. stateless

 

클라이언트 (브라우저)와의 통신 (request -> response)가 끝나면 연결을 끊어버립니다.  (1.connectionless)

통신이 끊기고 나면 서로의 상태정보를 유지하지 않습니다. (2.stateless)

 

쿠키와 세션이 없다면 로그인후 페이지를 이동(request)할 떄마다 사용자는 로그인을 해야합니다.

클라이언트의 state(로그인 상태)를 서버에 알려주기 위해서말이죠.


쿠키 (Cookie)

쿠키는 클라이언트가 가지고 있는 <key, value> 텍스트 형식 데이터파일입니다.

 

쿠키 프로세스
  1. REQUEST : 최초 클라이언트의 요청
  2. Cookie 생성 :  서버는 쿠키를 생성
  3. RESPONSE with Cookie : 응답 시 Http Header에 쿠키를 포함
  4. Cookie 저장 : 클라이언트는 응답받은 쿠키 데이터를 로컬 (클라이언트) 저장소에 저장
  5. request with Cookie : 서버에 요청시 자신의 쿠키를 포함하여 요청
  6. ... 반복

 

쿠키의 특징
  • 브라우저가 종료되어도 데이터를 유지 (유효시간 명시)
  • 사용자가 따로 지정하지 않아도, 클라이언트가 Request 시에 자동으로 Header에 포함하여 전송.
  • 서버에서 쿠키를 업데이트해야할 시에  Response header에 업데이트된 쿠키를 포함시킴.

 

예제
  • "아이디를 저장하시겠습니까?"
  • 쇼핑몰 장바구니
  • 광고 팝업의 "3일간 보지 않음."

세션 (Session)

세션은 쿠키와 달리 데이터를 서버에 저장합니다.

단, 이 때 저장한 세션에 대해서 SESSIONID를 발급해 클라이언트의 쿠키로 저장합니다.

클라이언트의 입장에서 보면  SESSIONID 쿠키를 이용해서 세션 데이터를 불러옵니다.

 

세션의 Process
  1. REQUEST : 브라우저 접속 후 최초 클라이언트의 요청
  2. SESSIONID 생성 :  서버는 클라이언트 별로 고유한 SESSIONID 생성
  3. SESSIONID, Session data 저장 : 서버에 SESSIONID (클라이언트 식별값), Session data 저장
  4. RESPONSE with SESSIONID : 응답 시 Http Header에 SESSIONID를 포함
  5. SESSIONID 저장 : 클라이언트는 응답받은 SESSIONID 데이터를 로컬 (클라이언트) 저장소에 Cookie로 저장
  6. request with SESSIONID : 서버에 Session 요청시 자신의 SESSIONID를 포함
  7. SESSIONID 이용 세션 검색 : 요청받은 SESSIONID 기반 서버의 세션 데이터 검색
  8. RESPONSE with Session : 응답에 Session 포함

 

세션의 특징
  • SESSIONID 는 브라우저당 1개를 생성, 브라우저 종료시 로컬에서 소멸
  • 사용자가 많아질수록 서버에 세션이 쌓여 메모리 차지

 

예제
  • 로그인 세션

쿠키와 세션의 차이

  쿠키 (Cookie) 세션 (Session)
저장 위치 로컬 (클라이언트) 서버 (Sesssion with SESSIONID)
로컬 (SESSIONID)
보안
만료시간 생성시 설정가능 생성시 설정가능
클라이언트 종료 시 설정에 따라 소멸
속도
  • 쿠키는 로컬에 필요한 데이터를 저장하는 반면, 세션은 서버에 저장하고 로컬에 SESSIONID를 쿠키로 저장합니다. (그러니 세션도 결국 SESSIONID쿠키를 이용하는겁니다.)
  • 세션은 서버에 저장되고 로컬에 SESSIONID만 남기기 때문에 보안면에서 세션이 더 우수합니다. 
  • 쿠키는 생성시 설정한 값에 따라 브라우저가 종료되도 유지가 가능하나, 세션은 만료시간을 정해도 브라우저 종료시 소멸됩니다.
  • 요청속도는 당연 로컬의 쿠키가 더 빠릅니다. 

 

댓글