Interview Study/Network

[네트워크] 쿠키와 세션

욜스터 2022. 2. 9. 22:42
728x90
HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용합니다. 

💨HTTP

HTTP 통신의 특징

비연결지향(Connectionless)

클라이언트가 서버에 request를 하면 그 요청에 맞는 response를 보낸 후 연결을 끊는다.

 

무상태(Stateless)

클라이언트의 상태 정보를 가지지 않는다.

 

 

서버의 자원을 절약하기 위해 모든 요청마다 연결과 해제의 과정을 거침

-> 연결 상태가 유지되지 않고 연결 해체 후 상태 정보가 저장되지 않는다

-> 같은 사용자가 요청을 여러번 하더라도 매번 새로운 사용자로 인식

 

서버가 클라이언트를 식별하게 해주는 것이 쿠키와 세션

 

🍪 쿠키 (Cookie)

클라이언트 로컬에 저장되는 key-value 형태의 데이터 파일입니다.

특징

  • 이름, 값, 저장기간, 경로 정보로 구성
  • 유효 시간이 정해지면 브라우저가 종료되어도 클라이언트에서 보관

 

동작 순서

1. 클라이언트가 request

2. 서버에서 쿠키를 생성, HTTP 헤더에 포함시켜 response

3. 클라이언트에서는 쿠키를 받아서 저장

4. 클라이언트가 쿠키에 담아 request

5. 서버에서 쿠키를 통해 상태를 식별하고 그에 따른 response

 

예시

  • 팝업에서 "오늘 더 이상 이 창을 보지 않음" 체크
  • 쇼핑몰의 장바구니

 

📑 세션 (Session)

쿠키를 기반으로, 서버측에 사용자 정보 파일을 저장하여 브라우저가 종료되기 전까지 클라이언트의 request를 유지합니다.

특징

  • 각 클라이언트에 고유 세션 ID를 부여
  • 접속 시간에 제한을 두어 일정 시간 응답이 없으면 정보 유지 x
  • 서버 측에서 사용자 정보파일을 저장하여 쿠키보다 보안에 좋지만, 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다.

 

동작순서

1. 클라이언트가 request

2. 서버는 고유 session-id를 생성하고 session-id를 response

3. 클라이언트는 session-id를 쿠키에 저장

4. 클라이언트는 session-id가 포함되어 있는 쿠키를 담아 request

 

예시

  • 화면이 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지

 

❗❓ 쿠키와 세션의 차이

사용자의 정보가 저장되는 위치

쿠키: 클라이언트의 메모리

세션: 서버의 메모리

 

보안성

쿠키: 지워지거나 가로채이더라도 큰 문제가 없는 수준의 정보를 저장

세션: 노출되면 안되는 정보들을 서비스 제공자가 직접 관리

 

용량

쿠키: 도메인당 20개, 하나의 쿠키 당 4KB

세션: 용량에 제한이 없음

 

속도

쿠키: 파일에서 읽기 때문에 상대적으로 빠름

세션: 요청마다 서버에서 처리를 해야하기 때문에 비교적으로 느림

728x90
반응형