본문 바로가기
CS

쿠키, 세션 개념 및 차이점

by 몰라몰라개복치 2021. 7. 28.

먼저 HTTP에 대해 알아보자.

 

HTTP 프로토콜의 특징

(1) 비연결 지향

 HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 단발성의 특징이 있음

(2) 상태 정보를 유지하지 않음

 연결을 끊는 순간 클라이언트와 서버와의 통신이 끝나며 상태 정보는 유지하지 않는 특성

두 가지의 특성을 보완하기 위해서 사용

 

비연결지향 특성으로 계속해서 통신 연결을 유지하지 않기 때문에 리소스 낭비가 줄어든다는 장점이 있지만 통신 할때마다 새로 연결을 해줘야 하기때문에 클라이언트는 그때마다 인증을 해주어야한다는 단점이 있음


EX) 쿠키와 세션을 사용하지 않으면 쇼핑몰에서 무언가를 구입하려고 로그인을 해도, 페이지를 이동할때마다 계속 로그인을 해주어야 한다.

 

 

 

쿠키(CooKie)

쿠키는 클라이언트 로컬에 저장되는 키와 밸류가 들어있는 저용량 데이터 파일
쿠키에는 이름, 값, 만료날짜 (쿠키 저장기간), 경로 정보가 포함
쿠키는 일정시간 동안만 데이터를 저장할 수있다. 그래서 로그인 상태 유지 같은 곳에서 쓰인다.
쿠키는 클라이언트의 상태 정보를 로컬에 저장하였다가 참조한다.

 

 

과정

(1) 브라우저에서 웹페이지 접속

(2) 클라이언트가 요청한 웹페이지를 받으면서 쿠키를 클라이언트의 로컬(하드)에 저장

(3) 클라이언트가 재요청 시 웹페이지 요청과 함께 쿠키값도 전송

(4) 지속적으로 로그인 정보를 가지고 있는것처럼 사용

 

 

쿠키의 한계

1.300개까지 만 저장가능, 하나의 도메인에 20개의 값만 보유가능, 하나의 쿠키값은 4KB까지만 저장
2.사용자의 요청없이도 브라우저가 request시에 request header을 넣어 자동으로 서버에 전달

 

 

 

 

 

 

세션(Session)

세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리.
일정 시간동안 같은 브라우저로 부터 들어오는 요구를 하나의 상태로 보고 그 상태를 유지하는 것

다시말해 웹 브라우저를 통해 웹서버에 접속한 이후부터 그 브라우저를 종료 할 때까지 상태 유지

 

 

클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID를 부여함.

 

 

 

과정

(1) 클라이언트는 서버접속시 세션 ID를 발급받음

(2) 클라이언트는 세션ID에 대해 쿠키를 사용해서 저장하고 가지고 있음

(3) 서버요청시에 이 쿠키의 세션ID를 서버에 전달하여 사용

(4) 서버는 받은 세션ID로 세션의 클라이언트정보를 가져오고 서버요청을 처리하여 클라이언트에게 응답

 

 

 

 

 

 

쿠키와 클라이언트의 차이

1. 저장위치

쿠키: 클라이언트에 파일로 저장

세션: 서버에 저장

 

2. 보안

쿠키: 클라이언트 로컬에 저장되기 때문에 변질되거나 request에서 스나이핑 당할 우려가 있어서 보안 취약
세션 : 쿠키를 이용해서 세션id만 저장하고 그것으로 구분해서 서버에서 처리하기 떄문에 비교적 안전 (보안 면에서 쿠키보다 우수)

 

3. 라이프 사이클

쿠키 : 만료시간은 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아 있을수 있음.

만료기간을 넉넉히 잡아두면 쿠키삭제 할 때까지 유지될수도 있음.
세션 : 만료기간을 정할수는 있지만 브라우저가 종료되면 그 에 상관없이 삭제.

 

4. 속도

쿠키 : 쿠키에 정보가 있기 떄문에 서버에 요청시 속도가 빠르다.
세션 : 정보가 서버에 있기 떄문에 처리가 요구되어 비교적으로 느림

 

 

 

 

 

 

참고: 

 

https://velog.io/@stay136/%EA%B8%B0%EC%88%A0-%EC%BF%A0%ED%82%A4%EC%99%80-%EC%84%B8%EC%85%98%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

 

[기술] 쿠키와 세션의 차이

#위코드 #wecode 웹에서 CooKie와 Session이란? HTTP 프로토콜의 특징 > 비연결지향(Connectionless)/상태정보유지안함(Stateless) 1.비연결지향(connectionless) HTTP는 먼저 클라이언트가 request를 서버에

velog.io

 

 

 

 

 

 

 

 

 

'CS' 카테고리의 다른 글

IP 주소 & IP 주소 클래스  (0) 2021.08.04
LINUX 파일 시스템  (0) 2021.07.28
MIME 개념 정리  (0) 2021.07.28
패킷, 프레임, 세그먼트의 차이점은?  (0) 2021.07.28
리눅스 proc  (0) 2021.07.28