본문 바로가기
Computer Science

[Network] Cookie와 Session

by doongjun 2021. 12. 13.
쿠키와 세션에 대해 공부하기 전에 HTTP 프로토콜의 두가지 특징을 먼저 알아보자.

 

HTTP 프로토콜의 특징

첫번째, 비연결 지향(Connectionless)
클라이언트가 서버에 request을 보내고, 서버가 클라이언트에게 요청에 맞는 response을 보내면 바로 연결을 끊는다.

두번째, 상태정보 유지 안함(Stateless)
연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.

HTTP 프로토콜의 특징을 봤을 때, 몇가지 문제점을 생각해볼 수 있다.

예를 들어, 현재 접속한 사용자가 이전에 접속했던 사용자와 같은 사용자인지 어떻게 알 것인가?

통신할 때마다 새로 연결하야할텐데 그렇다면 클라이언트는 매 요청마다 인증을 해야하는가?

이전 요청과 현재 요청이 같은 사용자의 요청인지 알 수 있는가?

이러한 문제를 해결할 수 있는 기술로 CookieSession이 있다.

 

Cookie(쿠키)

쿠키는 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일이다.

이름, 값, 유효 시간, 경로 등을 포함하고 있고, 클라이언트의 상태 정보를 브라우저에 저장하여 참조한다.

쿠키의 구성요소

동작방식

1. 웹 브라우저가 서버에 요청

2. 상태를 유지하고 싶은 값을 쿠키로 생성

3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송

Set-Cookie : id=doy

4. 전달받은 쿠키는 웹 브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송

cookie : id=doy

5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답

 

쿠키 사용 예

  • 아이디, 비밀번호 저장
  • 쇼핑몰 장바구니

 

Session(세션)

일정 시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술이다. 즉, 웹 브라우저를 통해 서버에 접속한 이후부터 브라우저를 종료할 때 까지 유지되는 상태이다.

 

동작방식

1. 웹 브라우저가 서버에 요청

2. 서버가 해당 웹브라우저에 유일한 Session ID를 부여함

3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송

Set-Cookie : JSESSIONID=xslei13f

4. 웹브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송

Cookie : JSESSIONID=xslei13f

5. 서버는 세션 ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답

 

세션 사용 예

  • 로그인
세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지한다.
즉, 상태 정보를 유지하는 수단은 쿠키이다.

쿠키와 세션 비교

  Cookie Session
저장 위치 클라이언트 서버
보안 클라이언트에 저장되므로 보안에 취약하다. 쿠키를 이용해 Session ID만 저장하고
이 값으로 구분해서 서버에서 처리하므로
비교적 보안성이 좋다.
라이프사이클 만료시간에 따라 브라우저를 종료해도
계속해서 남아 있을 수 있다.
만료시간을 정할 수 있지만 브라우저가
종료되면 만료시간에 상관없이 삭제된다.
속도 클라이언트에 저장되어서 서버에
요청 시 빠르다.
실제 저장된 정보가 서버에 있으므로
서버의 처리가 필요해 쿠키보다 느리다.

 

출처

https://nasunsaeng.tistory.com/155

 

[JSP][이론]04 JSP 세션 관리_쿠키

04 JSP 세션 관리_쿠키 ● 클라이언트 측 자원만을 사용하여 웹 서비스 요청 시 데이터를 첨부하여 전송 1.    쿠키의 동작 방식 ○ 사용자가 특정 웹 사이트를 방문했을 때 서비스 사용에 필요한

nasunsaeng.tistory.com

https://doooyeon.github.io/2018/09/10/cookie-and-session.html

 

쿠키(Cookie)와 세션(Session)

HTTP 프로토콜에서 상태를 유지하기 위한 기술인 쿠키와 세션의 개념과 차이점을 알 수 있다.

doooyeon.github.io

 

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

[Network] REST 알아보기  (0) 2021.12.17
[Network] HTTP와 HTTPS의 차이  (0) 2021.12.13
[RegExp] 기초 정규 표현식 시작하기  (0) 2021.06.10
[Network] REST API 알아보기  (0) 2021.05.31

댓글