본문 바로가기
웹개발

쿠키?? 세션?! (+ 캐시?) 차이점 확실히 알고가자!

by 포 키 2023. 8. 1.
728x90

 

오늘 수업에서 장고 회원가입과 인증코드 부분에 쿠키를 사용하며 갑자기 쿠키와 세션의 차이점이 무엇인지 궁금해졌다.

이번 기회에 쿠키와 세션이 뭔지 차이점은 무엇인지 정리해보려 한다.

더불에 캐시의 개념까지 언급해 확실히 개념을 알아가보자

 

1. 쿠키 (cookie)

http에서 클라이언트의 상태를 로컬 PC에 저장해뒀다가 내가 필요할 때 꺼내 사용할 수 있다.

 

- 쿠키 동작

1. 사용자가 사이트에 접속해서 클라이언트가 페이지 request한다.

2. 웹 서버에서 쿠키를 생성한다.

3. 생성한 쿠키에 정보를 넣어 http 화면을 넘길 때, 클라이언트에 함께 넘긴다.

4. 이렇게 받은 쿠키를 로컬 PC에 저장해두고 이후 서버에서 request할 때, request와 함께 쿠키를 전송한다.

5. 사이트 추후 재접속 시 로컬 PC에 쿠키가 있으면 request와 쿠키를 동시에 전송한다.

 

- 응용 예시

이전에 접속했었던 사이트를 다시 접속할 때, 아이디와 패스워드 자동으로 입력됨

사이트의 팝업창을 닫을 때, 일주일간 다시 보지 않기 등의 선택란

 

2. 세션 (session)

일정 시간(웹 서버 접속 시점 ~ 연결이 끊기는 종료 시점)을 두고 같은 사이트에 들어오는 요구를 하나의 상태로 두고, 그 상태를 유지시키는 기술이다.

즉, 페이지 사용자가 웹 서버에 접속한 상태를 하나로 묶어서 본다.

 

- 세션 동작

1. 사용자가 사이트에 접속해서 클라이언트가 페이지 request한다.

2. 서버가 접근한 클라이언트의 request-header 필드의 cookie를 확인하고 클라이언트가 해당 session-id를 보냈는지 확인한다.

3. session-id 이 없다면, 서버가 생성해 클라이언트에 부여한다.

4. 서버에서 클라이언트에 돌려준 session-id를 쿠키를 이용해 서버에 저장한다.

5. 클라이언트는 재접속 때 4번의 쿠키를 이용해 session-id 값을 서버에 전달해 준다.

 

- 응용 예시

홈페이지에서 다른 기능을 이용하려고 세션을 이동하더라도 로그인 상태가 그대로 유지됨

 

3. 쿠키 VS 세션

 

  사용자 정보 저장 보안 Life Cycle 속도 저장방식 용량
쿠키 클라이언트 (로컬 PC) 약함 브라우저 종료와 관계없이 만료시점에 도달해야 삭제 빠름 text 300개 제한,
도메인당 20개,
쿠키당 4KB
세션 서버 강함 브라우저 종료시 삭제 느림 object 서버에 따름
(허용해주면 무제한)

 

 

4. 캐시 (cache)

위키백과에 따르면,

캐시(cache)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다.

쉽게 설명하면 웹 페이지가 빠른 렌더링을 하도록 하며, 웹 페이지 요소를 저장하기 위한 임시 저장소이다.

 

- 쿠키와 다른점이 뭐지?

캐시는 웹 페이지 요소를 저장하며 사용자가 직접 삭제를 해야한다면, 쿠키는 웹 서버에서 PC로 보내는 작은 파일을 저장하며 특정 사이트를 접속할 때 발생하고 만료기간이 지나면 자동으로 삭제가 된다.

 

5. 쿠키와 세션을 사용하는 이유

클라이언트와 정보를 유지하려고 사용한다.

http 프로토콜의 단점을 보완하기 위해 사용하는데 크게 두가지가 있다.

1) Connectionless

http의 비연결성.

클라이언트가 서버에 request 를 보내면 그에 응당하는 response를 주고 연결을 끊는 이 방식이 큰 단점이다.

 

2) Stateless

http의 상태 유지하지 않음.

클라이언트의 상태 정보를 가지지 않고 서버를 청리하는 방식으로 예를 들자면, 이미 한번 통신으로 데이터를 주고받았어도 다시 통신을 하면 이전 데이터는 유지되지 않는다.

 

이러한 두가지의 이유로 우리는 지속적이고, 데이터를 계속 가지고 있어야 하는 경우가 많은데 중요한 부분들이 결여되어 버린다.

그래서 서버에서 클라이언트를 활용할 때 마다 인증을 받는 것도 힘들기 때문에 수고스러움을 덜고, 웹페이지의 로딩을 빠르게 유지시켜주기 위해 쿠키와 세션을 활용한다. 

728x90