일단, 쿠키와 세션을 이해하기 위해서는 쿠키와 세션이 쓰이는 프로토콜인 http에 대해 이해를 해야 한다
http란 무엇일까?
HTTP
1. HTTP란?(쿠키와 세선을 사용하는 이유)
HTTP는 클라이언트- 서버 사이에 이루어지는 요청(Request)/응답(Response) 프로토콜이다
쿠키와 세션을 사용하는 이유는 HTTP 프로토콜의 특성이자 약점을 보완하기 위해서 사용한다
2. HTTP 프로토콜의 특징
- Connectionless 프로토콜(비 연결성)
- 클라이언트가 서버에 요청(Request)을 했을 때, 응답(Response)을 보낸 후 연결을 끊는 처리 방식
- 서버는 매 요청마다 클라이언트를 식별할 필요성이 생긴 것
- Stateless 프로토콜(무상태)
- 통신이 끝나면 상태를 유지하지 않는 특징
- 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나면 상태 정보를 유지하지 않는다.
서버와 클라이언트가 통신을 할 때, 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다.
따라서 서버는 클라이언트가 누구인지 계속 인증해 줘야 한다.
그런 번거로움을 해결하는 방법이 바로 쿠키와 세션이다.
Stateful 경우를 대처하기 위해 쿠키와 세션을 사용
쿠키(Cookie)
쿠키란?
클라이언트 (브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일
클라이언트에 저장되어 필요시 정보를 참조 재사용할 수 있다
쿠키 특징
- 이름, 값, 만료일(저장 기간), 경로 정보로 구성되어 있다
- 클라이언트에 총 300개의 쿠키를 저장할 수 있다
- 하나의 도메인 당 20개의 쿠키를 가질 수 있다
- 하나의 쿠키는 4kb(=4096byte)까지 저장 가능하다.
쿠키의 구성요소
- 이름 : 쿠키를 구별하기 위한 이름
- 값 : 쿠키의 이름과 해당하는 값
- 유효기간 : 쿠키의 유지 시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
쿠키 동작 순서
- 클라이언트가 페이지를 요청한다
- 웹 서버는 쿠키를 생성한다
- 생성한 쿠키를 HTTP 헤더에 포함시켜 클라이언트에게 응답
- 클라이언트가 쿠기를 가지고 있다가 다시 서버에 요청할 때 쿠키를 함께 전송
- 동일한 웹 사이트 재 방문 시 클라이언트 pc에 해당하는 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송
세션(Session)
세션이란?
쿠키를 기반으로 동작하지만, 사용자 정보를 클라이언트 측이 아닌 서버 측에서 관리
서버는 클라이언트를 구분하기 위해 세션 ID를 부여하여 웹 브라우저가 서버에 접속해서 브라우저가 종료될 때까지 인증 상태를 유지
- 웹사이트의 동시 접속자 수가 많은 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 된다.
- 클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 Session ID를 부여한다.
세션 특징
- 웹 서버에 웹 컨테이너의 상태를 유지하기 위한 정보를 저장한다
- 웹 서버의 저장되는 쿠키(= 세션 쿠키)
- 브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제되므로, 쿠키보다 비교적 보안이 좋다.
- 저장 데이터에 제한이 없다(서버 용량이 허용하는 한에서)
- 각 클라이언트의 고유 Session ID를 부여한다. Session ID로 클라이언트를 구분해 각 요구에 맞는 서비스를 제공
세션의 동작 방식
- 클라이언트가 페이지를 요청
- 서버는 클라이언트의 Request-Header Cookie를 확인하여, 클라이언트 Session ID를 확인
- Session ID가 없을 경우, Session ID를 생성하여 클라이언트에게 응답
- Session ID를 쿠키를 사용해 서버에 저장
- 클라이언트 재접속 시, 쿠키를 이용하여 Session ID 값을 서버에 전달
쿠키와 세션의 차이
세션은 쿠키를 사용하기 때문에, 비슷한 역할을 하며 동작원리도 비슷하지만 가장 큰 차이점은 사용자의 정보가 저장되는 위치이다
|
쿠키 cookie
|
세션 session
|
저장 위치
|
클라이언트 로컬(브라우저)
|
서버(웹 사이트)
|
보안
|
취약
|
강함
|
라이프 사이클
|
브라우저 종료해도
만료 시점이 지나지 않으면 삭제되지 x
|
브라우저가 종료되면 삭제
|
저장 형식
|
text
|
Object
|
용량
|
제한 있음
총 300개
하나의 도메인당 20개
하나의 쿠키당 4KB
|
서버가 허용하는 한 제한 없음
|
요청 속도
|
쿠기에 정보가 저장되어 있음
비교적 빠름
|
서버에 정보가 저장되어 있음
비교적 느림
|
그래도 쿠키를 사용하는 이유?
세션이 쿠키에 비해 보안이 높은 편이나 쿠키를 사용하는 이유는
세션은 서버의 자원을 사용하기 때문에 사용자 수가 많아질수록 서버의 메모리를 많이 차지하며 웹사이트 느린 속도의 단점을 가지고 있다. 서버 자원의 낭비를 방지하고 웹 사이트의 속도를 높이기 위해 세션과 쿠키를 적절한 요소 및 기능에 병행 사용하고 있다.
'CS' 카테고리의 다른 글
[CS] 오버라이딩 오버로딩 (0) | 2024.05.29 |
---|---|
[CS] DDL, DML, DCL (0) | 2024.05.10 |
[CS] HTTP, HTTPS (0) | 2024.05.08 |
[CS] 메모리 구조 (0) | 2024.05.08 |
[CS] Model1과 Model2 (0) | 2024.05.08 |