DevBoi

[개발지식] 쿠키와 세션 비교 본문

[Computer Science]

[개발지식] 쿠키와 세션 비교

HiSmith 2021. 7. 9. 20:46
반응형

많이들 사용하는 쿠키와, 세션 주로 로그인 및 회원 처리에서 많이 사용하는데,

해당 두가지 개념에 대해서 명확하게 익히고 가자.

 

우선 쿠키와 세션 사용이유 

HTTP프로토콜의 특징이자 약점을 보완하기 위해서 사용한다.

Http 프로토콜 환경에서는 서버는 클라이언트가 누구인지 확인해야한다.

 

그이유는, Http 서버는 connectionless, sateless하기 때문이다.

이게무슨 말이냐면, 

connectionless 클라이언트가 요청을 해서 서버가 response를 하게 되면, 바로 끊어진다.

헤더에 keep-alive라는 값을 줘서, 커넥션을 재활용한다.

 

stateless는 뭘까, 통신이 끝나면, 상태를 유지하지 않는 특성,

연결을 끊는 순간, 상태정보는 유지하지 않는다

 

-> 그러면 회원이 계속 접속중인지 아닌지는 어떻게 알까?

매페이지마다 로그인해야할까? 당연히 아니다.

그러면 TCP로 해당 을 구현해야하나? 당연히 아니다

TCP는 비용이 많이들고, 서버의 부하를 많이 가게 한다.

 

 

그러면 비연결적 장점을 챙기면서, TCP의 강점을 가질수 있는 방식이 뭘까??

바로 쿠키, 세션의 방식이다.

 

1.쿠키

쿠키는 로컬에 저장되는 키,값이 들어있는 작은 데이터 파일이다.

사용자 인증이 유효한 시간을 명시할수있고, 유효시간이 정해지면, 브라우저가 종료되어도 인증을 유지한다.

쿠키는 클라이언트의 상태정보를 로컬에 저장하고, 참조한다.

(클라이언트당 최대 300개 쿠키 저장가능, 하나의 도메인당 20개 까지 저장 가능, 하나의 쿠키는 4kb)

-> 쿠키 생성 가능한 방법 ResponseHeader 에 set-cookie 속성을 사용, 클라이언트에 쿠키 만들수있다.

쿠키는 사용자가 따로 요청하지 않아도, 자동 서버 전송

 

동작 방식

1. 클라이언트가 페이지 요청

2. 서버에서 쿠키 생성

3. HTTP 헤어데 쿠키를 포함 및 응답

4. 브라우저 종료되어도, 쿠키 만료시간 전까지 클라이언트가 가지고있다.

5. 같은 요청 할경우, Http 헤더에 쿠키를 함꼐 보낸다.

6. 서버에서 쿠키를 읽어 이전 상태정보를 변경할 필요가 있을때 쿠키를 업데이트 및 변경 쿠키를 포함하여 응답

 

 

2. 세션

쿠키는 클라이언트 쪽, 세션은 서버쪽에서 관리한다.

서버가 세션ID를 부여하며 클라이언트가 세션 ID를 쿠키에 넣고 저장한다.

클라이언트가 쿠키의 세션 ID를 서버에 전달 및 사용

서버는 세션 ID를 전달 받아, 별다른 작업없이 세션ID로 세션에 있는 클라이언트 정보를 가져온다.,

브라우저 종료될때까지 유지, 시간 설정 및 삭제 가능

 

특징

- 클라이언트에게 고유ID를 부여, 세션ID로 클라이언트 구분 및 별도 처리가능, 보안 면에서 쿠키보다 우수

로그인 같이 보안상 중요작업시 사용

-> 세션은 서버의 자원을 사용하기 때문에 무분별한 사용은 서버 메모리 부하 및 속도저하의 원인

 

 

 

반응형

'[Computer Science]' 카테고리의 다른 글

잡다한 기술 지식_1  (0) 2021.07.14
비동기 vs 동기 통신 방법  (0) 2021.07.11
Redis 기초 개념 및 공부  (0) 2021.06.29
서비스의 추상화란?  (0) 2021.06.22
Stateless 란? MIME 타입이란?  (0) 2021.06.22