*세션과 쿠키의 차이점은 맨 아래에
💫왜 쿠키와 세션을 사용할까?
👉 기본적으로 HTTP 특성으로 인한 문제를 해결하기 위해서 사용하는데 즉, 클라이언트 인증을 유지하기 위해 사용한다.
쇼핑몰의 예를 들어 보자. 쿠키와 세션을 사용하지 않으면 장바구니에 물품을 담은 경우 새로고침 시 장바구니가 초기화 되어 사용자가 불편을 겪게 된다. 마찬가지로 페이지를 이동할 때마다 로그인을 계속 해야 하는 불편함이 생기게 된다.
이유는 서버가 클라이언트(브라우저)가 누구인지 기억하지 않기 때문인데, 따라서 쿠키와 세션을 사용해 서버가 클라이언트를 기억할 수 있는 것이다.
💫HTTP 프로토콜의 특성
그렇다면 HTTP 프로토콜의 어떤 특징 때문에 쿠키와 세션이 필요한지 알아보자 👇
-
Connectionless : 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성
-
Stateless : 통신이 끝나면 해당 상태를 유지하지 않는 특성. HTTP 통신에서는 state라는 개념이 존재하지 않는다. 통신을 서로 주고받아도 클라이언트와 서버가 서로 연결되어 있는 것은 아니라서 각각의 통신은 독립적이다.
이 두 가지 특성 때문에 서버는 클라이언트와 통신을 할 때마다 클라이언트가 누구인지 계속 인증을 해야 하는 불편함이 생긴다.
💫쿠키(Cookie)의 개념
👉 클라이언트(브라우저) 측에서 관리되는 작은 기록 정보 파일을 의미한다. 쿠키에는 인증이 유효한 시간을 명시할 수 있으며 한번 유효 시간이 정해지면 브라우저를 종료하더라도 인증을 유지할 수 있다.
만료 조건에 따라 쿠키 종류 나뉜다.
-
세션쿠키 : 브라우저를 닫는 경우 자동으로 삭제됨
-
지속적 쿠키 : 수동으로 삭제되기 전까지 남아있음
1) 쿠키 구성 요소
-
이름 : 각각의 쿠키를 구별하는데 사용
-
값 : 쿠키가 가지는 고유 값
-
유효시간 : 쿠키 유지되는 시간
-
도메인 : 쿠키를 전송할 도메인
-
경로 : 쿠키를 전송할 요청 주소
2) 쿠키 사용 예
-
쇼핑몰의 장바구니 기능
-
자동 로그인
-
팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크
💫세션(Session)의 개념
👉 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버에서 관리한다. 서버에서는 클라이언트를 구분하기 위해 세션 ID를 부여하며 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
1) 주요 특징
-
클라이언트에게 고유한 세션ID 부여하고 이것으로 클라이언트 구분해 각 클라이언트 요구에 맞는 서비스 제공
-
세션은 서버에서 직접 관리하기 때문에 쿠키보다 보안 우수
-
하지만 사용자가 많아질수록 서버 메모리를 많이 차지하여 성능 저하의 원인이 될 수 있기 때문에 주의
2) 세션 사용 예
-
로그인 같이 보안이 필요한 작업에 사용
💫쿠키와 세션의 차이
👉 세션도 결국 쿠키를 사용하기 때문에 둘의 역할과 동작 로직이 상당히 비슷하다. 가장 큰 차이점은 클라이언트의 정보가 기록되는 저장소의 위치 차이다. 쿠키는 서버 사용 없이 클라이언트(브라우저)에 저장, 세션은 서버 자원을 사용해 서버측에 저장된다.
+ 추가로, 요청 속도는 쿠키가 더 빠르며 보안 측면에서는 세션이 더 안전하다.
'Computer Science' 카테고리의 다른 글
[OS] 프로세스와 스레드 (0) | 2020.11.30 |
---|---|
[OS] 운영체제(Operating System)의 개념 (0) | 2020.11.30 |
[네트워크] HTTP 개념/ 특성 / 메소드 / 상태코드 (0) | 2020.10.24 |
[네트워크] 프로토콜의 개념 / 특징 / 요소 / 종류 (0) | 2020.10.22 |
[DB] 정규화 / 반정규화 / 함수적 종속성 (2) | 2020.10.19 |