[네트워크] 쿠키와 세션

정태규·2023년 3월 31일
0

네트워크

목록 보기
5/19

HTTP는 기본적으로 클라이언트가 request를 보내고 서버에서 response를 보내면 바로 연결을 끊는다. 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나고 상태정보를 유지하지 않는다.

때문에, 현재 접속한 사용자가 이전에 사용한 사용자인지 확인할 수 없다.
물론, 연결을 계속 유지하지 않아서 리소스 낭비가 줄어드는 것은 장점이지만, 통신할때마다 새로 연결해야해서 클라이언트는 매 요청마다 인증해야 되는 단점이 있다.

때문에 상태를 유지해야 할 필요성이 있고, 이를 위한 기술로 쿠키와 세션이 있다.

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

  • 구성요소
    쿠키의 이름
    쿠키의 값
    쿠키의 만료시간
    쿠키를 전송할 도메인 이름
    쿠키를 전송할 경로
    보안 연결 여부
    HttpOnly 여부

  • 동작방식

  1. 웹 브라우저가 서버에 요청
  2. 상태를 유지하고 싶은 값을 쿠키로 생성
  3. 서버가 응답할 때 Http헤더(set-Cookie)에 쿠키를 포함해서 전송한다.
  4. 전달받은 쿠키는 웹브라우저에서 관리하고 있다가, 다음 요청 때 쿠키를 Http헤더에 넣어서 전송
  5. 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 확인한 후 응답
  • 세션이란?
    일정시간 동안 같은 브라우저로부터 들어오는 요청을 하나의 상태로 보고 그 상태를 유지하는 기술이다.
    즉, 웹 브라우저를 통해 서버에 접속할때 부터 브라우저를 종료할때까지 유지되는 상태이다.

  • 동작방식

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

  2. 서버가 해당 웹브라우저(클라이언트)에 유일한 ID(session ID)를 부여함

    • 서버가 응답할 때 HTTP 헤더(set-cookie)에 Session ID를 포함해서 전송
    • 쿠키에 session ID를 JSESSIONID라는 이름으로 저장
    • set-Cookie:JSESSIONID=xsleil3f

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

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

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

0개의 댓글