본문 바로가기
Develop/React

세션이랑 쿠키가 뭘까

by 구운밤이다 2021. 1. 10.
728x90
반응형

오늘부터는 공부한거 빠르게 정리하는 식으로 블로그 글 써보려고 한다. 그래서 반말체로 이렇게 쓸거야. 요즘 코테랑 면접 같은거 조금씩 봐보면서 기본 공부랑 알고리즘 PS(Problem Solving)라고도 하는 거 같은데 이 두 가지를 준비해야겠다는 생각이 많이 든다. 마크다운도 공부할 겸 글도 마크다운으로 써보자.

첫 번째로 정리해볼 것은 세션이 무엇인지. 이와 비슷하다 할 수있는 쿠키는 또 뭔지 정리해보려고 한다. 먼저 세션부터 살펴보자.

세션 Session

세션은 방문자가 웹서버에 접속한 상태를 한 단위로 보고 이 상태를 세션이라고 한다. 일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나로 유지시키는 기술을 세션이라고 하는 것. 여기서 일정 시간은 사용자가 웹에 접속한 시점부터 종료하여 연결을 끝내는 시점이다.

특징

  • 웹 서버에 웹 컨테이너의 상태를 유지하기 위해 정보 저장.
  • 웹 서버에 저장되는 쿠키 = 세션
  • 서버에 저장되므로 저장 데이터 크기 제한 없음
  • 각 client 에 고유 세션 ID 부여. 클라이언트 구분하여 각각 맞는 서비스 제공
  • 브라우저를 닫거나 서버에서 세션을 삭제했을 때만 삭제됨 보안 좋음

동작순서

  1. 클라이언트가 페이지 요청(사용자가 웹사이트 접근)
  2. 서버는 접근한 client의 Request-Header 필드에 쿠키를 확인해 클라이언트가 해당 session-id 보냈는지 확인.
  3. session-id 가 존재하지 않으면 서버가 생성해 client에 돌려준다.
  4. 쿠키를 사용해 session-id를 서버에 저장.
  5. 재접속 시 client는 쿠키를 이용하여 session-id값을 서버에 전달.
    예시로 로그인 후 페이지 이동해도 로그인 유지

쿠키 Cookie

쿠키는 http의 일종으로 사용자가 웹사이트에 방문하면 사이트의 서버에서 사용자의 컴퓨터에 기록하는 작은 기록 정보이다. http에서 클라이언트 상태 정보를 Client PC에 저장했다가 참조 or 재사용한다.

특징

  • 이름, 값, 만료일(저장기간), 경로정보 로 구성되어 있다.
  • 도메인 당 20개 쿠키를 가질 수 있다.
  • 한 개 쿠키는 4KB까지 저장 가능하다.
  • Client에 총 300개 쿠키 저장 가능

동작 순서

  1. Client 가 페이지 요청.
  2. 웹 서버는 쿠키를 생성해 정보담아 http 화면 돌려줄때 같은 client에 돌려줌
  3. 받은 쿠키는 로컬PC에 가지고 있다가 다시 서버에 요청할때 함께 req와 전달.
  4. 동일 사이트 재방문 시 client PC에 쿠키 있으면 요청과 함께 쿠키 전송.
    예시로 사이트 아이디, 비번 자동입력.

사용이유

쿠키와 세션을 사용하는 이유는 http 의 특징이자 약점을 보완해주기 위해서인데, 먼저 http는 connectionless 프로토콜 (비연결 지향)로 서버가 클라이언트의 요청에 맞게 응답 후 연결을 끊는다. 또한 stateless 프로토콜로 상태정보를 유지하지 않는다. 즉 클라이언트에 상태 정보를 가지지 않는다. 하지만 실제로는 상태정보(로그인 등)를 저장해야하는 경우가 많아 정보 유지를 위해 쿠키와 세션을 사용한다.

세션이 보안도 좋고 데이터 크키 제한도 없는데 쿠키는 왜 사용하냐? 웹에 사용자가 많으면 서버에 부담이 많으니까. 따라서 서버 리소스 많이 먹는 세션과 쿠키를 병행해서 사용한다.

둘의 공통점과 차이점은 다음과 같다.

공통점으로는 위에 적었든 웹 통신 간 유지하려는 정보 저장. 차이점은 아래 표로 정리해 두었다. 전반적으로 속도는 쿠키가 빠르지만 보안과 저장 크기는 세션이 좋고. 차이점으로는 저장 위치와 저장형식이 text이고 object라는 점 정도.


참고 - https://hahahoho5915.tistory.com/32

728x90
반응형

'Develop > React' 카테고리의 다른 글

Access Token + Refresh Token JWT 인증  (2) 2021.09.10
웹사이트가 브라우저에 뜨는 과정  (0) 2021.01.18

댓글