@notion
무상태 프로토콜(stateless protocol)
- 이전 요청과 응답에 대한 정보를 서버에서 따로 저장하지 않는 프로토콜
- 서버를 단순하게 설계 가능하나 요청마다 추가 정보를 전달해야 함
- e.g. HTTP, IP, UDP
- TCP는 신뢰성을 보장해야 하므로 상태 프로토콜(stateful protocol)
클라이언트 기반 저장소
쿠키
- 키/값의 형태, 문자열만, 한 개 키에 최대 4KB까지 저장
- 클라이언트와 서버 둘 다 접근 가능
- 서버는 응답 메시지 안에 Set-Cookie 헤더를 추가하여 쿠키 정보 전송
- 종류
- 세션 쿠키: 만료 기간 X, 브라우저 종료 시 삭제
- 영구 쿠키: 만료 기간 O
- 장점: 작은 크기의 데이터를 쉽게 저장할 수 있음
- 단점: 누구나 쉽게 접근 가능하여 보안에 취약, 개인 정보 침해 가능
- 개인 정보처럼 민감한 데이터보다는 팝업 등 개인 설정을 유지하는 용도로 사용
웹 스토리지
- 키/값의 형태, 문자열만, 최대 5~10MB까지 저장
- 클라이언트에서만 접근 가능, 별도 서버 전송 X
- 로컬 스토리지
- 데이터 영구 저장
- 브라우저의 다른 창이나 탭의 정보 공유됨
- 자동 로그인처럼 지속해서 사용해야 하는 데이터 저장에 사용
- 세션 스토리지
- 탭이 닫히면 데이터 삭제
- 브라우저 창과 탭마다 데이터가 다름
- 일회성 정보 저장에 사용
IndexedDB
- 브라우저에 내장된 데이터베이스
- 서버의 DB처럼 다양한 타입의 데이터를 용량 제한 없이 지원
- 복잡한 구조, 큰 규모의 데이터에 적합
서버 기반 저장소
세션
- 서버에서 일시적으로 데이터를 저장할 수 있는 기술
- 과정
- 서버는 클라이언트로부터 전달 받은 회원 정보로 클라이언트가 예전에 접근한 적이 있는지 확인
- 없다면 고유한 값인 세션 ID 발급해 자신의 메모리에 저장
- 서버는 요청에 대한 응답과 함께 세션 ID를 클라이언트에 전달
- 클라이언트는 쿠키에 해당 세션 ID 저장
- 이후 클라이언트는 요청과 함께 쿠키 안의 세션 ID를 함께 전달
- 장점: 정보를 서버에서 관리하기 때문에 쿠키만 사용했을 때보다 보안이 우수함
- 단점: 서버에 데이터를 저장하므로 서버의 부담이 있고 데이터 제공 속도 느릴 수 있음
- 로그인 같이 보안상 중요한 값을 저장해야 할 때 사용