Web | 쿠키, 세션, 캐시

JOY·2024년 10월 21일

Web

목록 보기
2/5
post-thumbnail

HTTP(상태 비저장 프로토콜)는 클라이언트가 누군지 매번 확인해야하는 특성을 가짐. 이를 보완하기 위해 쿠키와 세션을 사용함

쿠키

: 클라이언트의 상태 정보를 로컬 스토리지(브라우저) 키,값이 들어있는 작은 데이터 파일로 저장, 참조함 / 사용자 인증이 유효한 시간 명시 가능, 파일로 저장돼 유효시간 내에선 브라우저가 종료되도 인증이 유지됨 / 사용자가 따로 요청하지 않아도 브라우저가 request시 http request header에 넣어 자동으로 서버에 전송함 / 보안 취약(클라이언트 정보를 로컬스토리지에 저장->변질,요청 중 스니핑 당할 수 있음), 속도 빠름(쿠키에 정보가 있음), 저장형식 텍스트, 용량 제한있음

  1. 클라이언트가 서버에 페이지 요청을 보냄
  2. 서버는 요청에 대한 응답을 보내기 전에 쿠키를 생성
  3. 서버가 HTTP 응답의 헤더에 Set-Cookie 필드를 담아 쿠키 정보를 클라이언트에게 전송
  4. 쿠키는 클라이언트의 브라우저 로컬 스토리지에 저장됨. 유효 시간 내에는 브라우저를 닫아도 쿠키가 유지됨
  5. 클라이언트가 같은 서버에 다시 요청을 보낼 때, 브라우저는 자동으로 쿠키를 HTTP 요청 헤더에 포함시켜 서버로 전송
  6. 서버는 요청을 받으면 쿠키를 확인하고, 필요시 쿠키를 갱신하거나 새로운 쿠키를 생성하여 응답의 HTTP 헤더에 담아 클라이언트에게 전송

e.g. 쇼핑몰 사이트가 사용자의 장바구니 내용을 쿠키에 저장하면, 사용자가 웹사이트를 새로 고침하거나 다시 방문할 때 장바구니 내용을 유지할 수 있음. 쿠키는 클라이언트 측에서 데이터를 저장할 수 있는 작은 파일이므로, 사용자가 사이트를 떠나거나 브라우저를 종료하더라도 쿠키에 저장된 데이터는 유지될 수 있음 (단, 쿠키의 만료 시간에 따라 다를 수 있음)


세션

: 쿠키를 기반으로 하지만 쿠키와 달리 서버가 클라이언트의 상태를 서버 메모리에 저장해 사용 / 서버가 클라이언트를 구분하기 위해 세션 ID 부여 / 브라우저가 종료되면 유효시간에 관계없이 삭제됨 / 서버에 사용자 정보를 둬 쿠키보다 보안에 좋지만 사용자가 많아질수록 서버 메모리 많이 차지함 / 보안 강함(sessionid만 쿠키에 저장하고 그것으로 서버에서 구분해 처리), 속도 느림(정보가 서버에 있어 처리 필요), 저장형식 객체, 용량 서버가 허용하는 한 제한 없음

  1. 클라이언트가 서버에 페이지 요청을 보냄
  2. 서버는 요청 처리 전 세션 ID를 생성함.
  3. 서버가 세션 ID를 쿠키에 담아 HTTP 응답의 헤더에 Set-Cookie 필드를 추가해 클라이언트에게 전송
  4. 클라이언트는 서버로부터 받은 세션 ID가 담긴 쿠키를 브라우저의 로컬 스토리지에 저장함
  5. 클라이언트는 같은 서버에 다시 요청을 보낼 때, 브라우저는 자동으로 세션 ID가 담긴 쿠키를 HTTP 요청 헤더에 포함시켜 서버로 전송함
  6. 서버는 요청을 받으면 세션 ID가 담긴 쿠키를 확인해 별다른 작업 없이 클라이언트의 정보 사용 후 요청 처리 결과를 HTTP 응답으로 클라이언트에게 전송

e.g. 로그인(보안상 중요한 작업)

캐시

: 사용 빈도가 높은 데이터를 데이터 출력 위치와 가까운 위치에 저장하는 임시저장소
데이터 재사용을 전제로 함 / 데이러 엑세스 부하를 줄일 수 있음(고속 엑세스) / 데이터 손실 가능성 있음(캐시된 데이터는 일시적이고, 시스템 재시작,만료에 의해 손실될 수 있음)

캐시 기능을 사용하는 Content Delivery Network(CDN): 콘텐츠 전송 네트워크, 전 세계 여러 위치에 분산된 서버를 운영해, 웹 콘텐츠를 분산하고, 사용자 요청을 가장 가까운 서버에서 처리함->콘텐츠 전송 속도up,웹 페이지 로딩 속도up, 서버의 응답시간down, 서버 부하down

e.g. 참조빈도가 높은 데이터, 읽기 전용 데이터, 캐시의 데이터가 손상돼도 문제가 없는 시스템

profile
모든 일에 진심을 담아서

0개의 댓글