FE 지식_2. cookie와 session

Derek·2021년 5월 19일
13

FE_knowledge

목록 보기
2/5
post-thumbnail

이전 게시물과 비교하며 쿠키와 세션을 정리해보려합니다.

먼저 쿠키의 정의부터 살펴보자면,

쿠키란, 특별한 저장공간(클라이언트 / 브라우저)에 있는 정보들입니다.

localstorage, sessionStorage 와 비슷한 개념이죠.


cookie 는 다음과 같은 특징을 가집니다.

  • 쿠키는 클라이언트에 저장된다.
  • 쿠키 하나의 용량은 4KB 정도이다.
  • 클라이언트는 300개까지 쿠키를 저장할 수 있고, 하나의 도메인당 20개의 값만 가질 수 있다.
  • 기본적으로 쿠키는 웹 브라우저가 종료되면 삭제된다. ( 만료날짜를 지정해 주면 만료일이 되야 삭제된다.)

쿠키는 위 그림처럼 사용됩니다.

  1. 클라이언트가 페이지를 요청 (request)
  2. 서버에서 쿠키를 생성 후, HTTP 헤더에 쿠키를 포함 시켜 응답
    • 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
  3. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
  4. 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있다면 쿠키를 업데이트하여 HTTP 헤더에 포함시켜 응답

근데 왜? 이런짓을 할까요? 난 이게 궁금하더라

???: 2번에서 왜 서버가 쿠키를 만들어서 준담? 갑자기?


결론부터) 브라우저서버HTTP 세션통신을 하기 위해서 쓰입니다.

그럼 또 세션이 뭔지 궁금해요. 알아봅시다.


session 이란?

구글링을 해보니 세션 / 세션 ID / 세션통신... 너무 헷갈리더라구요.

그러던 와중에 좋은 글을 찾아 정리합니다.

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

여기서 일정 시간이란 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료함으로써 연결을 끝내는 시점을 말합니다.

즉, 정리하자면,

세션 : 방문자가 웹서버에 접속해 있는 상태 즉, 서버와 클라이언트가 연결된 상태

라고 볼 수 있겠습니다.


session 이 만들어지는 과정

그럼 세션이 만들어지는 과정을 보겠습니다.

  1. 브라우저(클라이언트)가 처음으로 요청을 보냅니다.

  2. 서버는 요청을 받고, 처음 보는 애니까 새로운 session ID 를 생성합니다.

  3. 서버가 브라우저(클라이언트)에게 요청한 정보와 해당 브라우저의 sessionID 를 알려줍니다.

위 그림에서 ABC가 session ID입니다.

서버는 위 그림에서 ABC 공간 에 클라이언트 정보를 저장합니다. 그 장소는 메모리 / DB / 원격저장소 가 될수 있습니다.


💢 그렇다면 쿠키와 세션은 뭔 관계일까?

한번더 정리합시다.

  • 쿠키: 클라이언트에 잠시 저장하는 정보.
  • 세션: 서버와 클라이언트가 연결된 상태.

결론) sessionID 를 주고받는데 쿠키를 사용합니다.

  1. 서버가 어떤 클라이언트인지 구분하기 위해 sessionID 를 발급해서 클라이언트로 내려주면 클라이언트는 받은 sessionID쿠키 에 저장합니다.
  2. 추후 요청이 있을 때마다 쿠키에 담긴 sessionID를 같이 보내주어서 서버가 어떤 클라이언트의 요청인지 알 수 있게 합니다.

🎈 클라이언트의 세션 ID가 저장된 쿠키를 세션 쿠키라고 부르기도 합니다.


session 의 특징

session 는 다음과 같은 특징을 가집니다.

위 그림에서 ABC 공간에 저장되는 정보들의 특징입니다.

  • 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
  • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 됩니다.
  • 즉 동접자 수가 많은 웹 사이트인 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.
  • 웹 브라우저가 종료되면 세션쿠키은 삭제된다.


다정리했당.

잘못된 내용이 있다면 댓글로 알려주세요 :)

출처)
https://88240.tistory.com/190
https://thecodinglog.github.io/web/2020/08/11/what-is-session.html

profile
Whereof one cannot speak, thereof one must be silent.

0개의 댓글