네트워크

쿠키, 세션, 캐시

호종이 2022. 1. 11. 16:37

인터넷 서핑을 더 편하게 만들어주는 녀석들


이번 시간에는 쿠키, 세션, 캐시에 대해 알아보았다. 쿠키와 세션, 캐시는 우리가 인터넷 탐색을 더 쉽고 편하게 할 수 있도록 도와주기 위해 만들어진 것이다.

이것들이 없다면 쇼핑몰에서 페이지를 이동할 때마다 로그인을 하거나, 장바구니에 담긴 상품이 없어지는 등의 현상이 발생할 수 있다. 쿠키, 세션, 캐시에 대해 알아보기 전에, 먼저 이것들이 왜 만들어졌는지에 대해 알아보도록 하자.

 

HTTP 의 특징


요즘 인터넷은 데이터를 주고받기 위한 규약으로 HTTP 라는 프로토콜을 사용한다. HTTP 의 특징을 한 번 살펴보자

 

  • Stateless 프로토콜
    • 클라이언트의 상태 정보를 가지지 않음
    • 클라이언트와 첫 번째 통신에서 데이터를 주고 받았다 해도, 두 번째 통신에서 이전 데이터를 유지하지 않음
  • Connectionless 프로토콜
    • 클라이언트가 서버에 요청을 했을 때, 그 요청에 맞는 응답을 보낸 후 연결을 끊는 처리방식

 

HTTP 는 Stateless 한 프로토콜이기 때문에 클라이언트의 상태 정보를 가지지 않는다. 그러나 실제로는 데이터 유지가 필요할 때가 많은데, 클라이언트의 상태 정보가 유지되지 않으면 페이지를 이동할 때마다 다시 로그인을 하거나, 상품을 선택했는데 장바구니 페이지에서 선택한 상품의 정보가 없거나 하는 등의 일이 발생할 수 있다. 

 

따라서 이런 Stateful 한 경우를 대처하기 위해서 쿠키세션을 사용한다.

쿠키와 세션의 차이점은 크게 상태 정보의 저장 위치다. 쿠키는 정보를 클라이언트에 저장하고, 세션은 서버에 저장한다.

 

쿠키 (Cookie)


사용자의 클라이언트에 저장되고, 통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일이다. 이름, 값, 만료기간, 경로 정보가 있고, 키와 값으로 구성되있다. 해당 사용자의 컴퓨터를 사용한다면 누구나 쿠키에 입력된 값을 쉽게 확인 가능하므로 보안성이 낮다.

 

쿠키의 통신 방법

  1. 최초 통신에서는 쿠키값이 없으므로, 클라이언트는 서버에 요청
  2. 서버는 클라이언트의 요청에 쿠키가 없는것을 식별하여, 통신 상태를 저장한 쿠키를 전달한다.
  3. 클라이언트는 브라우저가 받은 쿠키를 생성/보존한다.
  4. 이후 연결에선 HTTP 헤더에 쿠키를 담아서 서버에 요청한다.

쿠키 사용 예시

  • 자동 로그인 유지 -> 쿠키를 지우면 사이트 로그인이 모두 해제된다.
  • 위시 리스트 저장
  • 팝업 보지 않기
  • 사용자 이전 스크롤링, 뷰 값

 

세션 (Session)


서버에 저장되는 쿠키라고 생각하면 쉽다. 클라이언트와 서버의 통신 상태를 나타내고, 주로 중요한 데이터를 저장하는데 사용된다. 브라우저가 종료될 때 까지 유지 되고, 쿠키와 다르게 서버에 저장되므로 보안성이 높다.

 

세션 통신 방법

  1. 클라이언트가 서버에 접속 시, 서버는 세션 ID를 발급
  2. 서버에서 세션 ID 를 클라이언트에게 전달
  3. 클라이언트는 쿠키를 이용해 해당 세션 ID 를 저장
  4. 클라이언트는 재전송 시 쿠키에 저장된 세션 ID값을 서버에 전달한다.

 

사용 예시

  • 페이지를 이동해도 로그인이 유지된다.

쿠키와 세션의 차이

 

캐시 (Cache)

리소스 파일들의 임시 저장소다. 같은 웹 페이지에 접속할 때 사용자의 PC 에서 로드하므로 서버를 거치지 않아도 된다. 이전에 사용되었던 데이터는 다시 사용될 확률이 높으므로, 높은 확률로 다시 사용될 데이터들을 빠르게 접근하기 위해 저장소에 사용한다. -> 이미지, 오디오, 비디오, CSS/JS 등..