티스토리 뷰

Web

세션과 쿠키

Liiot 2020. 2. 8. 21:55

1. 세션과 쿠키를 사용하는 이유

HTTP 프로토콜의 다음 특징을 보완하기 위해 세션과 쿠키를 사용한다.

3.1 비연결성(Connectionless)

: 클라이언트가 Request를 서버에 보내고, 서버가 이에 맞게 Response를 보내면 연결을 끊는 특성

 

3.2 무상태성(Stateless)

: 3.1로 인해 연결이 끊어지기 때문에 이전 통신 상태 정보를 저장하지 않는 특성

 

 

이 두 가지 특성으로 인해 불필요한 자원은 크게 절약할 수 있다.

 

하지만 사용자를 식별할 수 없어 같은 사용자가 요청을 여러 번 하더라도 매번 새로운 사용자로 인식한다.

 

즉, 로그인이 필요한 페이지라면 해당 페이지에 접속할 때마다 로그인을 새로 해줘야 한다는 것이다.

 

이와 같이 사용자가 웹페이지에 머무르는 동안 해당 사용자의 상태를 유지하기 위해 세션과 쿠키를 사용한다.

 

2. 세션

: 일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지하는 기술

 

즉, 웹 브라우저를 통해 웹 서버에 접속한 시점부터 브라우저를 종료할 때 까지 유지되는 상태를 의미한다.

 

세션에 관련된 데이터는 서버에 저장된다.

 

특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장

  • 클라이언트가 서버에 접속하면 고유 세션 ID를 부여하며 이를 통해 각 클라이언트 요구에 맞는 서비스 제공

    • 브라우저 단위로 부여
    • 로그인한 사용자에 대해서만 세션을 생성하는 것이 아님
  • 웹 브라우저가 닫히거나 서버에서 삭제시 사라짐

  • 서버 용량이 허용하는 한 저장 데이터에 제한 없음

  • 쿠키에 비해 보안이 좋음

 

동작 과정

  1. 클라이언트가 페이지 요청
  2. 서버는 클라이언트의 session id 쿠키 값이 있는지 확인
  3. session id가 없다면 새로 발급하여 응답
  4. 서버에서는 클라이언트로 돌려준 session id를 쿠키를 사용해 서버에 저장한다.
    • 쿠키 이름: JSESSIONID
  5. 클라이언트가 다시 접속할 때, 쿠키(JSESSIONID)를 이용해서 session id를 서버에 전달
  6. 클라이언트가 브라우저 종료 시 session id를 제거하고 서버에서도 세션 제거

 

사용 예시

  • 로그인 정보 유지

 

3. 쿠키

: 인터넷 사용자가 특정 웹 사이트에 접속할 때, 해당 웹 사이트의 서버에서 사용자의 PC에 저장하는 작은 데이터 파일

 

쿠키는 일정시간동안 데이터를 저장할 수 있다.

 

또한 클라이언트의 상태 정보를 로컬 PC에 저장했다가 필요할 때 정보를 참조하거나 재사용할 수 있다.

 

특징

  • 구성: 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보
  • 클라이언트에 총 300개의 쿠키를 저장 가능
  • 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
  • 하나의 쿠키는 4KB까지 저장 가능

 

동작 과정

  1. 클라이언트가 페이지 요청
  2. 웹 서버는 쿠키 생성
  3. 응답을 돌려주며 생성한 쿠키를 클라이언트 로컬 PC에 저장
  4. 클라이언트가 재요청시 웹페이지 요청과 함께 쿠키도 전송

 

사용 예시

  • 자동 로그인
  • 팝업에서 "오늘 더 이상 이 창을 보지 않음", "7일간 다시보지 않기" 등 체크
  • 쇼핑몰의 장바구니

 

4. 세션과 쿠키의 차이점

  • 저장 위치: 쿠키 - 클라이언트 / 세션 - 서버

  • 저장 형식: 쿠키 - text / 세션 - object

  • 만료 시점: 쿠키 - 저장시 설정

    ​ (브라우저를 종료해도 만료 시점이 지나지 않았다면 자동으로 삭제되지 않음)

    ​ 세션 - 기간 지정 가능하나 브라우저 종료시 만료 시점과 상관없이 삭제

  • 사용 자원: 쿠키 - 클라이언트

    ​ 세션 - 서버 (무분별하게 만들면 서버가 감당하지 못할 수 있고 속도도 느려질 수 있음)

  • 속도: 쿠키 > 세션

  • 보안: 쿠키 < 세션(쿠키에 비해 비교적 좋음)

 


 

참고 자료

 

쿠키(Cookie), 세션(Session) 특징 및 차이

개요 > 쿠키(Cookie), 세션(Session) 각각 특성 및 차이 확실히 분류하기 메모 1. 공통점 : 웹 통신간 유지하려는 정보(ex:로그인 정보 등)를 저장하기 위해 사용하는 것(?) 2. 차이점 : 저장위치, 저장형식, 용..

hahahoho5915.tistory.com

 

쿠키(Cookie)와 세션(Session) & 로그인 동작 방법

Jihun's Development Blog

cjh5414.github.io

 

Web - 쿠키와 세션의 차이, 용도, 사용법(cookie,session)

웹에서 쿠키와 세션 (Cookie & Session) 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용한다. HTTP 프로토콜의 특징 1) 비연결지향(Connectionless) HTTP는 먼저 클라이언트..

jeong-pro.tistory.com

 

'Web' 카테고리의 다른 글

해시 함수  (0) 2020.02.11
GET과 POST의 차이  (0) 2020.01.27
댓글