[Network] 쿠키와 세션

박시은·2023년 7월 7일
0

Network

목록 보기
4/9
post-thumbnail

지난 포스팅에서 HTTP 프로토콜에 대해서 알아보았다.
쿠키와 세션은 HTTP 프로토콜의 특성을 보완하기 위해서 사용한다.
그렇다면 HTTP 프로토콜의 특성이 무엇인지 알아보자.


▶ 쿠키와 세션을 왜 사용하는가?

▷ HTTP 프로토콜의 특성

HTTP 특성서명
Connectionless (비연결지향)클라이언트가 요청을 한 후 서버가 응답을 보내면 그 연결을 끊어 버린다.
stateless (무상태성)연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는다.
  • HTTP의 2가지 특성인 Connectionless 과 stateless 로 인해 서버는 클라이언트의 상태를 알 수 없다는 문제가 있다.
  • 예를들어 클라이언트의 상태를 서버가 알지 못한다면 페이지를 이동할 때마다 로그인을 다시 해야 할 것이다.
  • 따라서 클라이언트의 상태를 알기 위해 ( ex.인증 ) 쿠키와 세션을 사용한다.



▶ 쿠키(Cookie)

▷ 쿠키란?

사용자가 웹 사이트를 방문할 경우, 그 사이트가 사용하고 있는 서버에서 클라이언트(브라우저)에 저장하는 작은 데이터 파일을 말한다.


▷ 쿠키 특징

  • 쿠키는 사용자 인증이 유효한 만료일(저장 기간) 설정할 수 있으며, 만료일이 되기 전에 브라우저를 종료해도 인증이 유지된다는 특징이 있다.

  • 저장된 쿠키는 클라이언트 로컬 PC(하드 드라이브에 텍스트 파일)에 저장되며, 각각의 쿠키는 이름, 값, 만료 날짜/시간, 도메인 등의 속성을 가진다.


▷ 쿠키 동작 방식

  • 클라이언트가 페이지를 요청(사용자가 웹사이트에 접근) 하면 웹 서버에서 쿠키를 생성한다.

  • 클라이언트가 요청을 보낼 때, 웹 서버는 HTTP 헤더에 쿠키를 포함시켜 응답한다.

  • 넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송한다.

  • 동일 사이트 재방문시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송한다.

  • 이전 상태 정보를 변경할 필요가 있을 때 웹 서버는 HTTP 헤더에 "Set-Cookie"를 포함시켜 클라이언트에게 전송하고, 클라이언트는 이를 수신하여 변경한 쿠키를 서버로 전송한다.


▷ 사용 예시

사용자가 로그인 정보를 기억하도록 하거나, 사용자가 웹 사이트의 설정을 유지하도록 할 때 사용

  • 자동 로그인
  • 쇼핑몰 장바구니



▶ 세션(Session)

▷ 세션이란?

클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지하는 것을 말한다.


▷ 세션 특징

  • 사용자에 대한 정보를 서버에 두기 때문에 보안에 좋다.
  • 세션은 서버에 저장되어 서버 자원을 사용하기 때문에 사용자가 많을 경우 많은 자원을 소모한다.
  • 서버 용량이 허용하는 한 저장 데이터에 제한이 없다.

▷ 세션 동작 방식

  • 클라이언트가 페이지를 요청(사용자가 웹사이트에 접근) 하면 서버는 고유한 세션 ID를 생성하고 클라이언트에게 전달한다.
  • 이때, 클라이언트는 세션 ID를 쿠키를 사용하여 가지고 있다.
  • 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 서버에 전송하여 사용한다.
  • 서버는 세션 ID를 사용하여 클라이언트의 정보를 가져와 사용한다.
  • 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답한다.

▷ 사용 예시

사용자가 웹 사이트에 로그인하고 상태를 유지하는 동안 세션을 사용 가능

  • 화면이 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지



▶ 쿠키 vs 세션

먼저 표를 통해 쿠키와 세션의 차이점을 살펴보자 (아래 표: 쿠키(Cookie), 세션(Session) 특징 및 차이)

쿠키세션
저장 위치클라이언트(=접속자 PC)웹 서버
저장 형식textObject
만료 시점쿠키 저장시 설정 (브라우저가 종료되도, 만료시점이 지나지 않으면 자동삭제되지 않음)브라우저 종료시 삭제 (기간 지정 가능)
사용하는 지원(리소스)클라이언트 리소스웹 서버 리소스
용량 제한총 300개, 하나의 도메인 당 20개, 하나의 쿠키 당 4KB(=4096byte)서버가 허용하는 한 용량제한 없음
속도세션보다 빠름쿠키보다 느림
보안세션보다 안좋음쿠키보다 좋음

쿠키와 세션의 가장 큰차이점은 상태 정보의 저장 위치이다.

  • 쿠키는 사용자 정보를 클라이언트(=로컬PC)에 저장하고, 세션은 서버에 저장한다.
  • 때문에 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용한다.
  • 보안은 세션이 더 높으며, 요청 속도는 쿠키가 빠르다. (세션은 서버 처리 필요하기 때문)

왜 쿠키를 주로 사용할까?

  • 세션은 서버 자원을 사용하기 때문에 사용자가 많을 경우 많은 자원을 소모하여 속도가 느려질 수 있기 때문에 쿠키를 주로 사용한다.



📎참조

profile
블로그 이전했습니다!

0개의 댓글