˙ 시작하기 앞서 필요한 개념
- 기본적으로 Http는 stateless, connectionless 프로토콜의 특징을 가지고 있다. 즉 클라이언트가 서버에 요청(Request)를 했을 때 해당 요청에 대한 응답(Response)를 하고 연결을 끊어 이전의 데이터를 가지고 있지 않는다
(Http 1.1부터는 Keep-alive값으로 연결을 유지하고 값을 가지고 있게 Default로 설정되어 있다.)
- 이에 대해 정보를 계속 유지하고 가지고 있기 위해 고안된 방법이 캐쉬, 쿠키 그리고 세션이다
˙쿠키
- 사용자의 브라우저에 기본적으로 저장이 되고 통신시 HTTP헤더에 저장되어 있는 데이터
- 쿠키란 클라이언트 측에 저장되는 데이터로 클라이언트가 서버에 요청할 때 쿠키 정보를 전부 전달하게 되고 서버가 이를 사용하는 것임
- 쿠키는 사용자 컴퓨터에 저장되기 때문에 브라우저를 닫아도 설정해놓은 유효시간 동안은 계속 유효하게 된다.
- 통신 방법 :
최초 통신시 쿠키값이 없으므로 클라이언트는 별도 저장된 쿠키 없이 Request한다
서버는 Request안에 쿠키값이 없는 것을 판별한 뒤 필요한 쿠키 값을 담아 Response한다
Response받은 클라이언트는 해당 쿠키 값을 생성 보존하며 그 이후의 Connection부터는 쿠키에 담아 Request한다.
- 사용 특징
하나의 도메인당 20개의 쿠키를 가지고 있을 수 있으며 20개 이상부터는 사용 숫자가 작은 것부터 삭제된다.
˙세션
- 쿠키와 같은 개념이나 브라우저에 저장되는 것이 아닌 서버에 저장되어 유지되는 데이터이다.
(서버에 저장되기 때문에 쿠키처럼 탈취가 용이한 편은 아니다.)
- 세션은 서버 메모리에 데이터를 저장하고 있으며 브라우저 하나당 하나의 공간이 할당되기 때문에 브라우저를 닫으면 세션은 삭제된다.
- 통신 방법 :
클라이언트가 서버에 접속 시 세션 ID를 발급받고 서버는 발급해준 ID값을 서버 내부에 저장해놓는다.
이 후 클라이언트는 서버에 접속할 때 쿠키에 저장된 세션 ID를 통해 세션 정보를 받아 쓸 수 있다.
- 사용 특징
홈페이지 관리자의 Session ID를 탈취하여 서버에 전송, 관리자 권한을 취득하여 해킹하는 방법이 있다.
-- 세션ID값이 들어왔을 때 IP값까지 같이 저장하여 기존 값과 비교, 판단하여 Response하게 하는 예방법이 있다.
˙캐시
- 캐시는 쿠키, 세션과 따로 구분되는 이유는 저장되는 개념만 같지 캐시는 일반적으로 리소스 파일(JS, CSS, 이미지) 등을 저장하는 개념이기 때문이다.
- 다시 사용될 가능성이 높은 이런 리소스 파일을 사용자 PC에 저장하여 후에 로드하므로 서버에 아예 접근하지 않는다.
'서버' 카테고리의 다른 글
Webpack부터 Kubernetes까지 (1) - Stream과 Node (0) | 2021.03.11 |
---|---|
Node Express Module (0) | 2021.03.09 |
node js 시작하며 (0) | 2021.03.08 |
[DRF] REST & REST API (0) | 2020.01.19 |
Web Server 그리고 WAS (0) | 2019.11.18 |