쿠키(Cookie)와 세션(Session)

2021. 9. 23. 06:28네트워크

HTTP 프로토콜의 특징

  • 비연결 지향(Connectionless)
    • 클라이언트가 request를 서버에 보내고, 서버가 클라이언트에 요청에 맞는 response를 보내면 바로 연결을 끊는다.
  • 상태정보 유지 안 함(Stateless)
    • 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지하지 않는다.

HTTP 프로토콜은 모든 요청 간 의존 관계가 없다. -->이전 요청과 현재 요청이 같은 사용자의 요청인지 알기 위해서는 상태를 유지해야 한다.

 

HTTP 프로토콜에서 상태를 유지하기 위한 기술로 쿠키와 세션이 있다.


쿠키(Cookie)

개념

  • 클라이언트 로컬에 저장되는 키와 값이 들어있는 파일이다.
  • 이름, 값, 유효 시간, 경로 등을 포함하고 있다.
  • 클라이언트의 상태 정보를 브라우저에 저장하여 참조한다.

 

쿠키 사용 목적

1. 세션 관리(Session Management) - 로그인, 사용자 닉네임, 접속 시간, 장바구니 등의 서버가 알아야 할 정보들을 저장한다.

2. 개인화(Personalization) - 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.

3. 트래킹(Tracking) - 사용자의 행동과 패턴을 분석하고 기록한다.



구성 요소

  • 쿠키의 이름(name)
  • 쿠키의 값(value)
  • 쿠키의 만료시간(Expires)
  • 쿠키를 전송할 도메인 이름(Domain)
  • 쿠키를 전송할 경로(Path)
  • 보안 연결 여부(Secure)
  • HttpOnly 여부(HttpOnly)

 

동작 방식

  1. 웹브라우저가 서버에 요청
  2. 상태를 유지하고 싶은 값을 쿠키(cookie)로 생성
  3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 쿠키를 포함해서 전송
  4. 전달받은 쿠키는 웹브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 HTTP 헤더에 넣어서 전송
  5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답

 

쿠키 사용 예

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

세션(Session)

 

개념

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

 

동작 방식

  1. 웹 브라우저가 서버에 요청
  2. 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(Session ID)를 부여
  3. 서버가 응답할 때 HTTP 헤더(Set-Cookie)에 Session ID를 포함해서 전송
    쿠키에 Session ID를 JSESSIONID 라는 이름으로 저장SetCookie: JSESSIONID=xslei13f
  4. 웹 브라우저는 이후 웹브라우저를 닫기까지 다음 요청 때 부여된 Session ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송Cookie: JSESSIONID=xslei13f
  5. 서버는 Session ID를 확인하고, 해당 세션에 관련된 정보를 확인한 후 응답

 

세션 사용 예

  • 로그인

쿠키와 세션의 차이점

 

저장 위치

  • 쿠키 : 클라이언트
  • 세션 : 서버

보안

  • 쿠키 : 클라이언트에 저장되므로 보안에 취약하다. -> 지워지거나 가로채져도 상관없는 정보를 저장
  • 세션 : 쿠키를 이용해 Session ID만 저장하고 이 값으로 구분해서 서버에서 처리하므로 비교적 보안성이 좋다.

라이프사이클

  • 쿠키 : 만료 시간에 따라 브라우저를 종료해도 계속해서 남아 있을 수 있다.
  • 세션 : 만료 시간을 정할 수 있지만 브라우저가 종료되면 만료 시간에 상관없이 삭제된다.

속도

  • 쿠키 : 클라이언트에 저장되어서 서버에 요청 시 빠르다.
  • 세션 : 실제 저장된 정보가 서버에 있으므로 서버의 처리가 필요해 쿠키보다 느리다.

출처

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

https://devuna.tistory.com/23

Computer Networking A Top-down Approach

'네트워크' 카테고리의 다른 글

PDU(Protocol Data Unit)_Frame, Packet, Segment, Datagram  (0) 2021.09.28
GET메서드 & POST메서드  (0) 2021.09.21
CORS(Cross Origin Resource Sharing)  (0) 2021.09.21
HTTP와 HTTPS의 동작과정  (0) 2021.09.16
HTTP 요청/ 응답 Header  (0) 2021.09.15